about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/View.pm7
-rwxr-xr-xpublic-inbox.cgi2
-rw-r--r--t/view.t5
3 files changed, 9 insertions, 5 deletions
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 5b24706c..355d346a 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -19,7 +19,7 @@ my $enc_mime = find_encoding('MIME-Header');
 sub as_html {
         my ($class, $mime, $full_pfx) = @_;
 
-        headers_to_html_header($mime) .
+        headers_to_html_header($mime, $full_pfx) .
                 multipart_text_as_html($mime, $full_pfx) .
                 '</pre></body></html>';
 }
@@ -150,7 +150,7 @@ sub ascii_html {
 }
 
 sub headers_to_html_header {
-        my ($simple) = @_;
+        my ($simple, $full_pfx) = @_;
 
         my $rv = "";
         my @title;
@@ -180,6 +180,9 @@ sub headers_to_html_header {
         if (defined $mid) {
                 my ($html, $href) = trim_message_id($mid);
                 $rv .= "Message-ID: &lt;$html&gt; ";
+                unless ($full_pfx) {
+                        $href = "../m/$href";
+                }
                 $rv .= "(<a href=\"$href.txt\">original</a>)\n";
         }
 
diff --git a/public-inbox.cgi b/public-inbox.cgi
index b9b484be..fc48f2f4 100755
--- a/public-inbox.cgi
+++ b/public-inbox.cgi
@@ -78,7 +78,7 @@ sub main {
         } elsif ($path_info =~ m!$LISTNAME_RE/f/(\S+)\.html\z!o) {
                 invalid_list_mid(\%ctx, $1, $2) || get_full_html(\%ctx, $cgi);
 
-        # convenience redirect
+        # convenience redirects, order matters
         } elsif ($path_info =~ m!$LISTNAME_RE/(?:m|f)/(\S+)\z!o) {
                 invalid_list_mid(\%ctx, $1, $2) || redirect_mid(\%ctx, $cgi);
 
diff --git a/t/view.t b/t/view.t
index 067f9890..87f8eeee 100644
--- a/t/view.t
+++ b/t/view.t
@@ -36,8 +36,8 @@ EOF
         $s = Email::MIME->new($s->as_string);
         my $html = PublicInbox::View->as_html($s);
 
-        # ghetto
-        like($html, qr/<a href="hello%40/s, "MID link present");
+        # ghetto tests
+        like($html, qr!<a href="\.\./m/hello%40!s, "MID link present");
         like($html, qr/hello world\b/, "body present");
         like($html, qr/&gt; keep this inline/, "short quoted text is inline");
         like($html, qr/<a name=[^>]+>&gt; Long and wordy/,
@@ -46,6 +46,7 @@ EOF
         # short page
         my $pfx = "http://example.com/test/f";
         my $short = PublicInbox::View->as_html($s, $pfx);
+        like($short, qr!<a href="hello%40!s, "MID link present");
         like($short, qr/\n&gt; keep this inline/,
                 "short quoted text is inline");
         like($short, qr/<a href="\Q$pfx\E#[^>]+>Long and wordy/,