Bugzilla – Attachment 47123 Details for
Bug 14757
Allow the use of Template Toolkit syntax for slips and notices
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 14757 - Allow the use of Template Toolkit syntax for slips and notices
Bug-14757---Allow-the-use-of-Template-Toolkit-synt.patch (text/plain), 11.60 KB, created by
Kyle M Hall (khall)
on 2016-01-21 14:53:49 UTC
(
hide
)
Description:
Bug 14757 - Allow the use of Template Toolkit syntax for slips and notices
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2016-01-21 14:53:49 UTC
Size:
11.60 KB
patch
obsolete
>From 98f5e5d1c0c36d9a67f1c25c86666baf6392b3fa Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Wed, 2 Dec 2015 13:32:44 +0000 >Subject: [PATCH] Bug 14757 - Allow the use of Template Toolkit syntax for > slips and notices > >This bug is the beginning of a conversion from our current bespoke >syntax for slips and notices to Template Toolkit syntax. > >This patch is the initial seed which will evolve over time. >With this addition, we can take advantage of our Koha Objects >to greatly simplify the processing of Slips and Notices over time. > >Test Plan: >1) Apply this patch >2) Ensure you have the default CHECKOUT notice >3) Check out and return an item for a patron >4) Note the text of the CHECKOUT notice >5) Replace your CHECKOUT notice with the following: > >The following items have been checked out: >---- >[% biblio.title %] >---- >Thank you for visiting [% branch.branchname %]. > >6) Repeat step 3 >7) Note the CHECKOUT notice text matches the previous CHECKOUT notice text > >Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com> >New notice syntax works, no koha-qa errors >--- > C4/Letters.pm | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++-- > Koha/News.pm | 62 ++++++++++++++++++++++++ > Koha/NewsItem.pm | 56 ++++++++++++++++++++++ > Koha/Suggestion.pm | 54 +++++++++++++++++++++ > Koha/Suggestions.pm | 62 ++++++++++++++++++++++++ > 5 files changed, 365 insertions(+), 5 deletions(-) > create mode 100644 Koha/News.pm > create mode 100644 Koha/NewsItem.pm > create mode 100644 Koha/Suggestion.pm > create mode 100644 Koha/Suggestions.pm > >diff --git a/C4/Letters.pm b/C4/Letters.pm >index dc9574f..650bf16 100644 >--- a/C4/Letters.pm >+++ b/C4/Letters.pm >@@ -22,6 +22,11 @@ use warnings; > > use MIME::Lite; > use Mail::Sendmail; >+use Date::Calc qw( Add_Delta_Days ); >+use Encode; >+use Carp; >+use Template; >+use Module::Load::Conditional qw(can_load); > > use C4::Koha qw(GetAuthorisedValueByCode); > use C4::Members; >@@ -31,11 +36,8 @@ use C4::Log; > use C4::SMS; > use C4::Debug; > use Koha::DateUtils; >-use Date::Calc qw( Add_Delta_Days ); >-use Encode; >-use Carp; > use Koha::Email; >-use Koha::DateUtils qw( format_sqldatetime ); >+use Koha::DateUtils qw( format_sqldatetime dt_from_string ); > > use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); > >@@ -715,8 +717,14 @@ sub GetPreparedLetter { > } > } > >+ $letter->{content} = _process_tt( >+ { >+ content => $letter->{content}, >+ tables => $tables, >+ } >+ ); >+ > $letter->{content} =~ s/<<\S*>>//go; #remove any stragglers >-# $letter->{content} =~ s/<<[^>]*>>//go; > > return $letter; > } >@@ -1316,6 +1324,124 @@ sub _set_message_status { > return $result; > } > >+sub _process_tt { >+ my ( $params ) = @_; >+ >+ my $content = $params->{content}; >+ my $tables = $params->{tables}; >+ >+ my $use_template_cache = C4::Context->config('template_cache_dir') && defined $ENV{GATEWAY_INTERFACE}; >+ my $template = Template->new( >+ { >+ EVAL_PERL => 1, >+ ABSOLUTE => 1, >+ PLUGIN_BASE => 'Koha::Template::Plugin', >+ COMPILE_EXT => $use_template_cache ? '.ttc' : '', >+ COMPILE_DIR => $use_template_cache ? C4::Context->config('template_cache_dir') : '', >+ FILTERS => {}, >+ ENCODING => 'UTF-8', >+ } >+ ) or die Template->error(); >+ >+ my $tt_params = _get_tt_params( $tables ); >+ >+ my $output; >+ $template->process( \$content, $tt_params, \$output ) || croak "ERROR PROCESSING TEMPLATE: " . $template->error(); >+ >+ return $output; >+} >+ >+sub _get_tt_params { >+ my ($tables) = @_; >+ >+ my $params; >+ >+ my $config = { >+ biblio => { >+ module => 'Koha::Biblios', >+ singular => 'biblio', >+ plural => 'biblios', >+ pk => 'biblionumber', >+ }, >+ borrowers => { >+ module => 'Koha::Borrowers', >+ singular => 'borrower', >+ plural => 'borrowers', >+ pk => 'borrowernumber', >+ }, >+ branches => { >+ module => 'Koha::Branches', >+ singular => 'branch', >+ plural => 'branches', >+ pk => 'branchcode', >+ }, >+ items => { >+ module => 'Koha::Items', >+ singular => 'item', >+ plural => 'items', >+ pk => 'itemnumber', >+ }, >+ opac_news => { >+ module => 'Koha::News', >+ singular => 'news', >+ plural => 'news', >+ pk => 'idnew', >+ }, >+ reserves => { >+ module => 'Koha::Holds', >+ singular => 'hold', >+ plural => 'holds', >+ pk => 'reserve_id', >+ }, >+ serial => { >+ module => 'Koha::Serials', >+ singular => 'serial', >+ plural => 'serials', >+ pk => 'serialid', >+ }, >+ subscription => { >+ module => 'Koha::Subscriptions', >+ singular => 'subscription', >+ plural => 'subscriptions', >+ pk => 'subscriptionid', >+ }, >+ suggestions => { >+ module => 'Koha::Suggestions', >+ singular => 'suggestion', >+ plural => 'suggestions', >+ pk => 'suggestionid', >+ }, >+ }; >+ >+ foreach my $table ( keys %$tables ) { >+ next unless $config->{$table}; >+ >+ my $ref = ref( $tables->{$table} ) || q{}; >+ my $module = $config->{$table}->{module}; >+ >+ if ( can_load( modules => { $module => undef } ) ) { >+ my $pk = $config->{$table}->{pk}; >+ >+ if ( $ref eq q{} || $ref eq 'HASH' ) { >+ my $id = ref eq 'HASH' ? $tables->{$table}->{$pk} : $tables->{$table}; >+ my $object = $module->find($id); >+ $params->{ $config->{$table}->{singular} } = $object; >+ } >+ else { # $ref eq 'ARRAY' >+ my $objects = $module->search( { $pk => $tables->{$table} } ); >+ $params->{ $config->{$table}->{plural} } = $objects; >+ } >+ } >+ else { >+ croak "ERROR LOADING MODULE $module: $Module::Load::Conditional::ERROR"; >+ } >+ } >+ >+ $params->{today} = dt_from_string(); >+ >+ return $params; >+} >+ > > 1; > __END__ >diff --git a/Koha/News.pm b/Koha/News.pm >new file mode 100644 >index 0000000..f57d07b >--- /dev/null >+++ b/Koha/News.pm >@@ -0,0 +1,62 @@ >+package Koha::News; >+ >+# Copyright ByWater Solutions 2015 >+# >+# 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, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Carp; >+ >+use Koha::Database; >+ >+use Koha::NewsItem; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::News - Koha News object set class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub type { >+ return 'OpacNews'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::NewsItem'; >+} >+ >+=head1 AUTHOR >+ >+Kyle M Hall <kyle@bywatersolutions.com> >+ >+=cut >+ >+1; >diff --git a/Koha/NewsItem.pm b/Koha/NewsItem.pm >new file mode 100644 >index 0000000..1c4d65d >--- /dev/null >+++ b/Koha/NewsItem.pm >@@ -0,0 +1,56 @@ >+package Koha::NewsItem; >+ >+# Copyright ByWater Solutions 2015 >+# >+# 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, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Carp; >+ >+use Koha::Database; >+ >+use Koha::Branches; >+ >+use base qw(Koha::Object); >+ >+=head1 NAME >+ >+Koha::NewsItem - Koha News Item object class >+ >+Koha::NewsItem represents a single piece of news from the opac_news table >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub type { >+ return 'OpacNews'; >+} >+ >+=head1 AUTHOR >+ >+Kyle M Hall <kyle@bywatersolutions.com> >+ >+=cut >+ >+1; >diff --git a/Koha/Suggestion.pm b/Koha/Suggestion.pm >new file mode 100644 >index 0000000..cbff03e >--- /dev/null >+++ b/Koha/Suggestion.pm >@@ -0,0 +1,54 @@ >+package Koha::Suggestion; >+ >+# Copyright ByWater Solutions 2015 >+# >+# 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, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Carp; >+ >+use Koha::Database; >+ >+use Koha::Branches; >+ >+use base qw(Koha::Object); >+ >+=head1 NAME >+ >+Koha::Suggestion - Koha Suggestion object class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub type { >+ return 'Suggestion'; >+} >+ >+=head1 AUTHOR >+ >+Kyle M Hall <kyle@bywatersolutions.com> >+ >+=cut >+ >+1; >diff --git a/Koha/Suggestions.pm b/Koha/Suggestions.pm >new file mode 100644 >index 0000000..4202bab >--- /dev/null >+++ b/Koha/Suggestions.pm >@@ -0,0 +1,62 @@ >+package Koha::Suggestions; >+ >+# Copyright ByWater Solutions 2015 >+# >+# 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, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Carp; >+ >+use Koha::Database; >+ >+use Koha::Suggestion; >+ >+use base qw(Koha::Objects); >+ >+=head1 NAME >+ >+Koha::Suggestions - Koha Suggestion object set class >+ >+=head1 API >+ >+=head2 Class Methods >+ >+=cut >+ >+=head3 type >+ >+=cut >+ >+sub type { >+ return 'Suggestion'; >+} >+ >+=head3 object_class >+ >+=cut >+ >+sub object_class { >+ return 'Koha::Suggestion'; >+} >+ >+=head1 AUTHOR >+ >+Kyle M Hall <kyle@bywatersolutions.com> >+ >+=cut >+ >+1; >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 14757
:
45325
|
45884
|
47123
|
47131
|
47176
|
47177
|
47865
|
47866
|
48498
|
48499
|
48500
|
48619
|
48620
|
48621
|
48622
|
48805
|
48806
|
48807
|
48808
|
48809
|
48810
|
52758
|
52759
|
52760
|
52761
|
52805
|
52806
|
52807
|
52895
|
52924
|
52925
|
52926
|
52927
|
52928