From 858816f3578b2479763cc5b0b8adedc840603044 Mon Sep 17 00:00:00 2001
From: Aleisha Amohia <aleishaamohia@hotmail.com>
Date: Mon, 20 Nov 2017 02:12:08 +0000
Subject: [PATCH] Bug 19532: UseRecalls syspref

This patch adds a syspref to control the usability of the recalls
feature

Test the following:

Staff side
/includes/circ-menu.inc
/includes/circ-nav.inc
/includes/members-menu.inc
/admin/preferences/circulation.pref
/circ/circulation-home.tt
/circ/circulation.tt
/circ/recalls_overdue.tt
/circ/recalls_queue.tt
/circ/recalls_waiting.tt
/members/moremember.tt
/members/recallshistory.tt

OPAC
/includes/usermenu.inc
/opac-recall.tt
/opac-recalls.tt
/opac-user.tt
/members/recallshistory.pl
/opac/opac-detail.pl

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
---
 .../bug_19532_-_add_Recalls_syspref.sql            |  1 +
 installer/data/mysql/sysprefs.sql                  |  1 +
 .../intranet-tmpl/prog/en/includes/circ-menu.inc   |  6 ++--
 .../intranet-tmpl/prog/en/includes/circ-nav.inc    |  8 ++++--
 .../en/modules/admin/preferences/circulation.pref  | 17 ++++++++----
 .../prog/en/modules/circ/circulation.tt            |  4 +--
 .../prog/en/modules/circ/recalls_overdue.tt        |  4 +++
 .../prog/en/modules/circ/recalls_queue.tt          | 32 ++++++++++------------
 .../prog/en/modules/circ/recalls_waiting.tt        |  5 +++-
 .../prog/en/modules/members/moremember.tt          |  5 +++-
 .../prog/en/modules/members/recallshistory.tt      | 10 +++++--
 .../opac-tmpl/bootstrap/en/includes/usermenu.inc   | 12 ++++----
 .../opac-tmpl/bootstrap/en/modules/opac-recall.tt  |  4 +++
 .../opac-tmpl/bootstrap/en/modules/opac-recalls.tt |  4 +++
 .../opac-tmpl/bootstrap/en/modules/opac-user.tt    |  4 +--
 members/recallshistory.pl                          | 24 ++++++++++++++--
 16 files changed, 97 insertions(+), 44 deletions(-)
 create mode 100644 installer/data/mysql/atomicupdate/bug_19532_-_add_Recalls_syspref.sql

diff --git a/installer/data/mysql/atomicupdate/bug_19532_-_add_Recalls_syspref.sql b/installer/data/mysql/atomicupdate/bug_19532_-_add_Recalls_syspref.sql
new file mode 100644
index 0000000..4381395
--- /dev/null
+++ b/installer/data/mysql/atomicupdate/bug_19532_-_add_Recalls_syspref.sql
@@ -0,0 +1 @@
+INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES ('UseRecalls','1',NULL,'Enable or disable recalls','YesNo');
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 5ab4c0e..bb65bb8 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -611,6 +611,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
 ('UseICU','0','1','Tell Koha if ICU indexing is in use for Zebra or not.','YesNo'),
 ('UseKohaPlugins','0','','Enable or disable the ability to use Koha Plugins.','YesNo'),
 ('UseQueryParser','0',NULL,'If enabled, try to use QueryParser for queries.','YesNo'),
+('UseRecalls', '1', NULL, 'Enable or disable recalls', 'YesNo'),
 ('UseTransportCostMatrix','0','','Use Transport Cost Matrix when filling holds','YesNo'),
 ('UseWYSIWYGinSystemPreferences','0','','Show WYSIWYG editor when editing certain HTML system preferences.','YesNo'),
 ('viewISBD','1','','Allow display of ISBD view of bibiographic records','YesNo'),
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc
index 290911c..f26b822 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc
@@ -124,6 +124,8 @@
     [% IF Koha.Preference('ILLModule') && CAN_user_ill %]
         <li><a href="/cgi-bin/koha/ill/ill-requests.pl?borrowernumber=[% patron.borrowernumber | html %]">Interlibrary loans</a></li>
     [% END %]
-    <li><a href="/cgi-bin/koha/members/recallshistory.pl">Recalls history</a></li>
-</ul></div>
+    [% IF Koha.Preference('UseRecalls') %]
+        <li><a href="/cgi-bin/koha/members/recallshistory.pl">Recalls history</a></li>
+    [% END %]
+    </ul></div>
 [% END %]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-nav.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-nav.inc
