diff options
author | Eric Wong <e@80x24.org> | 2017-11-29 09:33:17 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2017-12-01 08:39:39 +0000 |
commit | 55c13112d18616607d2d3eba159ae18dcb66a568 (patch) | |
tree | 9ce654e575b899a648eb68dedb154dfd98d1b117 /lib/PublicInbox/SearchView.pm | |
parent | 0d48c3d9b83393337b20ed50aa7847c0a7e6b506 (diff) | |
download | public-inbox-55c13112d18616607d2d3eba159ae18dcb66a568.tar.gz |
Allowing downloading of all search results as an gzipped mboxrd file can be convenient for some users.
Diffstat (limited to 'lib/PublicInbox/SearchView.pm')
-rw-r--r-- | lib/PublicInbox/SearchView.pm | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm index 39400d6d..3eff7087 100644 --- a/lib/PublicInbox/SearchView.pm +++ b/lib/PublicInbox/SearchView.pm @@ -21,8 +21,11 @@ sub noop {} sub sres_top_html { my ($ctx) = @_; my $q = PublicInbox::SearchQuery->new($ctx->{qp}); - my $code = 200; + my $x = $q->{x}; + my $query = $q->{'q'}; + return PublicInbox::Mbox::mbox_all($ctx, $query) if $x eq 'm'; + my $code = 200; # double the limit for expanded views: my $opts = { limit => $LIM, @@ -33,7 +36,7 @@ sub sres_top_html { my ($mset, $total, $err, $cb); retry: eval { - $mset = $ctx->{srch}->query($q->{'q'}, $opts); + $mset = $ctx->{srch}->query($query, $opts); $total = $mset->get_matches_estimated; }; $err = $@; @@ -55,7 +58,6 @@ retry: $ctx->{-html_tip} = "<pre>\n[No results found]</pre><hr>"; $cb = *noop; } else { - my $x = $q->{x}; return adump($_[0], $mset, $q, $ctx) if $x eq 'A'; $ctx->{-html_tip} = search_nav_top($mset, $q, $ctx) . "\n\n"; @@ -164,6 +166,9 @@ sub search_nav_top { } my $A = $q->qs_html(x => 'A', r => undef); $rv .= qq{|<a\nhref="?$A">Atom feed</a>]}; + my $m = $q->qs_html(x => 'm', r => undef); + warn "m: $m\n"; + $rv .= qq{\n\t\t\t\t\t\tdownload: <a\nhref="?$m">mbox.gz</a>}; } sub search_nav_bot { @@ -327,7 +332,7 @@ sub qs_html { $qs .= "&r"; } if (my $x = $self->{x}) { - $qs .= "&x=$x" if ($x eq 't' || $x eq 'A'); + $qs .= "&x=$x" if ($x eq 't' || $x eq 'A' || $x eq 'm'); } $qs; } |