# Copyright (C) 2015 all contributors # License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt) # # Displays search results for the web interface package PublicInbox::SearchView; use strict; use warnings; use PublicInbox::SearchMsg; use PublicInbox::Hval qw/ascii_html/; use PublicInbox::View; use PublicInbox::MID qw(mid2path mid_clean mid_mime); use Email::MIME; require PublicInbox::Git; require PublicInbox::Thread; our $LIM = 50; sub sres_top_html { my ($ctx) = @_; my $q = PublicInbox::SearchQuery->new($ctx->{cgi}); my $code = 200; # double the limit for expanded views: my $opts = { limit => $LIM, offset => $q->{o}, mset => 1, relevance => $q->{r}, }; my ($mset, $total); eval { $mset = $ctx->{srch}->query($q->{q}, $opts); $total = $mset->get_matches_estimated; }; my $err = $@; my $res = html_start($q, $ctx) . '
'; if ($err) { $code = 400; $res .= err_txt($ctx, $err) . "
" . foot($ctx); } elsif ($total == 0) { $code = 404; $res .= "\n\n[No results found]
".foot($ctx); } else { my $x = $q->{x}; return sub { adump($_[0], $mset, $q, $ctx) } if ($x eq 'A'); $res .= search_nav_top($mset, $q) . "\n\n"; if ($x eq 't') { return sub { tdump($_[0], $res, $mset, $q, $ctx) }; } dump_mset(\$res, $mset); $res .= '' . search_nav_bot($mset, $q) . "\n\n" . foot($ctx); } $res .= "