? suggestedterms-allterms_plusscroll.patch Index: suggestedterms.install =================================================================== RCS file: /cvs/drupal/contributions/modules/suggestedterms/suggestedterms.install,v retrieving revision 1.2 diff -u -p -r1.2 suggestedterms.install --- suggestedterms.install 9 Oct 2008 17:16:13 -0000 1.2 +++ suggestedterms.install 20 May 2009 20:13:16 -0000 @@ -1,5 +1,10 @@ 0) { Index: suggestedterms.module =================================================================== RCS file: /cvs/drupal/contributions/modules/suggestedterms/suggestedterms.module,v retrieving revision 1.2.2.3 diff -u -p -r1.2.2.3 suggestedterms.module --- suggestedterms.module 9 Oct 2008 17:58:17 -0000 1.2.2.3 +++ suggestedterms.module 20 May 2009 20:13:17 -0000 @@ -1,14 +1,27 @@ '. t("Replaces the default \'description\' text on free-tagging textfields on node edit pages with a list of taxonomy terms in that vocabulary, with appropriate labeling"). '

'; + $output = '

'. t("Replaces the default \'description\' text on free-tagging textfields on node edit pages with a list of taxonomy terms in that vocabulary, with appropriate labeling") .'

'; break; } @@ -44,7 +57,7 @@ function suggestedterms_theme() { /** * Build tags for each term. - * + * * @ingroup themeable * @param $name * The term name to theme. @@ -57,31 +70,33 @@ function theme_suggestedterm($name) { } /** -* Creates all spans from vocabulary terms -* -* @return -* A string containing the clickable spans for the suggestedterms module. -*/ -function _suggestedterms_build_suggestions($vid, $sort_order) { - // get total terms set by admin + * Creates all spans from vocabulary terms. + * + * @return + * A string containing the clickable spans for the suggestedterms module. + */ +function _suggestedterms_build_suggestions($vid, $sort_order, $show_terms) { + // use left join to display all entries, inner join to diaplay only used ones. + $query_type = ($show_terms == 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 + // 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; 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); $terms = array(); - while($record = db_fetch_object($query_result)) { + while ($record = db_fetch_object($query_result)) { $terms[] = theme('suggestedterm', check_plain($record->name)); } return implode(', ', $terms); @@ -93,14 +108,19 @@ function _suggestedterms_build_suggestio function suggestedterms_form_alter(&$form, $form_state, $form_id) { 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'); + drupal_add_js($path .'/suggestedterms.js'); + $sort_order = variable_get('suggestedterms_sort_order', SUGGESTEDTERMS_SORT_NAME); + //set the scrollbar height according to the user's entry. + $scrollbar_height = variable_get('suggestedterms_scrollbar_height', '0'); + $scrollbar_style = ($scrollbar_height != '0' && $scrollbar_height != '0em') ? ' style="overflow:auto; height:'. $scrollbar_height .'; width:95%;"' : ''; + //Added this to be able to display all terms, including the ones that are not used by a node. + $show_terms = 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. - $sort_order = variable_get('suggestedterms_sort_order', SUGGESTEDTERMS_SORT_NAME); switch ($sort_order) { case SUGGESTEDTERMS_SORT_POPULAR: - $tag_description = 'Most popular terms'; + $tag_description = 'Most popular terms'; break; case SUGGESTEDTERMS_SORT_RECENT: @@ -112,7 +132,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\n". t($tag_description) .': '. _suggestedterms_build_suggestions($vid, $sort_order, $show_terms) ."\n"; } } } @@ -130,6 +150,14 @@ function suggestedterms_admin() { '#maxlength' => 2, '#description' => t('The maximum number of links to display in the block. Enter 0 to show all.'), ); + $form['suggestedterms_scrollbar_height'] = array( + '#type' => 'textfield', + '#title' => t('Height of window to display term list'), + '#default_value' => variable_get('suggestedterms_scrollbar_height', '4.3em'), + '#size' => 5, + '#maxlength' => 5, + '#description' => t('The height of the scrolling window that displays existing terms. Most useful when the maximum number of links is unlimited. The default 4.3em is about three lines in most fonts. Set to 0 for no scrollbar.'), + ); $form['suggestedterms_sort_order'] = array( '#type' => 'radios', '#title' => t('Link sort order'), @@ -139,7 +167,17 @@ function suggestedterms_admin() { SUGGESTEDTERMS_SORT_POPULAR => t('Most used'), SUGGESTEDTERMS_SORT_NAME => t('Alphabetically'), 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);