index 17be2ae..32c4996 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-nav.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-nav.inc
@@ -39,9 +39,11 @@
             [% IF Koha.Preference('OnSiteCheckouts') %]
                 <li><a href="/cgi-bin/koha/circ/on-site_checkouts.pl">Pending on-site checkouts</a></li>
             [% END %]
-            <li><a href="/cgi-bin/koha/circ/recalls_queue.pl">Recalls queue</a></li>
-            <li><a href="/cgi-bin/koha/circ/recalls_overdue.pl">Overdue recalls</a></li>
-            <li><a href="/cgi-bin/koha/circ/recalls_waiting.pl">Recalls awaiting pickup</a></li>
+            [% IF Koha.Preference('UseRecalls') %]
+                <li><a href="/cgi-bin/koha/circ/recalls_queue.pl">Recalls queue</a></li>
+                <li><a href="/cgi-bin/koha/circ/recalls_overdue.pl">Overdue recalls</a></li>
+                <li><a href="/cgi-bin/koha/circ/recalls_waiting.pl">Recalls awaiting pickup</a></li>
+            [% END %]
         </ul>
 
     </div>
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 8794461..068e037 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
@@ -160,11 +160,6 @@ Circulation:
 
     Checkout Policy:
         -
-            - Mark a recall as problematic if it has been waiting to be picked up for
-            - pref: RecallsMaxPickUpDelay
-            - class: integer
-            - days.
-        -
             - pref: AllowTooManyOverride
               choices:
                   yes: Allow
@@ -955,6 +950,18 @@ Circulation:
                   yes: Enable
                   no: Disable
             - "housebound module"
+    Recalls:
+        -
+            - pref: UseRecalls
+              choices:
+                  yes: Use
+                  no: "Don't use"
+            - recalls
+        -
+            - Mark a recall as problematic if it has been waiting to be picked up for
+            - pref: RecallsMaxPickupDelay
+            - class: integer
+            - days.
     Stockrotation module:
         -
             - pref: StockRotation
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 6c44bc7..f26de97 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
@@ -819,7 +819,7 @@ No patron matched <span class="ex">[% message | html %]</span>
         [% END %]
     </li>
 
-    [% IF recalls.count %]
+    [% IF Koha.Preference('UseRecalls') && recalls.count %]
         <li><a href="#recalls" id+"recalls-tab">[% recalls.count %] Recall(s)</a></li>
     [% END %]
 
@@ -934,7 +934,7 @@ No patron matched <span class="ex">[% message | html %]</span>
 [% END %]
 </div> <!-- reservesloop -->
 
-[% IF recalls.count %]
+[% IF Koha.Preference('UseRecalls') && recalls.count %]
     [% INCLUDE 'recalls.inc' %]
 [% END %]
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_overdue.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_overdue.tt
index 494cfdc..76828e5 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_overdue.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_overdue.tt
@@ -28,6 +28,7 @@
 
                 <h1>Overdue recalls</h1>
 
+                [% IF Koha.Preference('UseRecalls') %]
                 [% IF recalls.count %]
 
                     <form method="post" action="/cgi-bin/koha/circ/recalls_queue.pl">
@@ -102,6 +103,9 @@
                     <div class="dialog message">There are no overdue recalls.</div>
 
                 [% END %]
+                [% ELSE %]
+                    <div class="dialog message">Recalls have not been enabled. Enable the <a href="/cgi-bin/koha/admin/preferences.pl?tab=circulation">UseRecalls</a> system preference to use recalls.</div>
+                [% END %]
 
             </div>
         </div>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_queue.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_queue.tt
index 5d28ac1..b037bbf 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_queue.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_queue.tt
@@ -27,25 +27,21 @@
             <div class="yui-g">
 
                 <h1>Recalls queue</h1>
-
-                [% IF recalls.count %]
-
-                    <form method="post" action="/cgi-bin/koha/circ/recalls_queue.pl">
-                        <input type="hidden" name="op" value="cancel_multiple_recalls">
-
-                        <input type="checkbox" id="select_all"> <span id="select_all_text">Select all</span>
-
-                        [% INCLUDE 'recalls-reports.inc' %]
-
-                        <fieldset class="action">
-                            <button type="submit" id="cancel_selected" class="btn btn-default btn-sm">Cancel selected recalls</button>
-                        </fieldset>
-                    </form>
-
+                [% IF Koha.Preference('UseRecalls') %]
+                    [% IF recalls.count %]
+                        <form method="post" action="/cgi-bin/koha/circ/recalls_queue.pl">
+                            <input type="hidden" name="op" value="cancel_multiple_recalls">
+                            <input type="checkbox" id="select_all"> <span id="select_all_text">Select all</span>
+                            [% INCLUDE 'recalls-reports.inc' %]
+                            <fieldset class="action">
+                                <button type="submit" id="cancel_selected" class="btn btn-default btn-sm">Cancel selected recalls</button>
+                            </fieldset>
+                        </form>
+                    [% ELSE %]
+                         <div class="dialog message">No recalls have been made.</div>
+                    [% END %]
                 [% ELSE %]
