Bug 17561: (follow-up) Pass itemnumber on returns and correct itemnumber param in...
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / circ / circulation.tt
index 7111ef9..a6e6ba0 100644 (file)
@@ -1,3 +1,4 @@
+[% USE Asset %]
 [% USE Koha %]
 [% USE Branches %]
 [% USE KohaDates %]
 [% USE ColumnsSettings %]
 [% USE ItemTypes %]
 [% USE Price %]
-[% IF Koha.Preference('ExportRemoveFields') OR Koha.Preference('ExportWithCsvProfile') %]
-   [% SET exports_enabled = 1 %]
-[% END %]
 [% USE AuthorisedValues %]
+[% SET footerjs = 1 %]
 [% INCLUDE 'doc-head-open.inc' %]
 [% SET destination = "circ" %]
 <title>Koha &rsaquo; Circulation
-[% IF borrowernumber and borrower%]
-  &rsaquo; Checking out to [% INCLUDE 'patron-title.inc' invert_name = 1 %]
+[% IF patron %]
+  &rsaquo; Checking out to [% INCLUDE 'patron-title.inc' invert_name = 1 no_html = 1 %]
 [% END %]
 </title>
 [% INCLUDE 'doc-head-close.inc' %]
-[% INCLUDE 'calendar.inc' %]
-
-<link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
-[% INCLUDE 'strings.inc' %]
-[% INCLUDE 'datatables.inc' %]
-[% INCLUDE 'columns_settings.inc' %]
-<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
-<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery-ui-timepicker-addon.min.js"></script>
-[% INCLUDE 'timepicker.inc' %]
-<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.dataTables.rowGrouping.js"></script>
-<script type="text/javascript" src="[% interface %]/[% theme %]/js/pages/circulation.js"></script>
-<script type="text/javascript" src="[% interface %]/[% theme %]/js/checkouts.js"></script>
-<script type="text/javascript" src="[% interface %]/[% theme %]/js/holds.js"></script>
-<script type="text/javascript">
-//<![CDATA[
-/* Set some variable needed in circulation.js */
-var MSG_DT_LOADING_RECORDS = _("Loading... you may continue scanning.");
-var interface = "[% interface %]";
-var theme = "[% theme %]";
-var borrowernumber = "[% borrowernumber %]";
-var branchcode = "[% branch %]";
-var exports_enabled = "[% exports_enabled %]";
-var AllowRenewalLimitOverride = [% (CAN_user_circulate_override_renewals && Koha.Preference('AllowRenewalLimitOverride') )? 1: 0 %];
-var AllowCirculate = [% (CAN_user_circulate_circulate_remaining_permissions)? 1 : 0 %];
-var script = "circulation";
-var relatives_borrowernumbers = new Array();
-[% FOREACH b IN relatives_borrowernumbers %]
-    relatives_borrowernumbers.push("[% b %]");
-[% END %]
-
-var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
-var MSG_CONFIRM_DELETE_MESSAGE = _("Are you sure you want to delete this message? This cannot be undone.");
-
-columns_settings = [% ColumnsSettings.GetColumns( 'circ', 'circulation', 'issues-table', 'json' ) %]
-
-[% IF borrowernumber and borrower %]
-    if($.cookie("holdfor") != [% borrowernumber %]){
-        $.removeCookie("holdfor", { path: '/' });
-    }
-[% ELSE %]
-    $.removeCookie("holdfor", { path: '/' });
-[% END %]
-
-[% UNLESS ( borrowernumber ) %][% UNLESS ( borrowers ) %]window.onload=function(){ $('#findborrower').focus(); };[% END %][% END %]
-
-// On-site checkout
-function toggle_onsite_checkout(){
-    if ( $("#onsite_checkout").prop('checked') ) {
-        $("#duedatespec").val("[% todaysdate | $KohaDates with_hours => 1%]")
-        [% IF !Koha.Preference('SpecifyDueDate') %]
-            $("#duedatespec").datetimepicker('destroy');
-        [% END %]
-    } else {
-        $("#duedatespec").datetimepicker({
-            onClose: function(dateText, inst) {
-                if (validate_date(dateText, inst) ) {
-                    $("#barcode").focus();
-                }
-            },
-            hour: 23,
-            minute: 59
-        }).on("change", function(e, value) {
-            if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");}
-        });
-    }
-}
-
-function Dopop(link) {
-    var newin = window.open(link, 'popup', 'width=600,height=400,resizable=1,toolbar=0,scrollbars=1,top');
-}
-$(document).ready(function() {
-    $('#mainform').on('submit',function() {
-        if ($("#barcode") && $("#barcode").val()) {
-            $('#barcode').on('keypress',function(event) {
-                $('#barcodeSubmittedModal').modal();
-                event.preventDefault(); }
-            );
-        }
-    });
-
-    [% IF !( CircAutoPrintQuickSlip == 'clear' ) %]
-        // listen submit to trigger qslip on empty checkout
-        $('#mainform').bind('submit',function() {
-            if ($('#barcode').val() == '') {
-                return printx_window( '[% CircAutoPrintQuickSlip %]' );
-            }
-        });
-    [% END %]
-    toggle_onsite_checkout();
-    $("#onsite_checkout").click(function(){
-        toggle_onsite_checkout();
-    });
-
-    $("#suspend_until").datepicker({
-        onClose: function(dateText, inst) {
-            validate_date(dateText, inst);
-        },
-        minDate: 1, // require that hold suspended until date is after today
-    });
-
-});
-
-//]]>
-</script>
+[% Asset.css("css/datatables.css") %]
 </head>
