/** * Recursively builds a dynamic tree menu for seleting the categories available to * filter search results by. * * @param array $cats An array of category objects from the DB. * @param array $selected An array of currently selected category IDs. * @return array An array of completed HTML_TreeMenu nodes. */ function elis_files_make_category_select_tree_choose($cats, $selected = array()) { global $CFG; global $repo; static $catlist; if (empty($cats)) { return; } if (!isset($catlist)) { $catlist = elis_files_make_category_tree(); } $icon = 'folder.gif'; $eicon = 'folder-expanded.gif'; $nodes = array(); for ($i = 0; $i < count($cats); $i++) { if (in_array($cats[$i]->id, $selected)) { $checked = ' checked'; } else { $checked = ''; } $text = '<input type="checkbox" name="categories[]" value="' . $cats[$i]->id . '"' . $checked . ' />' . $cats[$i]->title; if (array_key_exists($cats[$i]->id, $catlist)) { $expanded = true; } else { $expanded = false; } $node = new HTML_TreeNode(array( 'text' => $text, 'icon' => $icon, 'expandedIcon' => $eicon, 'expanded' => $expanded )); // if ($children = $repo->category_get_children($cats[$i]->id)) { if ($children = ELIS_files::category_get_children($cats[$i]->id)) { if ($cnodes = elis_files_make_category_select_tree_choose($children, $selected)) { for ($j = 0; $j < count($cnodes); $j++) { $node->addItem($cnodes[$j]); } } } $nodes[] = $node; } return $nodes; }
echo $OUTPUT->box_start(); echo '<form method="post" action="' . $CFG->wwwroot . '/repository/elisfiles/config-categories.php">'; echo '<input type="hidden" name="sesskey" value="' . $USER->sesskey . '" />'; echo '<center>'; echo '<input type="submit" name="reset" value="' . get_string('resetcategories', 'repository_elisfiles') . '" /><br />' . get_string('resetcategoriesdesc', 'repository_elisfiles') . '<br /><br />'; if ($DB->get_manager()->table_exists('repository_elisfiles_cats') && $categories = $repo->category_get_children(0)) { echo '<input type="button" value="' . get_string('selectall') . '" onclick="checkall();" />'; echo ' <input type="button" value="' . get_string('deselectall') . '" onclick="checknone();" /><br />'; echo '<input type="submit" value="' . get_string('savechanges') . '" />'; echo '</center><br />'; if ($nodes = elis_files_make_category_select_tree_choose($categories, $catfilter)) { $menu = new HTML_TreeMenu(); for ($i = 0; $i < count($nodes); $i++) { $menu->addItem($nodes[$i]); } $treemenu = new HTML_TreeMenu_DHTML($menu, array( 'images' => $CFG->wwwroot . '/repository/elisfiles/lib/HTML_TreeMenu-1.2.0/images' )); $treemenu->printMenu(); } echo '<center><br />'; echo '<input type="button" value="' . get_string('selectall') . '" onclick="checkall();" />';