From 96c6bdd925268ca98116f8660e607986741cf209 Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Fri, 13 Apr 2012 11:12:29 -0400
Subject: [PATCH] Bug 7951 - Suspending holds needs a system preference

Adds system preferences SuspendHoldsIntranet and SuspendHoldsOpac.
---
 circ/circulation.pl                                |    6 +++---
 installer/data/mysql/sysprefs.sql                  |    2 ++
 installer/data/mysql/updatedatabase.pl             |    8 ++++++++
 .../en/modules/admin/preferences/circulation.pref  |   12 ++++++++++++
 .../prog/en/modules/circ/circulation.tt            |    4 +++-
 .../prog/en/modules/members/moremember.tt          |    3 +++
 .../prog/en/modules/reserve/request.tt             |    5 ++++-
 koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt   |    2 ++
 members/moremember.pl                              |    4 +++-
 opac/opac-user.pl                                  |    5 ++++-
 reserve/request.pl                                 |    5 ++++-
 11 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/circ/circulation.pl b/circ/circulation.pl
index bcbcb6f..2dd3b6a 100755
--- a/circ/circulation.pl
+++ b/circ/circulation.pl
@@ -704,7 +704,9 @@ $template->param(
     soundon           => C4::Context->preference("SoundOn"),
     fast_cataloging   => $fast_cataloging,
     CircAutoPrintQuickSlip   => C4::Context->preference("CircAutoPrintQuickSlip"),
-	activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''),
+    activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''),
+    SuspendHoldsIntranet => C4::Context->preference('SuspendHoldsIntranet'),
+    AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds'),
 );
 
 # save stickyduedate to session
@@ -729,6 +731,4 @@ $template->param(
     canned_bor_notes_loop     => $canned_notes,
 );
 
