[Koha-patches] [PATCH] bug7398: OPACShowHoldsCount syspref
Srdjan
srdjan at catalyst.net.nz
Mon Mar 26 03:46:43 CEST 2012
Show holds count on OPAC detail if OPACShowHoldsCount is yes
Take in account OPACShowHoldsCount syspref on opac-reserves.pl
---
installer/data/mysql/sysprefs.sql | 1 +
installer/data/mysql/updatedatabase.pl | 7 +++
.../prog/en/modules/admin/preferences/opac.pref | 6 ++
koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt | 9 ++++
.../opac-tmpl/prog/en/modules/opac-reserve.tt | 46 ++++++++---------
opac/opac-detail.pl | 10 ++++
opac/opac-reserve.pl | 51 ++++++++++----------
7 files changed, 80 insertions(+), 50 deletions(-)
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 3e850b3..47abbce 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -355,3 +355,4 @@ INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES (
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OAI-PMH:AutoUpdateSets','0','Automatically update OAI sets when a bibliographic record is created or updated','','YesNo');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacAllowPublicListCreation',1,'If set, allows opac users to create public lists',NULL,'YesNo');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacAllowSharingPrivateLists',0,'If set, allows opac users to share private lists with other patrons',NULL,'YesNo');
+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OPACShowHoldsCount',0,'Show the total number of holds in the OPAC details',NULL,'YesNo');
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 8259bf2..4a1ce74 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -5036,6 +5036,13 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
SetVersion($DBversion);
}
+$DBversion = "3.07.00.XXX";
+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+ $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OPACShowHoldsCount',0,'Show the total number of holds in the OPAC details',NULL,'YesNo')");
+ print "Upgrade to $DBversion done (Added system preference OPACShowHoldsCount)\n";
+ SetVersion($DBversion);
+}
+
=head1 FUNCTIONS
=head2 DropAllForeignKeys($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 ae6b620..7af079d 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
@@ -343,6 +343,12 @@ OPAC:
no: "Don't allow"
- patrons to place holds on specific items in the OPAC. If this is disabled, users can only put a hold on the next available item.
-
+ - pref: OPACShowHoldsCount
+ choices:
+ yes: Show
+ no: "Don't show"
+ - the total number of holds on the details page
+ -
- pref: OpacRenewalAllowed
choices:
yes: Allow
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 5c5b885..854929e 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt
@@ -599,6 +599,9 @@ YAHOO.util.Event.onContentReady("furtherm", function () {
<th>Status</th>
[% IF ( itemdata_itemnotes ) %]<th>Notes</th>[% END %]
<th>Date Due</th>
+ [% IF holds_count.defined %]
+ <th>Holds</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 %]
@@ -623,10 +626,16 @@ 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 %]</td>
+ [% IF holds_count.defined %]
+ <td>[% ITEM_RESULT.holds_count %]</td>
+ [% END %]
</tr>
[% END %]</tbody>
</table>
[% END %]
+ [% IF holds_count.defined %]
+ <div id="bib_holds">Holds: [% holds_count %]</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 7597a4a..0373ff3 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,7 @@
[% UNLESS ( item_level_itypes ) %]
<th>Item Type</th>
[% END %]
- [% IF ( showpriority ) %]
+ [% IF ( showholds ) %]
<th>Priority</th>
[% END %]
[% IF ( reserve_in_future ) %]
@@ -297,19 +297,21 @@
[% 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 %]
+ <td>
+ [% IF ( showpriority ) %] [% bibitemloo.rank %] out of [% END %][% bibitemloo.reservecount %]
+ </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[
@@ -348,10 +350,9 @@
</script>
<p style="margin:.3em 2em;">
<a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('reserve_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear Date</a></p>
- </td>[% END %]
-
- [% END %]
- [% IF ( bibitemloo.holdable ) %]<td>
+ </td>
+ [% END %]
+ <td>
<input name="expiration_date_[% bibitemloo.biblionumber %]" id="expiration_date_[% bibitemloo.biblionumber %]" size="10" readonly="readonly" />
<img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="CalendarExpirationDate_[% bibitemloo.biblionumber %]" style="cursor: pointer;" />
<script language="JavaScript" type="text/javascript">
@@ -381,13 +382,10 @@
</script>
<p style="margin:.3em 2em;">
<a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('expiration_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear Date</a></p>
- </td>[% END %]
-
- [% IF ( bibitemloo.holdable ) %]
- <!-- HOLD ABLE -->
- [% IF ( OPACItemHolds ) %]
- <!-- ITEM HOLDS -->
- <td class="place_on_type" style="display:none">
+ </td>
+ [% IF ( OPACItemHolds ) %]
+ <!-- ITEM HOLDS -->
+ <td class="place_on_type" style="display:none">
<ul>
<li>
[% UNLESS ( bibitemloo.holdable ) %]
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index b45250d..0e0654c 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -480,10 +480,20 @@ 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;
+if ( C4::Context->preference("OPACShowHoldsCount") ) {
+ my ($reserve_count,$reserves) = GetReservesFromBiblionumber($biblionumber);
+ $template->param( holds_count => $reserve_count );
+ foreach (@$reserves) {
+ $item_reserves{ $_->{itemnumber} }++ if $_->{itemnumber};
+ }
+}
+
my $norequests = 1;
my $branches = GetBranches();
my %itemfields;
for my $itm (@items) {
+ $itm->{holds_count} = $item_reserves{ $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..77e5b05 100755
--- a/opac/opac-reserve.pl
+++ b/opac/opac-reserve.pl
@@ -48,6 +48,8 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
}
);
my $OPACDisplayRequestPriority = (C4::Context->preference("OPACDisplayRequestPriority")) ? 1 : 0;
+my $show_holds_count = C4::Context->preference("OPACShowHoldsCount");
+
sub get_out ($$$) {
output_html_with_http_headers(shift,shift,shift); # $query, $cookie, $template->output;
exit;
@@ -113,12 +115,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 +126,33 @@ 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} = $rank;
+ foreach my $res (@$reserves) {
+ my $found = $res->{'found'};
+ if ( $found && ($found eq 'W') ) {
+ $rank--;
+ }
}
+ $rank++;
+ $biblioData->{rank} = $rank;
}
- $rank++;
- $biblioData->{rank} = $rank;
}
#
@@ -528,7 +526,8 @@ $template->param(itemtable_colspan => $itemTableColspan);
# display infos
$template->param(bibitemloop => $biblioLoop);
-$template->param( showpriority=>1 ) if $OPACDisplayRequestPriority;
+$template->param( showpriority=>$OPACDisplayRequestPriority);
+$template->param( showholds=>$show_holds_count);
# can set reserve date in future
if (
C4::Context->preference( 'AllowHoldDateInFuture' ) &&
--
1.7.5.4
More information about the Koha-patches
mailing list