? suggestedterms-all.patch ? suggestedterms.js.bk ? suggestedterms.module.bk Index: suggestedterms.js =================================================================== RCS file: /cvs/drupal/contributions/modules/suggestedterms/suggestedterms.js,v retrieving revision 1.2.2.1 diff -u -p -r1.2.2.1 suggestedterms.js --- suggestedterms.js 9 Oct 2008 17:52:35 -0000 1.2.2.1 +++ suggestedterms.js 21 May 2009 18:21:05 -0000 @@ -11,7 +11,7 @@ function suggestedterms_build_links() { .addClass($(this).attr('class')) .bind('click', function(event) { event.preventDefault(); - var input = $(this).parent().siblings('input'); + var input = $(this).parents(".form-item").children('input'); var text = $(this).text(); if (((', ' + input.val() + ',').indexOf(', ' + text + ',') < 0) && ((', ' + input.val() + ',').indexOf(', "' + text + '",') < 0)) { if ((input.val()).length > 0) { Index: suggestedterms.module =================================================================== RCS file: /cvs/drupal/contributions/modules/suggestedterms/suggestedterms.module,v retrieving revision 1.2.2.4 diff -u -p -r1.2.2.4 suggestedterms.module --- suggestedterms.module 20 May 2009 22:02:26 -0000 1.2.2.4 +++ suggestedterms.module 21 May 2009 18:21:05 -0000 @@ -8,6 +8,8 @@ define('SUGGESTEDTERMS_SORT_POPULAR', 0) define('SUGGESTEDTERMS_SORT_NAME', 1); define('SUGGESTEDTERMS_SORT_RECENT', 2); define('SUGGESTEDTERMS_SORT_WEIGHT', 3); +define('SUGGESTEDTERMS_DISPLAY_ALL', 1); +define('SUGGESTEDTERMS_DISPLAY_USED', 0); /** * Implementation of hook_help(). @@ -62,25 +64,28 @@ function theme_suggestedterm($name) { * @return * A string containing the clickable spans for the suggestedterms module. */ -function _suggestedterms_build_suggestions($vid, $sort_order) { +function _suggestedterms_build_suggestions($vid, $sort_order, $display_what) { + // use left join to display all entries, inner join to diaplay only used ones + $query_type = ($display_what == SUGGESTEDTERMS_DISPLAY_ALL) ? " LEFT " : " INNER "; + // get total terms set by admin $total_terms = variable_get('suggestedterms_maximum_displayed', 5); // get sort order set by admin switch ($sort_order) { case SUGGESTEDTERMS_SORT_POPULAR: - $query = "SELECT t.name AS name, COUNT(t.name) AS total FROM {term_data} t INNER JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY total desc"; + $query = "SELECT t.name AS name, COUNT(t.name) AS total FROM {term_data} t $query_type JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY total desc"; break; case SUGGESTEDTERMS_SORT_RECENT: - $query = "SELECT t.name AS name FROM {term_data} t INNER JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY t.tid desc"; + $query = "SELECT t.name AS name FROM {term_data} t $query_type JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY t.tid desc"; break; case SUGGESTEDTERMS_SORT_WEIGHT: - $query = "SELECT t.name AS name, t.weight AS weight FROM {term_data} t INNER JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY weight, name"; + $query = "SELECT t.name AS name, t.weight AS weight FROM {term_data} t $query_type JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY weight, name"; break; default: - $query = "SELECT t.name AS name FROM {term_data} t INNER JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY t.name"; + $query = "SELECT t.name AS name FROM {term_data} t $query_type JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY t.name"; break; } $query_result = ($total_terms > 0) ? db_query_range($query, $vid, 0, $total_terms) : db_query($query, $vid); @@ -98,6 +103,7 @@ function suggestedterms_form_alter(&$for if ((isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) && isset($form['taxonomy']['tags'])) { $path = drupal_get_path('module', 'suggestedterms'); drupal_add_js($path . '/suggestedterms.js'); + $display_what = variable_get('suggestedterms_display_all', SUGGESTEDTERMS_DISPLAY_ALL); // If multiple vocabularies, loop over each. foreach ($form['taxonomy']['tags'] as $vid => $thisindex) { // If free-tagging taxonomy is true, add new links for each free-tag textfield. @@ -120,7 +126,7 @@ function suggestedterms_form_alter(&$for break; } // Build the suggested terms and set in description tag. - $form['taxonomy']['tags'][$vid]['#description'] .= "
\n". t($tag_description) . ': ' . _suggestedterms_build_suggestions($vid, $sort_order); + $form['taxonomy']['tags'][$vid]['#description'] .= "
\n". t($tag_description) . ': ' . _suggestedterms_build_suggestions($vid, $sort_order, $display_what); } } } @@ -150,6 +156,16 @@ function suggestedterms_admin() { SUGGESTEDTERMS_SORT_RECENT => t('Most recently added'), ), ); + $form['suggestedterms_display_all'] = array( + '#type' => 'radios', + '#title' => t('Which terms to display'), + '#default_value' => variable_get('suggestedterms_display_all', SUGGESTEDTERMS_DISPLAY_ALL), + '#description' => t("Whether to display all defined terms or only the ones previously used."), + '#options' => array( + SUGGESTEDTERMS_DISPLAY_USED => t('Previously-used terms'), + SUGGESTEDTERMS_DISPLAY_ALL => t('All terms'), + ), + ); return system_settings_form($form); }