Пример #1
0
/**
 * 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 '&nbsp;<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 '&nbsp;<input type="button" value="' . get_string('deselectall') . '" onclick="checknone();" /><br />';