mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
aa6b41293f
But in order to maintain smooth backwards compatibility, the logos set in the themes themselves take precedence.
182 lines
5.6 KiB
PHP
182 lines
5.6 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/>.
|
|
|
|
/**
|
|
* Moodle's Clean theme, an example of how to make a Bootstrap theme
|
|
*
|
|
* DO NOT MODIFY THIS THEME!
|
|
* COPY IT FIRST, THEN RENAME THE COPY AND MODIFY IT INSTEAD.
|
|
*
|
|
* For full information about creating Moodle themes, see:
|
|
* http://docs.moodle.org/dev/Themes_2.0
|
|
*
|
|
* @package theme_clean
|
|
* @copyright 2013 Moodle, moodle.org
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
|
|
/**
|
|
* Parses CSS before it is cached.
|
|
*
|
|
* This function can make alterations and replace patterns within the CSS.
|
|
*
|
|
* @param string $css The CSS
|
|
* @param theme_config $theme The theme config object.
|
|
* @return string The parsed CSS The parsed CSS.
|
|
*/
|
|
function theme_clean_process_css($css, $theme) {
|
|
global $OUTPUT;
|
|
|
|
// Set the background image for the logo.
|
|
$logo = $OUTPUT->get_logo_url(null, 75);
|
|
$css = theme_clean_set_logo($css, $logo);
|
|
|
|
// Set custom CSS.
|
|
if (!empty($theme->settings->customcss)) {
|
|
$customcss = $theme->settings->customcss;
|
|
} else {
|
|
$customcss = null;
|
|
}
|
|
$css = theme_clean_set_customcss($css, $customcss);
|
|
|
|
return $css;
|
|
}
|
|
|
|
/**
|
|
* Adds the logo to CSS.
|
|
*
|
|
* @param string $css The CSS.
|
|
* @param string $logo The URL of the logo.
|
|
* @return string The parsed CSS
|
|
*/
|
|
function theme_clean_set_logo($css, $logo) {
|
|
$tag = '[[setting:logo]]';
|
|
$replacement = $logo;
|
|
if (is_null($replacement)) {
|
|
$replacement = '';
|
|
}
|
|
|
|
$css = str_replace($tag, $replacement, $css);
|
|
|
|
return $css;
|
|
}
|
|
|
|
/**
|
|
* Serves any files associated with the theme settings.
|
|
*
|
|
* @param stdClass $course
|
|
* @param stdClass $cm
|
|
* @param context $context
|
|
* @param string $filearea
|
|
* @param array $args
|
|
* @param bool $forcedownload
|
|
* @param array $options
|
|
* @return bool
|
|
*/
|
|
function theme_clean_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options = array()) {
|
|
if ($context->contextlevel == CONTEXT_SYSTEM and ($filearea === 'logo' || $filearea === 'smalllogo')) {
|
|
$theme = theme_config::load('clean');
|
|
// By default, theme files must be cache-able by both browsers and proxies.
|
|
if (!array_key_exists('cacheability', $options)) {
|
|
$options['cacheability'] = 'public';
|
|
}
|
|
return $theme->setting_file_serve($filearea, $args, $forcedownload, $options);
|
|
} else {
|
|
send_file_not_found();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Adds any custom CSS to the CSS before it is cached.
|
|
*
|
|
* @param string $css The original CSS.
|
|
* @param string $customcss The custom CSS to add.
|
|
* @return string The CSS which now contains our custom CSS.
|
|
*/
|
|
function theme_clean_set_customcss($css, $customcss) {
|
|
$tag = '[[setting:customcss]]';
|
|
$replacement = $customcss;
|
|
if (is_null($replacement)) {
|
|
$replacement = '';
|
|
}
|
|
|
|
$css = str_replace($tag, $replacement, $css);
|
|
|
|
return $css;
|
|
}
|
|
|
|
/**
|
|
* Returns an object containing HTML for the areas affected by settings.
|
|
*
|
|
* Do not add Clean specific logic in here, child themes should be able to
|
|
* rely on that function just by declaring settings with similar names.
|
|
*
|
|
* @param renderer_base $output Pass in $OUTPUT.
|
|
* @param moodle_page $page Pass in $PAGE.
|
|
* @return stdClass An object with the following properties:
|
|
* - navbarclass A CSS class to use on the navbar. By default ''.
|
|
* - heading HTML to use for the heading. A logo if one is selected or the default heading.
|
|
* - footnote HTML to use as a footnote. By default ''.
|
|
*/
|
|
function theme_clean_get_html_for_settings(renderer_base $output, moodle_page $page) {
|
|
global $CFG;
|
|
$return = new stdClass;
|
|
|
|
$return->navbarclass = '';
|
|
if (!empty($page->theme->settings->invert)) {
|
|
$return->navbarclass .= ' navbar-inverse';
|
|
}
|
|
|
|
// Only display the logo on the front page and login page, if one is defined.
|
|
if (!empty($page->theme->settings->logo) &&
|
|
($page->pagelayout == 'frontpage' || $page->pagelayout == 'login')) {
|
|
$return->heading = html_writer::tag('div', '', array('class' => 'logo'));
|
|
} else {
|
|
$return->heading = $output->page_heading();
|
|
}
|
|
|
|
$return->footnote = '';
|
|
if (!empty($page->theme->settings->footnote)) {
|
|
$return->footnote = '<div class="footnote text-center">'.format_text($page->theme->settings->footnote).'</div>';
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* All theme functions should start with theme_clean_
|
|
* @deprecated since 2.5.1
|
|
*/
|
|
function clean_process_css() {
|
|
throw new coding_exception('Please call theme_'.__FUNCTION__.' instead of '.__FUNCTION__);
|
|
}
|
|
|
|
/**
|
|
* All theme functions should start with theme_clean_
|
|
* @deprecated since 2.5.1
|
|
*/
|
|
function clean_set_logo() {
|
|
throw new coding_exception('Please call theme_'.__FUNCTION__.' instead of '.__FUNCTION__);
|
|
}
|
|
|
|
/**
|
|
* All theme functions should start with theme_clean_
|
|
* @deprecated since 2.5.1
|
|
*/
|
|
function clean_set_customcss() {
|
|
throw new coding_exception('Please call theme_'.__FUNCTION__.' instead of '.__FUNCTION__);
|
|
}
|