my $res = html_start($q, $ctx) . '<pre>';
if ($err) {
$code = 400;
- $res .= err_txt($err) . "</pre><hr /><pre>" . foot($ctx);
+ $res .= err_txt($ctx, $err) . "</pre><hr /><pre>" . foot($ctx);
} elsif ($total == 0) {
$code = 404;
$res .= "\n\n[No results found]</pre><hr /><pre>".foot($ctx);
[$code, ['Content-Type'=>'text/html; charset=UTF-8'], [$res]];
}
+# display non-threaded search results similar to what users expect from
+# regular WWW search engines:
sub dump_mset {
my ($res, $mset) = @_;
}
sub err_txt {
- my ($err) = @_;
- my $u = 'http://xapian.org/docs/queryparser.html';
+ my ($ctx, $err) = @_;
+ my $u = '//xapian.org/docs/queryparser.html';
+ $u = PublicInbox::Hval::prurl($ctx->{cgi}->{env}, $u);
$err =~ s/^\s*Exception:\s*//; # bad word to show users :P
$err = PublicInbox::Hval->new_oneline($err)->as_html;
"\n\nBad query: <b>$err</b>\n" .
sub tdump {
my ($cb, $res, $mset, $q, $ctx) = @_;
my $fh = $cb->([200, ['Content-Type'=>'text/html; charset=UTF-8']]);
- $fh->write($res);
+ $fh->write($res .= '</pre>');
my %pct;
my @m = map {
my $i = $_;
}
my $git = $ctx->{git} ||= PublicInbox::Git->new($ctx->{git_dir});
- my $state = { ctx => $ctx, anchor_idx => 0, pct => \%pct };
+ my $state = {
+ ctx => $ctx,
+ anchor_idx => 0,
+ pct => \%pct,
+ cur_level => 0
+ };
$ctx->{searchview} = 1;
tdump_ent($fh, $git, $state, $_, 0) for $th->rootset;
+ PublicInbox::View::thread_adj_level($fh, $state, 0);
Email::Address->purge_cache;
$fh->write(search_nav_bot($mset, $q). "\n\n" .
};
}
if ($mime) {
+ my $end =
+ PublicInbox::View::thread_adj_level($fh, $state, $level);
PublicInbox::View::index_entry($fh, $mime, $level, $state);
+ $fh->write($end) if $end;
} else {
my $mid = $node->messageid;
- $fh->write(PublicInbox::View::ghost_table('', $mid, $level));
+ PublicInbox::View::ghost_flush($fh, $state, '', $mid, $level);
}
tdump_ent($fh, $git, $state, $node->child, $level + 1);
tdump_ent($fh, $git, $state, $node->next, $level);
my $qh = $query->as_html;
my $A = $q->qs_html(x => 'A', r => undef);
- my $res = "<html><head><title>$qh - search results</title>" .
+ my $res = '<html><head>' . PublicInbox::Hval::STYLE .
+ "<title>$qh - search results</title>" .
qq{<link\nrel=alternate\ntitle="Atom feed"\n} .
qq!href="?$A"\ntype="application/atom+xml"/></head>! .
qq{<body><form\naction="">} .
$self = $tmp;
}
- my $q = PublicInbox::Hval->new($self->{q})->as_href;
+ my $q = PublicInbox::Hval->new_oneline($self->{q})->as_href;
$q =~ s/%20/+/g; # improve URL readability
my $qs = "q=$q";