diff --git a/lib/outputlib.php b/lib/outputlib.php index dcd08758fb7..53e99076304 100644 --- a/lib/outputlib.php +++ b/lib/outputlib.php @@ -846,8 +846,11 @@ class theme_config { /** * Generate a URL to the file that serves theme JavaScript files. * + * If we determine that the theme has no relevant files, then we return + * early with a null value. + * * @param bool $inhead true means head url, false means footer - * @return moodle_url + * @return moodle_url|null */ public function javascript_url($inhead) { global $CFG; @@ -856,6 +859,11 @@ class theme_config { $params = array('theme'=>$this->name,'rev'=>$rev); $params['type'] = $inhead ? 'head' : 'footer'; + // Return early if there are no files to serve + if (count($this->javascript_files($params['type'])) === 0) { + return null; + } + if (!empty($CFG->slasharguments) and $rev > 0) { $url = new moodle_url("$CFG->httpswwwroot/theme/javascript.php"); $url->set_slashargument('/'.$this->name.'/'.$rev.'/'.$params['type'], 'noparam', true); diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 0e8052d59b2..4e097b95730 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -393,10 +393,12 @@ class core_renderer extends renderer_base { } // Get the theme javascript head and footer - $jsurl = $this->page->theme->javascript_url(true); - $this->page->requires->js($jsurl, true); - $jsurl = $this->page->theme->javascript_url(false); - $this->page->requires->js($jsurl); + if ($jsurl = $this->page->theme->javascript_url(true)) { + $this->page->requires->js($jsurl, true); + } + if ($jsurl = $this->page->theme->javascript_url(false)) { + $this->page->requires->js($jsurl); + } // Get any HTML from the page_requirements_manager. $output .= $this->page->requires->get_head_code($this->page, $this);