navigation MDL-25578 Fixed up navbar when viewing categories.
authorSam Hemelryk <sam@moodle.com>
Wed, 8 Dec 2010 02:03:07 +0000 (02:03 +0000)
committerSam Hemelryk <sam@moodle.com>
Wed, 8 Dec 2010 02:03:07 +0000 (02:03 +0000)
course/category.php
lib/adminlib.php
lib/navigationlib.php

index 9a83b1a..7ca8fc4 100644 (file)
@@ -31,7 +31,8 @@
     if ($perpage) {
         $urlparams['perpage'] = $perpage;
     }
-    $PAGE->set_url('/course/category.php', $urlparams);
+    $PAGE->set_url(new moodle_url('/course/category.php', array('id' => $id)));
+    navigation_node::override_active_url($PAGE->url);
     $context = $PAGE->context;
     $category = $PAGE->category;
 
         require_once($CFG->libdir . '/adminlib.php');
         admin_externalpage_setup('coursemgmt', '', $urlparams, $CFG->wwwroot . '/course/category.php');
         $PAGE->set_context($context);   // Ensure that we are actually showing blocks etc for the cat context
+
+        $settingsnode = $PAGE->settingsnav->find_active_node();
+        if ($settingsnode) {
+            $settingsnode->make_inactive();
+            $settingsnode->force_open();
+            $PAGE->navbar->add($settingsnode->text, $settingsnode->action);
+        }
         echo $OUTPUT->header();
     } else {
-        $PAGE->navbar->add($strcategories, new moodle_url('/course/index.php'));
-        $PAGE->navbar->add($category->name);
-        $PAGE->navbar->add($strcourses);
         $PAGE->set_title("$site->shortname: $category->name");
         $PAGE->set_heading($site->fullname);
         $PAGE->set_button(print_course_search('', true, 'navbar'));
index f915258..f6edb2c 100644 (file)
@@ -5436,6 +5436,8 @@ class admin_page_managefilters extends admin_externalpage {
  *
  * This function must be called on each admin page before other code.
  *
+ * @global moodle_page $PAGE
+ * 
  * @param string $section name of page
  * @param string $extrabutton extra HTML that is added after the blocks editing on/off button.
  * @param array $extraurlparams an array paramname => paramvalue, or parameters that need to be
@@ -5482,9 +5484,6 @@ function admin_externalpage_setup($section, $extrabutton = '', array $extraurlpa
         $actualurl = $extpage->url;
     }
 
-    $extraurlparams = (array)$extraurlparams;
-    $extraurlparams['section'] = $section; // TODO: this is an ugly hack for navigation that must be eliminated!
-
     $PAGE->set_url($actualurl, $extraurlparams);
     if (strpos($PAGE->pagetype, 'admin-') !== 0) {
         $PAGE->set_pagetype('admin-' . $PAGE->pagetype);
@@ -5500,6 +5499,16 @@ function admin_externalpage_setup($section, $extrabutton = '', array $extraurlpa
         $PAGE->set_cacheable(false);
         return;
     }
+    
+    // Locate the current item on the navigation and make it active when found.
+    $path = $extpage->path;
+    $node = $PAGE->settingsnav;
+    while ($node && count($path) > 0) {
+        $node = $node->get(array_pop($path));
+    }
+    if ($node) {
+        $node->make_active();
+    }
 
     // Normal case.
     $adminediting = optional_param('adminedit', -1, PARAM_BOOL);
index 4e759f2..67e5241 100644 (file)
@@ -963,9 +963,13 @@ class global_navigation extends navigation_node {
         // Next load context specific content into the navigation
         switch ($this->page->context->contextlevel) {
             case CONTEXT_SYSTEM :
+                // This has already been loaded we just need to map the variable
+                $coursenode = $frontpagecourse;
+                break;
             case CONTEXT_COURSECAT :
                 // This has already been loaded we just need to map the variable
                 $coursenode = $frontpagecourse;
+                $this->load_all_categories($this->page->context->instanceid);
                 break;
             case CONTEXT_BLOCK :
             case CONTEXT_COURSE :