diff options
-rw-r--r-- | jquery_drawer.module | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/jquery_drawer.module b/jquery_drawer.module index a54679d..7283fcd 100644 --- a/jquery_drawer.module +++ b/jquery_drawer.module @@ -144,26 +144,9 @@ function theme_jquery_drawer($menu) { } /** - * Menu callback. - * - * @todo Split themeable output from logic. + * Render all nodes whose terms are children of $tid. */ -function jquery_drawer_page($tid = NULL) { - $output = ''; - $nodes = taxonomy_select_nodes(array($tid)); - $base = variable_get('jquery_drawer_link', 'node'); - $output .= '<ul id="drw_item" class="hidden">'; - - // First render all nodes whose parent is $term - while ($node = db_fetch_object($nodes)) { - path_nodeapi($node,'load',''); - $link['title'] = $node->title; - $link['href'] = ($node->path?$node->path:"$base/". $node->nid); - //$output .= print_r($node,1); - $output .= theme('jquery_drawer_link', $link); - } - - // Check for child terms +function jquery_drawer_get_children($tid = NULL) { $vid = variable_get('jquery_drawer', '1'); $terms = taxonomy_node_tree_taxonomy_get_tree($vid, $tid); @@ -181,20 +164,41 @@ function jquery_drawer_page($tid = NULL) { {term_node} ON term_node.nid = n.nid WHERE term_node.tid IN (%s) AND n.status = "1" ORDER BY term_node.weight_in_tid ASC'; - $query2 = db_rewrite_sql($query); - $nodes = db_query(db_rewrite_sql($query), implode(',', $filter)); - $tree = taxonomy_node_tree_build($nodes, $terms); - - // Format output - if (is_array($tree) && !empty($tree)) { - foreach ($tree as $term) { - $output .= taxonomy_node_tree_list($term, 'jquery_drawer', 'hidden', $base); - } - } - else { - $output .= t('No content exists for this topic yet.'); + //$query = db_rewrite_sql($query); + $nodes = db_query(db_rewrite_sql($query), implode(',', $filter)); + $tree = taxonomy_node_tree_build($nodes, $terms); + + return $tree; + } +} + +/** + * Menu callback. + */ +function jquery_drawer_page($tid = NULL) { + $output = ''; + $nodes = taxonomy_select_nodes(array($tid)); + $base = variable_get('jquery_drawer_link', 'node'); + $tree = jquery_drawer_get_children($tid); + $output .= '<ul id="drw_item" class="hidden">'; + + // First render all nodes whose parent is $term + while ($node = db_fetch_object($nodes)) { + path_nodeapi($node,'load',''); + $link['title'] = $node->title; + $link['href'] = ($node->path?$node->path:"$base/". $node->nid); + $output .= theme('jquery_drawer_link', $link); + } + + // Add other nodes + if (is_array($tree) && !empty($tree)) { + foreach ($tree as $term) { + $output .= taxonomy_node_tree_list($term, 'jquery_drawer', 'hidden', $base); } } + else { + $output .= t('No content exists for this topic yet.'); + } $output .= '</ul></li>'; |