From 6ceea3fe1284f62e910456852d3d711996cb68d2 Mon Sep 17 00:00:00 2001 From: Ryan Wyllie Date: Wed, 26 Aug 2015 07:52:19 +0000 Subject: [PATCH] MDL-49536 theme_clean: logo only on front and login The logo for the clean and more themes will only be displayed on the front page and login page as it was replacing the header information on other pages within Moodle, causing users to lose information on the page. --- theme/clean/classes/core_renderer.php | 23 ++++++++++++++++++++++- theme/clean/lib.php | 4 +++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/theme/clean/classes/core_renderer.php b/theme/clean/classes/core_renderer.php index b3534ad994e..4b27144879c 100644 --- a/theme/clean/classes/core_renderer.php +++ b/theme/clean/classes/core_renderer.php @@ -38,9 +38,30 @@ class theme_clean_core_renderer extends theme_bootstrapbase_core_renderer { * @return string HTML for the header bar. */ public function context_header($headerinfo = null, $headinglevel = 1) { - if ($headinglevel == 1 && !empty($this->page->theme->settings->logo)) { + + 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. + if ($headinglevel == 1 && !empty($this->page->theme->settings->logo)) { + if ($PAGE->pagelayout == 'frontpage' || $PAGE->pagelayout == 'login') { + return true; + } + } + + return false; + } } diff --git a/theme/clean/lib.php b/theme/clean/lib.php index 931090381c2..4a46bba42c2 100644 --- a/theme/clean/lib.php +++ b/theme/clean/lib.php @@ -139,7 +139,9 @@ function theme_clean_get_html_for_settings(renderer_base $output, moodle_page $p $return->navbarclass .= ' navbar-inverse'; } - if (!empty($page->theme->settings->logo)) { + // 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();