Merge branch 'MDL-59612-master' of git://github.com/junpataleta/moodle
authorDavid Monllao <davidm@moodle.com>
Mon, 31 Jul 2017 11:59:55 +0000 (13:59 +0200)
committerDavid Monllao <davidm@moodle.com>
Mon, 31 Jul 2017 11:59:55 +0000 (13:59 +0200)
1  2 
lib/outputrenderers.php

diff --combined lib/outputrenderers.php
@@@ -813,6 -813,69 +813,69 @@@ class core_renderer extends renderer_ba
          return '<div role="main">'.$this->unique_main_content_token.'</div>';
      }
  
+     /**
+      * Returns standard navigation between activities in a course.
+      *
+      * @return string the navigation HTML.
+      */
+     public function activity_navigation() {
+         // First we should check if we want to add navigation.
+         $context = $this->page->context;
+         if (($this->page->pagelayout !== 'incourse' && $this->page->pagelayout !== 'frametop')
+             || $context->contextlevel != CONTEXT_MODULE) {
+             return '';
+         }
+         // If the activity is in stealth mode, show no links.
+         if ($this->page->cm->is_stealth()) {
+             return '';
+         }
+         // Get a list of all the activities in the course.
+         $course = $this->page->cm->get_course();
+         $modules = get_fast_modinfo($course->id)->get_cms();
+         // Put the modules into an array in order by the position they are shown in the course.
+         $mods = [];
+         foreach ($modules as $module) {
+             // Only add activities the user can access, aren't in stealth mode and have a url (eg. mod_label does not).
+             if (!$module->uservisible || $module->is_stealth() || empty($module->url)) {
+                 continue;
+             }
+             $mods[$module->id] = $module;
+         }
+         $nummods = count($mods);
+         // If there is only one mod then do nothing.
+         if ($nummods == 1) {
+             return '';
+         }
+         // Get an array of just the course module ids used to get the cmid value based on their position in the course.
+         $modids = array_keys($mods);
+         // Get the position in the array of the course module we are viewing.
+         $position = array_search($this->page->cm->id, $modids);
+         $prevmod = null;
+         $nextmod = null;
+         // Check if we have a previous mod to show.
+         if ($position > 0) {
+             $prevmod = $mods[$modids[$position - 1]];
+         }
+         // Check if we have a next mod to show.
+         if ($position < ($nummods - 1)) {
+             $nextmod = $mods[$modids[$position + 1]];
+         }
+         $activitynav = new \core_course\output\activity_navigation($prevmod, $nextmod);
+         $renderer = $this->page->get_renderer('core', 'course');
+         return $renderer->render($activitynav);
+     }
      /**
       * The standard tags (typically script tags that are not needed earlier) that
       * should be output after everything else. Designed to be called in theme layout.php files.
@@@ -3176,7 -3239,7 +3239,7 @@@ EOD
              array('role' => 'button', 'tabindex' => 0));
          $formattrs = array('class' => 'search-input-form', 'action' => $CFG->wwwroot . '/search/index.php');
          $inputattrs = array('type' => 'text', 'name' => 'q', 'placeholder' => get_string('search', 'search'),
 -            'size' => 13, 'tabindex' => -1, 'id' => 'id_q_' . $id);
 +            'size' => 13, 'tabindex' => -1, 'id' => 'id_q_' . $id, 'class' => 'form-control');
  
          $contents = html_writer::tag('label', get_string('enteryoursearchquery', 'search'),
              array('for' => 'id_q_' . $id, 'class' => 'accesshide')) . html_writer::tag('input', '', $inputattrs);