From a392938223f7f9c80431af332e6bf41dc1c82c30 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@biblibre.com>
Date: Mon, 3 Sep 2012 11:44:21 +0200
Subject: [PATCH] Bug 8715: Receive all serials for a year.

This patch adds
- 2 links in the table header (select all and clear all).
- Datatable on these tables

Test plan:
Try to select all serials for a year and receive them.
Test there is no regression (ergonomic) on this page
---
 .../prog/en/modules/serials/serials-collection.tt  |   57 ++++++++++++++++----
 serials/serials-collection.pl                      |    3 +-
 2 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt
index 23b496b..fc658c3 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt
@@ -1,6 +1,10 @@
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Serials &rsaquo; Serial collection information for [% bibliotitle %]</title>
+<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
 [% INCLUDE 'doc-head-close.inc' %]
+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
+<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
 
 <script type="text/javascript">
 //<![CDATA[
@@ -40,10 +44,30 @@ function generateNext(subscriptionid) {
 	}
 }
 
+function CheckAll( node ) {
+    $("#"+node).checkCheckboxes();
+    return false;
+}
+function CheckNone( node ) {
+    $("#"+node).unCheckCheckboxes();
+    return false;
+}
 $(document).ready(function() {
     $('#subscription_years').tabs();
+    [% IF dateformatmetric %]
+      dt_add_type_uk_date();
+    [% END %]
+
+    $(".subscription-year-table").dataTable($.extend(true, {}, dataTablesDefaults, {
+        "aoColumnDefs": [
+            { "aTargets": [ -1 ], "bSortable": false, "bSearchable": false },
+        ],
+        "bAutoWidth": false,
+        "bPaginate": false,
+        "bInfo": false,
+        "bFilter": false,
+    } ));
 });
- 
 
 //]]>
 </script>
@@ -193,8 +217,9 @@ $(document).ready(function() {
         </p>
     [% END %]
 
-        <table>
-	  <tr>
+        <table class="subscription-year-table">
+          <thead>
+            <tr>
 [% IF ( subscriptions.size > 1 ) %]
                 <th># Subs</th>
 [% END %]
@@ -211,8 +236,21 @@ $(document).ready(function() {
                 <th>Library
                 </th>
                 [% IF ( routing ) %]<th>Routing</th>[% END %]
-                [% IF ( CAN_user_serials_receive_serials ) %]<th>Edit</th>[% END %]
+                [% IF ( CAN_user_serials_receive_serials ) %]
+                  <th style="min-width: 60px;">
+                    <span style="font-size: 70%;">
+                      <span class="checkall">
+                        <a class="CheckAll" href="#" onclick="CheckAll('subscription-year-[% year.year %]'); return false;">Select all</a>
+                      </span>
+                      <span class="clearall">
+                        <a class="CheckNone" href="#" onclick="CheckNone('subscription-year-[% year.year %]'); return false;">Clear all</a>
+                      </span>
+                    </span>
+                  </th>
+                [% END %]
             </tr>
+          </thead>
+          <tbody>
       [% FOREACH serial IN year.serials %]
     [% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
 [% IF ( subscriptions.size > 1 ) %]
@@ -250,17 +288,18 @@ $(document).ready(function() {
                     <input type="checkbox" name="serialid" value="[% serial.serialid %]" disabled="disabled" />
                     [% ELSE %]
                       [% IF ( serial.checked ) %]
-                    <input type="checkbox" name="serialid" checked="checked" value="[% serial.serialid %]" />
+                    <input type="checkbox" class="checkboxed" name="serialid" checked="checked" value="[% serial.serialid %]" />
                       [% ELSE %]
-                    <input type="checkbox" name="serialid" value="[% serial.serialid %]" />
-                      [% END %]           
+                    <input type="checkbox" class="checkboxed" name="serialid" value="[% serial.serialid %]" />
+                      [% END %]
                     [% END %]
                   [% END %]
                 </td>
             [% END %]
             </tr>
-      [% END %]
-        </table>
+          [% END %]
+        </tbody>
+      </table>
     </div>
     [% END %]
   <input type="hidden" name="subscriptionid" value="[% subscriptionidlist %]" />
diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl
index 610de60..7908100 100755
--- a/serials/serials-collection.pl
+++ b/serials/serials-collection.pl
@@ -163,7 +163,8 @@ $template->param(
           subscriptioncount => $subscriptioncount,
     location	       => $locationlib,
     callnumber	       => $callnumber,
-    uc(C4::Context->preference("marcflavour")) => 1
+    uc(C4::Context->preference("marcflavour")) => 1,
+    dateformatmetric   => C4::Context->preference("dateformat") eq "metric" ? 1 : 0,
           );
 
 output_html_with_http_headers $query, $cookie, $template->output;
-- 
1.7.10.4