X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FView.pm;h=496093510659c19eb52c35484700013d38a3691b;hb=07a768b9de068ddd8f7ea17fe242839c77210510;hp=47082431ec8fa375580c7b85afa95117ea0496a9;hpb=faa0459760f4f9b37bd6beba5087eb70d06fd973;p=public-inbox.git diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 47082431..49609351 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -48,7 +48,7 @@ sub feed_entry { # state = [ time, seen = {}, first_commit, page_nr = 0 ] sub index_entry { my (undef, $mime, $level, $state) = @_; - my (undef, $seen, $first_commit) = @$state; + my ($srch, $seen, $first_commit) = @$state; my $midx = $state->[3]++; my ($prev, $next) = ($midx - 1, $midx + 1); my $rv = ''; @@ -75,10 +75,26 @@ sub index_entry { my $more = 'permalink'; if ($root_anchor) { $path = '../'; - $subj = "$subj" if $root_anchor eq $id; } else { $path = ''; } + my $href = $mid->as_href; + my $irt = $header_obj->header_raw('In-Reply-To'); + my ($anchor_idx, $anchor, $t_anchor); + if (defined $irt) { + $anchor_idx = anchor_for($irt); + $anchor = $seen->{$anchor_idx}; + $t_anchor = T_ANCHOR; + } else { + $t_anchor = ''; + } + + if (defined $srch) { + $subj = "$subj"; + } + if ($root_anchor && $root_anchor eq $id) { + $subj = "$subj"; + } my $ts = $mime->header('X-PI-TS'); my $fmt = '%Y-%m-%d %H:%M UTC'; @@ -92,16 +108,6 @@ sub index_entry { } $rv .= "\n\n"; - my $irt = $header_obj->header_raw('In-Reply-To'); - my ($anchor_idx, $anchor, $t_anchor); - if (defined $irt) { - $anchor_idx = anchor_for($irt); - $anchor = $seen->{$anchor_idx}; - $t_anchor = T_ANCHOR; - } else { - $t_anchor = ''; - } - my $href = $mid->as_href; my $mhref = "${path}m/$href.html"; my $fhref = "${path}f/$href.html"; # scan through all parts, looking for displayable text @@ -126,8 +132,8 @@ sub index_entry { $rv .= " parent"; } - if ($first_commit) { - $rv .= " thread"; + if ($srch) { + $rv .= " thread"; } $rv . "\n\n"; @@ -145,7 +151,7 @@ sub thread_html { my $th = PublicInbox::Thread->new(@$msgs); $th->thread; $th->order(*PublicInbox::Thread::sort_ts); - my $state = [ undef, { root_anchor => anchor_for($mid) }, undef, 0 ]; + my $state = [ $srch, { root_anchor => anchor_for($mid) }, undef, 0 ]; thread_entry(\$rv, $state, $_, 0) for $th->rootset; my $final_anchor = $state->[3]; my $next = "end of thread\n"; @@ -165,7 +171,7 @@ sub subject_path_html { my $th = PublicInbox::Thread->new(@$msgs); $th->thread; $th->order(*PublicInbox::Thread::sort_ts); - my $state = [ undef, { root_anchor => 'dummy' }, undef, 0 ]; + my $state = [ $srch, { root_anchor => 'dummy' }, undef, 0 ]; thread_entry(\$rv, $state, $_, 0) for $th->rootset; my $final_anchor = $state->[3]; my $next = "end of thread\n"; @@ -340,6 +346,10 @@ sub headers_to_html_header { my $rv = ""; my @title; + my $header_obj = $mime->header_obj; + my $mid = $header_obj->header_raw('Message-ID'); + $mid = PublicInbox::Hval->new_msgid($mid); + my $mid_href = $mid->as_href; foreach my $h (qw(From To Cc Subject Date)) { my $v = $mime->header($h); defined($v) && length($v) or next; @@ -351,8 +361,7 @@ sub headers_to_html_header { } elsif ($h eq 'Subject') { $title[0] = $v->as_html; if ($srch) { - my $path = $srch->subject_path($v->raw); - $rv .= "$h: "; + $rv .= "$h: "; $rv .= $v->as_html . "\n"; next; } @@ -361,13 +370,9 @@ sub headers_to_html_header { } - my $header_obj = $mime->header_obj; - my $mid = $header_obj->header_raw('Message-ID'); - $mid = PublicInbox::Hval->new_msgid($mid); $rv .= 'Message-ID: <' . $mid->as_html . '> '; - my $href = $mid->as_href; - $href = "../m/$href" unless $full_pfx; - $rv .= "(raw)\n"; + $mid_href = "../m/$mid_href" unless $full_pfx; + $rv .= "(raw)\n"; my $irt = $header_obj->header_raw('In-Reply-To'); if (defined $irt) {