[Koha-patches] [PATCH] Bug 9294 - Move JavaScript out of circulation template

Owen Leonard oleonard at myacpl.org
Fri Dec 14 21:42:27 CET 2012


This patch creates a new js file, js/pages/circulation.js, and begins
the process of moving JavaScript into it from circulation.tt. I have
started the process by focusing on sections which are least dependent on
template variables.

To test, load a patron for checkout who has something checked out.
There should be no JavaScript errors:
 - Tabs should work.
 - Showing and hiding the "Add message" form should work.
 - The "specify due date" datepicker should work.
 - Controls for selecting checkboxes in the checkouts table should work
 - With checkout exports enabled, warnings should be displayed if you
   have no checkouts selected, or if you try to export as CSV and have
   no CSV profile specified in your ExportWithCsvProfile.
---
 .../intranet-tmpl/prog/en/js/pages/circulation.js  |  144 ++++++++++++++++++
 .../prog/en/modules/circ/circulation.tt            |  153 +-------------------
 2 files changed, 152 insertions(+), 145 deletions(-)
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/js/pages/circulation.js

diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/pages/circulation.js b/koha-tmpl/intranet-tmpl/prog/en/js/pages/circulation.js
new file mode 100644
index 0000000..302a055
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/pages/circulation.js
@@ -0,0 +1,144 @@
+$(document).ready(function() {
+    $('#patronlists').tabs();
+    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;
+    });
+    $("#messages ul").after("<a href=\"#\" id=\"addmessage\">"+MSG_ADD_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;
+    });
+    // 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));
+                }
+           });
+        }
+    });
+});
+
+function export_checkouts(format) {
+    if ($("input:checkbox[name='biblionumbers'][checked]").length < 1){
+        alert(MSG_EXPORT_SELECT_CHECKOUTS);
+        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 if (format === '') {
+            alert(MSG_DEFINE_CSV_FORMAT);
+            return false;
+    }
+    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;
+     }
+}
+
+// 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");
+            }
+         });
+ }
\ No newline at end of file
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 e1d7b0e..8622ce4 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt
@@ -10,8 +10,12 @@
 [% IF ( UseTablesortForCirc ) %]<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.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>
+<script type="text/javascript" src="[% themelang %]/js/pages/circulation.js"></script>
 <script type="text/javascript">
 //<![CDATA[
+var MSG_ADD_MESSAGE = _("Add a new message");
+var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
+var MSG_EXPORT_DEFINE_CSV_FORMAT = _("You must define a CSV profile for export (in tools -> CSV export profiles) and fill the 'ExportWithCsvProfile' system preference");
 [% IF ( borrowernumber ) %]if($.cookie("holdfor") != [% borrowernumber %]){ $.cookie("holdfor",null, { path: "/", expires: 0 }); }[% ELSE %]$.cookie("holdfor",null, { path: "/", expires: 0 });[% END %]
 [% IF ( UseTablesortForCirc ) %]$.tablesorter.addParser({
     id: 'articles',
@@ -61,56 +65,6 @@
             return printx_window('qslip'); }
         });[% 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 () {
@@ -122,102 +76,7 @@ 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;
-    })
  });
-
-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>
@@ -948,7 +807,11 @@ 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>
+                [% IF ( export_with_csv_profile ) %]
                 <option value="csv">CSV</option>
+                [% ELSE %]
+                <option value="">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" />
-- 
1.7.9.5


More information about the Koha-patches mailing list