From 25c25e7ac885b22a8e09b39814d623e49956013b Mon Sep 17 00:00:00 2001 From: Steven Chan Date: Mon, 22 Jul 2013 12:39:48 -0700 Subject: [PATCH] LP#1418772: Avoid internal server error on viewing full record when copy create_date is null In the TPAC client, when it tries to show record details containing a copy record with no create date, it shows an Internal Server Error instead. 1. The error is caused by trying to execute the parse_datetime() method in the parse_date() function in the WWW/EGCatLoader/util.pm module with an empty date string. The function will normally translate a datetime string from the database to a datetime string that is formatted for TPAC templates. The fix is to not execute parse_datetime() and just return an empty string. 2. In the record/copy_table.tt2 template, if an empty datetime string is the value for copy_info.create_date, the format() method of the Date plugin will show the current datetime by default. The fix is to show '-' in its place, replicating the same template logic as for copy_info.due_date. Signed-off-by: Jeff Davis Signed-off-by: Galen Charlton --- Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm | 3 +++ Open-ILS/src/templates/opac/parts/record/copy_table.tt2 | 14 ++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm index 05f59d8bff..4ff0a1a657 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm @@ -195,6 +195,9 @@ sub init_ro_object_cache { $ro_object_subs->{parse_datetime} = sub { my $date = shift; + # Calling parse_datetime() with empty $date will lead to Internal Server Error + return '' if ($date eq '' or $date eq undef); + # Probably an accidental entry like '0212' instead of '2012', # but 1) the leading 0 may get stripped in cstore and # 2) DateTime::Format::ISO8601 returns an error as years diff --git a/Open-ILS/src/templates/opac/parts/record/copy_table.tt2 b/Open-ILS/src/templates/opac/parts/record/copy_table.tt2 index 7f529b05de..c06bad6b5d 100644 --- a/Open-ILS/src/templates/opac/parts/record/copy_table.tt2 +++ b/Open-ILS/src/templates/opac/parts/record/copy_table.tt2 @@ -141,10 +141,16 @@ END; # FOREACH bib [% copy_info.age_protect ? ctx.get_crahp(copy_info.age_protect).name : l('None') | html %] - [% date.format( - ctx.parse_datetime(copy_info.create_date), - DATE_FORMAT - ) %] + [% + IF copy_info.create_date; + date.format( + ctx.parse_datetime(copy_info.create_date), + DATE_FORMAT + ); + ELSE; + '-'; + END; + %] [% END # is_staff %] [% IF ctx.is_staff OR serial_holdings %] [% # Show copy/volume hold links to staff (without -- 2.11.0