my $tt_params = { %{ _get_tt_params( $tables ) }, %{ _get_tt_params( $loops, 'is_a_loop' ) }, %$substitute };
- $content = qq|[% USE KohaDates %]$content|;
+ $content = add_tt_filters( $content );
+ $content = qq|[% USE KohaDates %][% USE Remove_MARC_punctuation %]$content|;
my $output;
$template->process( \$content, $tt_params, \$output ) || croak "ERROR PROCESSING TEMPLATE: " . $template->error();
plural => 'biblios',
pk => 'biblionumber',
},
+ biblioitems => {
+ module => 'Koha::Biblioitems',
+ singular => 'biblioitem',
+ plural => 'biblioitems',
+ pk => 'biblioitemnumber',
+ },
borrowers => {
module => 'Koha::Patrons',
singular => 'borrower',
return $params;
}
+=head3 add_tt_filters
+
+$content = add_tt_filters( $content );
+
+Add TT filters to some specific fields if needed.
+
+For now we only add the Remove_MARC_punctuation TT filter to biblio and biblioitem fields
+
+=cut
+
+sub add_tt_filters {
+ my ( $content ) = @_;
+ $content =~ s|\[%\s*biblio\.(.*?)\s*%\]|[% biblio.$1 \| \$Remove_MARC_punctuation %]|gxms;
+ $content =~ s|\[%\s*biblioitem\.(.*?)\s*%\]|[% biblioitem.$1 \| \$Remove_MARC_punctuation %]|gxms;
+ return $content;
+}
+
=head2 get_item_content
my $item = Koha::Items->find(...)->unblessed;
--- /dev/null
+package Koha::Template::Plugin::Remove_MARC_punctuation;
+
+# 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 <http://www.gnu.org/licenses>.
+
+use Modern::Perl;
+
+use Template::Plugin::Filter;
+use base qw( Template::Plugin::Filter );
+
+our $DYNAMIC = 1;
+
+sub filter {
+ my ( $self, $value ) = @_;
+ $value =~ s/\p{P}$//;
+ return $value;
+}
+
+1;
# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
-use Test::More tests => 17;
+use Test::More tests => 18;
use Test::Warn;
use MARC::Record;
};
};
+subtest 'add_tt_filters' => sub {
+ plan tests => 1;
+ my $code = "TEST";
+ my $module = "TEST";
+
+ my $patron = $builder->build_object(
+ {
+ class => 'Koha::Patrons',
+ value => { surname => "with_punctuation_" }
+ }
+ );
+ my $biblio = $builder->build_object(
+ { class => 'Koha::Biblios', value => { title => "with_punctuation_" } }
+ );
+ my $biblioitem = $builder->build_object(
+ {
+ class => 'Koha::Biblioitems',
+ value => {
+ biblionumber => $biblio->biblionumber,
+ isbn => "with_punctuation_"
+ }
+ }
+ );
+
+ my $template = q|patron=[% borrower.surname %];biblio=[% biblio.title %];biblioitems=[% biblioitem.isbn %]|;
+ reset_template( { template => $template, code => $code, module => $module } );
+ my $letter = GetPreparedLetter(
+ module => $module,
+ letter_code => $code,
+ tables => {
+ borrowers => $patron->borrowernumber,
+ biblio => $biblio->biblionumber,
+ biblioitems => $biblioitem->biblioitemnumber
+ }
+ );
+ my $expected_letter = q|patron=with_punctuation_;biblio=with_punctuation;biblioitems=with_punctuation|;
+ is( $letter->{content}, $expected_letter, "Pre-processing should call TT plugin to remove punctuation if table is biblio or biblioitems");
+};
+
+
sub reset_template {
my ( $params ) = @_;
my $template = $params->{template};