Bug 9417 - Allow number of results per page to be selectable for guided reports
authorKyle M Hall <kyle@bywatersolutions.com>
Wed, 16 Jan 2013 11:53:59 +0000 (06:53 -0500)
committerJared Camins-Esakov <jcamins@cpbibliography.com>
Fri, 8 Feb 2013 14:34:54 +0000 (09:34 -0500)
This patch adds the ability to select the number of row to show per page while
retaining the default rows per page as 20.

Test Plan:
1) Apply patch
2) Run a guided report that will have many resultant rows
3) Try the various rows per page options
4) Verify the rows per page selected is retained when paging through results

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt
reports/guided_reports.pl

index c055b2b..7f109d9 100644 (file)
@@ -579,6 +579,26 @@ canned reports and writing custom SQL reports.</p>
 [% IF ( notes ) %]<p>[% notes %]</p>[% END %]
 [% IF ( unlimited_total ) %]<p>Total number of rows matching the (unlimited) query is [% unlimited_total %].</p>[% END %]
 <pre id="sql_output">[% sql |html %]</pre>
+
+<form>
+    <input type="hidden" name="phase" value="Run this report"/>
+    <input type="hidden" name="reports" value="[% report_id %]"/>
+
+    <label for="limit">Rows per page: </label>
+    <select name="limit">
+        [% limits = [ 10, 20, 50, 100, 200, 300, 400, 500, 1000 ] %]
+        [% FOREACH l IN limits %]
+                [% IF l == limit %]
+                    <option value="[% l %]" selected="selected">[% l %]</option>
+                [% ELSE %]
+                    <option value="[% l %]">[% l %]</option>
+                [% END %]
+        [% END %]
+    </select>
+
+    <input type="submit" value="Update" />
+</form>
+
 <div class="pages">[% pagination_bar %]</div>
 [% UNLESS ( errors ) %]
 <table>
index 631e056..23d85a9 100755 (executable)
@@ -523,7 +523,7 @@ elsif ( $phase eq 'Save Report' ) {
 
 elsif ($phase eq 'Run this report'){
     # execute a saved report
-    my $limit      = 20; # page size. # TODO: move to DB or syspref?
+    my $limit      = $input->param('limit') || 20;
     my $offset     = 0;
     my $report_id  = $input->param('reports');
     my @sql_params = $input->param('sql_params');
@@ -532,6 +532,11 @@ elsif ($phase eq 'Run this report'){
         $offset = ($input->param('page') - 1) * $limit;
     }
 
+    $template->param(
+        'limit'   => $limit,
+        'report_id' => $report_id,
+    );
+
     my ( $sql, $type, $name, $notes );
     if (my $report = get_saved_report($report_id)) {
         $sql   = $report->{savedsql};
@@ -654,7 +659,7 @@ elsif ($phase eq 'Run this report'){
             }
 
             my $totpages = int($total/$limit) + (($total % $limit) > 0 ? 1 : 0);
-            my $url = "/cgi-bin/koha/reports/guided_reports.pl?reports=$report_id&amp;phase=Run%20this%20report";
+            my $url = "/cgi-bin/koha/reports/guided_reports.pl?reports=$report_id&amp;phase=Run%20this%20report&amp;limit=$limit";
             if (@sql_params) {
                 $url = join('&amp;sql_params=', $url, map { URI::Escape::uri_escape($_) } @sql_params);
             }