MDL-52195 tool_lp: Normalise the navigation in templates
[moodle.git] / admin / tool / lp / classes / page_helper.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Page helper.
19  *
20  * @package    tool_lp
21  * @copyright  2015 Frédéric Massart - FMCorz.net
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace tool_lp;
26 defined('MOODLE_INTERNAL') || die();
28 use coding_exception;
29 use context;
30 use moodle_url;
32 /**
33  * Page helper.
34  *
35  * @package    tool_lp
36  * @copyright  2015 Frédéric Massart - FMCorz.net
37  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
38  */
39 class page_helper {
41     /**
42      * Set-up a template page.
43      *
44      * Example:
45      * list($title, $subtitle) = page_helper::setup_for_template($pagecontextid, $url, $template, $pagetitle);
46      * echo $OUTPUT->heading($title);
47      * echo $OUTPUT->heading($subtitle, 3);
48      *
49      * @param  int $pagecontextid The page context ID.
50      * @param  moodle_url $url The current page.
51      * @param  \tool_lp\template $template The template, if any.
52      * @param  string $subpage The title of the subpage, if any.
53      * @return array With the following:
54      *               - Page title
55      *               - Page sub title
56      *               - Return URL (main templates page)
57      */
58     public static function setup_for_template($pagecontextid, moodle_url $url, $template = null, $subtitle = '') {
59         global $PAGE, $SITE;
61         $pagecontext = context::instance_by_id($pagecontextid);
62         $context = $pagecontext;
63         if (!empty($template)) {
64             $context = $template->get_context();
65         }
67         $templatesurl = new moodle_url('/admin/tool/lp/learningplans.php', array('pagecontextid' => $pagecontextid));
69         $PAGE->navigation->override_active_url($templatesurl);
70         $PAGE->set_context($pagecontext);
72         if (!empty($template)) {
73             $title = format_string($template->get_shortname(), true, array('context' => $context));
74         } else {
75             $title = get_string('templates', 'tool_lp');
76         }
78         if ($pagecontext->contextlevel == CONTEXT_SYSTEM) {
79             $heading = $SITE->fullname;
80         } else if ($pagecontext->contextlevel == CONTEXT_COURSECAT) {
81             $heading = $pagecontext->get_context_name();
82         } else {
83             throw new coding_exception('Unexpected context!');
84         }
86         $PAGE->set_pagelayout('admin');
87         $PAGE->set_url($url);
88         $PAGE->set_title($title);
89         $PAGE->set_heading($heading);
91         if (!empty($template)) {
92             $PAGE->navbar->add($title);
93             $PAGE->navbar->add($subtitle, $url);
95         } else if (!empty($subtitle)) {
96             // We're in a sub page without a specific template.
97             $PAGE->navbar->add($subtitle, $url);
98         }
100         return array($title, $subtitle, $templatesurl);
101     }