From: Galen Charlton Date: Tue, 20 Aug 2013 17:18:13 +0000 (+0000) Subject: Bug 10656: (follow-up) handle OPAC sorting of authvals where lib_opac is NULL X-Git-Url: http://git.rot13.org/?a=commitdiff_plain;h=0c67e94c8b8dbe1912fd5ba4b503cf53789b75a5;p=koha.git Bug 10656: (follow-up) handle OPAC sorting of authvals where lib_opac is NULL The OPAC description for an authorized value is not required to be populated. In particular, if it is NULL, the staff description is displayed instead. This patch makes sure that the sort order (in OPAC mode) uses either the staff description or the OPAC description as needed for each value. To test: [1] Make sure that AdvancedSearchTypes includes "ccode" [1] Arrange your CCODE values so the sort order for staff labels is different from the sort order for OPAC descriptions. Also, ensure that one of the OPAC descriptions is NULL. For example, authorised_value | lib | lib_opac -------------------------------------- ZZZ | A_STAFF | Z_PUBLIC DDD | D_STAFF | NULL AAA | Z_STAFF | A_PUBLIC [2] Prior to the patch, any CCODE values where the OPAC description is NULL will sort first in the OPAC advanced search page, even if the displayed label shouldn't come first. [3] Apply the patch. [4] Verify that the collection list on the OPAC advanced search page is now correct. [5] Verify that the sort order on the staff advanced search page has not changed. Signed-off-by: Galen Charlton Signed-off-by: Katrin Fischer Works nicely, tested in staff and OPAC. Signed-off-by: Kyle M Hall Signed-off-by: Galen Charlton --- diff --git a/C4/Koha.pm b/C4/Koha.pm index 5deb61be0f..8429eac6a6 100644 --- a/C4/Koha.pm +++ b/C4/Koha.pm @@ -1076,7 +1076,11 @@ sub GetAuthorisedValues { if(@where_strings > 0) { $query .= " WHERE " . join(" AND ", @where_strings); } - $query .= " GROUP BY lib ORDER BY category, " . ($opac ? "lib_opac, lib" : "lib, lib_opac"); + $query .= " GROUP BY lib"; + $query .= ' ORDER BY category, ' . ( + $opac ? 'COALESCE(lib_opac, lib)' + : 'lib, lib_opac' + ); my $sth = $dbh->prepare($query);