From 065bc720f6c11b5e4f0ba79948087a6a1284edd5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 26 Sep 2021 01:30:47 +0000 Subject: www_listing: support /all/ search as a 302 redirect This allows users to search /all/ from the top-level WwwListing without extra manual steps, although there's still extra network roundtrips incurred. No vertical whitespace is added, and there's no clumsy radio buttons nor menus to deal with. Users only have to use a different button. I forgot how to do this until I realized we already do something similar with multiple submit buttons for threaded vs non-threaded mboxrd.gz downloads. Link: https://public-inbox.org/meta/20210827120845.29682-1-e@80x24.org/ --- lib/PublicInbox/WwwListing.pm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm index a9290802..79c0a8ec 100644 --- a/lib/PublicInbox/WwwListing.pm +++ b/lib/PublicInbox/WwwListing.pm @@ -11,6 +11,7 @@ use PublicInbox::GzipFilter qw(gzf_maybe); use PublicInbox::ConfigIter; use PublicInbox::WwwStream; use URI::Escape qw(uri_escape_utf8); +use PublicInbox::MID qw(mid_escape); sub ibx_entry { my ($ctx, $ibx, $ce) = @_; @@ -135,6 +136,13 @@ sub response { my ($re, $qs) = $ctx->url_filter; $re // return $ctx->psgi_triple; if (my $ALL = $ctx->{www}->{pi_cfg}->ALL) { # fast path + if ($ctx->{qp}->{a} && # "search all inboxes" + $ctx->{qp}->{'q'}) { + my $u = 'all/?q='.mid_escape($ctx->{qp}->{'q'}); + return [ 302, [ 'Location' => $u, + qw(Content-Type text/plain) ], + [ "Redirecting to $u\n" ] ]; + } # FIXME: test this in t/ $ALL->misc->reopen->retry_reopen(\&add_misc_ibx, $ctx, $re, $qs); @@ -166,11 +174,10 @@ sub mset_nav_top { $qh = qq[\nvalue="$qh"] if $qh ne ''; my $rv = <
+action="./">
 EOM
 	chomp $rv;
 	if (defined($q->{'q'})) {
-- 
cgit v1.2.3-24-ge0c7