-
-                    <div class="dialog message">No recalls have been made.</div>
-
+                    <div class="dialog message">Recalls have not been enabled. Enable the <a href="/cgi-bin/koha/admin/preferences.pl?tab=circulation">UseRecalls</a> system preference to use recalls.</div>
                 [% END %]
 
             </div>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_waiting.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_waiting.tt
index ddd0bd2..6a061bf 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_waiting.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_waiting.tt
@@ -39,7 +39,7 @@
             <div class="yui-g">
 
                 <h1>Recalls awaiting pickup</h1>
-
+                [% IF Koha.Preference('UseRecalls') %]
                 [% IF recalls.size > 0 %]
 
                 <div id="results" class="toptabs">
@@ -152,6 +152,9 @@
 
                 [% END %]
 
+                [% ELSE %]
+                    <div class="dialog message">Recalls have not been enabled. Enable the <a href="/cgi-bin/koha/admin/preferences.pl?tab=circulation">UseRecalls</a> system preference to use recalls.</div>
+                [% END %]
             </div>
         </div>
 
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 ee8b60f..a0b6825 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt
@@ -661,6 +661,9 @@
                                     [% END %]
                                 </li>
                             [% END %]
+                            [% IF Koha.Preference('UseRecalls') && recalls.count %]
+                                <li><a href="#recalls" id+"recalls-tab">[% recalls.count %] Recall(s)</a></li>
+                            [% END %]
                             [% IF Koha.Preference('ArticleRequests') %]
                                 <li>
                                     <a href="#article-requests" id="article-requests-tab"> [% patron.article_requests_current.count | html %] Article requests</a>
