]> Sergey Matveev's repositories - public-inbox.git/commitdiff
view: avoid attempting to find "subject dummy"
authorEric Wong <e@80x24.org>
Fri, 4 Sep 2015 02:18:09 +0000 (02:18 +0000)
committerEric Wong <e@80x24.org>
Fri, 4 Sep 2015 02:19:05 +0000 (02:19 +0000)
This is an internal Message-ID used by Mail::Thread, to group
messages with identical subjects but common parent.  Don't
attempt to redirect users to external sites when we cannot
find it.

lib/PublicInbox/View.pm

index 68adbd72840592dccb87cc1e37c151eb4b4795c9..65ef1e786ddec5853448b6cf4e4eef2c6c1d4a46 100644 (file)
@@ -591,6 +591,17 @@ sub pre_anchor_entry {
        $seen->{$id} = "#$id"; # save the anchor for children, later
 }
 
+sub ghost_parent {
+       my ($upfx, $mid) = @_;
+       # 'subject dummy' is used internally by Mail::Thread
+       return '[no common parent]' if ($mid eq 'subject dummy');
+
+       $mid = PublicInbox::Hval->new_msgid($mid);
+       my $href = $mid->as_href;
+       my $html = $mid->as_html;
+       qq{[parent not found: &lt;<a\nhref="$upfx../$href/">$html</a>&gt;]};
+}
+
 sub __thread_entry {
        my ($cb, $git, $state, $mime, $level) = @_;
 
@@ -607,15 +618,10 @@ sub __thread_entry {
        if (my $ghost = delete $state->{ghost}) {
                # n.b. ghost messages may only be parents, not children
                foreach my $g (@$ghost) {
-                       my $mid = PublicInbox::Hval->new_msgid($g->[0]);
-                       my $pfx = INDENT x $g->[1];
-                       my $href = $mid->as_href;
-                       my $html = $mid->as_html;
-                       $$cb->write("<table><tr><td>$pfx</td><td>" .
-                                       PRE_WRAP .
-                                       '[parent not found: &lt;' .
-                                       qq{<a\nhref="../../$href/">}.
-                                       "$html</a>&gt;]</pre></td></table>");
+                       $$cb->write("<table\nsummary=ghost><tr><td>" .
+                               (INDENT x $g->[1]) . "</td><td>" .
+                               PRE_WRAP . ghost_parent('', $g->[0]) .
+                               '</pre></td></table>');
                }
        }
        index_entry($$cb, $mime, $level, $state);
@@ -736,12 +742,7 @@ sub inline_dump {
                _inline_header($dst, $state, $upfx, $mime, $level);
        } else {
                my $pfx = INDENT x $level;
-               my $v = PublicInbox::Hval->new_msgid($node->messageid, 1);
-               my $html = $v->as_html;
-               my $href = $v->as_href;
-               $$dst .= $pfx . '` [parent not found: &lt;' .
-                               qq{<a\nhref="$upfx../$href/">}.
-                               "$html</a>&gt;]\n";
+               $$dst .= $pfx . '` ' . ghost_parent($upfx, $node->messageid);
        }
        inline_dump($dst, $state, $upfx, $node->child, $level+1);
        inline_dump($dst, $state, $upfx, $node->next, $level);