/theme/clean/classes/core_renderer.php
PHP | 167 lines | 67 code | 21 blank | 79 comment | 17 complexity | a64e7f4028acecc5b86049337d611919 MD5 | raw file
Possible License(s): Apache-2.0, LGPL-2.1, BSD-3-Clause, MIT, GPL-3.0
- <?php
- // This file is part of Moodle - http://moodle.org/
- //
- // Moodle is free software: you can redistribute it and/or modify
- // it under the terms of the GNU General Public License as published by
- // the Free Software Foundation, either version 3 of the License, or
- // (at your option) any later version.
- //
- // Moodle is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- //
- // You should have received a copy of the GNU General Public License
- // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
- require_once($CFG->dirroot . '/theme/bootstrapbase/renderers.php');
- /**
- * Clean core renderers.
- *
- * @package theme_clean
- * @copyright 2015 FrĂŠdĂŠric Massart - FMCorz.net
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
- class theme_clean_core_renderer extends theme_bootstrapbase_core_renderer {
- /**
- * Either returns the parent version of the header bar, or a version with the logo replacing the header.
- *
- * @since Moodle 2.9
- * @param array $headerinfo An array of header information, dependant on what type of header is being displayed. The following
- * array example is user specific.
- * heading => Override the page heading.
- * user => User object.
- * usercontext => user context.
- * @param int $headinglevel What level the 'h' tag will be.
- * @return string HTML for the header bar.
- */
- public function context_header($headerinfo = null, $headinglevel = 1) {
- if ($this->should_render_logo($headinglevel)) {
- return html_writer::tag('div', '', array('class' => 'logo'));
- }
- return parent::context_header($headerinfo, $headinglevel);
- }
- /**
- * Determines if we should render the logo.
- *
- * @param int $headinglevel What level the 'h' tag will be.
- * @return bool Should the logo be rendered.
- */
- protected function should_render_logo($headinglevel = 1) {
- global $PAGE;
- // Only render the logo if we're on the front page or login page
- // and the theme has a logo.
- $logo = $this->get_logo_url();
- if ($headinglevel == 1 && !empty($logo)) {
- if ($PAGE->pagelayout == 'frontpage' || $PAGE->pagelayout == 'login') {
- return true;
- }
- }
- return false;
- }
- /**
- * Returns the navigation bar home reference.
- *
- * The small logo is only rendered on pages where the logo is not displayed.
- *
- * @param bool $returnlink Whether to wrap the icon and the site name in links or not
- * @return string The site name, the small logo or both depending on the theme settings.
- */
- public function navbar_home($returnlink = true) {
- global $CFG;
- $imageurl = $this->get_compact_logo_url(null, 35);
- if ($this->should_render_logo() || empty($imageurl)) {
- // If there is no small logo we always show the site name.
- return $this->get_home_ref($returnlink);
- }
- $image = html_writer::img($imageurl, get_string('sitelogo', 'theme_' . $this->page->theme->name),
- array('class' => 'small-logo'));
- if ($returnlink) {
- $logocontainer = html_writer::link(new moodle_url('/'), $image,
- array('class' => 'small-logo-container', 'title' => get_string('home')));
- } else {
- $logocontainer = html_writer::tag('span', $image, array('class' => 'small-logo-container'));
- }
- // Sitename setting defaults to true.
- if (!isset($this->page->theme->settings->sitename) || !empty($this->page->theme->settings->sitename)) {
- return $logocontainer . $this->get_home_ref($returnlink);
- }
- return $logocontainer;
- }
- /**
- * Returns a reference to the site home.
- *
- * It can be either a link or a span.
- *
- * @param bool $returnlink
- * @return string
- */
- protected function get_home_ref($returnlink = true) {
- global $CFG, $SITE;
- $sitename = format_string($SITE->shortname, true, array('context' => context_course::instance(SITEID)));
- if ($returnlink) {
- return html_writer::link(new moodle_url('/'), $sitename, array('class' => 'brand', 'title' => get_string('home')));
- }
- return html_writer::tag('span', $sitename, array('class' => 'brand'));
- }
- /**
- * Return the theme logo URL, else the site's logo URL, if any.
- *
- * Note that maximum sizes are not applied to the theme logo.
- *
- * @param int $maxwidth The maximum width, or null when the maximum width does not matter.
- * @param int $maxheight The maximum height, or null when the maximum height does not matter.
- * @return moodle_url|false
- */
- public function get_logo_url($maxwidth = null, $maxheight = 100) {
- global $CFG;
- if (!empty($this->page->theme->settings->logo)) {
- $url = $this->page->theme->setting_file_url('logo', 'logo');
- // Get a URL suitable for moodle_url.
- $relativebaseurl = preg_replace('|^https?://|i', '//', $CFG->wwwroot);
- $url = str_replace($relativebaseurl, '', $url);
- return new moodle_url($url);
- }
- return parent::get_logo_url($maxwidth, $maxheight);
- }
- /**
- * Return the theme's compact logo URL, else the site's compact logo URL, if any.
- *
- * Note that maximum sizes are not applied to the theme logo.
- *
- * @param int $maxwidth The maximum width, or null when the maximum width does not matter.
- * @param int $maxheight The maximum height, or null when the maximum height does not matter.
- * @return moodle_url|false
- */
- public function get_compact_logo_url($maxwidth = 100, $maxheight = 100) {
- global $CFG;
- if (!empty($this->page->theme->settings->smalllogo)) {
- $url = $this->page->theme->setting_file_url('smalllogo', 'smalllogo');
- // Get a URL suitable for moodle_url.
- $relativebaseurl = preg_replace('|^https?://|i', '//', $CFG->wwwroot);
- $url = str_replace($relativebaseurl, '', $url);
- return new moodle_url($url);
- }
- return parent::get_compact_logo_url($maxwidth, $maxheight);
- }
- }