From 56c062a45f2d0534a8154b3f997e80f53dff5b34 Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Tue, 29 Nov 2011 11:01:50 +1300 Subject: [PATCH] MDL-30378 navigation: Front page activities are now added to the navigation on every page --- lib/navigationlib.php | 236 +++++++++++++++++++++--------------------- 1 file changed, 118 insertions(+), 118 deletions(-) diff --git a/lib/navigationlib.php b/lib/navigationlib.php index 82a672e8f13..239021b46ee 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -1060,7 +1060,7 @@ class global_navigation extends navigation_node { $mycourses = enrol_get_my_courses(NULL, 'visible DESC,sortorder ASC', $limit); $showallcourses = (count($mycourses) == 0 || !empty($CFG->navshowallcourses)); $showcategories = ($showallcourses && $this->show_categories()); - $issite = ($this->page->course->id != SITEID); + $issite = ($this->page->course->id == SITEID); $ismycourse = (array_key_exists($this->page->course->id, $mycourses)); // Check if any courses were returned. @@ -1080,143 +1080,143 @@ class global_navigation extends navigation_node { // JavaScript enabled. $frontpagecourse = $this->load_course($SITE); $this->add_front_page_course_essentials($frontpagecourse, $SITE); + $this->load_course_sections($SITE, $frontpagecourse); $canviewcourseprofile = true; - // 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; - $this->load_all_categories(null, $showcategories); - 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, $showcategories); - break; - case CONTEXT_BLOCK : - case CONTEXT_COURSE : - // Load the course associated with the page into the navigation - $course = $this->page->course; - if ($showcategories && !$issite && !$ismycourse) { - $this->load_all_categories($course->category, $showcategories); - } - $coursenode = $this->load_course($course); - - // If the course wasn't added then don't try going any further. - if (!$coursenode) { - $canviewcourseprofile = false; + if (!$issite) { + // 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; + $this->load_all_categories(null, $showcategories); break; - } - - // If the user is not enrolled then we only want to show the - // course node and not populate it. - - // Not enrolled, can't view, and hasn't switched roles - if (!can_access_course($course)) { - // TODO: very ugly hack - do not force "parents" to enrol into course their child is enrolled in, - // this hack has been propagated from user/view.php to display the navigation node. (MDL-25805) - $isparent = false; - if ($this->useridtouseforparentchecks) { - if ($this->useridtouseforparentchecks != $USER->id) { - $usercontext = get_context_instance(CONTEXT_USER, $this->useridtouseforparentchecks, MUST_EXIST); - if ($DB->record_exists('role_assignments', array('userid' => $USER->id, 'contextid' => $usercontext->id)) - and has_capability('moodle/user:viewdetails', $usercontext)) { - $isparent = true; - } - } + 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, $showcategories); + break; + case CONTEXT_BLOCK : + case CONTEXT_COURSE : + // Load the course associated with the page into the navigation + $course = $this->page->course; + if ($showcategories && !$ismycourse) { + $this->load_all_categories($course->category, $showcategories); } + $coursenode = $this->load_course($course); - if (!$isparent) { - $coursenode->make_active(); + // If the course wasn't added then don't try going any further. + if (!$coursenode) { $canviewcourseprofile = false; break; } - } - // Add the essentials such as reports etc... - $this->add_course_essentials($coursenode, $course); - if ($this->format_display_course_content($course->format)) { - // Load the course sections - $sections = $this->load_course_sections($course, $coursenode); - } - if (!$coursenode->contains_active_node() && !$coursenode->search_for_active_node()) { - $coursenode->make_active(); - } - break; - case CONTEXT_MODULE : - $course = $this->page->course; - $cm = $this->page->cm; - if ($showcategories && !$issite && !$ismycourse) { - $this->load_all_categories($course->category, $showcategories); - } + // If the user is not enrolled then we only want to show the + // course node and not populate it. - // Load the course associated with the page into the navigation - $coursenode = $this->load_course($course); + // Not enrolled, can't view, and hasn't switched roles + if (!can_access_course($course)) { + // TODO: very ugly hack - do not force "parents" to enrol into course their child is enrolled in, + // this hack has been propagated from user/view.php to display the navigation node. (MDL-25805) + $isparent = false; + if ($this->useridtouseforparentchecks) { + if ($this->useridtouseforparentchecks != $USER->id) { + $usercontext = get_context_instance(CONTEXT_USER, $this->useridtouseforparentchecks, MUST_EXIST); + if ($DB->record_exists('role_assignments', array('userid' => $USER->id, 'contextid' => $usercontext->id)) + and has_capability('moodle/user:viewdetails', $usercontext)) { + $isparent = true; + } + } + } - // If the course wasn't added then don't try going any further. - if (!$coursenode) { - $canviewcourseprofile = false; + if (!$isparent) { + $coursenode->make_active(); + $canviewcourseprofile = false; + break; + } + } + // Add the essentials such as reports etc... + $this->add_course_essentials($coursenode, $course); + if ($this->format_display_course_content($course->format)) { + // Load the course sections + $sections = $this->load_course_sections($course, $coursenode); + } + if (!$coursenode->contains_active_node() && !$coursenode->search_for_active_node()) { + $coursenode->make_active(); + } break; - } + case CONTEXT_MODULE : + $course = $this->page->course; + $cm = $this->page->cm; - // If the user is not enrolled then we only want to show the - // course node and not populate it. - if (!can_access_course($course)) { - $coursenode->make_active(); - $canviewcourseprofile = false; - break; - } + if ($showcategories && !$ismycourse) { + $this->load_all_categories($course->category, $showcategories); + } - $this->add_course_essentials($coursenode, $course); - // Load the course sections into the page - $sections = $this->load_course_sections($course, $coursenode); - if ($course->id != SITEID) { - // Find the section for the $CM associated with the page and collect - // its section number. - if (isset($cm->sectionnum)) { - $cm->sectionnumber = $cm->sectionnum; - } else { - foreach ($sections as $section) { - if ($section->id == $cm->section) { - $cm->sectionnumber = $section->section; - break; + // Load the course associated with the page into the navigation + $coursenode = $this->load_course($course); + + // If the course wasn't added then don't try going any further. + if (!$coursenode) { + $canviewcourseprofile = false; + break; + } + + // If the user is not enrolled then we only want to show the + // course node and not populate it. + if (!can_access_course($course)) { + $coursenode->make_active(); + $canviewcourseprofile = false; + break; + } + + $this->add_course_essentials($coursenode, $course); + // Load the course sections into the page + $sections = $this->load_course_sections($course, $coursenode); + if ($course->id != SITEID) { + // Find the section for the $CM associated with the page and collect + // its section number. + if (isset($cm->sectionnum)) { + $cm->sectionnumber = $cm->sectionnum; + } else { + foreach ($sections as $section) { + if ($section->id == $cm->section) { + $cm->sectionnumber = $section->section; + break; + } } } - } - // Load all of the section activities for the section the cm belongs to. - if (isset($cm->sectionnumber) and !empty($sections[$cm->sectionnumber])) { - list($sectionarray, $activityarray) = $this->generate_sections_and_activities($course); - $activities = $this->load_section_activities($sections[$cm->sectionnumber]->sectionnode, $cm->sectionnumber, $activityarray); + // Load all of the section activities for the section the cm belongs to. + if (isset($cm->sectionnumber) and !empty($sections[$cm->sectionnumber])) { + list($sectionarray, $activityarray) = $this->generate_sections_and_activities($course); + $activities = $this->load_section_activities($sections[$cm->sectionnumber]->sectionnode, $cm->sectionnumber, $activityarray); + } else { + $activities = array(); + if ($activity = $this->load_stealth_activity($coursenode, get_fast_modinfo($course))) { + // "stealth" activity from unavailable section + $activities[$cm->id] = $activity; + } + } } else { $activities = array(); - if ($activity = $this->load_stealth_activity($coursenode, get_fast_modinfo($course))) { - // "stealth" activity from unavailable section - $activities[$cm->id] = $activity; - } + $activities[$cm->id] = $coursenode->get($cm->id, navigation_node::TYPE_ACTIVITY); } - } else { - $activities = array(); - $activities[$cm->id] = $coursenode->get($cm->id, navigation_node::TYPE_ACTIVITY); - } - if (!empty($activities[$cm->id])) { - // Finally load the cm specific navigaton information - $this->load_activity($cm, $course, $activities[$cm->id]); - // Check if we have an active ndoe - if (!$activities[$cm->id]->contains_active_node() && !$activities[$cm->id]->search_for_active_node()) { - // And make the activity node active. - $activities[$cm->id]->make_active(); + if (!empty($activities[$cm->id])) { + // Finally load the cm specific navigaton information + $this->load_activity($cm, $course, $activities[$cm->id]); + // Check if we have an active ndoe + if (!$activities[$cm->id]->contains_active_node() && !$activities[$cm->id]->search_for_active_node()) { + // And make the activity node active. + $activities[$cm->id]->make_active(); + } + } else { + //TODO: something is wrong, what to do? (Skodak) } - } else { - //TODO: something is wrong, what to do? (Skodak) - } - break; - case CONTEXT_USER : - $course = $this->page->course; - if ($course->id != SITEID) { - if ($showcategories && !$issite && !$ismycourse) { + break; + case CONTEXT_USER : + if ($showcategories && !$ismycourse) { $this->load_all_categories($course->category, $showcategories); } // Load the course associated with the user into the navigation @@ -1237,8 +1237,8 @@ class global_navigation extends navigation_node { } $this->add_course_essentials($coursenode, $course); $sections = $this->load_course_sections($course, $coursenode); - } - break; + break; + } } $limit = 20; -- 2.43.0