[Koha-patches] [PATCH] [SIGNED-OFF] Bug 5547: Hide Lost Items dev

Owen Leonard oleonard at myacpl.org
Mon Mar 28 16:21:02 CEST 2011


From: Ian Walls <ian.walls at bywatersolutions.com>

Adds a Hide Lost Items option to the staff client, as detailed in the enhancement request
at http://wiki.koha-community.org/wiki/Hidelostitems_option_for_the_staff_client_RFC

Minor edits: Whitespace

Signed-off-by: Owen Leonard <oleonard at myacpl.org>
---
 C4/Members.pm                                      |   21 +++++++++++++++++
 C4/Search.pm                                       |    4 ++-
 admin/categorie.pl                                 |   15 +++++++-----
 catalogue/detail.pl                                |   16 ++++++++++--
 catalogue/moredetail.pl                            |   24 +++++++++++++++----
 installer/data/mysql/kohastructure.sql             |    1 +
 installer/data/mysql/updatedatabase.pl             |    7 +++++
 .../prog/en/modules/admin/categorie.tmpl           |   12 ++++++++++
 .../prog/en/modules/catalogue/detail.tmpl          |    7 +++++-
 .../prog/en/modules/catalogue/moredetail.tmpl      |    3 +-
 .../prog/en/modules/reserve/request.tmpl           |    8 +++++-
 reserve/request.pl                                 |    9 ++++++-
 12 files changed, 108 insertions(+), 19 deletions(-)

