Bugzilla – Attachment 16417 Details for
Bug 9014
Add time due to slips
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 9014 - Add time due to slips
Bug-9014---Add-time-due-to-slips.patch (text/plain), 13.35 KB, created by
Paul Poulain
on 2013-03-19 16:01:37 UTC
(
hide
)
Description:
Bug 9014 - Add time due to slips
Filename:
MIME Type:
Creator:
Paul Poulain
Created:
2013-03-19 16:01:37 UTC
Size:
13.35 KB
patch
obsolete
>From 05b1efe9ce8111f26daadb58e7044256f5c44fef Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Tue, 6 Nov 2012 14:00:06 -0500 >Subject: [PATCH] Bug 9014 - Add time due to slips > >This patch modifies Koha::DateUtils::output_pref to support the new system preference TimeFormat, which defines the visual format for a time as either the 24 hour format ( default ), or the 12 hour format (HH:MM AM/PM). > >The patch also modifies C4::Members::IssueSlip to use output_pref rather than format_date. > >Test Plan: >1) Apply patch >2) Run updatedatabase.pl >3) Issue an item to a patron, verify the times are in 24 hour format. >4) Switch TimeFormat to the 12 hour format. >5) Revisit the patron record you issued an item to, times should now be in a 12 hour format. >6) Print a slip for this patron, you should now see the time as well as the date. > >Katrin Fischer <Katrin.Fischer.83@web.de> >Passes all tests after fixing the test count in t/DateUtils.t. >Fixed conflicts in syspref.sql and updatedatabase.pl. > >Signed-off-by: Cedric Vita <cedric.vita@dracenie.com> >--- > C4/Letters.pm | 4 +- > C4/Members.pm | 4 +- > Koha/DateUtils.pm | 40 ++++++++++++++------ > acqui/lateorders.pl | 4 +- > installer/data/mysql/sysprefs.sql | 1 + > installer/data/mysql/updatedatabase.pl | 6 +++ > .../en/modules/admin/preferences/i18n_l10n.pref | 8 ++++ > t/DateUtils.t | 30 +++++++++------ > 8 files changed, 66 insertions(+), 31 deletions(-) > >diff --git a/C4/Letters.pm b/C4/Letters.pm >index 8873c46..7dfbd7b 100644 >--- a/C4/Letters.pm >+++ b/C4/Letters.pm >@@ -30,7 +30,6 @@ use C4::Log; > use C4::SMS; > use C4::Debug; > use Koha::DateUtils; >- > use Date::Calc qw( Add_Delta_Days ); > use Encode; > use Carp; >@@ -614,8 +613,7 @@ sub _parseletter { > } > > if ($letter->{content} && $letter->{content} =~ /<<today>>/) { >- my @da = localtime(); >- my $todaysdate = "$da[2]:$da[1] " . C4::Dates->today(); >+ my $todaysdate = output_pref( DateTime->now() ); > $letter->{content} =~ s/<<today>>/$todaysdate/go; > } > >diff --git a/C4/Members.pm b/C4/Members.pm >index 8042840..00a7d5a 100644 >--- a/C4/Members.pm >+++ b/C4/Members.pm >@@ -2362,8 +2362,8 @@ sub IssueSlip { > elsif ((substr $it->{'date_due'}, 0, 10) le $now) { > $it->{'overdue'} = 1; > } >- >- $it->{'date_due'}=format_date($it->{'date_due'}); >+ my $dt = dt_from_string( $it->{'date_due'} ); >+ $it->{'date_due'} = output_pref( $dt );; > } > my @issues = sort { $b->{'timestamp'} <=> $a->{'timestamp'} } @$issueslist; > >diff --git a/Koha/DateUtils.pm b/Koha/DateUtils.pm >index 4ffc160..64a8473 100644 >--- a/Koha/DateUtils.pm >+++ b/Koha/DateUtils.pm >@@ -93,7 +93,7 @@ s/(\d{4})(\d{2})(\d{2})\s+(\d{2})(\d{2})(\d{2})/$1-$2-$3T$4:$5:$6/; > > =head2 output_pref > >-$date_string = output_pref($dt, [$format] ); >+$date_string = output_pref($dt, [$date_format], [$time_format] ); > > Returns a string containing the time & date formatted as per the C4::Context setting, > or C<undef> if C<undef> was provided. >@@ -101,7 +101,9 @@ or C<undef> if C<undef> was provided. > A second parameter allows overriding of the syspref value. This is for testing only > In usage use the DateTime objects own methods for non standard formatting > >-A third parameter allows to specify if the output format contains the hours and minutes. >+A third parameter allows overriding of the TimeFormat syspref value >+ >+A fourth parameter allows to specify if the output format contains the hours and minutes. > If it is not defined, the default value is 0; > > =cut >@@ -109,32 +111,40 @@ If it is not defined, the default value is 0; > sub output_pref { > my $dt = shift; > my $force_pref = shift; # if testing we want to override Context >+ my $force_time = shift; > my $dateonly = shift || 0; # if you don't want the hours and minutes > > return unless defined $dt; > >+ $dt->set_time_zone( C4::Context->tz ); >+ > my $pref = > defined $force_pref ? $force_pref : C4::Context->preference('dateformat'); >+ >+ my $time_format = $force_time || C4::Context->preference('TimeFormat'); >+ my $time = ( $time_format eq '12hr' ) ? '%I:%M %p' : '%H:%M'; >+ > given ($pref) { > when (/^iso/) { > return $dateonly >- ? $dt->strftime('%Y-%m-%d') >- : $dt->strftime('%Y-%m-%d %H:%M'); >+ ? $dt->strftime("%Y-%m-%d") >+ : $dt->strftime("%Y-%m-%d $time"); > } > when (/^metric/) { > return $dateonly >- ? $dt->strftime('%d/%m/%Y') >- : $dt->strftime('%d/%m/%Y %H:%M'); >+ ? $dt->strftime("%d/%m/%Y") >+ : $dt->strftime("%d/%m/%Y $time"); > } > when (/^us/) { >+ > return $dateonly >- ? $dt->strftime('%m/%d/%Y') >- : $dt->strftime('%m/%d/%Y %H:%M'); >+ ? $dt->strftime("%m/%d/%Y") >+ : $dt->strftime("%m/%d/%Y $time"); > } > default { > return $dateonly >- ? $dt->strftime('%Y-%m-%d') >- : $dt->strftime('%Y-%m-%d %H:%M'); >+ ? $dt->strftime("%Y-%m-%d") >+ : $dt->strftime("%Y-%m-%d $time"); > } > > } >@@ -173,11 +183,14 @@ with output_pref as it is a frequent activity in scripts > sub format_sqldatetime { > my $str = shift; > my $force_pref = shift; # if testing we want to override Context >+ my $force_time = shift; >+ my $dateonly = shift; >+ > if ( defined $str && $str =~ m/^\d{4}-\d{2}-\d{2}/ ) { > my $dt = dt_from_string( $str, 'sql' ); > return q{} unless $dt; > $dt->truncate( to => 'minute' ); >- return output_pref( $dt, $force_pref ); >+ return output_pref( $dt, $force_pref, $force_time, $dateonly ); > } > return q{}; > } >@@ -194,10 +207,13 @@ with output_pref_due as it is a frequent activity in scripts > sub format_sqlduedatetime { > my $str = shift; > my $force_pref = shift; # if testing we want to override Context >+ my $force_time = shift; >+ my $dateonly = shift; >+ > if ( defined $str && $str =~ m/^\d{4}-\d{2}-\d{2}/ ) { > my $dt = dt_from_string( $str, 'sql' ); > $dt->truncate( to => 'minute' ); >- return output_pref_due( $dt, $force_pref ); >+ return output_pref_due( $dt, $force_pref, $force_time, $dateonly ); > } > return q{}; > } >diff --git a/acqui/lateorders.pl b/acqui/lateorders.pl >index 6dea529..7c2b3f3 100755 >--- a/acqui/lateorders.pl >+++ b/acqui/lateorders.pl >@@ -86,10 +86,10 @@ my $estimateddeliverydateto_dt = $estimateddeliverydateto > > # Format the output of "date from" and "date to" > if ($estimateddeliverydatefrom_dt) { >- $estimateddeliverydatefrom = output_pref($estimateddeliverydatefrom_dt, undef, 1); >+ $estimateddeliverydatefrom = output_pref($estimateddeliverydatefrom_dt, undef, undef, 1); > } > if ($estimateddeliverydateto_dt) { >- $estimateddeliverydateto = output_pref($estimateddeliverydateto_dt, undef, 1); >+ $estimateddeliverydateto = output_pref($estimateddeliverydateto_dt, undef, undef, 1); > } > > my $branch = $input->param('branch'); >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index e3966ce..1461c56 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -421,3 +421,4 @@ INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES( > INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('PatronSelfRegistrationAdditionalInstructions','','A free text field to display additional instructions to newly self registered patrons.','','free'); > INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UseQueryParser', '0', 'If enabled, try to use QueryParser for queries.', NULL, 'YesNo'); > INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('FinesIncludeGracePeriod','1','If enabled, fines calculations will include the grace period.',NULL,'YesNo'); >+INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('TimeFormat','24hr','12hr|24hr','Defines the global time format for visual output.','Choice'); >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index f0a9269..4b09d9e 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -6336,6 +6336,12 @@ if ( CheckVersion($DBversion) ) { > $dbh->do("INSERT INTO systempreferences ( variable, value, explanation, type ) VALUES ( 'SCOUserCSS', '', 'Add CSS to be included in the SCO module in an embedded <style> tag.', 'free' )"); > $dbh->do("INSERT INTO systempreferences ( variable, value, explanation, type ) VALUES ( 'SCOUserJS', '', 'Define custom javascript for inclusion in the SCO module', 'free' )"); > print "Upgrade to $DBversion done (Bug 9009: Add SCOUserCSS and SCOUserJS sysprefs)\n"; >+} >+ >+$DBversion = "3.11.00.XXX"; >+if (C4::Context->preference("Version") < TransformToNum($DBversion)) { >+ $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('TimeFormat','24hr','12hr|24hr','Defines the global time format for visual output.','Choice')"); >+ print "Upgrade to $DBversion done (Bug 9014: Add syspref TimeFormat)\n"; > SetVersion ($DBversion); > } > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/i18n_l10n.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/i18n_l10n.pref >index cc6700b..02985d3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/i18n_l10n.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/i18n_l10n.pref >@@ -9,6 +9,14 @@ I18N/L10N: > iso: yyyy-mm-dd > - . > - >+ - Format times in >+ - pref: TimeFormat >+ default: 24hr >+ choices: >+ 24hr: 24 hour format ( e.g. "14:18" ) >+ 12hr: 12 hour format ( e.g. "02:18 PM" ) >+ - . >+ - > - Use > - pref: CalendarFirstDayOfWeek > default: Sunday >diff --git a/t/DateUtils.t b/t/DateUtils.t >index a55c0d9..28b1450 100755 >--- a/t/DateUtils.t >+++ b/t/DateUtils.t >@@ -5,7 +5,7 @@ use DateTime; > use DateTime::TimeZone; > > use C4::Context; >-use Test::More tests => 28; >+use Test::More tests => 30; > > BEGIN { use_ok('Koha::DateUtils'); } > >@@ -23,32 +23,38 @@ cmp_ok( $dt->ymd(), 'eq', $testdate_iso, 'Returned object matches input' ); > $dt->set_hour(12); > $dt->set_minute(0); > >-my $date_string = output_pref( $dt, 'iso' ); >+my $date_string = output_pref( $dt, 'iso', '24hr' ); > cmp_ok $date_string, 'eq', '2011-06-16 12:00', 'iso output'; > >-my $date_string = output_pref( $dt, 'iso',1 ); >+my $date_string = output_pref( $dt, 'iso', '12hr' ); >+cmp_ok $date_string, 'eq', '2011-06-16 12:00 PM', 'iso output 12hr'; >+ >+$date_string = output_pref( $dt, 'iso', undef, 1 ); > cmp_ok $date_string, 'eq', '2011-06-16', 'iso output (date only)'; > >-$date_string = output_pref( $dt, 'us' ); >+$date_string = output_pref( $dt, 'us', '24hr' ); > cmp_ok $date_string, 'eq', '06/16/2011 12:00', 'us output'; > >-$date_string = output_pref( $dt, 'us', 1 ); >+$date_string = output_pref( $dt, 'us', '12hr' ); >+cmp_ok $date_string, 'eq', '06/16/2011 12:00 PM', 'us output 12hr'; >+ >+$date_string = output_pref( $dt, 'us', undef, 1 ); > cmp_ok $date_string, 'eq', '06/16/2011', 'us output (date only)'; > > # metric should return the French Revolutionary Calendar Really >-$date_string = output_pref( $dt, 'metric' ); >+$date_string = output_pref( $dt, 'metric', '24hr' ); > cmp_ok $date_string, 'eq', '16/06/2011 12:00', 'metric output'; > >-$date_string = output_pref( $dt, 'metric',1 ); >+$date_string = output_pref( $dt, 'metric', undef, 1 ); > cmp_ok $date_string, 'eq', '16/06/2011', 'metric output (date only)'; > >-$date_string = output_pref_due( $dt, 'metric' ); >+$date_string = output_pref_due( $dt, 'metric', '24hr' ); > cmp_ok $date_string, 'eq', '16/06/2011 12:00', > 'output_pref_due preserves non midnight HH:SS'; > > $dt->set_hour(23); > $dt->set_minute(59); >-$date_string = output_pref_due( $dt, 'metric' ); >+$date_string = output_pref_due( $dt, 'metric', '24hr' ); > cmp_ok $date_string, 'eq', '16/06/2011', > 'output_pref_due truncates HH:SS at midnight'; > >@@ -87,20 +93,20 @@ cmp_ok( $dt0->ymd(), 'eq', $ymd, 'Returned object corrects iso day 0' ); > $dt0 = dt_from_string( '0000-00-00', 'iso' ); > is( $dt0, undef, "undefined returned for 0 iso date" ); > >-my $formatted = format_sqldatetime( '2011-06-16 12:00:07', 'metric' ); >+my $formatted = format_sqldatetime( '2011-06-16 12:00:07', 'metric', '24hr' ); > cmp_ok( $formatted, 'eq', '16/06/2011 12:00', 'format_sqldatetime conversion' ); > > $formatted = format_sqldatetime( undef, 'metric' ); > cmp_ok( $formatted, 'eq', q{}, > 'format_sqldatetime formats undef as empty string' ); > >-$formatted = format_sqlduedatetime( '2011-06-16 12:00:07', 'metric' ); >+$formatted = format_sqlduedatetime( '2011-06-16 12:00:07', 'metric', '24hr' ); > cmp_ok( > $formatted, 'eq', > '16/06/2011 12:00', > 'format_sqlduedatetime conversion for hourly loans' > ); > >-$formatted = format_sqlduedatetime( '2011-06-16 23:59:07', 'metric' ); >+$formatted = format_sqlduedatetime( '2011-06-16 23:59:07', 'metric', '24hr' ); > cmp_ok( $formatted, 'eq', '16/06/2011', > 'format_sqlduedatetime conversion for daily loans' ); >-- >1.7.2.5
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 9014
:
13272
|
13273
|
13507
|
13827
|
13906
|
13907
|
14164
|
14373
|
14374
|
14396
|
16411
|
16417
|
16424