Bug 23237: Plugin allow [% INCLUDE %] from template
From a plugin template it is useful to be able to include other templates with [% INCLUDE %] directives. But TT module is used by Koha with absolute paths. Relative paths are forbidden for security reasons. A new param [% PLUGIN_DIR %] allow plugin templates to know where to find plugin home directory. How to test: 1. Install kitchen-sink plugin. 2. Find tool-step1.tt file, and add this at the begining of the file: [% INCLUDE "$PLUGIN_DIR/header.tt" %] It ask to include a template header.tt which doesn't exit. 3. Run kitchen-sink plugin tool. You must have this error message: Template process failed: file error - _path to plugin directory_/Koha/Plugin/Com/ByWaterSolutions/KitchenSink/header.tt: not found quod erat demonstrandum Signed-off-by: Maryse Simard <maryse.simard@inlibro.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
43b0ef8f53
commit
8c517d2f28
1 changed files with 47 additions and 1 deletions
|
@ -119,6 +119,32 @@ sub retrieve_data {
|
|||
get_template returns a Template object. Eventually this will probably be calling
|
||||
C4:Template, but at the moment, it does not.
|
||||
|
||||
The returned template contains 3 variables that can be used in the plugin
|
||||
templates:
|
||||
|
||||
=over 8
|
||||
|
||||
=item B<CLASS>
|
||||
|
||||
The name of the plugin class.
|
||||
|
||||
=item B<METHOD>
|
||||
|
||||
Then name of the plugin method used. For example 'tool' or 'report'.
|
||||
|
||||
=item B<PLUGIN_PATH>
|
||||
|
||||
The URL path to the plugin. It can be used in templates in order to localize
|
||||
ressources like images in html tags, or other templates.
|
||||
|
||||
=item B<PLUGN_DIR>
|
||||
|
||||
The absolute pathname to the plugin directory. Necessary to include other
|
||||
templates from a template with the [% INCLUDE %] directive.
|
||||
|
||||
=over
|
||||
|
||||
|
||||
=cut
|
||||
|
||||
sub get_template {
|
||||
|
@ -142,6 +168,7 @@ sub get_template {
|
|||
CLASS => $self->{'class'},
|
||||
METHOD => scalar $self->{'cgi'}->param('method'),
|
||||
PLUGIN_PATH => $self->get_plugin_http_path(),
|
||||
PLUGIN_DIR => $self->get_plugin_dir(),
|
||||
);
|
||||
|
||||
return $template;
|
||||
|
@ -150,7 +177,10 @@ sub get_template {
|
|||
sub get_metadata {
|
||||
my ( $self, $args ) = @_;
|
||||
|
||||
return $self->{'metadata'};
|
||||
#FIXME: Why another encoding issue? For metadata containg non latin characters.
|
||||
my $metadata = $self->{metadata};
|
||||
utf8::decode($metadata->{$_}) for keys %$metadata;
|
||||
return $metadata;
|
||||
}
|
||||
|
||||
=head2 get_qualified_table_name
|
||||
|
@ -185,6 +215,22 @@ sub get_plugin_http_path {
|
|||
return "/plugin/" . join( '/', split( '::', $self->{'class'} ) );
|
||||
}
|
||||
|
||||
=head2 get_plugin_dir
|
||||
|
||||
To [% INCLUDE %] another TT template from a template, an absolute path to the
|
||||
template is required. This method returns that absolute file system path.
|
||||
|
||||
usage: my $path = $self->get_plugin_dir();
|
||||
|
||||
=cut
|
||||
|
||||
sub get_plugin_dir {
|
||||
my ($self) = @_;
|
||||
|
||||
my $base = C4::Context->config('pluginsdir');
|
||||
return "$base/" . join( '/', split( '::', $self->{'class'} ) );
|
||||
}
|
||||
|
||||
=head2 go_home
|
||||
|
||||
go_home is a quick redirect to the Koha plugins home page
|
||||
|
|
Loading…
Reference in a new issue