mirror of
https://github.com/moodle/moodle.git
synced 2025-08-10 11:26:41 +02:00

But in order to maintain smooth backwards compatibility, the logos set in the themes themselves take precedence.
155 lines
5.9 KiB
PHP
155 lines
5.9 KiB
PHP
<?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) {
|
|
if (!empty($this->page->theme->settings->logo)) {
|
|
return $this->page->theme->setting_file_url('logo', 'logo');
|
|
}
|
|
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) {
|
|
if (!empty($this->page->theme->settings->smalllogo)) {
|
|
return $this->page->theme->setting_file_url('smalllogo', 'smalllogo');
|
|
}
|
|
return parent::get_compact_logo_url($maxwidth, $maxheight);
|
|
}
|
|
|
|
}
|