} else if ($this->hasitems !== false) {
return true;
}
- $this->page->navigation->initialise($this->page);
-
- $activenodefound = ($this->page->navigation->contains_active_node() ||
- $this->page->settingsnav->contains_active_node());
-
- $outcome = (count($this->children) > 0 || count($this->prependchildren) || (!$this->ignoreactive && $activenodefound));
+ if (count($this->children) > 0 || count($this->prependchildren) > 0) {
+ // There have been manually added items - there are definitely items.
+ $outcome = true;
+ } else if (!$this->ignoreactive) {
+ // We will need to initialise the navigation structure to check if there are active items.
+ $this->page->navigation->initialise($this->page);
+ $outcome = ($this->page->navigation->contains_active_node() || $this->page->settingsnav->contains_active_node());
+ }
$this->hasitems = $outcome;
return $outcome;
}
$items = array_reverse($this->children);
}
- $navigationactivenode = $this->page->navigation->find_active_node();
- $settingsactivenode = $this->page->settingsnav->find_active_node();
-
// Check if navigation contains the active node
if (!$this->ignoreactive) {
+ $navigationactivenode = $this->page->navigation->find_active_node();
+ $settingsactivenode = $this->page->settingsnav->find_active_node();
if ($navigationactivenode && $settingsactivenode) {
// Parse a combined navigation tree
/// Define variables used in page
$site = get_site();
+// Ignore any active pages in the navigation/settings.
+// We do this because there won't be an active page there, and by ignoring the active pages the
+// navigation and settings won't be initialised unless something else needs them.
+$PAGE->navbar->ignore_active();
$loginsite = get_string("loginsite");
$PAGE->navbar->add($loginsite);