Bug 12337 - Multi-clicking the renewal buttons on circulation.pl can trigger "renewal...
[koha_fer] / koha-tmpl / intranet-tmpl / prog / en / modules / circ / circulation.tt
index f93ae74..75e05b3 100644 (file)
@@ -1,8 +1,9 @@
+[% USE Branches %]
 [% USE KohaDates %]
 [% IF ( export_remove_fields OR export_with_csv_profile ) %]
    [% SET exports_enabled = 1 %]
 [% END %]
-[% USE KohaAuthorisedValues %]
+[% USE AuthorisedValues %]
 [% INCLUDE 'doc-head-open.inc' %]
 [% SET destination = "circ" %]
 <title>Koha &rsaquo; Circulation
 [% INCLUDE 'doc-head-close.inc' %]
 [% INCLUDE 'calendar.inc' %]
 [% IF ( UseTablesortForCirc ) %]<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
-[% INCLUDE 'datatables-strings.inc' %]
-<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>[% END %]
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery-ui-timepicker-addon.js"></script>
+[% INCLUDE 'datatables.inc' %][% END %]
+<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="[% themelang %]/js/pages/circulation.js"></script>
 <script type="text/javascript">
 //<![CDATA[
-[% IF ( UseTablesortForCirc && dateformat == 'metric' ) %]dt_add_type_uk_date();[% END %]
+var MSG_ADD_MESSAGE = _("Add a new message");
+var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
 [% IF ( borrowernumber ) %]if($.cookie("holdfor") != [% borrowernumber %]){ $.cookie("holdfor",null, { path: "/", expires: 0 }); }[% ELSE %]$.cookie("holdfor",null, { path: "/", expires: 0 });[% END %]
 [% UNLESS ( borrowernumber ) %][% UNLESS ( CGIselectborrower ) %]window.onload=function(){ $('#findborrower').focus(); };[% END %][% END %]
         $(document).ready(function() {
+        $('#issues-form').preventDoubleFormSubmit();
         $('#patronlists').tabs([% IF ( UseTablesortForCirc ) %]{
             // Correct table sizing for tables hidden in tabs
             // http://www.datatables.net/examples/api/tabs_and_scrolling.html
             "sDom": 't',
             "aaSorting": [],
             "aoColumnDefs": [
-                { "aTargets": [ -1, -2[% IF ( exports_enabled ) %], -3[% END %] ], "bSortable": false, "bSearchable": false }
-            ],
-            "aoColumns": [
-                { "sType": "title-string" },{ "sType": "html" },null,{ "sType": "title-string" },null,null,null,null,null,null[% IF ( exports_enabled ) %],null[% END %]
+                { "aTargets": [ -1, -2[% IF ( exports_enabled ) %], -3[% END %] ], "bSortable": false, "bSearchable": false },
+                { "sType": "anti-the", "aTargets" : [ "anti-the" ] },
+                { "sType": "title-string", "aTargets" : [ "title-string" ] }
             ],
             "bPaginate": false
         }));
         $("#relissuest").dataTable($.extend(true, {}, dataTablesDefaults, {
             "sDom": 't',
             "aaSorting": [],
-            "aoColumns": [
-                { "sType": "title-string" },{ "sType": "html" },null,{ "sType": "title-string" },null,null,null,null,{ "sType": "html" }
+            "aoColumnDefs": [
+                { "sType": "anti-the", "aTargets" : [ "anti-the" ] },
+                { "sType": "title-string", "aTargets" : [ "title-string" ] },
+                { "sType": "html", "aTargets" : [ "html-content" ] }
             ],
             "bPaginate": false
         }));
                 $( '.renewals-allowed' ).hide(); $( '.renewals-disabled' ).show();
             }
         } ).attr( 'checked', false );
