diff -urN /home/steve/suggestedterms/suggestedterms.css suggestedterms/suggestedterms.css --- /home/steve/suggestedterms/suggestedterms.css 1969-12-31 19:00:00.000000000 -0500 +++ suggestedterms/suggestedterms.css 2009-12-26 23:39:49.000000000 -0500 @@ -0,0 +1,3 @@ +.suggestedterms .remove { + color: red; +} diff -urN /home/steve/suggestedterms/suggestedterms.js suggestedterms/suggestedterms.js --- /home/steve/suggestedterms/suggestedterms.js 2009-05-21 14:46:12.000000000 -0400 +++ suggestedterms/suggestedterms.js 2009-12-26 23:30:36.000000000 -0500 @@ -13,11 +13,47 @@ event.preventDefault(); var input = $(this).parents(".form-item").children('input'); var text = $(this).text(); + + // add the string if (((', ' + input.val() + ',').indexOf(', ' + text + ',') < 0) && ((', ' + input.val() + ',').indexOf(', "' + text + '",') < 0)) { if ((input.val()).length > 0) { input.val(input.val() + ', '); } input.val(input.val() + text); + $(this).addClass('remove'); + } + + // remove the string + else { + var field_text = input.val(); + var string_to_remove = $(this).text(); + + // Remove term if it's the only term selected so far + if (string_to_remove == field_text) { + input.val(''); + $(this).removeClass('remove'); + } else { + // Remove term if it's at the beggining or in the middle of a series comma separated terms + if (field_text.indexOf(string_to_remove + ', ') > -1) { + var replacement_text = field_text.replace(string_to_remove + ', ', ''); + input.val(replacement_text); + $(this).removeClass('remove'); + } + + // Remove the string if it's at the end of the series of terms. + else if (position = field_text.indexOf(', ' + string_to_remove)) { + var length_of_field_text = field_text.length; + var length_of_string_to_remove = string_to_remove.length; + + // This test ensures the last term in the series is not just a + // substring of the term we want to remove. + if ((position + 2 + length_of_string_to_remove) == length_of_field_text) { + var replacement_text = field_text.replace(', ' + string_to_remove, ''); + input.val(replacement_text); + $(this).removeClass('remove'); + } + } + } } }); // end bind $(this).before(a).remove(); diff -urN /home/steve/suggestedterms/suggestedterms.module suggestedterms/suggestedterms.module --- /home/steve/suggestedterms/suggestedterms.module 2009-10-08 18:34:21.000000000 -0400 +++ suggestedterms/suggestedterms.module 2009-12-27 00:08:01.000000000 -0500 @@ -29,6 +29,13 @@ } /** + * Implementation of hook_init(). + */ +function suggestedterms_init() { + drupal_add_css(drupal_get_path('module', 'suggestedterms') .'/suggestedterms.css', 'module', 'all', TRUE); +} + +/** * Implementation of hook_perm(). */ function suggestedterms_perm() { @@ -53,11 +60,16 @@ * @param $name * The term name to theme. */ -function theme_suggestedterm($name) { +function theme_suggestedterm($name, $selected) { if (FALSE !== strpos($name, ',')) { $name = '"'. $name .'"'; } - return "{$name}"; + if ($selected) { + return "{$name}"; + } + else { + return "{$name}"; + } } /** @@ -66,7 +78,7 @@ * @return * A string containing the clickable spans for the suggestedterms module. */ -function _suggestedterms_build_suggestions($vid, $sort_order, $display_what) { +function _suggestedterms_build_suggestions($vid, $sort_order, $display_what, $selected_terms) { // Use left join to display all entries, inner join to diaplay only used ones. $query_type = ($display_what == SUGGESTEDTERMS_DISPLAY_ALL) ? " LEFT " : " INNER "; @@ -98,9 +110,13 @@ $query_result = ($total_terms > 0) ? db_query_range($query, $vid, 0, $total_terms) : db_query($query, $vid); $terms = array(); while($record = db_fetch_object($query_result)) { - $terms[] = theme('suggestedterm', check_plain($record->name)); + if (is_array($selected_terms) && in_array($record->name, $selected_terms)) { + $selected = TRUE; + } + $terms[] = theme('suggestedterm', check_plain($record->name), $selected); + $selected = FALSE; } - return implode(', ', $terms); + return '
' . implode(', ', $terms) . '
'; } /** @@ -137,7 +153,7 @@ break; } // Build the suggested terms and set in description tag. - $form['taxonomy']['tags'][$vid]['#description'] .= "
\n". $tag_description . ': ' . _suggestedterms_build_suggestions($vid, $sort_order, $display_what); + $form['taxonomy']['tags'][$vid]['#description'] .= "
\n". $tag_description . ': ' . _suggestedterms_build_suggestions($vid, $sort_order, $display_what, explode(', ', $form['taxonomy']['tags'][$vid]['#default_value'])); } } }