/** * 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 repository_alfresco_make_category_select_tree_choose($cats, $selected = array()) { global $CFG; global $repo; static $catlist; if (empty($cats)) { return; } if (!isset($catlist)) { $catlist = repository_alfresco_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 ($cnodes = repository_alfresco_make_category_select_tree_choose($children, $selected)) { for ($j = 0; $j < count($cnodes); $j++) { $node->addItem($cnodes[$j]); } } } $nodes[] = $node; } return $nodes; }
} } } /// Get (or create) the array of category IDs that are already selected in the filter. $catfilter = repository_alfresco_get_category_filter(); print_simple_box_start('center', '75%'); echo '<form method="post" action="' . $CFG->wwwroot . '/file//repository/alfresco/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_alfresco') . '" /><br />' . get_string('resetcategoriesdesc', 'repository_alfresco') . '<br /><br />'; if ($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 = repository_alfresco_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 . '/lib/HTML_TreeMenu-1.2.0/images')); echo '<script language="JavaScript" type="text/javascript">'; echo "<!--\n"; include $CFG->libdir . '/HTML_TreeMenu-1.2.0/TreeMenu.js'; echo "\n// -->"; echo '</script>'; $treemenu->printMenu(); } echo '<center><br />'; echo '<input type="button" value="' . get_string('selectall') . '" onclick="checkall();" />'; echo ' <input type="button" value="' . get_string('deselectall') . '" onclick="checknone();" /><br />';