@@ -, +, @@ git clone --branch template-include-paths \ https://github.com/jajm/dev-koha-plugin-kitchen-sink.git 'plugin_kitchensink_greeter". Click on the "View" button detail block" block" --- C4/Templates.pm | 5 ++ .../Koha/Plugins/TemplateIncludePathHook.t | 57 +++++++++++++++++++ t/lib/plugins/Koha/Plugin/Test.pm | 8 +++ t/lib/plugins/Koha/Plugin/Test/inc/test.inc | 1 + 4 files changed, 71 insertions(+) create mode 100644 t/db_dependent/Koha/Plugins/TemplateIncludePathHook.t create mode 100644 t/lib/plugins/Koha/Plugin/Test/inc/test.inc --- a/C4/Templates.pm +++ a/C4/Templates.pm @@ -61,6 +61,11 @@ sub new { push @includes, "$htdocs/$_/$lang/includes"; push @includes, "$htdocs/$_/en/includes" unless $lang eq 'en'; } + + my @plugins_include_paths = Koha::Plugins->call( 'template_include_paths', + { interface => $interface, lang => $lang } ); + push @includes, map { $_ ? @$_ : () } @plugins_include_paths; + # Do not use template cache if script is called from commandline my $use_template_cache = C4::Context->config('template_cache_dir') && defined $ENV{GATEWAY_INTERFACE}; my $template = Template->new( --- a/t/db_dependent/Koha/Plugins/TemplateIncludePathHook.t +++ a/t/db_dependent/Koha/Plugins/TemplateIncludePathHook.t @@ -0,0 +1,57 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Koha; if not, see . + +use Modern::Perl; + +use Test::More tests => 4; +use Test::MockModule; +use Test::Warn; + +use File::Basename; + + +BEGIN { + # Mock pluginsdir before loading Plugins module + my $path = dirname(__FILE__) . '/../../../lib/plugins'; + require t::lib::Mocks; + t::lib::Mocks::mock_config( 'enable_plugins', 1 ); + t::lib::Mocks::mock_config( 'pluginsdir', $path ); + + use_ok('Koha::Plugins'); + use_ok('Koha::Plugins::Handler'); + use_ok('Koha::Plugin::Test'); +} + +my $schema = Koha::Database->new->schema; + +subtest 'template_include_paths' => sub { + plan tests => 1; + + $schema->storage->txn_begin; + + Koha::Plugins->new->InstallPlugins(); + Koha::Plugin::Test->new->enable; + + require C4::Templates; + my $c4_template = C4::Templates::gettemplate('intranet-main.tt', 'intranet'); + my $template = $c4_template->{TEMPLATE}; + my $output = ''; + $template->process(\"[% INCLUDE test.inc %]", {}, \$output) || die $template->error(); + is($output, 'included content'); + + $schema->storage->txn_commit; + #Koha::Plugins::Methods->delete; +}; --- a/t/lib/plugins/Koha/Plugin/Test.pm +++ a/t/lib/plugins/Koha/Plugin/Test.pm @@ -369,6 +369,14 @@ sub after_recall_action { "after_recall_action called with action: $action, ref: " . ref($recall) ); } +sub template_include_paths { + my ($self) = @_; + + return [ + $self->mbf_path('inc'), + ]; +} + sub _private_sub { return ""; } --- a/t/lib/plugins/Koha/Plugin/Test/inc/test.inc +++ a/t/lib/plugins/Koha/Plugin/Test/inc/test.inc @@ -0,0 +1, @@ +[% 'included content' ~%] --