@@ -777,7 +780,7 @@
                                 [% END %]
                             </div> [% # /div#reserves %]
                         [% END %]
-                        [% IF recalls %]
+                        [% IF Koha.Preferernce('UseRecalls') && recalls %]
                             [% INCLUDE 'recalls.inc' %]
                         [% END %]
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/recallshistory.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/recallshistory.tt
index a7ee266..1a2b14a 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/recallshistory.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/recallshistory.tt
@@ -1,7 +1,7 @@
 [% USE KohaDates %]
 [% USE Koha %]
 [% INCLUDE 'doc-head-open.inc' %]
-<title>Recalls history for [% patron.firstname %] [% patron.surname %]</title>
+<title>Recalls history for [% INCLUDE 'patron-title.inc' %]</title>
 [% INCLUDE 'doc-head-close.inc' %]
 <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
 [% INCLUDE 'datatables.inc' %]
@@ -14,7 +14,7 @@
 <div id="breadcrumbs">
     <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
     <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a>  &rsaquo;
-    Recalls history for [% patron.firstname %] [% patron.surname %]
+    Recalls history for [% INCLUDE 'patron-title.inc' %]
 </div>
 
 <div id="doc3" class="yui-t2">
@@ -26,7 +26,11 @@
 
             <h1>Recalls history</h1>
 
-             [% INCLUDE 'recalls.inc' %]
+            [% IF Koha.Preference('UseRecalls') %]
+                [% INCLUDE 'recalls.inc' %]
+            [% ELSE %]
+                <div class="dialog message">Recalls have not been enabled. Enable the <a href="/cgi-bin/koha/admin/preferences.pl?tab=circulation">UseRecalls</a> system preference to use recalls.</div>
+            [% END %]
 
             </div>
         </div>
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc
index cb69b39..c8de28a 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc
@@ -131,12 +131,14 @@
                 <a href="/cgi-bin/koha/opac-illrequests.pl">your interlibrary loan requests</a></li>
             [% END %]
 
-            [% IF ( recallsview ) %]
-                <li class="active">
-            [% ELSE %]
-                <li>
+            [% IF Koha.Preference('UseRecalls') %]
+                [% IF ( recallsview ) %]
+                    <li class="active">
+                [% ELSE %]
+                    <li>
+                [% END %]
+                <a href="/cgi-bin/koha/opac-recalls.pl">your recalls history</a></li>
             [% END %]
-            <a href="/cgi-bin/koha/opac-recalls.pl">your recalls history</a></li>
         </ul>
     </div>
 [% END %]
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recall.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recall.tt
index e5c5805..b45d3ec 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recall.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recall.tt
@@ -24,6 +24,7 @@
             <div class="span10">
                 <div id="discharge" class="maincontainer">
                     <h1>Recall an item</h1>
+                    [% IF Koha.Preference('UseRecalls') %]
                     [% IF error %]
                         <div class="dialog alert">
                             [% IF error == 'notloggedin' %]
@@ -52,6 +53,9 @@
                         [% END %]
 
                     [% END %]
+                    [% ELSE %]
+                        Recalls have not been enabled. Please contact your library.
+                    [% END %]
                 </div> <!-- / #discharge -->
             </div> <!-- / .span10 -->
         </div> <!-- / .row-fluid -->
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt
index cb6e382..3e206d3 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt
@@ -27,6 +27,7 @@
 
                 <h2>Recalls history</h2>
 
+                    [% IF Koha.Preference('UseRecalls') %]
                     [% IF RECALLS.count %]
                         <div id="opac-user-recalls">
                             <table id="recalls-table" class="table table-bordered table-striped">
@@ -114,6 +115,9 @@
                         </div>
                     [% END # / # RECALLS.count %]
 
+                    [% ELSE %]
+                        Recalls have not been enabled. Please contact your library.
+                    [% END %]
                 </div> <!-- /#recalls -->
             </div> <!-- /.span10 -->
         </div> <!-- /.row-fluid -->
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
index 1c200d8..173fe2c 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt
@@ -159,7 +159,7 @@
                             [% END %]
 
                             [% IF ( RESERVES.count ) %]<li><a href="#opac-user-holds">Holds ([% RESERVES.count | html %])</a></li>[% END %]
-                            [% IF ( RECALLS.count ) %]<li><a href="#opac-user-recalls">Recalls ([% RECALLS.count | html %])</a></li>[% END %]
+                            [% IF ( Koha.Preference('UseRecalls') &&  RECALLS.count ) %]<li><a href="#opac-user-recalls">Recalls ([% RECALLS.count | html %])</a></li>[% END %]
                             [% IF Koha.Preference('ArticleRequests') && borrower.article_requests_current %]<li><a href="#opac-user-article-requests">Article requests ([% borrower.article_requests_current.count | html %])</a></li>[% END %]
                             [% IF ( OverDriveCirculation ) %]
                             <li><a href="#opac-user-overdrive">OverDrive Account</a></li>
@@ -788,7 +788,7 @@
                         </div> <!-- / #opac-user-holds -->
                         [% END # / #RESERVES.count %]
 
-                        [% IF RECALLS.count %]
+                        [% IF Koha.Preference('UseRecalls') && RECALLS.count %]
                             <div id="opac-user-recalls">
                                 <table id="recalls-table" class="table table-bordered table-striped">
                                     <caption>Recalls <span class="count">([% RECALLS.count %])</span></caption>
diff --git a/members/recallshistory.pl b/members/recallshistory.pl
index 3a6bc2f..4e42529 100755
--- a/members/recallshistory.pl
+++ b/members/recallshistory.pl
@@ -44,10 +44,30 @@ my $recalls = Koha::Recalls->search({ borrowernumber => $loggedinuser });
 
 my $patron = Koha::Patrons->find($loggedinuser);
 
+$template->param( picture => 1 ) if $patron->image;
+
 $template->param(
     recalls => $recalls,
-    patron => $patron,
-    recallsview => 1
+    recallsview     => 1,
+    borrowernumber  => $loggedinuser,
+    title           => $patron->title,
+    initials        => $patron->initials,
+    surname         => $patron->surname,
+    firstname       => $patron->firstname,
+    cardnumber      => $patron->cardnumber,
+    categorycode    => $patron->categorycode,
+    category_type   => $patron->category->category_type,
+    categoryname    => $patron->category->description,
+    address         => $patron->address,
+    streetnumber    => $patron->streetnumber,
+    streettype      => $patron->streettype,
+    address2        => $patron->address2,
+    city            => $patron->city,
+    zipcode         => $patron->zipcode,
+    country         => $patron->country,
+    phone           => $patron->phone,
+    email           => $patron->email,
+    branchcode      => $patron->branchcode
 );
 
 output_html_with_http_headers $input, $cookie, $template->output;
-- 
2.1.4