From 3707972a780899424b95bab23ca940e09c922c36 Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Fri, 7 Jun 2013 10:34:02 +1200 Subject: [PATCH] MDL-39838 renderer: new methods for body classes and id --- lib/outputrenderers.php | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 860d693491535..b508d5714eeaf 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -3048,6 +3048,57 @@ public function blocks($region, $classes = array(), $tag = 'aside') { ); return html_writer::tag($tag, $this->blocks_for_region($region), $attributes); } + + /** + * Returns the CSS classes to apply to the body tag. + * + * @since 2.5.1 2.6 + * @param array $additionalclasses Any additional classes to apply. + * @return string + */ + public function body_css_classes(array $additionalclasses = array()) { + // Add a class for each block region on the page. + // We use the block manager here because the theme object makes get_string calls. + foreach ($this->page->blocks->get_regions() as $region) { + $additionalclasses[] = 'has-region-'.$region; + if ($this->page->blocks->region_has_content($region, $this)) { + $additionalclasses[] = 'used-region-'.$region; + } else { + $additionalclasses[] = 'empty-region-'.$region; + } + } + foreach ($this->page->layout_options as $option => $value) { + if ($value) { + $additionalclasses[] = 'layout-option-'.$option; + } + } + $css = $this->page->bodyclasses .' '. join(' ', $additionalclasses); + return $css; + } + + /** + * The ID attribute to apply to the body tag. + * + * @since 2.5.1 2.6 + * @return string + */ + public function body_id() { + return $this->page->bodyid; + } + + /** + * Returns HTML attributes to use within the body tag. This includes an ID and classes. + * + * @since 2.5.1 2.6 + * @param string|array $additionalclasses Any additional classes to give the body tag, + * @return string + */ + public function body_attributes($additionalclasses = array()) { + if (!is_array($additionalclasses)) { + $additionalclasses = explode(' ', $additionalclasses); + } + return ' id="'. $this->body_id().'" class="'.$this->body_css_classes($additionalclasses).'"'; + } } /**