Bug 12904: Force browser to load new javascript files after upgrade
[koha_ffzg] / koha-tmpl / intranet-tmpl / prog / en / modules / tools / inventory.tt
index 1052714..ed55ceb 100644 (file)
@@ -1,75 +1,12 @@
+[% USE KohaDates %]
+[% USE Branches %]
+[% SET footerjs = 1 %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Tools &rsaquo; Inventory</title>
 [% INCLUDE 'doc-head-close.inc' %]
-<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>
-<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
-[% INCLUDE 'calendar.inc' %]
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
-<script type="text/javascript">
-//<![CDATA[
-$(document).ready(function(){
-
-        inventorydt = $('#inventoryt').dataTable($.extend(true, {}, dataTablesDefaults, {
-            'sPaginationType': 'full_numbers',
-            "aoColumnDefs": [ { "bSortable": false, "aTargets": [ 0 ] } ]
-        } ));
-
-
-    $("#continuewithoutmarkingbutton").click(function(){
-                inventorydt.fnPageChange( 'next' );
-            return false;
-        });
-
-        $("#markseenandcontinuebutton").click(function(){
-            var param = '';
-            $("input:checked").each(function() {
-                param += "|" + $(this).attr('name');
-            });
-            $.post('/cgi-bin/koha/tools/ajax-inventory.pl', { seen: param });
-            inventorydt.fnPageChange( 'next' );
-            return false;
-        });
-
-        $("#markseenandquit").click(function(){
-            var param = '';
-            $("input:checked").each(function() {
-                param += "|" + $(this).attr('name');
-            });
-            $.ajax({
-              type: 'POST',
-              url: '/cgi-bin/koha/tools/ajax-inventory.pl',
-              data: { seen: param},
-              async: false
-            });
-            document.location.href = '/cgi-bin/koha/tools/inventory.pl';
-            return false;
-        });
-
-
-
-    $(".checkall").click(function(){
-            $(".checkboxed").checkCheckboxes();
-            return false;
-        });
-    $(".clearall").click(function(){
-            $(".checkboxed").unCheckCheckboxes();
-            return false;
-        });
-[% IF ( offset ) %]$("#markseen").before("<input type=\"submit\" value=\"&lt;&lt; " + _("Mark seen and continue") + "\" id=\"markback\" /> ");[% END %]
-[% IF ( nextoffset ) %]$("#markseen").after(" <input type=\"submit\" id=\"marknext\" value=\"" + _("Mark seen and continue") + " &gt;&gt;\" />");[% END %]
-    $("#markback").click(function(){
-        $(".checkboxed").find("input").filter("[name=offset]").attr("value","[% prevoffset %]");
-        return true;
-    });
-    $("#marknext").click(function(){
-        $(".checkboxed").find("input").filter("[name=offset]").attr("value","[% nextoffset %]");
-        return true;
-    });
-    });
-//]]>
-</script>
+<link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables_[% KOHA_VERSION %].css" />
 </head>
+
 <body id="tools_inventory" class="tools">
 [% INCLUDE 'header.inc' %]
 [% INCLUDE 'cat-search.inc' %]
@@ -81,9 +18,14 @@ $(document).ready(function(){
    <div id="bd">
     <div id="yui-main">
     <div class="yui-b">
-    <h1>Inventory/Stocktaking</h1>
-    [% IF (moddatecount) %]<div class="dialog message">[% moddatecount %] items modified : datelastseen set to [% date %]</div>[% END %]
+    <h1>Inventory</h1>
+    [% IF (moddatecount) %]<div class="dialog message">[% moddatecount %] items modified : datelastseen set to [% date | $KohaDates %]</div>
+    <div class="dialog alert">Number of potential barcodes read: [% LinesRead %]</div>[% END %]
     [% IF (errorfile) %]<div class="dialog alert">[% errorfile %] can't be opened</div>[% END %]
+    [% IF (err_length && err_length==1) %]<div class="dialog alert">There was 1 barcode that was too long.</div>[% END %]
+    [% IF (err_length && err_length>1) %]<div class="dialog alert">There were [% err_length %] barcodes that were too long.</div>[% END %]
+    [% IF (err_data && err_data==1) %]<div class="dialog alert">There was 1 barcode that contained at least one unprintable character.</div>[% END %]
+    [% IF (err_data && err_data>1) %]<div class="dialog alert">There were [% err_data %] barcodes that contained at least one unprintable character.</div>[% END %]
     [% FOREACH error IN errorloop %]
         <div class="dialog alert">
             [% error.barcode %]
@@ -95,31 +37,27 @@ $(document).ready(function(){
     [% END %]
        [% UNLESS op %]
     <div class="yui-g">
-    <form method="post" action="/cgi-bin/koha/tools/inventory.pl" enctype="multipart/form-data">
+    <form method="post" id="inventory_form" action="/cgi-bin/koha/tools/inventory.pl" enctype="multipart/form-data">
         <fieldset class="rows">
-            <legend>Use a barcode file</legend>
-     <ol>
+          <legend>Use a barcode file</legend>
+          <ol>
             <li><label for="uploadbarcodes">Barcode file: </label> <input type="file" id="uploadbarcodes" name="uploadbarcodes" /></li>
-            <li><label for="setdate">Set inventory date to:</label> <input type="text" id="setdate" name="setdate" value="[% today %]" class="datepickerfrom" />
-            </li>
+            <li><label for="setdate">Set inventory date to:</label> <input type="text" id="setdate" name="setdate" value="[% today | $KohaDates %]" class="datepicker" disabled /></li>
+            <li><label for="compareinv2barcd">Compare barcodes list to results: </label><input type="checkbox" name="compareinv2barcd" id="compareinv2barcd" disabled /></li>
+            <li><label for="dont_checkin">Do not check in items scanned during inventory: </label><input type="checkbox" name="dont_checkin" id="dont_checkin" disabled /></li>
           </ol>
         </fieldset>
+
         <fieldset class="rows">
-        <legend>Select items you want to check</legend>
+        <legend>Item location filters</legend>
         <ol><li>
         <label for="branch">Library: </label>
             <input type="radio" name="branch" value="homebranch"> Home library</input>
-            <input type="radio" name="branch" value="holdingbranch"> Current location</input>
+            <input type="radio" name="branch" value="holdingbranch"> Current library</input>
         </li><li>
         <label for="branchloop">Library: </label><select id="branchloop" name="branchcode" style="width:12em;">
-            <option value="">All locations</option>
-        [% FOREACH branchloo IN branchloop %]
-            [% IF ( branchloo.selected ) %]
-                <option value="[% branchloo.value %]" selected="selected">[% branchloo.branchname %]</option>
-            [% ELSE %]
-                <option value="[% branchloo.value %]">[% branchloo.branchname %]</option>
-            [% END %]
-        [% END %]
+            <option value="">All libraries</option>
+            [% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode, unfiltered => 1, ) %]
         </select>
         </li>
         [% IF (authorised_values) %]
@@ -142,55 +80,67 @@ $(document).ready(function(){
            <li><label for="maxlocation">...and: </label>
                 <input type="text" name="maxlocation" id="maxlocation" value="[% maxlocation %]" />
         </li>
-        [% IF (statuses) %]
     </ol>
     </fieldset>
-            <fieldset class="rows">
-            <legend>Item statuses</legend>
-            <div name="statuses" style="display: block;">
+
+    <fieldset class="rows" id="optionalfilters">
+            <legend>Optional filters for inventory list or comparing barcodes</legend>
+            <br/>
+            <div id="statuses" style="display: block;">
                   [% FOREACH status IN statuses %]
                       [% IF (status.values) %]
                           <fieldset style="float: left; padding: 5px; margin: 5px;text-align:right">
                               <legend>[% status.fieldname %]</legend>
                               <ul id="statuses-[% fieldname %]" style="display: inline;">
                               [% FOREACH value IN status.values %]
-                                  [% IF (value.lib) %]<li>
+                                  [% IF (value.lib) %]
+                                    <li>
                                     <label for="[% value.id %]">
-                                      [% value.lib %]
+                                        [% IF value.authorised_value==0 %]
+                                            For loan
+                                        [% ELSE %]
+                                            [% value.lib %]
+                                        [% END %]
                                     </label>
                                     <input type="checkbox" name="status-[% status.fieldname %]-[% value.authorised_value %]" id="[% value.authorised_value %]" />
-                                  </li>[% END %]
+                                    </li>
+                                  [% END %]
                               [% END %]
                               </ul>
                           </fieldset>
                       [% END %]
                   [% END %]
                 </div>
-            </fieldset>
-        <fieldset class="rows">
-          <ol>
-        [% END %]
-
-        <li><label for="datelastseen">Inventory date:</label>
-            <input type="text" id="datelastseen" name="datelastseen" value="[% datelastseen %]" class="datepickerfrom" />
+        <ol>
+        <li>
+            <br/>
+            <label for="datelastseen">Last inventory date:</label>
+            <input type="text" id="datelastseen" name="datelastseen" value="[% datelastseen | $KohaDates %]" class="datepicker" />
+            (Skip records marked as seen on or after this date.)
         </li>
-        <li><label for="ignoreissued">Skip copies on loan: </label>
+        <li>
+            <label for="ignoreissued">Skip items on loan: </label>
             [% IF (ignoreissued) %]
-            <input type="checkbox" id="ignoreissued" name="ignoreissued" checked="checked" /></li>
+                <input type="checkbox" id="ignoreissued" name="ignoreissued" checked="checked" />
             [% ELSE %]
-            <input type="checkbox" id="ignoreissued" name="ignoreissued" /></li>
+                <input type="checkbox" id="ignoreissued" name="ignoreissued" />
             [% END %]
+        </li>
+        </ol>
+    </fieldset>
+
+        <fieldset class="rows">
+          <legend>Additional options</legend>
+          <ol>
+
         <li>
            <label for="CSVexport">Export to CSV file: </label>
            <input type="checkbox" name="CSVexport" id="CSVexport" />
         </li>
-        <li>
-            <label for="compareinv2barcd">Compare barcodes list to results: </label>
-            <input type="checkbox" name="compareinv2barcd" id="compareinv2barcd" />
-        </li>
         </ol>
   </fieldset>
             <input type="hidden" name="op" value="do_it" />
+
             <fieldset class="action"><input type="submit" value="Submit" class="button" /></fieldset>
     </form>
     </div>
@@ -198,43 +148,53 @@ $(document).ready(function(){
     [% END %]
     [% IF (op) %]
     <form method="post" action="/cgi-bin/koha/tools/inventory.pl" class="checkboxed">
-    <input type="hidden" name="markseen" value="1" />
     <input type="hidden" name="minlocation" value="[% minlocation %]" />
     <input type="hidden" name="maxlocation" value="[% maxlocation %]" />
     <input type="hidden" name="location" value="[% location %]" />
     <input type="hidden" name="branchcode" value="[% branchcode %]" />
     <input type="hidden" name="datelastseen" value="[% datelastseen %]" />
-    <input type="hidden" name="pagesize" value="[% pagesize %]" />
-    <input type="hidden" name="offset" value="[% offset %]" />
-    <div><a href="#" class="checkall">[Select All]</a> <a href="#" class="clearall">[Clear All]</a></div>
+
+    [% UNLESS uploadedbarcodesflag %]
+      <div><a href="#" class="checkall"><i class="fa fa-check"></i> Select all</a> <a href="#" class="clearall"><i class="fa fa-remove"></i> Clear all</a></div>
+    [% END %]
+
     <table id="inventoryt">
     <thead>
         <tr>
-            <th>Seen</th>
+            [% UNLESS uploadedbarcodesflag %]<th>Seen</th>[% END %]
             <th>Barcode</th>
-            <th>Location</th>
+            <th>Call number</th>
+            <th>Library</th>
             <th>Title</th>
             <th>Status</th>
             <th>Lost</th>
             <th>Damaged</th>
-            <th>Unseen since</th>
+            <th>Withdrawn</th>
+            <th>Last seen</th>
             <th>Problems</th>
         </tr>
     </thead>
     <tbody>
     [% FOREACH result IN loop %]
         <tr>
-            <td>
-            <input type="checkbox" name="SEEN-[% result.itemnumber %]" value="1" />
-            </td>
+            [% UNLESS uploadedbarcodesflag %]
+              <td>
+                <input type="checkbox" name="SEEN-[% result.itemnumber %]" value="1" />
+              </td>
+            [% END %]
             <td>
             [% result.barcode | html %]
             </td>
+            <td>[% result.itemcallnumber | html %]</td>
             <td>
-            [% result.homebranch | html %] [% result.location | html %] [[% result.itemcallnumber | html %]]
+                [% Branches.GetName( result.homebranch ) %]
+                <span class="shelvingloc">[% result.location | html %]</span>
             </td>
             <td>
-            <p><a href="#" onclick="window.open('/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% result.biblionumber %]','marcview','width=800,height=600,toolbar=0,scrollbars=1');">[% result.title | html %]</a></p><p>[% result.author | html %]</p>
+                <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% result.biblionumber %]" class="openWin">[% result.title | html %]</a>
+                [% IF ( result.author ) %]
+                    by <span class="author">[% result.author | html %]</span>
+                [% END %]
             </td>
             <td>
             [% result.notforloan | html %]
@@ -246,21 +206,37 @@ $(document).ready(function(){
             [% result.damaged | html %]
             </td>
             <td>
-            [% result.datelastseen | html %]
+            [% result.withdrawn | html %]
             </td>
             <td>
-            [% IF (result.wrongplace) %]<p>Item should not have been scanned</p>[% ELSIF (result.missingitem) %]<p>Item missing</p>[% ELSIF (result.changestatus) %]<p>Change item status</p>[% END %]
+            [% result.datelastseen | $KohaDates | html %]
+            </td>
+            <td>
+            [% FOREACH problem IN result.problems %]
+                [% IF problem.key == 'wrongplace' %]
+                    Found in wrong place<br/>
+                [% ELSIF problem.key == 'changestatus' %]
+                    Unknown not-for-loan status<br/>
+                [% ELSIF problem.key == 'not_scanned' %]
+                    Missing (not scanned)<br/>
+                [% ELSIF problem.key == 'checkedout' %]
+                    Still checked out<br/>
+                [% ELSIF problem.key == 'no_barcode' %]
+                    No barcode<br/>
+                [% END %]
+            [% END %]
             </td>
         </tr>
     [% END %]
     </tbody>
     </table>
     <div class="spacer"></div>
-      <p style="display:block;"><span class="exportSelected"></span></p>
-    <div style="padding : .3em 0"><a href="#" class="checkall">[Select All]</a> <a href="#" class="clearall">[Clear All]</a></div>
-     <input type="submit" id="markseenandquit" value="Mark seen and quit" />
-     <input type="submit" value="Mark Seen and Continue &gt;&gt;" id="markseenandcontinuebutton" />
-     <input type="submit" value="Continue without Marking &gt;&gt;" id="continuewithoutmarkingbutton" class="submit" />
+    [% UNLESS uploadedbarcodesflag %]
+      <div style="padding : .3em 0"><a href="#" class="checkall"><i class="fa fa-check"></i> Select all</a> <a href="#" class="clearall"><i class="fa fa-remove"></i> Clear all</a></div>
+      <input type="submit" id="markseenandquit" value="Mark seen and quit" />
+      <input type="submit" value="Mark seen and continue &gt;&gt;" id="markseenandcontinuebutton" />
+      <input type="submit" value="Continue without marking &gt;&gt;" id="continuewithoutmarkingbutton" class="submit" />
+    [% END %]
     </form>
 
     </div>
@@ -271,4 +247,130 @@ $(document).ready(function(){
 [% INCLUDE 'tools-menu.inc' %]
 </div>
 </div>
+
+[% MACRO jsinclude BLOCK %]
+    <script type="text/javascript" src="[% interface %]/[% theme %]/js/tools-menu_[% KOHA_VERSION %].js"></script>
+    [% INCLUDE 'datatables.inc' %]
+    [% INCLUDE 'calendar.inc' %]
+    <script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.checkboxes.min_[% KOHA_VERSION %].js"></script>
+    <script type="text/javascript">
+        function checkForm() {
+            if ( $('#uploadbarcodes').val() ) {
+                if ( !(
+                    $('#branchloop').val()   ||
+                    $('#locationloop').val() ||
+                    $('#minlocation').val()  ||
+                    $('#maxlocation').val()  ||
+                    $('#statuses input:checked').length
+                ) ) {
+                    return confirm(
+                        _("You have not selected any catalog filters and are about to compare a file of barcodes to your entire catalog.") + "\n\n" +
+                        _("For large catalogs this can result in unexpected behavior") + "\n\n" +
+                        _("Are you sure you want to do this?")
+                    );
+                }
+            }
+
+            return true;
+        }
+
+        $(document).ready(function(){
+            inventorydt = $('#inventoryt').dataTable($.extend(true, {}, dataTablesDefaults, {
+                'sPaginationType': 'full_numbers',
+                [% IF compareinv2barcd %]
+                    // sort on callnumber
+                    "aaSorting": [[ 1, "asc" ]],
+                [% ELSE %]
+                    // first column contains checkboxes
+                    "aoColumnDefs": [
+                        { "bSortable": false, "bSearchable": false, "aTargets": [ 0 ] },
+                    ],
+                    // 3rd column is callnumber
+                    "aaSorting": [[ 2, "asc" ]],
+                [% END %]
+                'fnDrawCallback': function() {
+                    //bind the click handler script to the newly created elements held in the table
+                    $('.openWin').bind('click',function(e){
+                        e.preventDefault();
+                        openWindow(this.href,'marcview',800,600);
+                    });
+                }
+            } ));
+
+
+            $("#continuewithoutmarkingbutton").click(function(){
+                inventorydt.fnPageChange( 'next' );
+                return false;
+            });
+
+            $("#markseenandcontinuebutton").click(function(){
+                var param = '';
+                $("input:checked").each(function() {
+                    param += "|" + $(this).attr('name');
+                });
+                $.post('/cgi-bin/koha/tools/ajax-inventory.pl', { seen: param });
+                inventorydt.fnPageChange( 'next' );
+                return false;
+            });
+
+            $("#markseenandquit").click(function(){
+                var param = '';
+                $("input:checked").each(function() {
+                    param += "|" + $(this).attr('name');
+                });
+                $.ajax({
+                  type: 'POST',
+                  url: '/cgi-bin/koha/tools/ajax-inventory.pl',
+                  data: { seen: param},
+                  async: false
+                });
+                document.location.href = '/cgi-bin/koha/tools/inventory.pl';
+                return false;
+            });
+
+
+            $(".checkall").click(function(){
+                    $(".checkboxed").checkCheckboxes();
+                    return false;
+                });
+            $(".clearall").click(function(){
+                    $(".checkboxed").unCheckCheckboxes();
+                    return false;
+                });
+            $("#inventory_form").on("submit",function(){
+                return checkForm();
+            });
+
+            // #uploadbarcodes and #compareinv2barcd determine the behavior of
+            // the controls within the barcode fieldset and the optional filters
+            $("#uploadbarcodes").change(function() {
+                if( $("#uploadbarcodes").val() ) {
+                    $("#setdate").prop('disabled',false);
+                    $("#compareinv2barcd").prop('disabled',false);
+                    $("#dont_checkin").prop('disabled',false);
+                    if( $("#compareinv2barcd").attr('checked') ) {
+                        $("fieldset#optionalfilters").show();
+                    } else {
+                        $("fieldset#optionalfilters").hide();
+                    }
+                } else {
+                    $("#setdate").prop('disabled',true);
+                    $("#compareinv2barcd").prop('disabled',true);
+                    $("#compareinv2barcd").attr('checked',false);
+                    $("#dont_checkin").prop('disabled',true);
+                    $("#dont_checkin").attr('checked',false);
+                    $("fieldset#optionalfilters").show();
+                }
+            });
+            $("#compareinv2barcd").click(function() {
+                if( $("#compareinv2barcd").attr('checked') ) {
+                    $("fieldset#optionalfilters").show();
+                } else {
+                    $("fieldset#optionalfilters").hide();
+                }
+            });
+        });
+    </script>
+[% END %]
+
 [% INCLUDE 'intranet-bottom.inc' %]