-        [% END %][% IF ( CircAutoPrintQuickSlip ) %]
+        [% END %][% IF !( CircAutoPrintQuickSlip == 'clear' ) %]
         // listen submit to trigger qslip on empty checkout
         $('#mainform').bind('submit',function() {
           if ($('#barcode').val() == '') {
-            return printx_window('qslip'); }
+            return printx_window( '[% CircAutoPrintQuickSlip %]' ); }
         });[% END %]
 
-
-var allcheckboxes = $(".checkboxed");
-       $("#renew_all").click(function(){
-               $(allcheckboxes).checkCheckboxes(":input[name*=items]"); 
-               $(allcheckboxes).unCheckCheckboxes(":input[name*=barcodes]");
-       });
-       $("#CheckAllitems").click(function(){
-               $(allcheckboxes).checkCheckboxes(":input[name*=items]");
-               $(allcheckboxes).unCheckCheckboxes(":input[name*=barcodes]"); return false;
-       });
-    $("#CheckNoitems").click(function(){
-               $(allcheckboxes).unCheckCheckboxes(":input[name*=items]"); return false;
-       });
-       $("#CheckAllreturns").click(function(){
-               $(allcheckboxes).checkCheckboxes(":input[name*=barcodes]");
-               $(allcheckboxes).unCheckCheckboxes(":input[name*=items]"); return false;
-       });
-    $("#CheckNoreturns" ).click(function(){
-               $(allcheckboxes).unCheckCheckboxes(":input[name*=barcodes]"); return false;
-       });
-
-    $("#CheckAllexports").click(function(){
-        $(".checkboxed").checkCheckboxes(":input[name*=biblionumbers]");
-        $(".checkboxed").unCheckCheckboxes(":input[name*=items]");
-        return false;
-    });
-    $("#CheckNoexports").click(function(){
-        $(".checkboxed").unCheckCheckboxes(":input[name*=biblionumbers]");
-        return false;
-    });
-
-    $("#relrenew_all").click(function(){
-        $(allcheckboxes).checkCheckboxes(":input[name*=items]");
-        $(allcheckboxes).unCheckCheckboxes(":input[name*=barcodes]");
-    });
-    $("#relCheckAllitems").click(function(){
-        $(allcheckboxes).checkCheckboxes(":input[name*=items]");
-        $(allcheckboxes).unCheckCheckboxes(":input[name*=barcodes]"); return false;
-    });
-    $("#relCheckNoitems").click(function(){
-        $(allcheckboxes).unCheckCheckboxes(":input[name*=items]"); return false;
-    });
-    $("#relCheckAllreturns").click(function(){
-        $(allcheckboxes).checkCheckboxes(":input[name*=barcodes]");
-        $(allcheckboxes).unCheckCheckboxes(":input[name*=items]"); return false;
-    });
-    $("#relCheckNoreturns").click(function(){
-        $(allcheckboxes).unCheckCheckboxes(":input[name*=barcodes]"); return false;
-    });
-
     [% IF ( CAN_user_circulate_override_renewals ) %]
     [% IF ( AllowRenewalLimitOverride ) %]
     $( '#override_limit' ).click( function () {
@@ -139,102 +93,10 @@ var allcheckboxes = $(".checkboxed");
     } ).attr( 'checked', false );
     [% END %]
     [% END %]
