title = get_string('administrationsite');
$this->version = 2006090300;
$this->currentdepth = 0;
$this->spancounter = 1;
$this->tempcontent = '';
$this->section = (isset($PAGE->section) ? $PAGE->section : '');
$this->pathtosection = array();
$this->expandjavascript = '';
}
function applicable_formats() {
if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) {
return array('site' => true, 'admin' => true);
} else {
return array('site' => true);
}
}
function preferred_width() {
return 210;
}
function open_folder($visiblename) {
global $CFG;
$strfolderopened = s(get_string('folderopened'));
for ($i = 0; $i < $this->currentdepth; $i++) {
$this->tempcontent .= " ";
}
$this->tempcontent .= '';
$this->tempcontent .= ' ';
$this->tempcontent .= $visiblename . '
' . "\n";
$this->currentdepth++;
$this->spancounter++;
}
function close_folder() {
$this->currentdepth--;
$this->tempcontent .= "\n";
}
function create_item($visiblename,$link,$icon,$class) {
global $CFG;
for ($i = 0; $i < $this->currentdepth; $i++) {
$this->tempcontent .= " ";
}
$this->tempcontent .= ''.
$visiblename.'
'."\n";
}
function build_tree (&$content) {
global $CFG;
if (is_a($content, 'admin_settingpage')) {
if ($content->check_access() and !$content->is_hidden()) {
$class = ($content->name == $this->section) ? 'link current' : 'link';
$this->create_item($content->visiblename,$CFG->wwwroot.'/'.$CFG->admin.'/settings.php?section=' . $content->name,$CFG->wwwroot .'/blocks/admin_tree/item.gif', $class);
}
} else if (is_a($content, 'admin_externalpage')) {
if ($content->check_access() and !$content->is_hidden()) {
$class = ($content->name == $this->section) ? 'link current' : 'link';
$this->create_item($content->visiblename, $content->url, $CFG->wwwroot . '/blocks/admin_tree/item.gif', $class);
}
} else if (is_a($content, 'admin_category')) {
if ($content->check_access() and !$content->is_hidden()) {
// check if the category we're currently printing is a parent category for the current page; if it is, we
// make a note (in the javascript) that it has to be expanded after the page has loaded
if ($this->pathtosection[count($this->pathtosection) - 1] == $content->name) {
$this->expandjavascript .= 'expand("vh_span' . ($this->spancounter) . '");' . "\n";
array_pop($this->pathtosection);
}
$this->open_folder($content->visiblename);
$entries = array_keys($content->children);
foreach ($entries as $entry) {
$this->build_tree($content->children[$entry]);
}
$this->close_folder();
}
}
}
function get_content() {
global $CFG, $ADMIN;
require_once($CFG->libdir.'/adminlib.php');
$adminroot = admin_get_root();
if ($this->content !== NULL) {
return $this->content;
}
if ($this->pathtosection = $adminroot->path($this->section)) {
$this->pathtosection = array_reverse($this->pathtosection);
array_pop($this->pathtosection);
}
// we need to do this instead of $this->build_tree($adminroot) because the top-level folder
// is redundant (and ideally ignored). (the top-level folder is "administration".)
$entries = array_keys($adminroot->children);
asort($entries);
foreach ($entries as $entry) {
$this->build_tree($adminroot->children[$entry]);
}
if ($this->tempcontent !== '') {
$strfolderopened = s(get_string('folderopened'));
$strfolderclosed = s(get_string('folderclosed'));
$this->content = new stdClass;
$this->content->text = '' . "\n";
$this->content->text .= '