[Koha-patches] [PATCH] bug_7398: Replaced OPACDisplayRequestPriority syspref with OPACShowHoldQueueDetails
Srdjan
srdjan at catalyst.net.nz
Wed May 23 03:06:31 CEST 2012
New syspref is Choice, options being:
- None
- Priority only
- Holds number only
- Holds number and priority
Show holds count on OPAC detail
---
admin/systempreferences.pl | 2 +-
installer/data/mysql/sysprefs.sql | 2 +-
installer/data/mysql/updatedatabase.pl | 15 +++++
.../prog/en/modules/admin/preferences/opac.pref | 10 ++--
koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt | 31 ++++++++++
.../opac-tmpl/prog/en/modules/opac-reserve.tt | 34 ++++++-----
opac/opac-detail.pl | 24 ++++++++
opac/opac-reserve.pl | 60 +++++++++++---------
opac/opac-user.pl | 11 ++--
9 files changed, 139 insertions(+), 50 deletions(-)
diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl
index 5e3848d..3659791 100755
--- a/admin/systempreferences.pl
+++ b/admin/systempreferences.pl
@@ -348,7 +348,7 @@ $tabsysprefs{OPACViewOthersSuggestions} = "OPAC";
$tabsysprefs{URLLinkText} = "OPAC";
$tabsysprefs{OPACSearchForTitleIn} = "OPAC";
$tabsysprefs{OPACShelfBrowser} = "OPAC";
-$tabsysprefs{OPACDisplayRequestPriority} = "OPAC";
+$tabsysprefs{OPACShowHoldQueueDetails} = "OPAC";
$tabsysprefs{OPACAllowHoldDateInFuture} = "OPAC";
$tabsysprefs{OPACPatronDetails} = "OPAC";
$tabsysprefs{OPACFinesTab} = "OPAC";
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 1edf08e..98e0e76 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -233,7 +233,7 @@ INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES
INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('CurrencyFormat','US','US|FR','Determines the display format of currencies. eg: \'36000\' is displayed as \'360 000,00\' in \'FR\' or \'360,000.00\' in \'US\'.','Choice');
INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('AcqCreateItem','ordering','ordering|receiving|cataloguing','Define when the item is created : when ordering, when receiving, or in cataloguing module','Choice');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowRenewalLimitOverride', '0', 'if ON, allows renewal limits to be overridden on the circulation screen',NULL,'YesNo');
-INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('OPACDisplayRequestPriority','0','','Show patrons the priority level on holds in the OPAC','YesNo');
+INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('OPACShowHoldQueueDetails','none','none|priority|holds|holds_priority','Show holds details in OPAC','Choice');
INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'UseBranchTransferLimits', '0', '', 'If ON, Koha will will use the rules defined in branch_transfer_limits to decide if an item transfer should be allowed.', 'YesNo');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowHoldPolicyOverride', '0', 'Allow staff to override hold policies when placing holds',NULL,'YesNo');
INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'BranchTransferLimitsType', 'ccode', 'itemtype|ccode', 'When using branch transfer limits, choose whether to limit by itemtype or collection code.', 'Choice');
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 38aa70c..d5f1144 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -5246,6 +5246,21 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
SetVersion($DBversion);
}
+
+
+$DBversion = "3.07.00.XXX";
+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+ $dbh->do("UPDATE systempreferences SET
+ variable = 'OPACShowHoldQueueDetails',
+ value = CASE value WHEN '1' THEN 'priority' ELSE 'none' END,
+ options = 'none|priority|holds|holds_priority',
+ explanation = 'Show holds details in OPAC',
+ type = 'Choice'
+ WHERE variable = 'OPACDisplayRequestPriority'");
+ print "Upgrade to $DBversion done (Changed system preference OPACDisplayRequestPriority -> OPACShowHoldQueueDetails)\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 eb74d81..3bd2441 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
@@ -79,11 +79,13 @@ OPAC:
no: "Don't include"
- "COinS / OpenURL / Z39.88 in OPAC search results. <br/>Warning: Enabling this feature will slow OPAC search response times."
-
- - pref: OPACDisplayRequestPriority
+ - pref: OPACShowHoldQueueDetails
choices:
- yes: Show
- no: "Don't show"
- - patrons the priority level of their holds in the OPAC.
+ none: "Don't show any hold details"
+ priority: "Show priority level"
+ holds: "Show holds"
+ holds_priority: "Show holds and their priority level"
+ - to patrons in the OPAC.
-
- pref: OPACShowCheckoutName
default: 0
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 cc59fb2..5bbcdb7 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
@@ -718,6 +718,11 @@ YAHOO.util.Event.onContentReady("furtherm", function () {
<th id="item_status">Status</th>
[% IF ( itemdata_itemnotes ) %]<th id="item_notes">Notes</th>[% END %]
<th id="item_datedue">Date due</th>
+ [% IF holds_count.defined %]
+ <th>Item holds</th>
+ [% ELSIF show_priority %]
+ <th>Item hold queue priority</th>
+ [% END %]
</tr></thead>
<tbody>[% FOREACH ITEM_RESULT IN ITEM_RESULTS %]
<tr>[% IF ( item_level_itypes ) %]<td>[% UNLESS ( noItemTypeImages ) %][% IF ( ITEM_RESULT.imageurl ) %]<img src="[% ITEM_RESULT.imageurl %]" title="[% ITEM_RESULT.description %]" alt="[% ITEM_RESULT.description %]" />[% END %][% END %] [% ITEM_RESULT.description %]</td>[% END %]
@@ -742,10 +747,36 @@ YAHOO.util.Event.onContentReady("furtherm", function () {
<td>[% INCLUDE 'item-status.inc' item = ITEM_RESULT %]</td>
[% IF ( itemdata_itemnotes ) %]<td>[% ITEM_RESULT.itemnotes %]</td>[% END %]
<td>[% ITEM_RESULT.datedue | $KohaDates %]</td>
+ [% IF holds_count.defined || show_priority %]
+ <td>
+ [% IF holds_count.defined %] [% ITEM_RESULT.holds_count %] [% END %]
+ [% IF ITEM_RESULT.priority %]
+ [% IF holds_count.defined %]
+ (priority [% ITEM_RESULT.priority %])
+ [% ELSE %]
+ [% ITEM_RESULT.priority %]
+ [% END %]
+ [% END %]
+ </td>
+ [% END %]
</tr>
[% END %]</tbody>
</table>
[% END %]
+ [% IF holds_count.defined || priority %]
+ <div id="bib_holds">
+ [% IF holds_count.defined %]
+ Total holds: [% holds_count %]
+ [% END %]
+ [% IF priority %]
+ [% IF holds_count.defined %]
+ (priority [% priority %])
+ [% ELSE %]
+ Overall queue priority: [% priority %]
+ [% END %]
+ [% END %]
+ </div>
+ [% END %]
[% ELSE %]
[% IF ( ALTERNATEHOLDINGS ) %]
[% FOREACH ALTERNATEHOLDING IN ALTERNATEHOLDINGS %]
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
index a78bc68..2073811 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
@@ -242,7 +242,11 @@
[% UNLESS ( item_level_itypes ) %]
<th>Item type</th>
[% END %]
- [% IF ( showpriority ) %]
+ [% IF showholds && showpriority %]
+ <th>Holds and priority</th>
+ [% ELSIF showholds %]
+ <th>Holds</th>
+ [% ELSIF showpriority %]
<th>Priority</th>
[% END %]
[% IF ( reserve_in_future ) %]
@@ -297,19 +301,23 @@
[% END %]
</td>
- [% IF ( bibitemloo.holdable ) %][% UNLESS ( item_level_itypes ) %]
- <td>
- [% IF ( bibitemloo.imageurl ) %]<img src="[% bibitemloo.imageurl %]" alt="" />[% END %]
- [% bibitemloo.description %]
- </td>
- [% END %][% END %]
[% IF ( bibitemloo.holdable ) %]
- [% IF ( showpriority ) %]
- <td>
- [% bibitemloo.rank %] out of [% bibitemloo.reservecount %]
- </td>[% END %][% END %]
- [% IF ( reserve_in_future ) %]
- [% IF ( bibitemloo.holdable ) %]<td>
+ <!-- HOLDABLE -->
+ [% UNLESS ( item_level_itypes ) %]
+ <td>
+ [% IF ( bibitemloo.imageurl ) %]<img src="[% bibitemloo.imageurl %]" alt="" />[% END %]
+ [% bibitemloo.description %]
+ </td>
+ [% END %]
+ [% IF showholds || showpriority %]
+ <td>
+ [% IF showpriority %] [% bibitemloo.rank %] [% END %]
+ [% IF showholds && showpriority %] out of [% END %]
+ [% IF showholds %] [% bibitemloo.reservecount %] [% END %]
+ </td>
+ [% END %]
+ [% IF ( reserve_in_future ) %]
+ <td>
<input name="reserve_date_[% bibitemloo.biblionumber %]" id="reserve_date_[% bibitemloo.biblionumber %]" size="10">
<script language="JavaScript" type="text/javascript">
//<![CDATA[
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index 4d9879a..24ee74e 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -486,10 +486,34 @@ if ($dat->{'count'} >= 50 && !$viewallitems) {
my $biblio_authorised_value_images = C4::Items::get_authorised_value_images( C4::Biblio::get_biblio_authorised_values( $biblionumber, $record ) );
+my (%item_reserves, %priority);
+my ($show_holds_count, $show_priority);
+for ( C4::Context->preference("OPACShowHoldQueueDetails") ) {
+ m/holds/o and $show_holds_count = 1;
+ m/priority/ and $show_priority = 1;
+}
+my $has_hold;
+if ( $show_holds_count || $show_priority) {
+ my ($reserve_count,$reserves) = GetReservesFromBiblionumber($biblionumber);
+ $template->param( holds_count => $reserve_count ) if $show_holds_count;
+ foreach (@$reserves) {
+ $item_reserves{ $_->{itemnumber} }++ if $_->{itemnumber};
+ if ($show_priority && $_->{borrowernumber} == $borrowernumber) {
+ $has_hold = 1;
+ $_->{itemnumber}
+ ? ($priority{ $_->{itemnumber} } = $_->{priority})
+ : ($template->param( priority => $_->{priority} ));
+ }
+ }
+}
+$template->param( show_priority => $has_hold ) ;
+
my $norequests = 1;
my $branches = GetBranches();
my %itemfields;
for my $itm (@items) {
+ $itm->{holds_count} = $item_reserves{ $itm->{itemnumber} };
+ $itm->{priority} = $priority{ $itm->{itemnumber} };
$norequests = 0
if ( (not $itm->{'wthdrawn'} )
&& (not $itm->{'itemlost'} )
diff --git a/opac/opac-reserve.pl b/opac/opac-reserve.pl
index 4e4d440..3844bc1 100755
--- a/opac/opac-reserve.pl
+++ b/opac/opac-reserve.pl
@@ -47,7 +47,13 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
debug => 1,
}
);
-my $OPACDisplayRequestPriority = (C4::Context->preference("OPACDisplayRequestPriority")) ? 1 : 0;
+
+my ($show_holds_count, $show_priority);
+for ( C4::Context->preference("OPACShowHoldQueueDetails") ) {
+ m/holds/o and $show_holds_count = 1;
+ m/priority/ and $show_priority = 1;
+}
+
sub get_out ($$$) {
output_html_with_http_headers(shift,shift,shift); # $query, $cookie, $template->output;
exit;
@@ -113,12 +119,8 @@ $template->param( choose_branch => $OPACChooseBranch);
#
#
-# Hash of biblionumber to biblio/biblioitems record.
-my %biblioDataHash;
-
-# Hash of itemnumber to item info.
-my %itemInfoHash;
-
+my %biblioDataHash; # Hash of biblionumber to biblio/biblioitems record.
+my %itemInfoHash; # Hash of itemnumber to item info.
foreach my $biblioNumber (@biblionumbers) {
my $biblioData = GetBiblioData($biblioNumber);
@@ -128,33 +130,36 @@ foreach my $biblioNumber (@biblionumbers) {
my $marcrecord= GetMarcBiblio($biblioNumber);
- # flag indicating existence of at least one item linked via a host record
- my $hostitemsflag;
- # adding items linked via host biblios
- my @hostitemInfos = GetHostItemsInfo($marcrecord);
- if (@hostitemInfos){
- $hostitemsflag =1;
- push (@itemInfos, at hostitemInfos);
- }
-
-
+ # flag indicating existence of at least one item linked via a host record
+ my $hostitemsflag;
+ # adding items linked via host biblios
+ my @hostitemInfos = GetHostItemsInfo($marcrecord);
+ if (@hostitemInfos){
+ $hostitemsflag =1;
+ push (@itemInfos, at hostitemInfos);
+ }
$biblioData->{itemInfos} = \@itemInfos;
foreach my $itemInfo (@itemInfos) {
$itemInfoHash{$itemInfo->{itemnumber}} = $itemInfo;
}
- # Compute the priority rank.
- my ( $rank, $reserves ) = GetReservesFromBiblionumber($biblioNumber,1);
- $biblioData->{reservecount} = $rank;
- foreach my $res (@$reserves) {
- my $found = $res->{'found'};
- if ( $found && ($found eq 'W') ) {
- $rank--;
+ if ($show_holds_count) {
+ # Compute the priority rank.
+ my ( $rank, $reserves ) = GetReservesFromBiblionumber($biblioNumber,1);
+ $biblioData->{reservecount} = 1; # new reserve
+ foreach my $res (@$reserves) {
+ my $found = $res->{'found'};
+ if ( $found && ($found eq 'W') ) {
+ $rank--;
+ }
+ else {
+ $biblioData->{reservecount}++;
+ }
}
+ $rank++;
+ $biblioData->{rank} = $rank;
}
- $rank++;
- $biblioData->{rank} = $rank;
}
#
@@ -528,7 +533,8 @@ $template->param(itemtable_colspan => $itemTableColspan);
# display infos
$template->param(bibitemloop => $biblioLoop);
-$template->param( showpriority=>1 ) if $OPACDisplayRequestPriority;
+$template->param( showholds=>$show_holds_count);
+$template->param( showpriority=>$show_priority);
# can set reserve date in future
if (
C4::Context->preference( 'AllowHoldDateInFuture' ) &&
diff --git a/opac/opac-user.pl b/opac/opac-user.pl
index a9a6305..aba6877 100755
--- a/opac/opac-user.pl
+++ b/opac/opac-user.pl
@@ -65,7 +65,10 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
}
);
-my $OPACDisplayRequestPriority = (C4::Context->preference("OPACDisplayRequestPriority")) ? 1 : 0;
+my $show_priority;
+for ( C4::Context->preference("OPACShowHoldQueueDetails") ) {
+ m/priority/ and $show_priority = 1;
+}
my $patronupdate = $query->param('patronupdate');
my $canrenew = 1;
@@ -260,8 +263,8 @@ foreach my $res (@reserves) {
$res->{'branch'} = $branches->{ $res->{'branchcode'} }->{'branchname'};
my $biblioData = GetBiblioData($res->{'biblionumber'});
$res->{'reserves_title'} = $biblioData->{'title'};
- if ($OPACDisplayRequestPriority) {
- $res->{'priority'} = '' if $res->{'priority'} eq '0';
+ if ($show_priority) {
+ $res->{'priority'} ||= '';
}
$res->{'suspend_until'} = C4::Dates->new( $res->{'suspend_until'}, "iso")->output("syspref") if ( $res->{'suspend_until'} );
}
@@ -271,7 +274,7 @@ foreach my $res (@reserves) {
$template->param( RESERVES => \@reserves );
$template->param( reserves_count => $#reserves+1 );
-$template->param( showpriority=>1 ) if $OPACDisplayRequestPriority;
+$template->param( showpriority=>$show_priority );
my @waiting;
my $wcount = 0;
--
1.7.9.5
More information about the Koha-patches
mailing list