From 43ae4ba70922f017de1a489d1911a23b30c75b5d Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 14 Jun 2013 13:03:19 +1000 Subject: [PATCH] Bug 10466: fix glitch in OPAC display of titles saved to list When displaying (in the OPAC) the set of records saved to a list, an apparently random number (typically 33 or 34) is sometimes displayed at the end of the publication description. In particular, this can occur when XSLT is *not* being used to display search results; this patch corrects the problem. Now for the technical details: This patch checks to see if "size" is undefined. If it is, we add a blank (i.e. "") value to it in place of undef. If we do not do this, calling "itemloo.size" will return the size of the "itemloo" hash, rather than the value for the "size" key. This is because "size" is a virtual method in Template Toolkit. It's uncertain why the value is retrieved for the "size" key when there is a defined value and why TT doesn't use the method instead, and that it uses "size" as a method only if there is either no "size" key or if the value tied to the "size" key is null/undef. This might be a feature or it might be a bug in TT... In the meantime, we will check to see if it's undefined. If it is, we'll give it a value. This bug has been identified in the opac-search.pl, search.pl and addbooks.pl pages before. To address it, we're currently checking if there is a "size" key, and if not...we're adding one with a blank value. This patch takes up that same idea, although I think it might be better to rename the variable before passing it to TT in case the behaviour of TT changes in the future in regards to how it handles virtual methods. N.B. Obviously, this only affects users not using XSLTs. -- Test Plan: Before applying the patch: 0) Make sure you have opac search result XSLT turned off 1) Find bib records that do not have a 300$c (Dimensions) value. 2) Find bib records that do have a 300$c (Dimensions) value. (N.B. These values should be stored in the `size` column of biblioitems). 3) Add items from both sets of records to a List 4) Note that records without a 300$c will display a number at the end of the "Publication" description/string. It should be something like 33 or 34 in most cases. 5) Note that records with a 300$c don't display this number. They just show the value from 300$c. Apply the patch. 6) Clear your cache, refresh the page, etc. 7) Note that the number (e.g. 33 or 34) has disappeared from the end of the "Publication" description/string. Signed-off-by: Marcel de Rooy Added a small comment at the end of this one line. Signed-off-by: Galen Charlton (cherry picked from commit ceada35e008e6a60b62f384ec386e80b03fe0130) Signed-off-by: Tomas Cohen Arazi (cherry picked from commit a7d116e2fe39a17dd076e1dc805239622b410418) Signed-off-by: Bernardo Gonzalez Kriegel (cherry picked from commit a7d116e2fe39a17dd076e1dc805239622b410418) Signed-off-by: Chris Hall (cherry picked from commit 0cb17b47f67f1d91221841e70f8430bdca5642a8) --- C4/VirtualShelves/Page.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/C4/VirtualShelves/Page.pm b/C4/VirtualShelves/Page.pm index 6591e7b368..147a708be6 100644 --- a/C4/VirtualShelves/Page.pm +++ b/C4/VirtualShelves/Page.pm @@ -278,6 +278,7 @@ sub shelfpage { $this_item->{'normalized_ean'} = GetNormalizedEAN( $record,$marcflavour); $this_item->{'normalized_oclc'} = GetNormalizedOCLCNumber($record,$marcflavour); $this_item->{'normalized_isbn'} = GetNormalizedISBN(undef,$record,$marcflavour); + if(!defined($this_item->{'size'})) { $this_item->{'size'} = "" }; #TT has problems with size # Getting items infos for location display my @items_infos = &GetItemsLocationInfo( $this_item->{'biblionumber'}); $this_item->{'itemsissued'} = CountItemsIssued( $this_item->{'biblionumber'} ); -- 2.39.5