-    // Clicking the table cell checks the checkbox inside it
-       $("td").click(function(e){
-               if(e.target.tagName.toLowerCase() == 'td'){
-           $(this).find("input:checkbox:visible").each( function() {
-                if($(this).attr("checked")){
-                    $(this).removeAttr("checked");
-                } else {
-                    $(this).attr("checked","checked");
-                    radioCheckBox($(this));
-                }
-           });
-        }
-       });
-    // prevent adjacent checkboxes from being checked simultaneously
-    function radioCheckBox(box){
-            box.parents("td").siblings().find("input:checkbox:visible").each(function(){
-                if($(this).attr("checked")){
-                    $(this).removeAttr("checked");
-                }
-             });
-     }
-
-       $("#messages ul").after("<a href=\"#\" id=\"addmessage\">"+_("Add a new message")+"</a>");
-       $("#borrower_messages .cancel").click(function(){
-               $("#add_message_form").hide();
-        $("#addmessage").show();
-       });
-       $("#addmessage").click(function (){
-        $(this).hide();
-               $("#add_message_form").show();
-        });
-
-    $("input.radio").click(function(){
-        radioCheckBox($(this));
-    });
-
-    $("#newduedate").datetimepicker({
-        minDate: 1, // require that renewal date is after today
-        hour: 23,
-        minute: 59
-    });
-    $("#duedatespec").datetimepicker({
-        onClose: function(dateText, inst) { $("#barcode").focus(); },
-        hour: 23,
-        minute: 59
-    });
-    $("#export_submit").click(function(){
-        var export_format = $("#export_formats").val();
-        export_checkouts(export_format);
-        return false;
-    })
+    [% IF AutoResumeSuspendedHolds %]
+        $("#suspend_until").datepicker("option", "minDate", 1); // require that hold suspended until date is after today
+    [% END %]
  });
-
-function export_checkouts(format) {
-    if ($("input:checkbox[name='biblionumbers'][checked]").length < 1){
-        alert(_("You must select a checkout to export"));
-        return;
-    }
-
-    $("input:checkbox[name='biblionumbers']").each( function(){
-        var input_item = $(this).siblings("input:checkbox");
-        if ( $(this).is(":checked") ) {
-            $(input_item).attr("checked", "checked");
-        } else {
-            $(input_item).attr("checked", "");
-        }
-    } );
-
-    if (format == 'iso2709_995') {
-        format = 'iso2709';
-        $("#dont_export_item").val(0);
-    } else if (format == 'iso2709') {
-        $("#dont_export_item").val(1);
-    } else {
-        [% UNLESS ( export_with_csv_profile ) %]
-            alert(_("You must define a csv profile for export (in tools>CSV export profiles) and fill the ExportWithCsvProfile system preference"));
-            return false;
-        [% END %]
-    }
-    document.issues.action="/cgi-bin/koha/tools/export.pl";
-    document.getElementById("export_format").value = format;
-    document.issues.submit();
-
-    /* Reset form action to its initial value */
-    document.issues.action="/cgi-bin/koha/reserve/renewscript.pl";
-
-};
-
-function validate1(date) {
-    var today = new Date();
-    if ( date < today ) {
-        return true;
-     } else {
-        return false;
-     }
-};
 //]]>
 </script>
 </head>
@@ -326,11 +188,19 @@ function validate1(date) {
 <div class="yui-g">
 
 <div id="circ_needsconfirmation" class="dialog alert">
-<h3>Please confirm checkout</h3>
+[% IF CAN_user_circulate_force_checkout %]
+  <h3>Please confirm checkout</h3>
+[% ELSE %]
+  <h3>Cannot check out</h3>
+[% END %]
 
 <ul>
 [%IF ( AGE_RESTRICTION ) %]
-    <li>Age restriction [% AGE_RESTRICTION %]. Check out anyway?</li>
+    <li>Age restriction [% AGE_RESTRICTION %].
+      [% IF CAN_user_circulate_force_checkout %]
+        Check out anyway?
+      [% END %]
+    </li>
 [% END %]
 
 [% IF ( DEBT ) %]
@@ -350,7 +220,11 @@ function validate1(date) {
 [% END %]
 
 [% IF ( ISSUED_TO_ANOTHER ) %]
-    <li>Item <i>[% getTitleMessageIteminfo %]</i> ([% getBarcodeMessageIteminfo %]) is checked out to <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% issued_borrowernumber %]">[% issued_firstname %] [% issued_surname %]</a> ([% issued_cardnumber %]). Check in and check out?</li>
+    <li>Item <i>[% getTitleMessageIteminfo %]</i> ([% getBarcodeMessageIteminfo %]) is checked out to <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% issued_borrowernumber %]">[% issued_firstname %] [% issued_surname %]</a> ([% issued_cardnumber %]).
+      [% IF CAN_user_circulate_force_checkout %]
+        Check in and check out?
+      [% END %]
+    </li>
 [% END %]
 
 [% IF ( TOO_MANY ) %]
