Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'wip-MDL-30378-m20' of git://github.com/samhemelryk/mood…

…le into MOODLE_20_STABLE
  • Loading branch information...
commit c42caf06ac5cf467d1886a26eff96f576f597627 2 parents f9a0759 + 7bfc00a
@stronk7 stronk7 authored
Showing with 131 additions and 126 deletions.
  1. +131 −126 lib/navigationlib.php
View
257 lib/navigationlib.php
@@ -948,7 +948,7 @@ public function initialise() {
$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.
@@ -968,148 +968,84 @@ public function initialise() {
// 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;
+ // No need to run the generation code for if its the front page.
+ // That has already been done for every page above.
+ 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.
- $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
-
- // Not enrolled, can't view, and hasn't switched roles
- if (!can_access_course($coursecontext)) {
- // 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);
- }
-
- // 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.
- $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
- if (!can_access_course($coursecontext)) {
- $coursenode->make_active();
- $canviewcourseprofile = false;
- break;
- }
+ // If the user is not enrolled then we only want to show the
+ // course node and not populate it.
+ $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
- $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;
+ // Not enrolled, can't view, and hasn't switched roles
+ if (!can_access_course($coursecontext)) {
+ // 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;
+ }
}
}
- }
- // 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;
+ if (!$isparent) {
+ $coursenode->make_active();
+ $canviewcourseprofile = false;
+ break;
}
}
- } 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();
+ // 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);
}
- } 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) {
+ 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 && !$ismycourse) {
$this->load_all_categories($course->category, $showcategories);
}
- // Load the course associated with the user into the navigation
+
+ // 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.
@@ -1126,10 +1062,79 @@ public function initialise() {
$canviewcourseprofile = false;
break;
}
+
$this->add_course_essentials($coursenode, $course);
+ // Load the course sections into the page
$sections = $this->load_course_sections($course, $coursenode);
- }
- break;
+ 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);
+ } 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();
+ $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();
+ }
+ } else {
+ //TODO: something is wrong, what to do? (Skodak)
+ }
+ break;
+ case CONTEXT_USER :
+ $course = $this->page->course;
+ if ($course->id != SITEID) {
+ if ($showcategories && !$ismycourse) {
+ $this->load_all_categories($course->category, $showcategories);
+ }
+ // Load the course associated with the user 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.
+ $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
+ if (!can_access_course($coursecontext)) {
+ $coursenode->make_active();
+ $canviewcourseprofile = false;
+ break;
+ }
+ $this->add_course_essentials($coursenode, $course);
+ $sections = $this->load_course_sections($course, $coursenode);
+ }
+ break;
+ }
}
$limit = 20;
Please sign in to comment.
Something went wrong with that request. Please try again.