From 4d0f6c5dbe63a2fb29b70f9679dae665d72cbdce Mon Sep 17 00:00:00 2001 From: Thijs Kinkhorst <thijs@kinkhorst.com> Date: Mon, 19 Nov 2018 15:02:21 +0000 Subject: [PATCH] Always add core templates to twig search paths. This is because some templates, e.g. errror, expect to be able to include them. This fixes e.g. the No State error page. --- lib/SimpleSAML/XHTML/Template.php | 4 +++- templates/error.twig | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php index 3ae190b88..39bce25eb 100644 --- a/lib/SimpleSAML/XHTML/Template.php +++ b/lib/SimpleSAML/XHTML/Template.php @@ -167,7 +167,7 @@ class Template $this->twig_template = ($namespace !== null) ? '@'.$namespace.'/'.$filename : $filename; $loader = new TemplateLoader(); $templateDirs = $this->findThemeTemplateDirs(); - if ($this->module) { + if ($this->module && $this->module != 'core') { $templateDirs[] = [$this->module => TemplateLoader::getModuleTemplateDir($this->module)]; } if ($this->theme['module']) { @@ -180,6 +180,8 @@ class Template } } + $templateDirs[] = ['core' => TemplateLoader::getModuleTemplateDir('core')]; + // default, themeless templates are checked last $templateDirs[] = [ \Twig_Loader_Filesystem::MAIN_NAMESPACE => $this->configuration->resolvePath('templates') diff --git a/templates/error.twig b/templates/error.twig index 311aa2925..23e06c570 100644 --- a/templates/error.twig +++ b/templates/error.twig @@ -10,7 +10,9 @@ e.g. "core:no_state.tpl.php". The format is "<module>:<template name>" #} {% if includeTemplate -%} - {% include(includeTemplate) %} + {% set parts = includeTemplate|replace({'.tpl.php':'.twig'})|split(':') %} + {% set namespacedTemplate = "@" ~ parts[0] ~ "/" ~ parts[1] %} + {% include(namespacedTemplate) %} {%- endif %} <div class="message-box"> -- GitLab