From 797c97246342f24186cda36ecc8ad895e422a800 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 11 Feb 2013 09:12:07 -0500 Subject: [PATCH] Bug 7720 - Ambiguity in OPAC Details location. Currently, in opac-detail.pl, there exists a column named 'Location'. This column lists the name of the holding branch, and the item's location description. This can cause confusion to borrowers, as they may assume that the holding branch is the *owning* branch (homebranch) of an item. This could cause a situation where a borrower waits for an item to be returned to his or her library, only to find that the library never owned that item, and it was transferred back to it's homebranch. It could also lead a borrower to falsely assume that his or her home library does not own a copy of a particular item because the borrower does not see an his or her home library listed for any of the items on the record. In addition, even when the holding branch is different than the home branch, the item's shelving location is displayed, even though that branch may not use that location. This commit makes the item details table equivilent to the intranet details page by adding a "Home Library" column, which displays the item's home library, as well as the shelving location. If singleBranchMode is enabled, this column disappears and the "Location" column displays the shelving location only. This commit adds two new system preferences: OpacLocationBranchToDisplay, which defines whether to display the holding library, the home library, or both for the opac details page. OpacLocationBranchToDisplayShelving, which defines where the shelving location should be displayed, under the home library, the holding library, or both. Signed-off-by: Bernardo Gonzalez Kriegel Comment: Work as described. Tested all variations. No koha-qa errors. --- C4/Items.pm | 11 ++++- installer/data/mysql/sysprefs.sql | 2 + installer/data/mysql/updatedatabase.pl | 8 +++ .../prog/en/modules/admin/preferences/opac.pref | 16 ++++++ koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt | 55 +++++++++++++++---- opac/opac-detail.pl | 5 ++ 6 files changed, 84 insertions(+), 13 deletions(-) diff --git a/C4/Items.pm b/C4/Items.pm index 212a9d3..e6ce0eb 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -1222,7 +1222,8 @@ sub GetItemsInfo { itemtypes.notforloan as notforloan_per_itemtype, holding.branchurl, holding.branchname, - holding.opac_info as branch_opac_info + holding.opac_info as branch_opac_info, + home.branchurl AS homebranchurl FROM items LEFT JOIN branches AS holding ON items.holdingbranch = holding.branchcode LEFT JOIN branches AS home ON items.homebranch=home.branchcode @@ -1274,6 +1275,14 @@ sub GetItemsInfo { if ( my $bdata = $bsth->fetchrow_hashref ) { $data->{'branchname'} = $bdata->{'branchname'}; } + $bsth = $dbh->prepare( + "SELECT * FROM branches WHERE branchcode = ? + " + ); + $bsth->execute( $data->{'homebranch'} ); + if ( my $bdata = $bsth->fetchrow_hashref ) { + $data->{'homebranchname'} = $bdata->{'branchname'}; + } $data->{'datedue'} = $datedue; # get notforloan complete status if applicable diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 0a3f20f..261a9d2 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -428,3 +428,5 @@ INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) V INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacHoldNotes',0,'Show hold notes on OPAC','','YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('CalculateFinesOnReturn','1','Switch to control if overdue fines are calculated on return or not', '', 'YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('AcqWarnOnDuplicateInvoice','0','Warn librarians when they try to create a duplicate invoice', '', 'YesNo'); +INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('OpacLocationBranchToDisplay', 'holding', 'holding|home|both', 'In the OPAC, under location show which branch for Location in the record details.', 'Choice'); +INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('OpacLocationBranchToDisplayShelving', 'holding', 'holding|home|both', 'In the OPAC, display the shelving location under which which column.', 'Choice'); diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 1f7b491..02862c2 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -7044,6 +7044,14 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.13.00.XXX"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('OpacLocationBranchToDisplay', 'holding', 'holding|home|both', 'In the OPAC, under location show which branch for Location in the record details.', 'Choice')"); + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('OpacLocationBranchToDisplayShelving', 'holding', 'holding|home|both', 'In the OPAC, display the shelving location under which which column', 'Choice')"); + print "Upgrade to $DBversion done (Bug 7720 - Ambiguity in OPAC Details location.)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref index 90295ef..c0b51d7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref @@ -110,6 +110,22 @@ OPAC: no: "Don't show" - the name of the patron that has an item checked out on item detail pages on the OPAC. - + - Display the + - pref: OpacLocationBranchToDisplay + choices: + home: "home library" + holding: "holding library" + both: "home and holding libraries" + - for items on the OPAC record details page. + - + - Display the shelving location under the + - pref: OpacLocationBranchToDisplayShelving + choices: + home: "home library" + holding: "holding library" + both: "home and holding libraries" + - for items on the OPAC record details page. + - - pref: OpacKohaUrl default: 0 choices: diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt index 4e4d140..ef6c0f3 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt @@ -1474,7 +1474,14 @@ YAHOO.util.Event.onContentReady("furtherm", function () { [% IF ( item_level_itypes ) %][% END %] - + [% IF ( OpacLocationBranchToDisplay == 'holding' || OpacLocationBranchToDisplay == 'both' || singleBranchMode ) %] + + [% END %] + [% UNLESS ( singleBranchMode ) %] + [% IF ( OpacLocationBranchToDisplay == 'home' || OpacLocationBranchToDisplay == 'both' ) %] + + [% END %] + [% END %] [% IF ( itemdata_ccode ) %][% END %] [% IF ( itemdata_enumchron ) %][% END %] @@ -1494,19 +1501,43 @@ YAHOO.util.Event.onContentReady("furtherm", function () { [% FOREACH ITEM_RESULT IN items %] [% IF ITEM_RESULT.this_branch %][% ELSE %][% END %] [% IF ( item_level_itypes ) %][% END %] - + [% END %] + + [% IF ( OpacLocationBranchToDisplay == 'home' || OpacLocationBranchToDisplay == 'both' ) %] + + [% END %] [% ELSE %] - [% ITEM_RESULT.branchname %] + [% END %] -
[% ITEM_RESULT.branch_opac_info %]
- - [% END %] - [% ITEM_RESULT.location_description %] - [% IF ( itemdata_ccode ) %][% END %] [% IF ( itemdata_enumchron ) %][% END %] diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index 9d0851f..a2a7564 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -1062,4 +1062,9 @@ if ( C4::Context->preference('UseCourseReserves') ) { } } +$template->param( + 'OpacLocationBranchToDisplay' => C4::Context->preference('OpacLocationBranchToDisplay') , + 'OpacLocationBranchToDisplayShelving' => C4::Context->preference('OpacLocationBranchToDisplayShelving'), +); + output_html_with_http_headers $query, $cookie, $template->output; -- 1.7.2.5
Item typeLocationCurrent LocationHome LibraryCollectionCall numberVol info
[% UNLESS ( noItemTypeImages ) %][% IF ( ITEM_RESULT.imageurl ) %][% ITEM_RESULT.description %][% END %][% END %] [% ITEM_RESULT.description %] - [% UNLESS ( singleBranchMode ) %] -
- [% IF ( ITEM_RESULT.branchurl ) %] - [% ITEM_RESULT.branchname %] + [% UNLESS ( singleBranchMode ) %] + [% IF ( OpacLocationBranchToDisplay == 'holding' || OpacLocationBranchToDisplay == 'both' ) %] +
+ + [% IF ( ITEM_RESULT.branchurl ) %] + [% ITEM_RESULT.branchname %] + [% ELSE %] + [% ITEM_RESULT.branchname %] + [% END %] + + + [% IF ( OpacLocationBranchToDisplayShelving == 'holding' || OpacLocationBranchToDisplayShelving == 'both' ) %] + [% ITEM_RESULT.location_description %] + [% END %] + +
[% ITEM_RESULT.branch_opac_info %]
+
+ + [% IF ( ITEM_RESULT.homebranchurl ) %] + [% ITEM_RESULT.homebranchname %] + [% ELSE %] + [% ITEM_RESULT.homebranchname %] + [% END %] + + + [% IF ( OpacLocationBranchToDisplayShelving == 'home' || OpacLocationBranchToDisplayShelving == 'both' ) %] + [% ITEM_RESULT.location_description %] + [% END %] + [% ITEM_RESULT.location_description %][% ITEM_RESULT.ccode %][% IF ( ITEM_RESULT.itemcallnumber ) %] [% ITEM_RESULT.itemcallnumber %][% IF ( OPACShelfBrowser ) %] (Browse shelf)[% END %][% END %][% ITEM_RESULT.enumchron %]