@@ -370,23 +244,42 @@ function validate1(date) {
     [% IF ( itemtype_notforloan ) %]
         Item type is normally not for loan.
     [% ELSIF ( item_notforloan ) %]
-        [% item_notforloan_lib = KohaAuthorisedValues.GetByCode( authvalcode_notforloan, item_notforloan, 0 ) %]
+        [% item_notforloan_lib = AuthorisedValues.GetByCode( authvalcode_notforloan, item_notforloan, 0 ) %]
         Item is normally not for loan [% IF (item_notforloan_lib) %]([% item_notforloan_lib %])[% END %].
     [% END %]
+      [% IF CAN_user_circulate_force_checkout %]
         Check out anyway?
+      [% END %]
     </li>
 [% END %]
 
 [% IF ( USERBLOCKEDOVERDUE ) %]
-    <li>Patron has [% USERBLOCKEDOVERDUE %] overdue item(s).  Check out anyway?</li>
+    <li>Patron has [% USERBLOCKEDOVERDUE %] overdue item(s).
+      [% IF CAN_user_circulate_force_checkout %]
+       Check out anyway?
+      [% END %]
+    </li>
 [% END %]
 
 [% IF ( ITEM_LOST ) %]
-    <li>This item has been lost with a status of "[% ITEM_LOST %]". Check out anyway?</li>
+    <li>This item has been lost with a status of "[% ITEM_LOST %]".
+      [% IF CAN_user_circulate_force_checkout %]
+        Check out anyway?
+      [% END %]
+    </li>
 [% END %]
 
 [% IF  HIGHHOLDS %]
-       <li>High demand item. Loan period shortened to [% HIGHHOLDS.duration %] days (due [% HIGHHOLDS.returndate %]). Check out anyway?</li>
+    <li>High demand item. Loan period shortened to [% HIGHHOLDS.duration %] days (due [% HIGHHOLDS.returndate %]). Check out anyway?</li>
+[% END %]
+
+[% IF BIBLIO_ALREADY_ISSUED %]
+  <li>
+    Patron has already checked out another item from this record.
+    [% IF CAN_user_circulate_force_checkout %]
+      Check out anyway?
+    [% END %]
+  </li>
 [% END %]
 </ul>
 
@@ -397,6 +290,8 @@ function validate1(date) {
        });
        </script>
 [% END %]
+
+[% IF CAN_user_circulate_force_checkout or HIGHHOLDS %]
 <form method="post" action="/cgi-bin/koha/circ/circulation.pl" autocomplete="off">
 
 [% IF ( RESERVED ) %]
