about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-09-26 01:30:47 +0000
committerEric Wong <e@80x24.org>2021-09-26 01:43:27 +0000
commit065bc720f6c11b5e4f0ba79948087a6a1284edd5 (patch)
tree901d4aed5223955ef55c58e2bb2e92ee29c99c0b /lib
parentbf7fdfe4b939c3a97b20fd3e9b65c9cd493a692d (diff)
downloadpublic-inbox-065bc720f6c11b5e4f0ba79948087a6a1284edd5.tar.gz
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 <input type=submit /> 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/
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/WwwListing.pm17
1 files changed, 12 insertions, 5 deletions
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 = <<EOM;
 <form
-action="./"><pre><input
-name=q
-type=text$qh /><input
-type=submit
-value="locate inbox" /></pre></form><pre>
+action="./"><pre><input name=q type=text$qh
+/><input type=submit value="locate inbox"
+/><input type=submit name=a value="search all inboxes"
+/></pre></form><pre>
 EOM
         chomp $rv;
         if (defined($q->{'q'})) {