Bug 14042: Get rid of the home made pagination in the auth type admin
authorJonathan Druart <jonathan.druart@biblibre.com>
Wed, 22 Apr 2015 11:56:28 +0000 (13:56 +0200)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Thu, 7 May 2015 14:11:21 +0000 (11:11 -0300)
This patch removes the home made pagination and introduces datatables on
this page.

Test plan:
Go to the authority type admin page and confirm there is a beautiful
table.

Confirmed...
Signed-off-by: Marc VĂ©ron <veron@veron.ch>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
admin/authtypes.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/authtypes.tt

index 492660d..f22ad7c 100755 (executable)
@@ -28,18 +28,20 @@ use C4::Auth;
 use C4::Output;
 
 sub StringSearch  {
-    my $sth = C4::Context->dbh->prepare("SELECT * FROM auth_types WHERE (authtypecode like ?) ORDER BY authtypecode");
-    $sth->execute((shift || '') . "%");
-    return $sth->fetchall_arrayref({});
+    my $string = shift || '';
+    my $dbh = C4::Context->dbh;
+    return $dbh->selectall_arrayref(q|
+        SELECT authtypecode, authtypetext, auth_tag_to_report, summary
+        FROM auth_types
+        WHERE (authtypecode like ?) ORDER BY authtypecode
+    |, { Slice => {} }, $string . "%" );
 }
 
 my $input = new CGI;
 my $script_name  = "/cgi-bin/koha/admin/authtypes.pl";
 my $searchfield  = $input->param('authtypecode');  # FIXME: Auth Type search not really implemented
 my $authtypecode = $input->param('authtypecode');
-my $offset       = $input->param('offset') || 0;
 my $op           = $input->param('op')     || '';
-my $pagesize     = 20;
 my ($template, $borrowernumber, $cookie)
     = get_template_and_user({template_name => "admin/authtypes.tt",
                 query => $input,
@@ -110,24 +112,6 @@ if ($op eq 'add_form') {
 ################## DEFAULT ##################################
 } else { # DEFAULT
     my $results = StringSearch($searchfield);
-    my $count = scalar @$results;
-    my @loop_data;
-    for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){
-        push @loop_data, {
-            authtypecode       => $results->[$i]{'authtypecode'},
-            authtypetext       => $results->[$i]{'authtypetext'},
-            auth_tag_to_report => $results->[$i]{'auth_tag_to_report'},
-            summary            => $results->[$i]{'summary'},
-        };
-    }
-    $template->param(loop => \@loop_data);
-    if ($offset>0) {
-        my $prevpage = $offset-$pagesize;
-        $template->param(previous => "$script_name?offset=".$prevpage);
-    }
-    if ($offset+$pagesize<$count) {
-        my $nextpage = $offset+$pagesize;
-        $template->param(next => "$script_name?offset=".$nextpage);
-    }
+    $template->param( loop => $results );
 } #---- END $OP eq DEFAULT
 output_html_with_http_headers $input, $cookie, $template->output;
index 13f9224..9c62d48 100644 (file)
@@ -7,6 +7,20 @@
 [% END %]
 </title>
 [% INCLUDE 'doc-head-close.inc' %]
+<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
+[% INCLUDE 'datatables.inc' %]
+<script type="text/javascript">
+//<![CDATA[
+    $(document).ready(function() {
+        $("#authtypes").dataTable($.extend(true, {}, dataTablesDefaults, {
+            "aoColumnDefs": [
+                { "aTargets": [ -1, -2, -3 ], "bSortable": false, "bSearchable": false },
+            ],
+            "sPaginationType": "four_button"
+        }));
+    });
+//]]>
+</script>
 </head>
 
 <body id="admin_authtypes" class="admin">
 
 <h1>Authority types</h1>
 <p>Define authority types, then authority MARC structure in the same way you define itemtypes and biblio MARC tag structure. Authority values are managed through plugins</p>
-<table>
+<table id="authtypes">
+    <thead>
        <tr>
                <th>Code</th>
                <th>Description</th>
                <th>Edit</th>
                <th>Delete</th>
        </tr>
-       
+    </thead>
+    <tbody>
        [% FOREACH loo IN loop %]
                <tr>
                        <td>[% loo.authtypecode %]</td>
                        <td><a href="[% loo.script_name %]?op=delete_confirm&amp;authtypecode=[% loo.authtypecode |html %]">Delete</a></td>
                </tr>
        [% END %]
+    <tbody>
 </table>
 
-       [% IF ( previous ) %]<p><a href="[% previous %]">&lt;&lt; Previous</a></p>[% END %]
-       [% IF ( next ) %]<p><a href="[% next %]">Next &gt;&gt;</a></p>[% END %]
-
 [% END %]
 </div>
 </div>