+
 <body id="circ_circulation" class="circ">
 
 [% INCLUDE 'header.inc' %]
 [% INCLUDE 'circ-search.inc' %]
 
 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a> &rsaquo;
-[% IF borrowernumber and borrower %]
+[% IF patron %]
     <a href="/cgi-bin/koha/circ/circulation.pl">Checkouts</a> &rsaquo; [% INCLUDE 'patron-title.inc' %]
 [% ELSE %]
     <strong>Checkouts</strong>
@@ -148,13 +45,17 @@ $(document).ready(function() {
        <div class="yui-b">
 [% END %]
 
-[% IF borrowernumber and borrower %]
+[% IF patron %]
 [% INCLUDE 'members-toolbar.inc' %]
 [% END %]
 
 <!--  INITIAL BLOC : PARAMETERS & BORROWER INFO -->
 [% IF ( was_renewed ) %]<div class="dialog message">Patron's account has been renewed until [% expiry | $KohaDates %]</div>[% END %]
 
+[% IF autoswitched %]
+    <div id="autoswitched" class="dialog message">Patron was automatically switched by reading the patron card during checking out. Ensure you are working with the right patron.</div>
+[% END %]
+
 [% IF additional_materials %]
     <div id="materials" class="dialog message">Note about the accompanying materials: <br />
     [% additional_materials %]
@@ -197,7 +98,7 @@ $(document).ready(function() {
 [% END %]
 
 [% IF ( DEBT ) %]
-    <li>The patron has a debt of [% DEBT %].</li>
+    <li>The patron has a debt of [% DEBT | $Price %].</li>
 [% END %]
 
 [% IF ( DEBT_GUARANTEES ) %]
@@ -241,7 +142,11 @@ $(document).ready(function() {
 [% END %]
 
 [% IF ( PATRON_CANT ) %]
-    <li>This patron can't check out this item per library circulation policy</li>
+    <li>This patron can't check out this item per library circulation policy.</li>
+[% END %]
+
+[% IF ( TOO_MANY and TOO_MANY == 'NO_RULE_DEFINED' ) %]
+    <li>No circulation rule is defined for this patron and itemtype combination.</li>
 [% END %]
 
 [% IF ( NOT_FOR_LOAN_FORCING ) %]
@@ -279,7 +184,7 @@ $(document).ready(function() {
 [% END %]
 
 [% IF PREVISSUE %]
-    <li>This item has previously been checked out to this patron.  Check out anyway?</li>
+    <li>Patron has previously checked out this title: <b>[% biblio.title %] [% IF biblio.author %] by [% biblio.author %][% END %]</b>. Check out anyway?</li>
 [% END %]
 
 [% IF BIBLIO_ALREADY_ISSUED %]
@@ -292,27 +197,6 @@ $(document).ready(function() {
 [% END %]
 </ul>
 
-[% IF HIGHHOLDS %]
-<script language="JavaScript" type="text/javascript">
-$(document).ready(function() {
-    [% IF !override_high_holds %]
-        $("input[name=duedatespec]:hidden").val('[% HIGHHOLDS.returndate %]');
-        if ('[% duedatespec %]' === '') {
-            $("input[name=restoreduedatespec]:hidden").val('highholds_empty');
-        } else {
-            $("input[name=restoreduedatespec]:hidden").val('[% duedatespec %]');
-        }
-    [% END %]
-
-    $("#override_high_holds_tmp").on( 'change', function() {
-        if ( this.checked ) {
-            $("input[name=duedatespec]:hidden").val('');
-        }
-    });
-});
-</script>
-[% END %]
-
 [% IF CAN_user_circulate_force_checkout or HIGHHOLDS %]
 <form method="post" action="/cgi-bin/koha/circ/circulation.pl" autocomplete="off">
     <input type="hidden" name="restoreduedatespec" />
@@ -343,7 +227,7 @@ $(document).ready(function() {
 [% END %]
 
     <input type="hidden" name="barcode" value="[% barcode |html %]" />
-    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
+    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
     <input type="hidden" name="issueconfirmed" value="1" />
     <input type="hidden" name="override_high_holds" value="[% override_high_holds %]"/>
     [% IF ( DEBT ) %]<input type="hidden" name="debt_confirmed" value="1" />[% END %]
@@ -363,32 +247,33 @@ $(document).ready(function() {
     <button type="submit" class="approve" accesskey="y"><i class="fa fa-check"></i> Yes, check out (Y)</button>
     [% END %]
     <input type="hidden" name="onsite_checkout" value="[% onsite_checkout %]" />
+    <input type="hidden" name="auto_renew" value="[% auto_renew %]" />
 </form>
 [% END %]
 
 [% IF ( RESERVED ) %]
 <form method="get" action="/cgi-bin/koha/circ/circulation.pl">
     <input type="hidden" name="restoreduedatespec" />
-    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
+    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
     <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
     <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
-    <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?borrowernumber=[% reserveborrowernumber %]&amp;biblionumber=[% itembiblionumber %]&amp;op=slip');this.form.submit();"><i class="fa fa-print"></i> Don't check out and print slip (P)</button>
+    <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?borrowernumber=[% reserveborrowernumber %]&amp;biblionumber=[% itembiblionumber %]&amp;itemnumber=[% item.itemnumber %]&amp;op=slip');this.form.submit();"><i class="fa fa-print"></i> Don't check out and print slip (P)</button>
 </form>
 [% END %]
 
 [% IF ( RESERVE_WAITING ) %]
 <form method="get" action="/cgi-bin/koha/circ/circulation.pl">
     <input type="hidden" name="restoreduedatespec" />
-    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
+    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
     <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
     <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
-    <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?borrowernumber=[% reserveborrowernumber %]&amp;biblionumber=[% itembiblionumber %]&amp;op=slip');this.form.submit();"><i class="fa fa-print"></i> Don't check out and print slip (P)</button>
+    <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?borrowernumber=[% reserveborrowernumber %]&amp;biblionumber=[% itembiblionumber %]&amp;itemnumber=[% item.itemnumber %]&amp;op=slip');this.form.submit();"><i class="fa fa-print"></i> Don't check out and print slip (P)</button>
 </form>
 [% END %]
 
 <form method="get" action="/cgi-bin/koha/circ/circulation.pl">
     [% IF (forceallow) %]<input type="hidden" name="forceallow" value="1">[% END %]
-    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
+    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
     <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
     <input type="hidden" name="restoreduedatespec" />
     <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
@@ -405,7 +290,7 @@ $(document).ready(function() {
 
 [% IF ( RESERVED || ISSUED_TO_ANOTHER ) && (CAN_user_reserveforothers_place_holds ) %]
     [% UNLESS noissues %]
-        <button type="submit" onclick="window.location.href='/cgi-bin/koha/reserve/request.pl?biblionumber=[% itembiblionumber %]&borrowernumber=[% borrowernumber %]'"><i class="fa fa-sticky-note-o"></i> Cancel checkout and place a hold for [% INCLUDE 'patron-title.inc' %]</button>
+        <button type="submit" onclick="window.location.href='/cgi-bin/koha/reserve/request.pl?biblionumber=[% itembiblionumber %]&borrowernumber=[% patron.borrowernumber %]'"><i class="fa fa-sticky-note-o"></i> Cancel checkout and place a hold for [% INCLUDE 'patron-title.inc' %]</button>
     [% END %]
 [% END %]
 </div></div>
@@ -430,34 +315,24 @@ $(document).ready(function() {
 
         [% IF ( UNKNOWN_BARCODE ) %]
             <li>The barcode was not found: <span class="ex">[% barcode |html %]</span>
-           [% IF ( fast_cataloging ) %]
-               [% IF ( CAN_user_editcatalogue_fast_cataloging ) %]
-            <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=FA&amp;barcode=[% barcode |uri %]&amp;circborrowernumber=[% borrowernumber %]&amp;branch=[% branch %]&amp;duedatespec=[% duedatespec %]&amp;stickyduedate=[% stickyduedate %]">Add record using fast cataloging</a>
-               [% END %]
-           [% END %]
 
-        [% IF ( FALLBACK ) %]
-            [% IF options %]
-                <br />The following items were found by searching:
-                [% FOREACH book IN options %]
-                    <br />
-                    <form method="post" action="/cgi-bin/koha/circ/circulation.pl" autocomplete="off">
-                    [% IF (forceallow) %]<input type="hidden" name="forceallow" value="1">[% END %]
-                        <input type="hidden" name="restoreduedatespec" />
-                        <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
-                        <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
-                        <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
-                        <input type="hidden" name="branch" value="[% branch %]" />
-                        <input type="hidden" name="barcode" value="[% book.barcode %]" />
-                        <button type="submit" name="x"><i class="fa fa-check"></i> Check out [% book.barcode %]: [% book.title %]</button>
-                    </form>
-                [% END %]
-            [% ELSE %]
-                <br />No items were found by searching.
-            [% END %]
-        [% END %]
+                <div>
+                    [% IF ( FALLBACK ) %]
+                        [% IF options %]
+                            <button type="button" class="approve" data-toggle="modal" data-target="#itemSearchFallback"><i class="fa fa-search"></i> Show matching titles</button>
+                        [% ELSE %]
+                            <div>No items were found by searching.</div>
+                        [% END %]
+                    [% END %]
+
+                    [% IF ( fast_cataloging ) %]
+                        [% IF ( CAN_user_editcatalogue_fast_cataloging ) %]
+                            <a class="approve" href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=FA&amp;barcode=[% barcode |uri %]&amp;circborrowernumber=[% patron.borrowernumber %]&amp;branch=[% branch %]&amp;duedatespec=[% duedatespec %]&amp;stickyduedate=[% stickyduedate %]"><i class="fa fa-plus"></i> Add record using fast cataloging</a>
+                        [% END %]
+                    [% END %]
+                </div>
 
-     </li>
+            </li>
         [% END %]
 
         [% IF ( NOT_FOR_LOAN ) %]
@@ -537,6 +412,53 @@ $(document).ready(function() {
         [% END %]
 
 </div></div>
+
+        [% IF ( FALLBACK ) %]
+            [% IF options %]
+
+                <!-- Modal -->
+                <div class="modal" id="itemSearchFallback" tabindex="-1" role="dialog" aria-labelledby="itemSearchFallbackLabel">
+                    <div class="modal-dialog modal-wide" role="document">
+                        <div class="modal-content">
+                            <div class="modal-header">
+                                <button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+                                <h3 id="itemSearchFallbackLabel"><h3>Barcode not found. The following items were found by searching:</h3>
+                            </div>
+                            <div class="modal-body">
+                                <table class="table_borrowers">
+                                    [% FOREACH book IN options %]
+                                        <tr>
+                                            <td>
+                                                <a class="popup" target="_blank" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% book.biblionumber %]">[% book.title %]</a>
+                                                [% book.barcode %]
+                                            </td>
+                                            <td>
+                                                <form method="post" action="/cgi-bin/koha/circ/circulation.pl" autocomplete="off">
+                                                    [% IF (forceallow) %]
+                                                        <input type="hidden" name="forceallow" value="1">
+                                                    [% END %]
+                                                    <input type="hidden" name="restoreduedatespec" />
+                                                    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
+                                                    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
+                                                    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
+                                                    <input type="hidden" name="branch" value="[% branch %]" />
+                                                    <input type="hidden" name="barcode" value="[% book.barcode %]" />
+                                                    <button class="btn btn-default btn-xs" type="submit" name="x"><i class="fa fa-check"></i> Check out</button>
+                                                </form>
+                                            </td>
+                                        </tr>
+                                    [% END %]
+                                </table>
+                            </div>
+                            <div class="modal-footer">
+                                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            [% END %]
+        [% END %]
+
 [% ELSE %]
   [% IF (forceallow) %]
       <div id="overridden_debarment" class="dialog alert">Restriction overridden temporarily</div>
@@ -566,7 +488,7 @@ No patron matched <span class="ex">[% message | html %]</span>
 
 <!-- BARCODE ENTRY -->
 
-[% IF borrowernumber and borrower %]
+[% IF patron %]
 <div class="yui-g">
 
 [% IF privacy == 2 AND NOT Koha.Preference('AnonymousPatron') %]
@@ -602,7 +524,7 @@ No patron matched <span class="ex">[% message | html %]</span>
     [% ELSE %]
         <input type="text" name="barcode" id="barcode" class="barcode focus" size="14" />
     [% END %]
-    <button type="submit" class="btn">Check out</button>
+    <button type="submit" class="btn btn-default">Check out</button>
 
     <div id="show-checkout-settings">
         <a href="#"><i class="fa fa-caret-right checkout-settings-icon"></i> Checkout settings</a>
@@ -625,7 +547,7 @@ No patron matched <span class="ex">[% message | html %]</span>
                     [% ELSE %]
                         <input type="checkbox" id="stickyduedate" onclick="this.form.barcode.focus();" name="stickyduedate" />
                     [% END %]
-                    <button class="btn btn-small action" id="cleardate" name="cleardate" onclick="this.checked = false; this.form.duedatespec.value = ''; this.form.stickyduedate.checked = false; this.form.barcode.focus(); return false;" >Clear</button>
+                    <button class="btn btn-default btn-sm action" id="cleardate" name="cleardate" onclick="this.checked = false; this.form.duedatespec.value = ''; this.form.stickyduedate.checked = false; this.form.barcode.focus(); return false;" >Clear</button>
                 </div>
             [% END %]
         [% END %]
@@ -635,7 +557,7 @@ No patron matched <span class="ex">[% message | html %]</span>
                 [% IF NEEDSCONFIRMATION %]
                     <input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" disabled="disabled" />
                 [% ELSE %]
-                    <input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" />
+                    <input type="checkbox" name="auto_renew" id="auto_renew" value="auto_renew" class="circ_setting" />
                 [% END %]
 
                 <label for="auto_renew">Automatic renewal</label>
@@ -650,9 +572,9 @@ No patron matched <span class="ex">[% message | html %]</span>
                         [% END %]
                     [% ELSE %]
                         [% IF override_high_holds %]
-                            <input type="checkbox" name="override_high_holds" id="override_high_holds" value="1" checked="checked" />
+                            <input type="checkbox" name="override_high_holds" id="override_high_holds" value="1" class="circ_setting" checked="checked" />
                         [% ELSE %]
-                            <input type="checkbox" name="override_high_holds" id="override_high_holds" value="1" />
+                            <input type="checkbox" name="override_high_holds" id="override_high_holds" value="1" class="circ_setting" />
                         [% END %]
                     [% END %]
                     <label for="override_high_holds">Don't decrease checkout length based on holds</label>
@@ -669,20 +591,19 @@ No patron matched <span class="ex">[% message | html %]</span>
                         <input type="hidden" name="onsite_checkout" checked="checked" value="1" />
                     </div>
                 [% ELSE %]
-                    <input type="checkbox" id="onsite_checkout" name="onsite_checkout" /> <label for="onsite_checkout">On-site checkout</label>
+                    <input type="checkbox" id="onsite_checkout" name="onsite_checkout" class="circ_setting" /> <label for="onsite_checkout">On-site checkout</label>
                 [% END %]
             </div>
         [% END %]
 
     </div> <!-- /.checkout-settings -->
 
-          <input type="hidden" name="borrowernumber" id="borrowernumber" value="[% borrowernumber %]" />
+          <input type="hidden" name="borrowernumber" id="borrowernumber" value="[% patron.borrowernumber %]" />
           <input type="hidden" name="branch" value="[% branch %]" />
           <input type="hidden" name="print" value="maybe" />
           <input type="hidden" name="debt_confirmed" value="[% debt_confirmed %]" />
                 [% IF ( CHARGES ) %]
                         <input type="hidden" name="charges" value="yes" />
-                        <input type="hidden" name="oldamount" value="[% amountold %]" />
                 [% END %]
 </fieldset>
 [% IF ( issue ) %]
@@ -726,7 +647,7 @@ No patron matched <span class="ex">[% message | html %]</span>
 
                    [% IF ( has_modifications ) %]
                     <li><span class="circ-hlt">Pending modifications:</span> Patron has pending modifications.
-                            [% IF CAN_user_borrowers && ( !Koha.Preference('IndependentBranchesPatronModifications') || borrower.branch == branch ) %]
+                            [% IF CAN_user_borrowers_edit_borrowers && ( !Koha.Preference('IndependentBranchesPatronModifications') || borrower.branch == branch ) %]
                                     <a href="/cgi-bin/koha/members/members-update.pl">View all pending patron modifications</a>
                             [% END %]
                    </li>
@@ -734,7 +655,7 @@ No patron matched <span class="ex">[% message | html %]</span>
 
                        [% IF ( warndeparture ) %]
                        <li><span class="circ-hlt">Expiration:</span> Patron's card will expire soon.
-            Patron's card expires on [% expiry | $KohaDates %] <a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% borrowernumber %]&amp;destination=circ&amp;reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&amp;destination=circ&amp;borrowernumber=[% borrowernumber %]&amp;categorycode=[% categorycode %]">Edit Details</a>
+            Patron's card expires on [% expiry | $KohaDates %] <a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber %]&amp;destination=circ&amp;reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&amp;destination=circ&amp;borrowernumber=[% patron.borrowernumber %]&amp;categorycode=[% categorycode %]">Edit Details</a>
 
                        </li>
                        [% END %]
@@ -747,7 +668,7 @@ No patron matched <span class="ex">[% message | html %]</span>
 
                        [% IF ( expired ) %]
                        <li><span class="circ-hlt">Expiration:</span> Patron's card has expired.
-            [% IF ( expiry ) %]Patron's card expired on [% expiry | $KohaDates %][% END %] <a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% borrowernumber %]&amp;destination=circ&amp;reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&amp;destination=circ&amp;borrowernumber=[% borrowernumber %]&amp;categorycode=[% categorycode %]">Edit Details</a>
+            [% IF ( expiry ) %]Patron's card expired on [% expiry | $KohaDates %][% END %] <a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber %]&amp;destination=circ&amp;reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&amp;destination=circ&amp;borrowernumber=[% patron.borrowernumber %]&amp;categorycode=[% categorycode %]">Edit Details</a>
 
                        </li>
                        [% END %]
@@ -778,28 +699,26 @@ No patron matched <span class="ex">[% message | html %]</span>
                     </i>
                    [% END %]
                    <br/>
-                   <a class="btn btn-small" href="#reldebarments" onclick="$('#debarments-tab-link').click()"><i class="fa fa-ban"></i> View restrictions</a>
-                    [% IF (noissues && borrowernumber && CAN_user_circulate_force_checkout) %]
+                   <a class="btn btn-default btn-sm" href="#reldebarments" onclick="$('#debarments-tab-link').click()"><i class="fa fa-ban"></i> View restrictions</a>
+                    [% IF (noissues && patron && CAN_user_circulate_force_checkout) %]
                         <span class="override_debarment">
-                            <a href="/cgi-bin/koha/circ/circulation.pl?forceallow=1&amp;borrowernumber=[% borrowernumber %]" class="btn btn-small">Override restriction temporarily</a>
+                            <a href="/cgi-bin/koha/circ/circulation.pl?forceallow=1&amp;borrowernumber=[% patron.borrowernumber %]" class="btn btn-default btn-sm">Override restriction temporarily</a>
                         </span>
                     [% END %]
                </li>
             [% END %]
 
-                [% IF ( odues ) %]<li>[% IF ( nonreturns ) %]<span class="circ-hlt">Overdues: Patron has ITEMS OVERDUE.</span> <a href="#checkouts">See highlighted items below</a>[% END %]</li>
+                [% IF ( odues ) %]<li><span class="circ-hlt">Overdues: Patron has ITEMS OVERDUE.</span> <a href="#checkouts">See highlighted items below</a></li>
             [% END %]
 
             [% IF ( charges ) %]
-                [% INCLUDE 'blocked-fines.inc'
-                    fines = chargesamount
-                %]
+                [% INCLUDE 'blocked-fines.inc' fines = chargesamount %]
             [% END %]
 
             [% IF ( charges_guarantees ) %]
                 <li>
-                    <span class="circ-hlt">Fees &amp; Charges:</span> Patron's guarantees collectively owe [% chargesamount_guarantees %].
-                        [% IF ( charges_guarantees_is_blocker ) %]
+                    <span class="circ-hlt">Fees &amp; Charges:</span> Patron's guarantees collectively owe [% chargesamount_guarantees | $Price %].
+                        [% IF noissues %]
                             <span class="circ-hlt">Checkouts are BLOCKED because fine balance is OVER THE LIMIT.</span>
                         [% END %]
                 </li>
@@ -808,7 +727,7 @@ No patron matched <span class="ex">[% message | html %]</span>
 
             [% IF ( credits ) %]
                 <li>
-                    <span class="circ-hlt">Credits:</span> Patron has a credit[% IF ( creditsamount ) %] of [% creditsamount %][% END %]
+                    <span class="circ-hlt">Credits:</span> Patron has a credit[% IF ( creditsamount ) %] of [% creditsamount | $Price %][% END %]
                 </li>
             [% END %]
 
@@ -829,8 +748,8 @@ No patron matched <span class="ex">[% message | html %]</span>
 
                                 <br/>
                                 [% IF ( w.branch.branchcode == Branches.GetLoggedInBranchcode()  ) %]<strong class="waitinghere">[% ELSE %]<strong>[% END %]
-                                    [% SET waiting_expires_on = w.waiting_expires_on %]
-                                    Waiting at [% w.branch.branchname | html %] [% IF waiting_expires_on %] until [% waiting_expires_on | $KohaDates %] [% END %]
+                                    [% SET expires_on = w.expirationdate %]
+                                    Waiting at [% w.branch.branchname | html %] [% IF expires_on %] until [% expires_on | $KohaDates %] [% END %]
                                 </strong>
                             </li>
                         </ul>
@@ -850,26 +769,27 @@ No patron matched <span class="ex">[% message | html %]</span>
     <div id="messages" class="circmessage">
         <h4>Messages:</h4>
         <ul>
-            [% FOREACH message IN librarian_messages %]
+            [% FOREACH message IN messages %]
                 <li>
-                    <span class="circ-hlt">
+                    [% IF(message.message_type == "L") %]
+                        <span class="circ-hlt">
+                    [% ELSE %]
+                        <span>
+                    [% END %]
                         [% message.message_date | $KohaDates %]
                         [% Branches.GetName( message.branchcode ) %]
-                        <i>"[% message.message %]"</i>
+                        [% IF message.manager_id %]
+                            ( <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% message.manager_id %]">[% message.get_column('manager_firstname') %] [% message.get_column('manager_surname') %]</a> )
+                        [% END %]
+                        <i>"[% message.message | html %]"</i>
                     </span>
                     [% IF message.branchcode == branch OR Koha.Preference('AllowAllMessageDeletion') %]
-                        [<a href="/cgi-bin/koha/circ/del_message.pl?message_id=[% message.message_id %]&amp;borrowernumber=[% message.borrowernumber %]" onclick="return confirm(MSG_CONFIRM_DELETE_MESSAGE);"><i class="fa fa-trash"></i> Delete</a>]
+                        <a class="btn btn-link btn-sm" href="/cgi-bin/koha/circ/del_message.pl?message_id=[% message.message_id %]&amp;borrowernumber=[% message.borrowernumber %]" onclick="return confirm(MSG_CONFIRM_DELETE_MESSAGE);"><i class="fa fa-trash"></i> Delete</a>
                     [% END %]
                 </li>
             [% END %]
-            [% FOREACH message IN patron_messages %]
-                <li><span class="">[% message.message_date | $KohaDates %] [% Branches.GetName( message.branchcode )%] <i>"[% message.message %]"</i></span>
-                [% IF message.branchcode == branch OR Koha.Preference('AllowAllMessageDeletion') %]
-                    [<a href="/cgi-bin/koha/circ/del_message.pl?message_id=[% message.message_id %]&amp;borrowernumber=[% message.borrowernumber %]"><i class="fa fa-trash"></i> Delete</a>]
-                [% END %]</li>
-            [% END %]
         </ul>
-        <a id="addnewmessageLabel" href="#add_message_form" data-toggle="modal"><i class="fa fa-plus"></i> Add a new message</a>
+        <a id="addnewmessageLabel" href="#add_message_form" class="btn btn-link btn-sm" data-toggle="modal"><i class="fa fa-plus"></i> Add a new message</a>
     </div>
 
 </div>
@@ -904,7 +824,18 @@ No patron matched <span class="ex">[% message | html %]</span>
         </li>
     [% END %]
 
-    <li><a id="debarments-tab-link" href="#reldebarments">[% debarments.size %] Restrictions</a></li>
+    <li><a id="debarments-tab-link" href="#reldebarments">[% debarments.count %] Restrictions</a></li>
+
+    [% SET enrollments = patron.get_club_enrollments(1) %]
+    [% SET enrollable  = patron.get_enrollable_clubs(0,1) %]
+    [% IF CAN_user_clubs && ( enrollable.count || enrollments.count ) %]
+        <li>
+            <a id="clubs-tab-link" href="#clubs-tab">
+                Clubs ([% enrollments.count %]/[% enrollable.count %])
+            </a>
+        </li>
+    [% END %]
+
 </ul>
 
 <!-- SUMMARY : TODAY & PREVIOUS ISSUES -->
@@ -934,6 +865,12 @@ No patron matched <span class="ex">[% message | html %]</span>
     </div>
 [% END %]
 
+[% IF CAN_user_clubs && ( enrollable.count || enrollments.count ) %]
+    <div id="clubs-tab">
+        Loading...
+    </div>
+[% END %]
+
 [% INCLUDE borrower_debarments.inc %]
 
 <div id="reserves">
@@ -950,7 +887,7 @@ No patron matched <span class="ex">[% message | html %]</span>
                     <th>Pickup at</th>
                     <th>Expiration</th>
                     <th>Priority</th>
-                    <th>Delete?</th>
+                    <th>Cancel?</th>
                     <th>Suspend?</th>
                 </tr>
             </thead>
@@ -961,16 +898,16 @@ No patron matched <span class="ex">[% message | html %]</span>
         </fieldset>
     </form>
 
-    [% IF SuspendHoldsIntranet %]
+    [% IF Koha.Preference('SuspendHoldsIntranet') %]
     <fieldset class="action">
         <form action="/cgi-bin/koha/reserve/modrequest_suspendall.pl" method="post">
             <input type="hidden" name="from" value="circ" />
-            <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
+            <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
             <input type="submit" value="Suspend all holds" />
 
-            [% IF AutoResumeSuspendedHolds %]
+            [% IF Koha.Preference('AutoResumeSuspendedHolds') %]
             <label for="suspend_until">until</label>
-            <input type="text" size="10" id="suspend_until" name="suspend_until datepicker" />
+            <input type="text" size="10" id="suspend_until" name="suspend_until" class="datepicker"/>
             <span class="hint">Specify date on which to resume [% INCLUDE 'date-format.inc' %]: </span>
              [% END %]
         </form>
@@ -979,7 +916,7 @@ No patron matched <span class="ex">[% message | html %]</span>
     <fieldset class="action">
         <form action="/cgi-bin/koha/reserve/modrequest_suspendall.pl" method="post">
             <input type="hidden" name="from" value="circ" />
-            <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
+            <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
             <input type="hidden" name="suspend" value="0" />
             <input type="submit" value="Resume all suspended holds" />
        </form>
@@ -997,18 +934,32 @@ No patron matched <span class="ex">[% message | html %]</span>
 
 [% ELSIF borrowernumber %]
     <div class="dialog message">This patron does not exist. <a href="/cgi-bin/koha/members/members-home.pl">Find another patron?</a></div>
-[% END %] <!-- borrowernumber and borrower-->
+[% END %]
 </div></div>
 [% END %]
-
+[% IF Koha.Preference('CircSidebar') %]
+[% UNLESS ( borrowers ) %]
+    [% IF not( borrowernumber and patron ) %]
+        <div class="yui-b noprint">
+            [% INCLUDE 'circ-nav.inc' %]
+        </div>
+    [% END %]
+[% END %]
+[% END %]
 </div>
 </div>
-[% UNLESS ( borrowers ) %][% IF borrowernumber and borrower %]<div class="yui-b">
-[% INCLUDE 'circ-menu.inc' %]
-</div>[% END %][% END %]
+[% UNLESS ( borrowers ) %]
+    [% IF borrowernumber and patron %]
+        <div class="yui-b">
+            [% INCLUDE 'circ-menu.inc' %]
+        </div>
+    [% END %]
+[% END %]
 </div>
 <!-- Modal -->
-<div id="barcodeSubmittedModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="barcodeSubmittedModalLabel" aria-hidden="true">
+<div id="barcodeSubmittedModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="barcodeSubmittedModalLabel" aria-hidden="true">
+    <div class="modal-dialog">
+    <div class="modal-content">
     <div class="modal-header">
         <h3 id="barcodeSubmittedModalLabel">Barcode submitted</h3>
     </div>
@@ -1016,5 +967,144 @@ No patron matched <span class="ex">[% message | html %]</span>
     <div class="modal-body">
         <p>You have already submitted a barcode, please wait for the checkout to process...</p>
     </div>
+    </div>
+    </div>
 </div>
+
+[% MACRO jsinclude BLOCK %]
+    [% INCLUDE 'strings.inc' %]
+    [% INCLUDE 'calendar.inc' %]
+    [% INCLUDE 'datatables.inc' %]
+    [% INCLUDE 'columns_settings.inc' %]
+    [% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") %]
+    [% Asset.js("lib/jquery/plugins/jquery-ui-timepicker-addon.min.js") %]
+    [% INCLUDE 'timepicker.inc' %]
+    [% Asset.js("lib/jquery/plugins/jquery.dataTables.rowGrouping.js") %]
+    [% Asset.js("js/pages/circulation.js") %]
+    [% Asset.js("js/checkouts.js") %]
+    [% Asset.js("js/holds.js") %]
+    [% Asset.js("js/circ-patron-search-results.js") %]
+    <script type="text/javascript">
+        /* Set some variable needed in circulation.js */
+        var MSG_DT_LOADING_RECORDS = _("Loading... you may continue scanning.");
+        var interface = "[% interface %]";
+        var theme = "[% theme %]";
+        var borrowernumber = "[% patron.borrowernumber %]";
+        var branchcode = "[% branch %]";
+        var exports_enabled = "[% Koha.Preference('ExportCircHistory') %]";
+        var AllowRenewalLimitOverride = [% (CAN_user_circulate_override_renewals && Koha.Preference('AllowRenewalLimitOverride') )? 1: 0 %];
+        var AllowCirculate = [% (CAN_user_circulate_circulate_remaining_permissions)? 1 : 0 %];
+        var script = "circulation";
+        var relatives_borrowernumbers = new Array();
+        [% FOREACH b IN relatives_borrowernumbers %]
+            relatives_borrowernumbers.push("[% b %]");
+        [% END %]
+
+        var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
+        var MSG_CONFIRM_DELETE_MESSAGE = _("Are you sure you want to delete this message? This cannot be undone.");
+
+        /* Set some variables needed in members-menu.js */
+        var advsearch = "[% advsearch %]";
+        var dateformat = "[% dateformat %]";
+        var NorwegianPatronDBEnable = "[% NorwegianPatronDBEnable %]";
+        var CATCODE_MULTI = "[% CATCODE_MULTI %]";
+        var catcode = "[% catcode %]";
+        var destination = "[% destination %]";
+        var CAN_user_borrowers_edit_borrowers = "[% CAN_user_borrowers_edit_borrowers %]";
+
+        columns_settings = [% ColumnsSettings.GetColumns( 'circ', 'circulation', 'issues-table', 'json' ) %]
+
+        [% IF borrowernumber and patron %]
+            if($.cookie("holdfor") != [% patron.borrowernumber %]){
+                $.removeCookie("holdfor", { path: '/' });
+            }
+        [% ELSE %]
+            $.removeCookie("holdfor", { path: '/' });
+        [% END %]
+
+        [% UNLESS ( patron.borrowernumber ) %][% UNLESS ( borrowers ) %]window.onload=function(){ $('#findborrower').focus(); };[% END %][% END %]
+
+        // On-site checkout
+        function toggle_onsite_checkout(){
+            if ( $("#onsite_checkout").prop('checked') ) {
+                $("#duedatespec").val("[% todaysdate | $KohaDates with_hours => 1%]")
+                [% IF !Koha.Preference('SpecifyDueDate') %]
+                    $("#duedatespec").datetimepicker('destroy');
+                [% END %]
+            } else {
+                $("#duedatespec").datetimepicker({
+                    onClose: function(dateText, inst) {
+                        if (validate_date(dateText, inst) ) {
+                            $("#barcode").focus();
+                        }
+                    },
+                    hour: 23,
+                    minute: 59
+                }).on("change", function(e, value) {
+                    if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");}
+                });
+            }
+        }
+
+        function Dopop(link) {
+            var newin = window.open(link, 'popup', 'width=600,height=400,resizable=1,toolbar=0,scrollbars=1,top');
+        }
+        $(document).ready(function() {
+            $('#mainform').on('submit',function() {
+                if ($("#barcode") && $("#barcode").val()) {
+                    $('#barcode').on('keypress',function(event) {
+                        $('#barcodeSubmittedModal').modal();
+                        event.preventDefault(); }
+                    );
+                }
+            });
+
+            if ( $('#clubs-tab').length ) {
+                $('#clubs-tab-link').on('click', function() {
+                    $('#clubs-tab').text(_("Loading..."));
+                    $('#clubs-tab').load('/cgi-bin/koha/clubs/patron-clubs-tab.pl?borrowernumber=[% patron.borrowernumber %]');
+                });
+            }
+
+            [% IF !( CircAutoPrintQuickSlip == 'clear' ) %]
+                // listen submit to trigger qslip on empty checkout
+                $('#mainform').bind('submit',function() {
+                    if ($('#barcode').val() == '') {
+                        return printx_window( '[% CircAutoPrintQuickSlip %]' );
+                    }
+                });
+            [% END %]
+            toggle_onsite_checkout();
+            $("#onsite_checkout").click(function(){
+                toggle_onsite_checkout();
+            });
+
+            $("#suspend_until").datepicker({
+                onClose: function(dateText, inst) {
+                    validate_date(dateText, inst);
+                },
+                minDate: 1, // require that hold suspended until date is after today
+            });
+
+            [% IF HIGHHOLDS %]
+                [% IF !override_high_holds %]
+                    $("input[name=duedatespec]:hidden").val('[% HIGHHOLDS.returndate %]');
+                    if ('[% duedatespec %]' === '') {
+                        $("input[name=restoreduedatespec]:hidden").val('highholds_empty');
+                    } else {
+                        $("input[name=restoreduedatespec]:hidden").val('[% duedatespec %]');
+                    }
+                [% END %]
+
+                $("#override_high_holds_tmp").on( 'change', function() {
+                    if ( this.checked ) {
+                        $("input[name=duedatespec]:hidden").val('');
+                    }
+                });
+            [% END %]
+        });
+    </script>
+    [% Asset.js("js/members-menu.js") %]
+[% END %]
+
 [% INCLUDE 'intranet-bottom.inc' %]