}.
@@ -113,9 +137,22 @@ sub err_txt {
}
sub search_nav_top {
- my ($mset, $q) = @_;
+ my ($mset, $q, $ctx) = @_;
+ my $m = $q->qs_html(x => 'm', r => undef);
+ my $rv = qq{};
}
sub search_nav_bot {
@@ -179,7 +218,8 @@ sub sort_relevance {
sub mset_thread {
my ($ctx, $mset, $q) = @_;
my %pct;
- my $msgs = $ctx->{srch}->retry_reopen(sub { [ map {
+ my $srch = $ctx->{srch};
+ my $msgs = $srch->retry_reopen(sub { [ map {
my $i = $_;
my $smsg = PublicInbox::SearchMsg->load_doc($i->get_document);
$pct{$smsg->mid} = $i->get_percent;
@@ -187,7 +227,8 @@ sub mset_thread {
} ($mset->items) ]});
my $r = $q->{r};
my $rootset = PublicInbox::SearchThread::thread($msgs,
- $r ? sort_relevance(\%pct) : *PublicInbox::View::sort_ts);
+ $r ? sort_relevance(\%pct) : *PublicInbox::View::sort_ts,
+ $srch);
my $skel = search_nav_bot($mset, $q). "";
my $inbox = $ctx->{-inbox};
$ctx->{-upfx} = '';
@@ -201,8 +242,11 @@ sub mset_thread {
$ctx->{seen} = {};
$ctx->{s_nr} = scalar(@$msgs).'+ results';
+ # reduce hash lookups in skel_dump
+ $ctx->{-obfuscate} = $ctx->{-inbox}->{obfuscate};
PublicInbox::View::walk_thread($rootset, $ctx,
*PublicInbox::View::pre_thread);
+
@$msgs = reverse @$msgs if $r;
my $mime;
sub {
@@ -222,7 +266,9 @@ sub mset_thread {
sub ctx_prepare {
my ($q, $ctx) = @_;
- my $qh = ascii_html($q->{'q'});
+ my $qh = $q->{'q'};
+ utf8::decode($qh);
+ $qh = ascii_html($qh);
$ctx->{-q_value_html} = $qh;
$ctx->{-atom} = '?'.$q->qs_html(x => 'A', r => undef);
$ctx->{-title_html} = "$qh - search results";
@@ -254,8 +300,9 @@ sub adump {
package PublicInbox::SearchQuery;
use strict;
use warnings;
+use URI::Escape qw(uri_escape);
use PublicInbox::Hval;
-use PublicInbox::MID qw(mid_escape);
+use PublicInbox::MID qw(MID_ESC);
sub new {
my ($class, $qp) = @_;
@@ -280,7 +327,7 @@ sub qs_html {
$self = $tmp;
}
- my $q = mid_escape($self->{'q'});
+ my $q = uri_escape($self->{'q'}, MID_ESC);
$q =~ s/%20/+/g; # improve URL readability
my $qs = "q=$q";
@@ -291,7 +338,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;
}