@@ -435,15 +330,20 @@ function validate1(date) {
     <input type="submit" class="approve" value="Yes, Check Out (Y)" accesskey="y" />
     [% END %]
 </form>
+[% END %]
 
 <form method="get" action="/cgi-bin/koha/circ/circulation.pl">
     <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
     <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
     <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
-    [% IF ( RENEW_ISSUE ) %]
-    <input type="submit" class="deny" value="No, Don't Renew (N)" accesskey="n" />
+    [% IF CAN_user_circulate_force_checkout or HIGHHOLDS %]
+        [% IF ( RENEW_ISSUE ) %]
+        <input type="submit" class="deny" value="No, Don't Renew (N)" accesskey="n" />
+        [% ELSE %]
+        <input type="submit" class="deny" value="No, Don't Check Out (N)" accesskey="n" />
+        [% END %]
     [% ELSE %]
-    <input type="submit" class="deny" value="No, Don't Check Out (N)" accesskey="n" />
+        <input type="submit" class="deny" value="Continue" />
     [% END %]
 </form>
 
@@ -503,7 +403,7 @@ function validate1(date) {
             [% IF ( itemtype_notforloan ) %]
                 Item type not for loan.
             [% ELSIF ( item_notforloan ) %]
-                [% item_notforloan_lib = KohaAuthorisedValues.GetByCode( authvalcode_notforloan, item_notforloan, 0 ) %]
+                [% item_notforloan_lib = AuthorisedValues.GetByCode( authvalcode_notforloan, item_notforloan, 0 ) %]
                 Item not for loan [% IF (item_notforloan_lib) %]([% item_notforloan_lib %])[% END %].
             [% END %]
             </li>
@@ -546,7 +446,7 @@ function validate1(date) {
         [% END %]
 
         [% IF ( ITEMNOTSAMEBRANCH ) %]
-            <li>This item belongs to [% itemhomebranch %] and cannot be issued from this location.</li>
+            <li>This item belongs to [% Branches.GetName( itemhomebranch ) %] and cannot be checked out from this location.</li>
         [% END %]
 
         [% IF ( USERBLOCKEDREMAINING ) %]
@@ -622,7 +522,7 @@ No patron matched <span class="ex">[% message %]</span>
 
        <div class="hint">Enter item barcode:</div>
 
-    [% IF ( NEEDSCONFIRMATION ) %]
+    [% IF NEEDSCONFIRMATION %]
            <input type="text" name="barcode" id="barcode" class="barcode focus" size="14" disabled="disabled" />
     [% ELSE %]
            <input type="text" name="barcode" id="barcode" class="barcode focus" size="14" />
@@ -698,14 +598,20 @@ No patron matched <span class="ex">[% message %]</span>
 
             [% IF ( userdebarred ) %]
                <li class="blocker">
-               <span class="circ-hlt"> Restricted:</span> Patron's account is restricted [% IF (userdebarreddate ) %] until [% userdebarreddate %] [% END %] [% IF (debarredcomment ) %] with the comment "[% debarredcomment %]"[% END %]
-               <form class="inline compact" action="/cgi-bin/koha/members/setstatus.pl" method="post">
-                       <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
-                       <input type="hidden" name="destination" value="circ" />
-                       <input type="hidden" name="cardnumber" value="[% cardnumber %]" />
-                       <input type="submit" value="Lift restriction" />
-               </form>
-                       </li>[% END %]
+                   <span class="circ-hlt"> Restricted:</span> Patron's account is restricted
+
+                   [% IF ( userdebarreddate ) %]
+                       until [% userdebarreddate %]
+                   [% END %]
+
+                   [% IF ( debarredcomment ) %]
+                       with the explanation: <br/><i>[% debarredcomment | html_line_break %]</i>
+                   [% END %]
+
+                   <br/>
+                   <a class="btn btn-small" href="#reldebarments" onclick="$('#debarments-tab-link').click()"><i class="icon-ban-circle"></i> View restrictions</a>
+               </li>
+            [% END %]
 
                [% IF ( odues ) %]<li>[% IF ( nonreturns ) %]<span class="circ-hlt">Overdues:</span> Patron has <span class="circ-hlt">ITEMS OVERDUE</span>. See highlighted items <a href="#checkouts">below</a>[% END %]</li>
             [% END %]
@@ -716,7 +622,7 @@ No patron matched <span class="ex">[% message %]</span>
                 [% IF ( charges_is_blocker ) %]
                     Checkouts are <span class="circ-hlt">BLOCKED</span> because fine balance is <span class="circ-hlt">OVER THE LIMIT</span>.
                 [% END %]
-            Make <a href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% borrowernumber %]">Payment</a></li>
+            <a href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% borrowernumber %]">Make payment</a></li>
                        [% END %]
 
                [% IF ( credits ) %]
@@ -805,23 +711,24 @@ No patron matched <span class="ex">[% message %]</span>
     [% ELSE %]
             <a href="#reserves">0 Holds</a>
     [% END %]</li>
+    <li><a id="debarments-tab-link" href="#reldebarments">[% debarments.size %] Restrictions</a></li>
 
 </ul>
 
 <!-- SUMMARY : TODAY & PREVIOUS ISSUES -->
 <div id="checkouts">
 [% IF ( issuecount ) %]
-    <form name="issues" action="/cgi-bin/koha/reserve/renewscript.pl" method="post" class="checkboxed">
+    <form id="issues-form" name="issues" action="/cgi-bin/koha/reserve/renewscript.pl" method="post" class="checkboxed">
     <input type="hidden" value="circ" name="destination" />
     <input type="hidden" name="cardnumber" value="[% cardnumber %]" />
     <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
     <input type="hidden" name="branch" value="[% branch %]" />
         <table id="issuest">
     <thead><tr>
-        <th scope="col">Due date</th>
-        <th scope="col">Title</th>
+        <th scope="col" class="title-string">Due date</th>
+        <th scope="col" class="anti-the">Title</th>
         <th scope="col">Item type</th>
-        <th scope="col">Checked out on</th>
+        <th scope="col" class="title-string">Checked out on</th>
         <th scope="col">Checked out from</th>
         <th scope="col">Call no</th>
         <th scope="col">Charge</th>
@@ -846,10 +753,10 @@ No patron matched <span class="ex">[% message %]</span>
         <span title="[% todayissue.dd_sort %]">[% todayissue.dd %]</span>
 
             [% IF ( todayissue.itemlost ) %]
-                <span class="lost">[% KohaAuthorisedValues.GetByCode( 'LOST', todayissue.itemlost ) %]</span>
+                <span class="lost">[% AuthorisedValues.GetByCode( 'LOST', todayissue.itemlost ) %]</span>
             [% END %]
             [% IF ( todayissue.damaged ) %]
-                <span class="dmg">[% KohaAuthorisedValues.GetByCode( 'DAMAGED', todayissue.damaged ) %]</span>
+                <span class="dmg">[% AuthorisedValues.GetByCode( 'DAMAGED', todayissue.damaged ) %]</span>
             [% END %]
         </td>
         <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% todayissue.biblionumber %]&amp;type=intra"><strong>[% todayissue.title |html %][% FOREACH subtitl IN todayissue.subtitle %] [% subtitl.subfield %][% END %]</strong></a>[% IF ( todayissue.author ) %], by [% todayissue.author %][% END %][% IF ( todayissue.itemnotes ) %]- <span class="circ-hlt">[% todayissue.itemnotes %]</span>[% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% todayissue.biblionumber %]&amp;itemnumber=[% todayissue.itemnumber %]#item[% todayissue.itemnumber %]">[% todayissue.barcode %]</a></td>
