]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/View.pm
linkify: support adding "(raw)" link for Message-IDs
[public-inbox.git] / lib / PublicInbox / View.pm
index 1aa014fdd2397c6f508c4316ce83c3938d7e5bb0..00bf38a9590bee6cb3cd57bb69d06b901eeedb65 100644 (file)
@@ -630,11 +630,10 @@ sub _msg_html_prepare {
        my $obfs_ibx = $ctx->{-obfs_ibx};
        my $rv = '';
        my $mids = mids($hdr);
-       my $multiple = scalar(@$mids) > 1; # zero, one, infinity
        if ($nr == 0) {
                if ($more) {
                        $rv .=
-"<pre>WARNING: multiple messages refer to this Message-ID\n</pre>";
+"<pre>WARNING: multiple messages have this Message-ID\n</pre>";
                }
                $rv .= "<pre\nid=b>"; # anchor for body start
        } else {
@@ -686,19 +685,17 @@ sub _msg_html_prepare {
                $rv .= "Date: $v\n";
        }
        $ctx->{-title_html} = join(' - ', @title);
-       foreach (@$mids) {
-               my $mid = PublicInbox::Hval->new_msgid($_) ;
+       if (scalar(@$mids) == 1) { # common case
+               my $mid = PublicInbox::Hval->new_msgid($mids->[0]);
                my $mhtml = $mid->as_html;
-               if ($multiple) {
-                       my $href = $mid->{href};
-                       $rv .= "Message-ID: ";
-                       $rv .= "<a\nhref=\"../$href/\">";
-                       $rv .= "&lt;$mhtml&gt;</a> ";
-                       $rv .= "(<a\nhref=\"../$href/raw\">raw</a>)\n";
-               } else {
-                       $rv .= "Message-ID: &lt;$mhtml&gt; ";
-                       $rv .= "(<a\nhref=\"raw\">raw</a>)\n";
-               }
+               $rv .= "Message-ID: &lt;$mhtml&gt; ";
+               $rv .= "(<a\nhref=\"raw\">raw</a>)\n";
+       } else {
+               my $lnk = PublicInbox::Linkify->new;
+               my $s = '';
+               $s .= "Message-ID: $_\n" for ($hdr->header_raw('Message-ID'));
+               $lnk->linkify_mids('..', \$s, 1);
+               $rv .= $s;
        }
        $rv .= _parent_headers($hdr, $over);
        $rv .= "\n";