From 86ecf6b86d0bfa4f34f49c2618768025de65843a Mon Sep 17 00:00:00 2001 From: Kyle Hall Date: Tue, 21 Feb 2023 12:45:48 -0500 Subject: [PATCH] Bug 33029: Add wrapper method for dt_from_string to KohaDates template toolkit plugin It would be very useful to have direct access to dt_from_string in our templates. This would allow for us to handle custom date and time formatting. It would, for example, allow us to output the month name for a given date via Template Toolkit easily. Test Plan: 1) Apply this patch 2) In a notice add '[% Use KohaDates %][% KohaDates.datetime_from_string().ymd %]' to the top of a notice 3) Generate that notice for a patron 4) Note today's date in iso format is rendered at the top of the notice Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens Signed-off-by: Aleisha Amohia --- Koha/Template/Plugin/KohaDates.pm | 5 +++++ t/db_dependent/Letters/TemplateToolkit.t | 28 +++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/Koha/Template/Plugin/KohaDates.pm b/Koha/Template/Plugin/KohaDates.pm index 783833f7df9..8fa5abb73d2 100644 --- a/Koha/Template/Plugin/KohaDates.pm +++ b/Koha/Template/Plugin/KohaDates.pm @@ -38,6 +38,11 @@ sub filter { output_pref({ dt => $dt, dateonly => !$config->{with_hours}, dateformat => $config->{dateformat} }); } +sub datetime_from_string { + my ( $self, @params ) = @_; + return dt_from_string( @params ); +} + sub output_preference { my ( $self, @params ) = @_; return output_pref( @params ); diff --git a/t/db_dependent/Letters/TemplateToolkit.t b/t/db_dependent/Letters/TemplateToolkit.t index edd91ac091e..67a4bc5404a 100755 --- a/t/db_dependent/Letters/TemplateToolkit.t +++ b/t/db_dependent/Letters/TemplateToolkit.t @@ -19,7 +19,7 @@ # along with Koha; if not, see . use Modern::Perl; -use Test::More tests => 31; +use Test::More tests => 32; use Test::MockModule; use Test::Warn; @@ -1188,6 +1188,32 @@ EOF is( $letter->{content}, $expected_content ); }; +subtest 'KohaDates::dt_from_string' => sub { + plan tests => 1; + my $code = 'TEST_DATE'; + t::lib::Mocks::mock_preference('dateformat', 'metric'); # MM/DD/YYYY + my $biblio = $builder->build_object( + { + class => 'Koha::Biblios', + value => { + timestamp => '2018-12-13 20:21:22', + datecreated => '2018-12-13' + } + } + ); + my $template = q{[% USE KohaDates %][% KohaDates.datetime_from_string('2000-12-01').dmy %]}; + + reset_template({ template => $template, code => $code, module => 'test' }); + my $letter = GetPreparedLetter( + module => 'test', + letter_code => $code, + tables => { + biblio => $biblio->biblionumber, + } + ); + is( $letter->{content}, '01-12-2000' ); +}; + subtest 'Execute TT process in a DB transaction' => sub { plan tests => 2; my $code = 'TEST_TXN'; -- 2.30.2