]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/WWW.pm
mbox: generate Archived-At, List-Post, List-Archive headers
[public-inbox.git] / lib / PublicInbox / WWW.pm
index e8b35cb2b0bd7aa2e05c89d5dd6b43e0578221f5..fb57163ef44499abfe03b487617ff87f69dbe661 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014, Eric Wong <normalperson@yhbt.net> and all contributors
+# Copyright (C) 2014-2015 all contributors <meta@public-inbox.org>
 # License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt)
 #
 # We focus on the lowest common denominators here:
@@ -42,6 +42,10 @@ sub run {
        } elsif ($path_info =~ m!$LISTNAME_RE/$MID_RE/$END_RE\z!o) {
                msg_page($ctx, $1, $2, $3);
 
+       # in case people leave off the trailing slash:
+       } elsif ($path_info =~ m!$LISTNAME_RE/$MID_RE/(f|T|t)\z!o) {
+               r301($ctx, $1, $2, $3 eq 't' ? 't/#u' : $3);
+
        # convenience redirects order matters
        } elsif ($path_info =~ m!$LISTNAME_RE/([^/]{2,})\z!o) {
                r301($ctx, $1, $2);
@@ -63,6 +67,7 @@ sub preload {
 
        eval {
                require PublicInbox::Search;
+               require PublicInbox::SearchView;
                require PublicInbox::Mbox;
                require IO::Compress::Gzip;
        };
@@ -74,6 +79,7 @@ sub r404 {
        my ($ctx) = @_;
        if ($ctx && $ctx->{mid}) {
                require PublicInbox::ExtMsg;
+               searcher($ctx);
                return PublicInbox::ExtMsg::ext_msg($ctx);
        }
        r(404, 'Not Found');
@@ -125,7 +131,12 @@ sub get_index {
        require PublicInbox::Feed;
        my $srch = searcher($ctx);
        footer($ctx);
-       PublicInbox::Feed::generate_html_index($ctx);
+       if (defined $ctx->{cgi}->param('q')) {
+               require PublicInbox::SearchView;
+               PublicInbox::SearchView::sres_top_html($ctx);
+       } else {
+               PublicInbox::Feed::generate_html_index($ctx);
+       }
 }
 
 # just returns a string ref for the blob in the current ctx
@@ -152,7 +163,7 @@ sub get_mid_txt {
        my ($ctx) = @_;
        my $x = mid2blob($ctx) or return r404($ctx);
        require PublicInbox::Mbox;
-       PublicInbox::Mbox::emit1($x);
+       PublicInbox::Mbox::emit1($ctx, $x);
 }
 
 # /$LISTNAME/$MESSAGE_ID/                   -> HTML content (short quotes)
@@ -354,6 +365,9 @@ sub legacy_redirects {
        } elsif ($path_info =~ m!$LISTNAME_RE/(\S+/\S+)/$END_RE\z!o) {
                msg_page($ctx, $1, $2, $3);
 
+       # in case people leave off the trailing slash:
+       } elsif ($path_info =~ m!$LISTNAME_RE/(\S+/\S+)/(f|T|t)\z!o) {
+               r301($ctx, $1, $2, $3 eq 't' ? 't/#u' : $3);
        } else {
                r404();
        }