From cd9b2cd8b9d53ba0929791e9ffe8fae5950b3a72 Mon Sep 17 00:00:00 2001
From: Bill Erickson <berick@esilibrary.com>
Date: Thu, 9 Jun 2011 16:39:03 -0400
Subject: [PATCH] honor hit count user pref on results page

Signed-off-by: Bill Erickson <berick@esilibrary.com>
---
 .../perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm | 22 +++++++++++++++++++++-
 .../templates/default/opac/parts/result/table.tt2  |  2 +-
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
index 50a09f1c79..787228c906 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
@@ -5,6 +5,7 @@ use OpenSRF::Utils::Logger qw/$logger/;
 use OpenILS::Utils::CStoreEditor qw/:funcs/;
 use OpenILS::Utils::Fieldmapper;
 use OpenILS::Application::AppUtils;
+use OpenSRF::Utils::JSON;
 my $U = 'OpenILS::Application::AppUtils';
 
 
@@ -101,6 +102,25 @@ sub _prepare_biblio_search {
     return ($query, $site, $depth);
 }
 
+sub _get_search_limit {
+    my $self = shift;
+
+    # param takes precedence
+    my $limit = $self->cgi->param('limit');
+    return $limit if $limit;
+
+    if($self->editor->requestor) {
+        # See if the user has a hit count preference
+        my $lset = $self->editor->search_actor_user_setting({
+            usr => $self->editor->requestor->id, 
+            name => 'opac.hits_per_page'
+        })->[0];
+        return OpenSRF::Utils::JSON->JSON2perl($lset->value) if $lset;
+    }
+
+    return 10; # default
+}
+
 # context additions: 
 #   page_size
 #   hit_count
@@ -114,7 +134,7 @@ sub load_rresults {
     $ctx->{page} = 'rresult';
     my $page = $cgi->param('page') || 0;
     my $facet = $cgi->param('facet');
-    my $limit = $cgi->param('limit') || 10; # TODO user settings
+    my $limit = $self->_get_search_limit;
     my $loc = $cgi->param('loc');
     my $offset = $page * $limit;
 
diff --git a/Open-ILS/web/templates/default/opac/parts/result/table.tt2 b/Open-ILS/web/templates/default/opac/parts/result/table.tt2
index 83da3d8d8b..ba326e9c29 100644
--- a/Open-ILS/web/templates/default/opac/parts/result/table.tt2
+++ b/Open-ILS/web/templates/default/opac/parts/result/table.tt2
@@ -1,7 +1,7 @@
 [%  PROCESS "default/opac/parts/misc_util.tt2";
 
     ctx.result_start = 1 + ctx.page_size * page;
-    ctx.result_stop = 1 + ctx.page_size * (page + 1);
+    ctx.result_stop = ctx.page_size * (page + 1);
     IF ctx.result_stop > ctx.hit_count; ctx.result_stop = ctx.hit_count; END;
 
     result_count = ctx.result_start;
-- 
2.11.0