From ae2500d7e3ea39c5cf9b99b846217b074c4405b1 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 18 Oct 2012 12:40:02 -0400 Subject: [PATCH] [Signed off] Bug 7740 - Highlight items in own library in search results/detail page in OPAC This feature enables a particular library's items to be emphasized and moved to the first position on the search results and details pages of the OPAC. It is enabled by the sytem preference HighlightOwnItemsOnOPAC. To choose which branches items are emphasized, use the system preference HighlightOwnItemsOnOPACWhich. It has two modes. If set to PatronBranch, the items emphasized will be those of the same library as the patron's library. If no one is logged into the opac, no items will be highlighted. If set to OpacURLBranch, the library is chosen based on the Apache environment variable BRANCHCODE. For example, this could be added to the OPAC section of koha-httpd.conf: SetEnv BRANCHCODE "CPL" The point of this feature is to allow each library on a given Koha server to have a specific subdomain for the opac where that library's items are empasized. That was http://branch1.opac.mylibrary.org will emphasize the items of branch1, while http://branch2.opac.mylibrary.org will emphasize the items of branch2. Signed-off-by: Melia Meggs Signed-off-by: Nora Blake --- installer/data/mysql/sysprefs.sql | 2 + installer/data/mysql/updatedatabase.pl | 7 ++++ .../prog/en/modules/admin/preferences/opac.pref | 11 ++++++ koha-tmpl/opac-tmpl/prog/en/css/opac.css | 8 +++++ koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt | 3 +- .../opac-tmpl/prog/en/modules/opac-results.tt | 2 + opac/opac-detail.pl | 32 ++++++++++++++++++ opac/opac-search.pl | 34 ++++++++++++++++++++ 8 files changed, 98 insertions(+), 1 deletions(-) diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index cad409c..fb7fe24 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -418,3 +418,5 @@ INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES(' INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('Persona',0,'Use Mozilla Persona for login','','YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacItemLocation','callnum','Show the shelving location of items in the opac','callnum|ccode|location','Choice'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('TrackClicks','0','Track links clicked',NULL,'Integer'); +INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('HighlightOwnItemsOnOPAC','0','','If on, and a patron is logged into the OPAC, items from his or her home library will be emphasized and shown first in search results and item details.','YesNo'); +INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('HighlightOwnItemsOnOPACWhich','PatronBranch','PatronBranch|OpacURLBranch','Decides which branch''s items to emphasize. If PatronBranch, emphasize the logged in user''s library''s items. If OpacURLBranch, highlight the items of the Apache var BRANCHCODE defined in Koha''s Apache configuration file.','Choice') diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 82654d8..b9eb816 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -6486,6 +6486,13 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.11.00.XXX"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('HighlightOwnItemsOnOPAC','0','','If on, and a patron is logged into the OPAC, items from his or her home library will be emphasized and shown first in search results and item details.','YesNo')"); + $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('HighlightOwnItemsOnOPACWhich','PatronBranch','PatronBranch|OpacURLBranch','Decides which branch''s items to emphasize. If PatronBranch, emphasize the logged in user''s library''s items. If OpacURLBranch, highlight the items of the Apache var BRANCHCODE defined in Koha''s Apache configuration file.','Choice')"); + print "Upgrade to $DBversion done (Add syspref HighlightOwnItemsOnOPAC)\n"; + SetVersion ($DBversion); +} =head1 FUNCTIONS 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 57df512..e574dcd 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 @@ -22,6 +22,17 @@ OPAC: no: Disable - "Koha OPAC as public. Private OPAC requires authentification before accessing the OPAC." - + - pref: HighlightOwnItemsOnOPAC + choices: + yes: Emphasize + no: "Don't emphasize" + - "results from the " + - pref: HighlightOwnItemsOnOPACWhich + choices: + PatronBranch: "patron's home branch" + OpacURLBranch: "OPAC's branch via the URL" + - " by moving the results to the front and increasing the size or highlighting the rows for those results." + - - "Show star-ratings on" - pref: OpacStarRatings choices: diff --git a/koha-tmpl/opac-tmpl/prog/en/css/opac.css b/koha-tmpl/opac-tmpl/prog/en/css/opac.css index cc6666e..d75710e 100644 --- a/koha-tmpl/opac-tmpl/prog/en/css/opac.css +++ b/koha-tmpl/opac-tmpl/prog/en/css/opac.css @@ -2920,3 +2920,11 @@ a.reviewlink,a.reviewlink:visited { .idbresult img { padding-right: 6px; } + +.highlight-row-results { + font-size: 120%; +} + +.highlight-row-detail { + font-weight: bold; +} 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 6321efd..299396a 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt @@ -1471,7 +1471,8 @@ YAHOO.util.Event.onContentReady("furtherm", function () { [% END %] [% FOREACH ITEM_RESULT IN items %] - [% IF ( item_level_itypes ) %][% UNLESS ( noItemTypeImages ) %][% IF ( ITEM_RESULT.imageurl ) %][% ITEM_RESULT.description %][% END %][% END %] [% ITEM_RESULT.description %][% END %] + [% IF ITEM_RESULT.this_branch %][% ELSE %][% END %] + [% IF ( item_level_itypes ) %][% UNLESS ( noItemTypeImages ) %][% IF ( ITEM_RESULT.imageurl ) %][% ITEM_RESULT.description %][% END %][% END %] [% ITEM_RESULT.description %][% END %] [% UNLESS ( singleBranchMode ) %] diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt index 30682c4..1b954f8 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt @@ -528,6 +528,7 @@ $(document).ready(function(){ [% IF ( SEARCH_RESULT.available_items_loop.size() ) %] Copies available: [% FOREACH available_items_loo IN SEARCH_RESULT.available_items_loop %] + [% IF available_items_loo.this_branch %][% ELSE %][% END %] [% IF ( singleBranchMode ) %] [% available_items_loo.location %] [% ELSE %] @@ -539,6 +540,7 @@ $(document).ready(function(){ [% IF ( available_items_loo.itemcallnumber ) %][[% available_items_loo.itemcallnumber %]][% END %] [% END %] ([% available_items_loo.count %]), + [% END %] [% ELSE %] diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index 5b2da84..93a1fae 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -441,6 +441,38 @@ if ($hideitems) { @items = @all_items; } +my $branches = GetBranches(); +my $branch = C4::Context->userenv->{branch}; +if ( C4::Context->preference('HighlightOwnItemsOnOPAC') ) { + if ( + ( ( C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'PatronBranch' ) && $branch ) + || + C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'OpacURLBranch' + ) { + my $branchname; + if ( C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'PatronBranch' ) { + $branchname = $branches->{$branch}->{'branchname'}; + } + elsif ( C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'OpacURLBranch' ) { + $branchname = $branches->{ $ENV{'BRANCHCODE'} }->{'branchname'}; + } + + my @our_items; + my @other_items; + + foreach my $item ( @items ) { + if ( $item->{'branchname'} eq $branchname ) { + $item->{'this_branch'} = 1; + push( @our_items, $item ); + } else { + push( @other_items, $item ); + } + } + + @items = ( @our_items, @other_items ); + } +} + my $dat = &GetBiblioData($biblionumber); my $itemtypes = GetItemTypes(); diff --git a/opac/opac-search.pl b/opac/opac-search.pl index 4744ac6..93a4b70 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -698,6 +698,40 @@ for (my $i=0;$i<@servers;$i++) { $template->param(results_per_page => $results_per_page); my $hide = C4::Context->preference('OpacHiddenItems'); $hide = ($hide =~ m/\S/) if $hide; # Just in case it has some spaces/new lines + + my $branch = C4::Context->userenv->{branch}; + if ( C4::Context->preference('HighlightOwnItemsOnOPAC') ) { + if ( + ( ( C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'PatronBranch' ) && $branch ) + || + C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'OpacURLBranch' + ) { + my $branchname; + if ( C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'PatronBranch' ) { + $branchname = $branches->{$branch}->{'branchname'}; + } + elsif ( C4::Context->preference('HighlightOwnItemsOnOPACWhich') eq 'OpacURLBranch' ) { + $branchname = $branches->{ $ENV{'BRANCHCODE'} }->{'branchname'}; + } + + foreach my $res ( @newresults ) { + my @new_loop; + my @top_loop; + my @old_loop = @{$res->{'available_items_loop'}}; + foreach my $item ( @old_loop ) { + if ( $item->{'branchname'} eq $branchname ) { + $item->{'this_branch'} = 1; + push( @top_loop, $item ); + } else { + push( @new_loop, $item ); + } + } + my @complete_loop = ( @top_loop, @new_loop ); + $res->{'available_items_loop'} = \@complete_loop; + } + } + } + $template->param( SEARCH_RESULTS => \@newresults, OPACItemsResultsDisplay => (C4::Context->preference("OPACItemsResultsDisplay")), -- 1.7.2.5