@@ -871,6 +778,9 @@ No patron matched <span class="ex">[% message %]</span>
         [% ELSE %]
             <input type="checkbox" class="radio" name="items[]" value="[% todayissue.itemnumber %]" />
         [% END %]
+            [% IF todayissue.renewsallowed && todayissue.renewsleft %]
+                <span class="renewals">([% todayissue.renewsleft %] of [% todayissue.renewsallowed %] renewals remaining)</span>
+            [% END %]
         [% ELSE %]
             [% IF ( todayissue.can_confirm ) %]<span class="renewals-allowed" style="display: none">
                 <input type="checkbox" name="all_items[]" value="[% todayissue.itemnumber %]" checked="checked" style="display: none;" />
@@ -880,14 +790,19 @@ No patron matched <span class="ex">[% message %]</span>
                     <input type="checkbox" class="radio" name="items[]" value="[% todayissue.itemnumber %]" />
                 [% END %]
                 </span>
+                [% IF todayissue.renewsallowed && todayissue.renewsleft && !todayissue.renew_error_too_soon %]
+                    <span class="renewals">([% todayissue.renewsleft %] of [% todayissue.renewsallowed %] renewals remaining)</span>
+                [% END %]
                 <span class="renewals-disabled">
             [% END %]
-               [% IF ( todayissue.renew_error_on_reserve ) %]
-            <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% todayissue.biblionumber %]">On hold</a>
-               [% END %]
-                [% IF ( todayissue.renew_error_too_many ) %]
-            Not renewable
-                [% END %]
+            [% IF ( todayissue.renew_error_on_reserve ) %]
+                <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% todayissue.biblionumber %]">On hold</a>
+            [% ELSIF ( todayissue.renew_error_too_many ) %]
+                Not renewable
+            [% ELSIF ( todayissue.renew_error_too_soon ) %]
+                No renewal before [% todayissue.soonestrenewdate %]
+                <span class="renewals">([% todayissue.renewsleft %] of [% todayissue.renewsallowed %] renewals remaining)</span>
+            [% END %]
             [% IF ( todayissue.can_confirm ) %]
                 </span>
             [% END %]
