about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-09-05 05:54:26 +0000
committerEric Wong <e@80x24.org>2015-09-05 06:17:20 +0000
commitabb3f2c3bcff582f75b1032a61abd4256bdcdee1 (patch)
tree221e66081c77db5fe64b8f82bc465d8609a122bd /lib
parent1e7fe3de7021427f8326a5f7710347035f7a63c5 (diff)
downloadpublic-inbox-abb3f2c3bcff582f75b1032a61abd4256bdcdee1.tar.gz
Aallow navigating backwards and forwards, as some pages will be
bookmarked or some browsers may not have history.  Also add a
link back to the index where they presumably came from.

While we're at it, limit the number of results we have to 25
for now to avoid making the page too big and wasting clients
memory for irrelevant results.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/SearchView.pm28
1 files changed, 19 insertions, 9 deletions
diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm
index 6113bbf1..4d49d250 100644
--- a/lib/PublicInbox/SearchView.pm
+++ b/lib/PublicInbox/SearchView.pm
@@ -7,6 +7,7 @@ use PublicInbox::SearchMsg;
 use PublicInbox::Hval;
 use PublicInbox::View;
 use POSIX qw/strftime/;
+our $LIM = 25;
 
 sub sres_top_html {
         my ($ctx, $q) = @_;
@@ -15,7 +16,7 @@ sub sres_top_html {
         my $o = int($cgi->param('o') || 0);
         my $r = $cgi->param('r');
         $r = (defined $r && $r ne '0');
-        my $opts = { offset => $o, mset => 1, relevance => $r };
+        my $opts = { limit => $LIM, offset => $o, mset => 1, relevance => $r };
         my $mset = $ctx->{srch}->query($q, $opts);
         my $total = $mset->get_matches_estimated;
         my $query = PublicInbox::Hval->new_oneline($q);
@@ -29,9 +30,9 @@ sub sres_top_html {
         $res .= qq{<input\ntype=submit\nvalue=search /></form>} .
                   PublicInbox::View::PRE_WRAP;
 
-        my $foot = $ctx->{footer};
+        my $foot = $ctx->{footer} || '';
+        $foot = qq{Back to <a\nhref=".">index</a>.};
         if ($total == 0) {
-                $foot ||= '';
                 $res .= "\n\n[No results found]</pre><hr /><pre>$foot";
         } else {
                 $q = $query->as_href;
@@ -69,14 +70,23 @@ sub sres_top_html {
                 my $end = $o + $nr;
                 my $beg = $o + 1;
                 $res .= "<hr /><pre>";
-                $res .= "Results $beg-$end of $total.";
-                if ($nr < $total) {
-                        $o = $o + $nr;
-                        $qp = "q=$q&amp;o=$o";
+                $res .= "Results $beg-$end of $total";
+
+                my $n = $o + $LIM;
+                if ($n < $total) {
+                        $qp = "q=$q&amp;o=$n";
+                        $qp .= "&amp;r" if $r;
+                        $res .= qq{, <a\nhref="?$qp">next</a>}
+                }
+                if ($o > 0) {
+                        $res .= $n < $total ? '/' : ',      ';
+                        my $p = $o - $LIM;
+                        $qp = "q=$q";
+                        $qp .= "&amp;o=$p" if $p > 0;
                         $qp .= "&amp;r" if $r;
-                        $res .= qq{ <a\nhref="?$qp">more</a>}
+                        $res .= qq{<a\nhref="?$qp">prev</a>};
                 }
-                $res .= "\n\n".$foot if $foot;
+                $res .= "\n\n".$foot;
         }
 
         $res .= "</pre></body></html>";