diff options
-rw-r--r-- | lib/PublicInbox/SearchView.pm | 28 |
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&o=$o"; + $res .= "Results $beg-$end of $total"; + + my $n = $o + $LIM; + if ($n < $total) { + $qp = "q=$q&o=$n"; + $qp .= "&r" if $r; + $res .= qq{, <a\nhref="?$qp">next</a>} + } + if ($o > 0) { + $res .= $n < $total ? '/' : ', '; + my $p = $o - $LIM; + $qp = "q=$q"; + $qp .= "&o=$p" if $p > 0; $qp .= "&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>"; |