]> Sergey Matveev's repositories - public-inbox.git/commitdiff
searchview: improve footer navigation
authorEric Wong <e@80x24.org>
Sat, 5 Sep 2015 05:54:26 +0000 (05:54 +0000)
committerEric Wong <e@80x24.org>
Sat, 5 Sep 2015 06:17:20 +0000 (06:17 +0000)
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.

lib/PublicInbox/SearchView.pm

index 6113bbf19e7cdfef8e28f84f177b9d94889e121a..4d49d250a275cf25c42adc614423300386f63f63 100644 (file)
@@ -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>";