diff --git a/C4/Members.pm b/C4/Members.pm
index 2b733ed..b885d38 100644
--- a/C4/Members.pm
+++ b/C4/Members.pm
@@ -69,6 +69,8 @@ BEGIN {
     &PutPatronImage
     &RmPatronImage
 
+                &GetHideLostItemsPreference
+
 		&IsMemberBlocked
 		&GetMemberAccountRecords
 		&GetBorNotifyAcctRecord
@@ -1806,6 +1808,25 @@ sub RmPatronImage {
     return $dberror;
 }
 
+=head2 GetHideLostItemsPreference
+
+  $hidelostitemspref = &GetHideLostItemsPreference($borrowernumber);
+
+Returns the HideLostItems preference for the patron category of the supplied borrowernumber
+C<&$hidelostitemspref>return value of function, 0 or 1
+
+=cut
+
+sub GetHideLostItemsPreference {
+    my ($borrowernumber) = @_;
+    my $dbh = C4::Context->dbh;
+    my $query = "SELECT hidelostitems FROM borrowers,categories WHERE borrowers.categorycode = categories.categorycode AND borrowernumber = ?";
+    my $sth = $dbh->prepare($query);
+    $sth->execute($borrowernumber);
+    my $hidelostitems = $sth->fetchrow;    
+    return $hidelostitems;    
+}
+
 =head2 GetRoadTypeDetails (OUEST-PROVENCE)
 
   ($roadtype) = &GetRoadTypeDetails($roadtypeid);
diff --git a/C4/Search.pm b/C4/Search.pm
index 52939bd..2ee570d 100644
--- a/C4/Search.pm
+++ b/C4/Search.pm
@@ -25,6 +25,7 @@ use Lingua::Stem;
 use C4::Search::PazPar2;
 use XML::Simple;
 use C4::Dates qw(format_date);
+use C4::Members qw(GetHideLostItemsPreference);
 use C4::XSLT;
 use C4::Branch;
 use C4::Reserves;    # CheckReserves
@@ -1569,7 +1570,8 @@ sub searchResults {
 
 			my $prefix = $item->{$hbranch} . '--' . $item->{location} . $item->{itype} . $item->{itemcallnumber};
 # For each grouping of items (onloan, available, unavailable), we build a key to store relevant info about that item
-            if ( $item->{onloan} ) {
+            my $userenv = C4::Context->userenv;
+            if ( $item->{onloan} && !(C4::Members::GetHideLostItemsPreference($userenv->{'number'}) && $item->{itemlost}) ) {
                 $onloan_count++;
 				my $key = $prefix . $item->{onloan} . $item->{barcode};
 				$onloan_items->{$key}->{due_date} = format_date($item->{onloan});
diff --git a/admin/categorie.pl b/admin/categorie.pl
index 4a5d683..d0211fd 100755
--- a/admin/categorie.pl
+++ b/admin/categorie.pl
@@ -92,7 +92,7 @@ if ($op eq 'add_form') {
 	my $data;
 	if ($categorycode) {
 		my $dbh = C4::Context->dbh;
-		my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,overduenoticerequired,category_type from categories where categorycode=?");
+		my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,hidelostitems,overduenoticerequired,category_type from categories where categorycode=?");
 		$sth->execute($categorycode);
 		$data=$sth->fetchrow_hashref;
 		$sth->finish;
@@ -109,6 +109,7 @@ if ($op eq 'add_form') {
 				overduenoticerequired   => $data->{'overduenoticerequired'},
 				issuelimit              => $data->{'issuelimit'},
 				reservefee              => sprintf("%.2f",$data->{'reservefee'}),
+                                hidelostitems           => $data->{'hidelostitems'},
 				category_type           => $data->{'category_type'},
 				DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
 				"type_".$data->{'category_type'} => 1,
@@ -128,12 +129,12 @@ if ($op eq 'add_form') {
 	}
 	
 	if ($is_a_modif) {
-            my $sth=$dbh->prepare("UPDATE categories SET description=?,enrolmentperiod=?, enrolmentperioddate=?,upperagelimit=?,dateofbirthrequired=?,enrolmentfee=?,reservefee=?,overduenoticerequired=?,category_type=? WHERE categorycode=?");
-            $sth->execute(map { $input->param($_) } ('description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','overduenoticerequired','category_type','categorycode'));
+            my $sth=$dbh->prepare("UPDATE categories SET description=?,enrolmentperiod=?, enrolmentperioddate=?,upperagelimit=?,dateofbirthrequired=?,enrolmentfee=?,reservefee=?,hidelostitems=?,overduenoticerequired=?,category_type=? WHERE categorycode=?");
+            $sth->execute(map { $input->param($_) } ('description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type','categorycode'));
             $sth->finish;
         } else {
-            my $sth=$dbh->prepare("INSERT INTO categories  (categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,overduenoticerequired,category_type) values (?,?,?,?,?,?,?,?,?,?)");
-            $sth->execute(map { $input->param($_) } ('categorycode','description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','overduenoticerequired','category_type'));
+            my $sth=$dbh->prepare("INSERT INTO categories  (categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,hidelostitems,overduenoticerequired,category_type) values (?,?,?,?,?,?,?,?,?,?)");
+            $sth->execute(map { $input->param($_) } ('categorycode','description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type'));
             $sth->finish;
         }
     if (C4::Context->preference('EnhancedMessagingPreferences')) {
@@ -156,7 +157,7 @@ if ($op eq 'add_form') {
 	$sth->finish;
 	$template->param(total => $total->{'total'});
 	
-	my $sth2=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,overduenoticerequired,category_type from categories where categorycode=?");
+	my $sth2=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,hidelostitems,overduenoticerequired,category_type from categories where categorycode=?");
 	$sth2->execute($categorycode);
 	my $data=$sth2->fetchrow_hashref;
 	$sth2->finish;
@@ -173,6 +174,7 @@ if ($op eq 'add_form') {
                                 overduenoticerequired   => $data->{'overduenoticerequired'},
                                 issuelimit              => $data->{'issuelimit'},
                                 reservefee              =>  sprintf("%.2f",$data->{'reservefee'}),
+                                hidelostitems           => $data->{'hidelostitems'},
                                 category_type           => $data->{'category_type'},
                                 );
 													# END $OP eq DELETE_CONFIRM
@@ -205,6 +207,7 @@ if ($op eq 'add_form') {
 				overduenoticerequired   => $results->[$i]{'overduenoticerequired'},
 				issuelimit              => $results->[$i]{'issuelimit'},
 				reservefee              => sprintf("%.2f",$results->[$i]{'reservefee'}),
+                                hidelostitems           => $results->[$i]{'hidelostitems'},
 				category_type           => $results->[$i]{'category_type'},
 				"type_".$results->[$i]{'category_type'} => 1);
         if (C4::Context->preference('EnhancedMessagingPreferences')) {
diff --git a/catalogue/detail.pl b/catalogue/detail.pl
index 3d42326..5542163 100755
--- a/catalogue/detail.pl
+++ b/catalogue/detail.pl
@@ -64,6 +64,8 @@ if($query->cookie("holdfor")){
 my $biblionumber = $query->param('biblionumber');
 my $fw = GetFrameworkCode($biblionumber);
 
+my $showallitems = $query->param('showallitems');
+
 ## get notes and subjects from MARC record
 my $marcflavour      = C4::Context->preference("marcflavour");
 my $record           = GetMarcBiblio($biblionumber);
@@ -109,8 +111,12 @@ my $branches = GetBranches();
 my $itemtypes = GetItemTypes();
 my $dbh = C4::Context->dbh;
 
-# change back when ive fixed request.pl
-my @items = &GetItemsInfo( $biblionumber, 'intra' );
+# 'intra' param included, even though it's not respected in GetItemsInfo currently
+my @all_items= GetItemsInfo($biblionumber, 'intra');
+my @items;
+for my $itm (@all_items) {
+    push @items, $itm unless ( $itm->{itemlost} && GetHideLostItemsPreference($borrowernumber) && !$showallitems);
+}
 my $dat = &GetBiblioData($biblionumber);
 
 # get count of holds
@@ -141,7 +147,11 @@ foreach my $subscription (@subscriptions) {
 if ( defined $dat->{'itemtype'} ) {
     $dat->{imageurl} = getitemtypeimagelocation( 'intranet', $itemtypes->{ $dat->{itemtype} }{imageurl} );
 }
-$dat->{'count'} = scalar @items;
+
+$dat->{'count'} = scalar @all_items;
+$dat->{'showncount'} = scalar @items;
+$dat->{'hiddencount'} = scalar @all_items - scalar @items;
+
 my $shelflocations = GetKohaAuthorisedValues('items.location', $fw);
 my $collections    = GetKohaAuthorisedValues('items.ccode'   , $fw);
 my (@itemloop, %itemfields);
diff --git a/catalogue/moredetail.pl b/catalogue/moredetail.pl
index c3d7a95..cb51344 100755
--- a/catalogue/moredetail.pl
+++ b/catalogue/moredetail.pl
@@ -33,6 +33,7 @@ use C4::Dates qw/format_date/;
 use C4::Circulation;  # to use itemissues
 use C4::Members; # to use GetMember
 use C4::Search;		# enabled_staff_search_views
+use C4::Members qw/GetHideLostItemsPreference/;
 
 my $query=new CGI;
 
@@ -65,8 +66,10 @@ my $biblionumber=$query->param('biblionumber');
 my $title=$query->param('title');
 my $bi=$query->param('bi');
 $bi = $biblionumber unless $bi;
+my $itemnumber = $query->param('itemnumber');
 my $data=GetBiblioData($biblionumber);
 my $dewey = $data->{'dewey'};
+my $showallitems = $query->param('showallitems');
 
 #coping with subscriptions
 my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber);
@@ -84,16 +87,27 @@ my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber);
 
 my @results;
 my $fw = GetFrameworkCode($biblionumber);
-my @items= GetItemsInfo($biblionumber);
-my $count=@items;
-$data->{'count'}=$count;
+my @all_items= GetItemsInfo($biblionumber);
+my @items;
+for my $itm (@all_items) {
+    push @items, $itm unless ( $itm->{itemlost} && 
+                               GetHideLostItemsPreference($loggedinuser) &&
+                               !$showallitems && 
+                               ($itemnumber != $itm->{itemnumber}));
+}
+
+my $totalcount=@all_items;
+my $showncount=@items;
+my $hiddencount = $totalcount - $showncount;
+$data->{'count'}=$totalcount;
+$data->{'showncount'}=$showncount;
+$data->{'hiddencount'}=$hiddencount;  # can be zero
 
 my $ccodes= GetKohaAuthorisedValues('items.ccode',$fw);
 my $itemtypes = GetItemTypes;
 
 $data->{'itemtypename'} = $itemtypes->{$data->{'itemtype'}}->{'description'};
 $results[0]=$data;
-my $itemnumber;
 ($itemnumber) and @items = (grep {$_->{'itemnumber'} == $itemnumber} @items);
 foreach my $item (@items){
     $item->{itemlostloop}= GetAuthorisedValues(GetAuthValCode('items.itemlost',$fw),$item->{itemlost}) if GetAuthValCode('items.itemlost',$fw);
@@ -143,7 +157,7 @@ $template->param(loggedinuser => $loggedinuser);
 $template->param(biblionumber => $biblionumber);
 $template->param(biblioitemnumber => $bi);
 $template->param(itemnumber => $itemnumber);
-$template->param(ONLY_ONE => 1) if ( $itemnumber && $count != @items );
+$template->param(ONLY_ONE => 1) if ( $itemnumber && $showncount != @items );
 $template->param(z3950_search_params => C4::Search::z3950_search_args(GetBiblioData($biblionumber)));
 
 output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index a62e07c..b9e4df6 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -420,6 +420,7 @@ CREATE TABLE `categories` (
   `overduenoticerequired` tinyint(1) default NULL,
   `issuelimit` smallint(6) default NULL,
   `reservefee` decimal(28,6) default NULL,
+  `hidelostitems` tinyint(1) NOT NULL default '0' 
   `category_type` varchar(1) NOT NULL default 'A',
   PRIMARY KEY  (`categorycode`),
   UNIQUE KEY `categorycode` (`categorycode`)
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 66e9828..7b78aba 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -4090,6 +4090,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
+$DBversion = '3.03.00.XXX';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("ALTER TABLE `categories` ADD `hidelostitems` tinyint(1) NOT NULL default '0' AFTER `reservefee`");
+    print "Upgrade to $DBversion done (Add hidelostitems preference to borrower categories)\n";
+    SetVersion ($DBversion);
+}
+
 =head1 FUNCTIONS
 
 =head2 DropAllForeignKeys($table)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tmpl
index ba9e468..52e8657 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tmpl
@@ -151,6 +151,15 @@
 						<option value="1">Yes</option>
 			<!-- /TMPL_IF -->
 					</select></li>
+	<li><label for="hidelostitems">Lost items in staff client</label> &nbsp; <select name="hidelostitems" id="hidelostitems">
+			<!-- TMPL_IF NAME="hidelostitems" -->
+						<option value="0">Shown</option>
+						<option value="1" selected="selected">Hidden by default</option>
+			<!-- TMPL_ELSE -->
+						<option value="0" selected="selected">Shown</option>
+						<option value="1">Hidden by default</option>
+			<!-- /TMPL_IF -->
+					</select></li>
 	<li><label for="reservefee">Hold fee: </label><input type="text" name="reservefee" id="reservefee" size="6" value="<!-- TMPL_VAR NAME="reservefee" -->" /></li>
 	<li><label for="category_type">Category type: </label> &nbsp; <select name="category_type" id="category_type">
 						<!-- TMPL_IF NAME="type_n" --><option value="" selected="selected">Select a Category type</option><!-- TMPL_ELSE --><option value="">Select a Category type</option><!-- /TMPL_IF -->
@@ -208,6 +217,7 @@ Confirm Deletion of Category <!-- TMPL_VAR NAME="categorycode" escape="html" -->
 	<tr><th scope="row">Upperage limit: </th><td><!-- TMPL_VAR NAME="upperagelimit" --> years</td></tr>
 	<tr><th scope="row">Enrollment fee: </th><td><!-- TMPL_VAR NAME="enrolmentfee" --></td></tr>
 	<tr><th scope="row">Receives overdue notices: </th><td><!-- TMPL_IF NAME="overduenoticerequired" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td></tr>
+	<tr><th scope="row">Lost items in staff client</th><td><!-- TMPL_IF NAME="hidelostitems" -->Hidden by default<!-- TMPL_ELSE -->Shown<!-- /TMPL_IF --></td></tr>
 	<tr><th scope="row">Hold fee: </th><td><!-- TMPL_VAR NAME="reservefee" --></td></tr>
 </table>
 		<fieldset class="action"><!-- TMPL_IF NAME="totalgtzero" -->
@@ -282,6 +292,7 @@ Confirm Deletion of Category <!-- TMPL_VAR NAME="categorycode" escape="html" -->
 			<th scope="col">Upper age limit</th>
 			<th scope="col">Enrollment fee</th>
 			<th scope="col">Overdue</th>
+			<th scope="col">Lost Items</th>
  			<th scope="col">Hold fee</th>
             <!-- TMPL_IF NAME="EnhancedMessagingPreferences" -->
             <th scope="col">Messaging</th>
@@ -318,6 +329,7 @@ Confirm Deletion of Category <!-- TMPL_VAR NAME="categorycode" escape="html" -->
 			<td><!-- TMPL_VAR NAME="upperagelimit" --> years</td>
                         <td><!-- TMPL_VAR NAME="enrolmentfee" --></td>
                         <td><!-- TMPL_IF NAME="overduenoticerequired" -->Yes<!-- TMPL_ELSE -->No<!-- /TMPL_IF --></td>
+                        <td><!-- TMPL_IF NAME="hidelostitems" -->Hidden<!-- TMPL_ELSE -->Shown<!-- /TMPL_IF --></td>
                         <td><!-- TMPL_VAR NAME="reservefee" --></td>
                         <!-- TMPL_IF NAME="EnhancedMessagingPreferences" -->
                         <td>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl
index e3b0a8f..a939b42 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl
@@ -217,6 +217,7 @@ function verify_images() {
 
 <div id="holdings">
 <!-- TMPL_IF name="count" -->
+    <!-- TMPL_IF name="showncount" -->
         <table>
             <tr>
                 <!-- TMPL_IF NAME="item_level_itypes" --><th>Item type</th><!-- /TMPL_IF -->
@@ -364,6 +365,10 @@ function verify_images() {
                 </tr>
             <!-- /TMPL_LOOP -->
         </table>
+        <!-- /TMPL_IF -->
+                <!-- TMPL_IF NAME="hiddencount" -->
+                   <p><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&showallitems=1">Show all items (<!-- TMPL_VAR NAME="hiddencount" --> hidden)</a>
+                <!-- /TMPL_IF --> 		
 		<!-- TMPL_IF NAME="debug_display" -->
 		<br /><br />
 		<table>
@@ -371,7 +376,7 @@ function verify_images() {
 			<tr><td>itemdata_copynumber</td><td><!-- TMPL_VAR NAME="itemdata_copynumber" --></td></tr>
 			<tr><td>serial</td><td><!-- TMPL_VAR NAME="serial" --></td></tr>
 		</table>
-		<!-- /TMPL_IF -->
+                <!-- /TMPL_IF -->
 <!-- TMPL_ELSE -->
     <p>No physical items for this record</p>
 <!-- /TMPL_IF -->
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tmpl
index e67a864..271fa14 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tmpl
@@ -32,7 +32,8 @@
         <!-- TMPL_IF NAME="volumeddesc" --><li><span class="label">Volume:</span> <!-- TMPL_VAR NAME="volumeddesc" --></li><!-- /TMPL_IF -->
         <li><span class="label">Physical Details:</span> <!-- TMPL_VAR NAME="pages" --> <!-- TMPL_VAR NAME="illus" --> <!-- TMPL_VAR NAME="size" -->&nbsp;</li>
         <!-- TMPL_IF NAME="bnotes" --><li><span class="label">Notes:</span> <!-- TMPL_VAR NAME="bnotes" --></li><!-- /TMPL_IF -->
-        <li><span class="label">No. of Items:</span> <!-- TMPL_VAR NAME="count" -->&nbsp;</li>
+        <li><span class="label">No. of Items:</span> <!-- TMPL_VAR NAME="count" -->&nbsp;<!-- TMPL_IF NAME="hiddencount" -->total (<!-- TMPL_VAR NAME="showncount" --> shown / <!-- TMPL_VAR NAME="hiddencount" --> hidden) 
+<a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&showallitems=1">Show all items</a><!-- /TMPL_IF --></li>
     </ol>
     <!-- /TMPL_LOOP -->
     <br clear="all" />
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tmpl
index 53ff7b7..1001d8e 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tmpl
@@ -391,6 +391,7 @@ function checkMultiHold() {
             <th>Information</th>
         </tr>
     <!-- TMPL_LOOP Name="itemloop" -->
+        <!-- TMPL_UNLESS NAME="hide"-->
         <tr class="<!-- TMPL_VAR NAME="backgroundcolor" -->">
             <td>
             <!-- TMPL_IF NAME="available" -->
@@ -458,9 +459,14 @@ function checkMultiHold() {
             <!-- /TMPL_IF -->
             </td>
         </tr>
+      <!-- /TMPL_UNLESS --> <!--UNLESS item hide-->
     <!-- /TMPL_LOOP --> <!-- itemloop -->
         </table>
-
+    <!-- TMPL_IF NAME=hiddencount -->
+        <form>
+        <p class="hiddencount"><a href="request.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber"-->&cardnumber=<!-- TMPL_VAR NAME="cardnumber" -->&showallitems=1">Show all items (<!--TMPL_VAR NAME="hiddencount" --> hidden)</a></p>
+        </form>
+    <!-- /TMPL_IF --> <!-- hiddencount -->
     <!-- /TMPL_LOOP --> <!-- bibitemloop -->
 
   <!-- TMPL_ELSE --><!-- UNLESS multi_hold -->
diff --git a/reserve/request.pl b/reserve/request.pl
index 7e51364..a047f4d 100755
--- a/reserve/request.pl
+++ b/reserve/request.pl
@@ -57,6 +57,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
 
 my $multihold = $input->param('multi_hold');
 $template->param(multi_hold => $multihold);
+my $showallitems = $input->param('showallitems');
 
 # get Branches and Itemtypes
 my $branches = GetBranches();
@@ -319,6 +320,7 @@ foreach my $biblionumber (@biblionumbers) {
         my $biblioitem = $biblioiteminfos_of->{$biblioitemnumber};
         my $num_available = 0;
         my $num_override  = 0;
+        my $hiddencount   = 0;
         
         $biblioitem->{description} =
           $itemtypes->{ $biblioitem->{itemtype} }{description};
@@ -376,7 +378,7 @@ foreach my $biblionumber (@biblionumbers) {
                 $item->{notforloanvalue} =
                   $notforloan_label_of->{ $item->{notforloan} };
             }
-            
+     
             # Management of lost or long overdue items
             if ( $item->{itemlost} ) {
                 
@@ -386,6 +388,10 @@ foreach my $biblionumber (@biblionumbers) {
                     : $item->{itemlost} == 2 ? "(long overdue)"
                       : "";
                 $item->{backgroundcolor} = 'other';
+                if (GetHideLostItemsPreference($borrowernumber) && !$showallitems) {
+                    $item->{hide} = 1;
+                    $hiddencount++;
+                }
             }
             
             # Check the transit status
@@ -458,6 +464,7 @@ foreach my $biblionumber (@biblionumbers) {
             $biblioloopiter{warn} = 1;
             $biblioloopiter{none_avail} = 1;
         }
+        $template->param( hiddencount => $hiddencount);
         
         push @bibitemloop, $biblioitem;
     }
-- 
1.7.3



More information about the Koha-patches mailing list