]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/WWW.pm
update copyright headers and email addresses
[public-inbox.git] / lib / PublicInbox / WWW.pm
index 6eebf628c8692761b7033628d29114ac9c880abb..508abf73856c3daf08614a9342b91670280cad5f 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,10 +42,9 @@ sub run {
        } elsif ($path_info =~ m!$LISTNAME_RE/$MID_RE/$END_RE\z!o) {
                msg_page($ctx, $1, $2, $3);
 
-       # some Message-IDs have slashes in them and the HTTP server
-       # may try to be clever and unescape them :<
-       } 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/$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) {
@@ -68,6 +67,7 @@ sub preload {
 
        eval {
                require PublicInbox::Search;
+               require PublicInbox::SearchView;
                require PublicInbox::Mbox;
                require IO::Compress::Gzip;
        };
@@ -79,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');
@@ -129,8 +130,14 @@ sub get_index {
        my ($ctx) = @_;
        require PublicInbox::Feed;
        my $srch = searcher($ctx);
+       my $q = $ctx->{cgi}->param('q');
        footer($ctx);
-       PublicInbox::Feed::generate_html_index($ctx);
+       if (defined $q) {
+               require PublicInbox::SearchView;
+               PublicInbox::SearchView::sres_top_html($ctx, $q);
+       } else {
+               PublicInbox::Feed::generate_html_index($ctx);
+       }
 }
 
 # just returns a string ref for the blob in the current ctx
@@ -354,6 +361,14 @@ sub legacy_redirects {
        } elsif ($path_info =~ m!$LISTNAME_RE/f/(\S+)\z!o) {
                r301($ctx, $1, $2, 'f/');
 
+       # some Message-IDs have slashes in them and the HTTP server
+       # may try to be clever and unescape them :<
+       } 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();
        }