@@ -933,10 +848,10 @@ No patron matched <span class="ex">[% message %]</span>
         <span title="[% previssue.dd_sort %]">[% previssue.dd %]</span>
 
             [% IF ( previssue.itemlost ) %]
-                <span class="lost">[% KohaAuthorisedValues.GetByCode( 'LOST', previssue.itemlost ) %]</span>
+                <span class="lost">[% AuthorisedValues.GetByCode( 'LOST', previssue.itemlost ) %]</span>
             [% END %]
             [% IF ( previssue.damaged ) %]
-                <span class="dmg">[% KohaAuthorisedValues.GetByCode( 'DAMAGED', previssue.damaged ) %]</span>
+                <span class="dmg">[% AuthorisedValues.GetByCode( 'DAMAGED', previssue.damaged ) %]</span>
             [% END %]
         </td>
         <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% previssue.biblionumber %]&amp;type=intra"><strong>[% previssue.title |html %][% FOREACH subtitl IN previssue.subtitle %] [% subtitl.subfield %][% END %]</strong></a>[% IF ( previssue.author ) %], by [% previssue.author %][% END %] [% IF ( previssue.itemnotes ) %]- [% previssue.itemnotes %][% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% previssue.biblionumber %]&amp;itemnumber=[% previssue.itemnumber %]#item[% previssue.itemnumber %]">[% previssue.barcode %]</a></td>
@@ -960,6 +875,9 @@ No patron matched <span class="ex">[% message %]</span>
         [% ELSE %]
             <input type="checkbox" class="radio" name="items[]" value="[% previssue.itemnumber %]" />
         [% END %]
+            [% IF previssue.renewsallowed && previssue.renewsleft %]
+                <span class="renewals">([% previssue.renewsleft %] of [% previssue.renewsallowed %] renewals remaining)</span>
+            [% END %]
         [% ELSE %]
             [% IF ( previssue.can_confirm ) %]<span class="renewals-allowed" style="display: none">
                 <input type="checkbox" name="all_items[]" value="[% previssue.itemnumber %]" checked="checked" style="display: none;" />
@@ -969,14 +887,19 @@ No patron matched <span class="ex">[% message %]</span>
                     <input type="checkbox" class="radio" name="items[]" value="[% previssue.itemnumber %]" />
                 [% END %]
                 </span>
+                [% IF previssue.renewsallowed && previssue.renewsleft && !previssue.renew_error_too_soon %]
+                    <span class="renewals">([% previssue.renewsleft %] of [% previssue.renewsallowed %] renewals remaining)</span>
+                [% END %]
                 <span class="renewals-disabled">
             [% END %]
