diff options
author | Eric Wong <e@yhbt.net> | 2020-08-22 06:06:26 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-08-23 00:14:02 +0000 |
commit | aad1b9e70529b78d3d7d62b0920ad82ca40f9592 (patch) | |
tree | 23c8ace1fbcb52bbf0cf00c0f7a83fa006ba99b5 /lib/PublicInbox/SearchView.pm | |
parent | ae546078c5696ac73ad9f48c2c90163febb4a246 (diff) | |
download | public-inbox-aad1b9e70529b78d3d7d62b0920ad82ca40f9592.tar.gz |
Finally, the addition of THREADID for collapsing results in Xapian lets us emulate the "mairix --threads" feature. That is, instead of returning only the matching messages, the entire thread is included in the downloaded mbox.gz This requires a "public-inbox-index --reindex" to be usable.
Diffstat (limited to 'lib/PublicInbox/SearchView.pm')
-rw-r--r-- | lib/PublicInbox/SearchView.pm | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm index 75e2d39d..dd69564a 100644 --- a/lib/PublicInbox/SearchView.pm +++ b/lib/PublicInbox/SearchView.pm @@ -19,10 +19,12 @@ my %rmap_inc; sub mbox_results { my ($ctx) = @_; my $q = PublicInbox::SearchQuery->new($ctx->{qp}); - my $x = $q->{x}; + if ($ctx->{env}->{'psgi.input'}->read(my $buf, 3)) { + $q->{t} = 1 if $buf =~ /\Ax=[^0]/; + } require PublicInbox::Mbox; - return PublicInbox::Mbox::mbox_all($ctx, $q->{'q'}) if $x eq 'm'; - sres_top_html($ctx); + $q->{x} eq 'm' ? PublicInbox::Mbox::mbox_all($ctx, $q) : + sres_top_html($ctx); } sub sres_top_html { @@ -46,6 +48,7 @@ sub sres_top_html { offset => $o, mset => 1, relevance => $q->{r}, + thread => $q->{t}, asc => $asc, }; my ($mset, $total, $err, $html); @@ -151,7 +154,7 @@ sub err_txt { sub search_nav_top { my ($mset, $q, $ctx) = @_; - my $m = $q->qs_html(x => 'm', r => undef); + my $m = $q->qs_html(x => 'm', r => undef, t => undef); my $rv = qq{<form\naction="?$m"\nmethod="post"><pre>}; my $initial_q = $ctx->{-uxs_retried}; if (defined $initial_q) { @@ -186,10 +189,12 @@ sub search_nav_top { } my $A = $q->qs_html(x => 'A', r => undef); $rv .= qq{|<a\nhref="?$A">Atom feed</a>]} . - qq{\n\t\t\t\t\t\tdownload: } . - # lynx seems to require a name=, here, so just use 'z' - qq{<input\ntype=submit\nname=z\nvalue="mbox.gz"/>} . - q{</pre></form><pre>}; + qq{\n\t\t\tdownload mbox.gz: } . + # we set name=z w/o using it since it seems required for + # lynx (but works fine for w3m). + qq{<input\ntype=submit\nname=z\nvalue="results only"/>|} . + qq{<input\ntype=submit\nname=x\nvalue="full threads"/>} . + qq{</pre></form><pre>}; } sub search_nav_bot { |