-$template->param( AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds') );
-
 output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 7a3731c..5a29d3f 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -362,3 +362,5 @@ INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('
 INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('AutoResumeSuspendedHolds',  '1', NULL ,  'Allow suspended holds to be automatically resumed by a set date.',  'YesNo');
 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OpacStarRatings','all',NULL,'disable|all|details','Choice');
 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacBrowseResults','1','Disable/enable browsing and paging search results from the OPAC detail page.',NULL,'YesNo');
+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SuspendHoldsIntranet', '1', NULL , 'Allow holds to be suspended from the intranet.', 'YesNo');
+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SuspendHoldsOpac', '1', NULL , 'Allow holds to be suspended from the OPAC.', 'YesNo');
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 596aefe..f761be8 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -5196,6 +5196,14 @@ 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('SuspendHoldsIntranet', '1', NULL , 'Allow holds to be suspended from the intranet.', 'YesNo')");
+    $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('SuspendHoldsOpac', '1', NULL , 'Allow holds to be suspended from the OPAC.', 'YesNo')");
+    print "Upgrade to $DBversion done (Add system preference OpacBrowseResults ))\n";
+    SetVersion($DBversion);
+}
+
 
 =head1 FUNCTIONS
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
index 471aa0e..a792c28 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
@@ -350,6 +350,18 @@ Circulation:
                   yes: Allow
                   no: "Don't allow"
             - suspended holds to be automatically resumed by a set date.
+        -
+            - pref: SuspendHoldsIntranet
+              choices:
+                  yes: Allow
+                  no: "Don't allow"
+            - holds to be suspended from the intranet.
+        -
+            - pref: SuspendHoldsOpac
+              choices:
+                  yes: Allow
+                  no: "Don't allow"
+            - holds to be suspended from the OPAC.
     Fines Policy:
         -
             - Calculate fines based on days overdue
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
index b41184e..cb32cc1 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
@@ -990,6 +990,7 @@ No patron matched <span class="ex">[% message %]</span>
             <fieldset class="action"><input type="submit" class="cancel" name="submit" value="Cancel marked holds" /></fieldset>
     </form>
 
+    [% IF SuspendHoldsIntranet %]
     <fieldset class="action">
         <form action="/cgi-bin/koha/reserve/modrequest_suspendall.pl" method="post">
             <input type="hidden" name="from" value="circ" />
@@ -1041,8 +1042,9 @@ No patron matched <span class="ex">[% message %]</span>
             <input type="submit" value="Resume all suspended holds" />
 	</form>
     </fieldset>
+    [% END # IF SuspendHoldsIntranet %]
 
-	[% ELSE %]
+[% ELSE %]
 	<p>Patron has nothing on hold.</p>
 [% END %]
 </div> <!-- reservesloop -->
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
index 202c9d3..9033f5c 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
@@ -646,6 +646,8 @@ function validate1(date) {
 
         <fieldset class="action"><input type="submit" class="cancel" name="submit" value="Cancel marked holds" /></fieldset>
     </form>
+
+    [% IF SuspendHoldsIntranet %]
     <fieldset class="action">
         <form action="/cgi-bin/koha/reserve/modrequest_suspendall.pl" method="post">
             <input type="hidden" name="from" value="borrower" />
@@ -697,6 +699,7 @@ function validate1(date) {
             <input type="submit" value="Resume all suspended holds" />
 	</form>
     </fieldset>
+    [% END # IF SuspendHoldsIntranet %]
 
     [% ELSE %]<p>Patron has nothing on hold.</p>[% END %]
 	</div>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
index effeb7a..971b041 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
@@ -598,7 +598,7 @@ function checkMultiHold() {
             <th><img src="/intranet-tmpl/[% theme %]/img/go-bottom.png" border="0" alt="Toggle set to lowest priority" /></th>
         [% END %]
 	<th>&nbsp;</th>
-	<th>&nbsp;</th>
+	[% IF SuspendHoldsIntranet %]<th>&nbsp;</th><!-- Suspend Holds Column Header -->[% END %]
       </tr>
   [% FOREACH reserveloo IN biblioloo.reserveloop %]
   [% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
@@ -730,6 +730,7 @@ function checkMultiHold() {
                 </a>
 	</td>
 
+        [% IF SuspendHoldsIntranet %]
 	<td>
 	[% UNLESS ( reserveloo.wait ) %]
             <input type="button" value="[% IF ( reserveloo.suspend ) %]Unsuspend[% ELSE %]Suspend[% END %]" onclick="window.location.href='request.pl?action=toggleSuspend&amp;borrowernumber=[% reserveloo.borrowernumber %]&amp;biblionumber=[% reserveloo.biblionumber %]&amp;date=[% reserveloo.date %]&amp;suspend_until=' + $('#suspend_until_[% reserveloo.borrowernumber %]').val()" />
@@ -768,6 +769,8 @@ function checkMultiHold() {
 		<input type="hidden" name="suspend_until" value="" />
 	[% END %]
 	</td>
+        [% END # IF SuspendHoldsIntranet %]
+
       </tr>
 
   [% END %] <!-- existing reserveloop -->
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt
index 9729c7c..03fb16d 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt
@@ -421,6 +421,7 @@ $.tablesorter.addParser({
 			</tbody>
         </table>
 
+        [% IF SuspendHoldsOpac %]
 	<div>
             <form action="/cgi-bin/koha/opac-modrequest-suspend.pl" method="post">
               <input type="submit" name="submit" class="icon delete cancel" value="Suspend all holds" onclick="return confirmDelete('Are you sure you want to suspend all holds?');" />
@@ -472,6 +473,7 @@ $.tablesorter.addParser({
               <input type="hidden" name="suspend" value="0" />
             </form>
 	</div>
+        [% END %]
     </div>
     [% END %]
     </div><!-- /opac-user views -->
diff --git a/members/moremember.pl b/members/moremember.pl
index cc9afb9..ef8cf64 100755
--- a/members/moremember.pl
+++ b/members/moremember.pl
@@ -430,7 +430,9 @@ $template->param(
     samebranch     => $samebranch,
     quickslip		  => $quickslip,
     activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''),
-    AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds') );
+    AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds'),
+    SuspendHoldsIntranet => C4::Context->preference('SuspendHoldsIntranet'),
+);
 
 output_html_with_http_headers $input, $cookie, $template->output;
 
diff --git a/opac/opac-user.pl b/opac/opac-user.pl
index a9a6305..c91d584 100755
--- a/opac/opac-user.pl
+++ b/opac/opac-user.pl
@@ -362,7 +362,10 @@ $template->param(
 );
 
 $template->param( DHTMLcalendar_dateformat  => C4::Dates->DHTMLcalendar() );
-$template->param( AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds') );
+$template->param( 
+    SuspendHoldsOpac => C4::Context->preference('SuspendHoldsOpac'),
+    AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds') ,
+);
 
 output_html_with_http_headers $query, $cookie, $template->output;
 
diff --git a/reserve/request.pl b/reserve/request.pl
index d9e5904..99d6a0a 100755
--- a/reserve/request.pl
+++ b/reserve/request.pl
@@ -633,7 +633,10 @@ if ( C4::Context->preference( 'AllowHoldDateInFuture' ) ) {
     $template->param( reserve_in_future => 1 );
 }
 
-$template->param( AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds') );
+$template->param( 
+    SuspendHoldsIntranet => C4::Context->preference('SuspendHoldsIntranet'),
+    AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds'),
+);
 
 # printout the page
 output_html_with_http_headers $input, $cookie, $template->output;
-- 
1.7.2.5