-               [% IF ( previssue.renew_error_on_reserve ) %]
-            <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% previssue.biblionumber %]">On hold</a>
-               [% END %]
-                [% IF ( previssue.renew_error_too_many ) %]
-            Not renewable
-                [% END %]
+            [% IF ( previssue.renew_error_on_reserve ) %]
+                <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% previssue.biblionumber %]">On Hold</a>
+            [% ELSIF ( previssue.renew_error_too_many ) %]
+                Not renewable
+            [% ELSIF ( previssue.renew_error_too_soon ) %]
+                No renewal before [% previssue.soonestrenewdate %]
+                <span class="renewals">([% previssue.renewsleft %] of [% previssue.renewsallowed %] renewals remaining)</span>
+            [% END %]
             [% IF ( previssue.can_confirm ) %]
                 </span>
             [% END %]
@@ -1024,7 +947,10 @@ No patron matched <span class="ex">[% message %]</span>
             <select name="export_formats" id="export_formats">
                 <option value="iso2709_995">ISO2709 with items</option>
                 <option value="iso2709">ISO2709 without items</option>
-                <option value="csv">CSV</option>
+                [% IF ( export_with_csv_profile ) %]
+                    <option value="csv">CSV</option>
+                [% END %]
+
             </select>
            <label for="export_remove_fields">Don't export fields:</label> <input type="text" id="export_remove_fields" name="export_remove_fields" value="[% export_remove_fields %]" title="Use for iso2709 exports" />
             <input type="hidden" name="op" value="export" />
@@ -1048,15 +974,15 @@ No patron matched <span class="ex">[% message %]</span>
     <table id="relissuest">
     <thead>
     <tr>
-        <th scope="col">Due date</th>
-        <th scope="col">Title</th>
+        <th scope="col" class="title-string">Due date</th>
+        <th scope="col" class="anti-the">Title</th>
         <th scope="col">Item type</th>
-        <th scope="col">Checked out on</th>
+        <th scope="col" class="title-string">Checked out on</th>
         <th scope="col">Checked out from</th>
         <th scope="col">Call no</th>
         <th scope="col">Charge</th>
         <th scope="col">Price</th>
-        <th scope="col">Patron</th>
+        <th scope="col" class="html-content">Patron</th>
     </tr>
     </thead>
 [% IF ( relissues ) %] <tbody>
@@ -1071,10 +997,10 @@ No patron matched <span class="ex">[% message %]</span>
             <span title="[% relissue.dd_sort %]">[% relissue.dd %]</span></td>
 
             [% IF ( relissue.itemlost ) %]
-                <span class="lost">[% KohaAuthorisedValues.GetByCode( 'LOST', relissue.itemlost ) %]</span>
+                <span class="lost">[% AuthorisedValues.GetByCode( 'LOST', relissue.itemlost ) %]</span>
             [% END %]
             [% IF ( relissue.damaged ) %]
-                <span class="dmg">[% KohaAuthorisedValues.GetByCode( 'DAMAGED', relissue.damaged ) %]</span>
+                <span class="dmg">[% AuthorisedValues.GetByCode( 'DAMAGED', relissue.damaged ) %]</span>
             [% END %]
         </td>
         <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% relissue.biblionumber %]&amp;type=intra"><strong>[% relissue.title |html %][% FOREACH subtitl IN relissue.subtitle %] [% subtitl.subfield %][% END %]</strong></a>[% IF ( relissue.author ) %], by [% relissue.author %][% END %][% IF ( relissue.itemnotes ) %]- <span class="circ-hlt">[% relissue.itemnotes %]</span>[% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% relissue.biblionumber %]&amp;itemnumber=[% relissue.itemnumber %]#item[% relissue.itemnumber %]">[% relissue.barcode %]</a></td>
@@ -1117,6 +1043,7 @@ No patron matched <span class="ex">[% message %]</span>
 </div>
 [% END %]<!-- end displayrelissues -->
 
+[% INCLUDE borrower_debarments.inc %]
 
 <div id="reserves">
 [% IF ( reservloop ) %]