@@ -, +, @@ # Your request for an article from tQYRS (c3Av58O0P5xkkIGu) has been canceled for the following reason: # Your request for an article from tQYRS_ (c3Av58O0P5xkkIGu) has been canceled for the following reason: 893 $val =~ s/\p{P}$// if $val && $table=~/biblio/; - Confirm that the new tests pass. That should be enough to confirm this change make sense. - Create a biblio with a title ending with a punctuation (like "with_punctuation_"), or any other fields of biblio/biblioitem - Generate a notice which will display this field (CHECKIN for instance) ---- ---- ---- ---- --- C4/Letters.pm | 26 ++++++++++++++- Koha/Template/Plugin/Remove_MARC_punctuation.pm | 31 ++++++++++++++++++ t/db_dependent/Letters/TemplateToolkit.t | 42 ++++++++++++++++++++++++- 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 Koha/Template/Plugin/Remove_MARC_punctuation.pm --- a/C4/Letters.pm +++ a/C4/Letters.pm @@ -1518,7 +1518,8 @@ sub _process_tt { 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(); @@ -1545,6 +1546,12 @@ sub _get_tt_params { plural => 'biblios', pk => 'biblionumber', }, + biblioitems => { + module => 'Koha::Biblioitems', + singular => 'biblioitem', + plural => 'biblioitems', + pk => 'biblioitemnumber', + }, borrowers => { module => 'Koha::Patrons', singular => 'borrower', @@ -1694,6 +1701,23 @@ sub _get_tt_params { 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; --- a/Koha/Template/Plugin/Remove_MARC_punctuation.pm +++ a/Koha/Template/Plugin/Remove_MARC_punctuation.pm @@ -0,0 +1,31 @@ +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 . + +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; --- a/t/db_dependent/Letters/TemplateToolkit.t +++ a/t/db_dependent/Letters/TemplateToolkit.t @@ -19,7 +19,7 @@ # along with Koha; if not, see . use Modern::Perl; -use Test::More tests => 17; +use Test::More tests => 18; use Test::Warn; use MARC::Record; @@ -894,6 +894,46 @@ subtest 'loops' => sub { }; }; +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}; --