From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-2.9 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, RP_MATCHES_RCVD shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: meta@public-inbox.org Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 62399200EE for ; Sat, 5 Sep 2015 06:19:29 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] searchview: improve footer navigation Date: Sat, 5 Sep 2015 06:19:29 +0000 Message-Id: <1441433969-9482-1-git-send-email-e@80x24.org> List-Id: 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 | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm index 6113bbf..4d49d25 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{} . PublicInbox::View::PRE_WRAP; - my $foot = $ctx->{footer}; + my $foot = $ctx->{footer} || ''; + $foot = qq{Back to index.}; if ($total == 0) { - $foot ||= ''; $res .= "\n\n[No results found]
$foot";
 	} else {
 		$q = $query->as_href;
@@ -69,14 +70,23 @@ sub sres_top_html {
 		my $end = $o + $nr;
 		my $beg = $o + 1;
 		$res .= "
";
-		$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{, next}
+		}
+		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{ more}
+			$res .= qq{prev};
 		}
-		$res .= "\n\n".$foot if $foot;
+		$res .= "\n\n".$foot;
 	}
 
 	$res .= "
"; -- EW