From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 4C06F1F8C8; Sun, 26 Sep 2021 01:30:47 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Cc: Konstantin Ryabitsev Subject: [PATCH] www_listing: support /all/ search as a 302 redirect Date: Sun, 26 Sep 2021 01:30:47 +0000 Message-Id: <20210926013047.6806-1-e@80x24.org> In-Reply-To: <20210827120845.29682-1-e@80x24.org> References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: On Fri, 27 Aug 2021 12:08:43 +0000, Eric Wong wrote: > Konstantin Ryabitsev wrote: > > I switched the configuration to return wwwlisting as toplevel view (instead of > > redirecting / to /all/), but there's some discontent, because the easy > > interface to "search everything" is gone and unless someone knows about /all/, > > they wouldn't find out about it from the wwwlisting view. > > > > How about, if there is an extindex "all" defined, the wwwlisting adds an extra > > search box: > > > > [_________________] [search all] help > > > > * 2021-08-26 16:54 - https://x-lore.kernel.org/all/ > > All of lore.kernel.org > > > > ------------------------------------------------------ > > > > [_________________] [locate inbox] > > > > I think that's too much vertical whitespace at the top of the > page, and multiple
s or boxes at the top can get > confusing. > > Just making /all/ show up at the top like a normal inbox (and > letting the admin decide on description) seems sufficient. If > users can get to /all/ then they can search /all/ as normal. > > I tried moving the s next to infourl, but mixing > and
 introduces a lot of vertical whitespace.
> 
> 
> I also tried adding radio button (or drop-down):
> 
> 	[_________________] [*] inboxes [ ] /all/   [search]
> 
> But extra  elements always confuse me whenever I encounter
> them in any browser, so I decided to just leave things alone.

-------------8<------------
Subject: [PATCH] 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(-)

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'})) {