diff --git a/Netdisco/lib/App/Netdisco/Web.pm b/Netdisco/lib/App/Netdisco/Web.pm index aa50da3a..f7ff4aa3 100644 --- a/Netdisco/lib/App/Netdisco/Web.pm +++ b/Netdisco/lib/App/Netdisco/Web.pm @@ -42,7 +42,7 @@ if (setting('extra_web_plugins') and ref [] eq ref setting('extra_web_plugins')) } # after plugins are loaded, add our own template path -push @{ config->{engines}->{template_toolkit}->{INCLUDE_PATH} }, +push @{ config->{engines}->{netdisco_template_toolkit}->{INCLUDE_PATH} }, setting('views'); # workaround for https://github.com/PerlDancer/Dancer/issues/935 diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin.pm b/Netdisco/lib/App/Netdisco/Web/Plugin.pm index 49650d00..adffac6b 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin.pm @@ -21,7 +21,7 @@ set( ); # this is what Dancer::Template::TemplateToolkit does by default -config->{engines}->{template_toolkit}->{INCLUDE_PATH} ||= [ setting('views') ]; +config->{engines}->{netdisco_template_toolkit}->{INCLUDE_PATH} ||= [ setting('views') ]; register 'register_template_path' => sub { my ($self, $path) = plugin_args(@_); @@ -30,7 +30,7 @@ register 'register_template_path' => sub { return error "bad template path to register_template_paths"; } - push @{ config->{engines}->{template_toolkit}->{INCLUDE_PATH} }, + push @{ config->{engines}->{netdisco_template_toolkit}->{INCLUDE_PATH} }, dir($path, 'views')->stringify; }; diff --git a/Netdisco/lib/Dancer/Template/NetdiscoTemplateToolkit.pm b/Netdisco/lib/Dancer/Template/NetdiscoTemplateToolkit.pm new file mode 100644 index 00000000..5a3e31bc --- /dev/null +++ b/Netdisco/lib/Dancer/Template/NetdiscoTemplateToolkit.pm @@ -0,0 +1,23 @@ +package Dancer::Template::NetdiscoTemplateToolkit; + +use strict; +use warnings; + +use Dancer::FileUtils 'path'; +use base 'Dancer::Template::TemplateToolkit'; + +sub view { + my ($self, $view) = @_; + + foreach my $path (@{ $self->config->{INCLUDE_PATH} }) { + foreach my $template ($self->_template_name($view)) { + my $view_path = path($path, $template); + return $view_path if -f $view_path; + } + } + + # No matching view path was found + return; +} + +1; diff --git a/Netdisco/share/config.yml b/Netdisco/share/config.yml index cad0966c..50496821 100644 --- a/Netdisco/share/config.yml +++ b/Netdisco/share/config.yml @@ -218,7 +218,7 @@ warnings: false show_errors: false logger: 'console' engines: - template_toolkit: + netdisco_template_toolkit: encoding: 'utf8' start_tag: '[%' end_tag: '%]' @@ -235,7 +235,7 @@ plugins: provider: 'App::Netdisco::Web::Auth::Provider::DBIC' schema_name: 'netdisco' session: 'YAML' -template: 'template_toolkit' +template: 'netdisco_template_toolkit' route_cache: true appname: 'Netdisco' behind_proxy: false