about summary refs log tree commit homepage
path: root/lib/PublicInbox/WWW.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-04-18 08:25:56 +0000
committerEric Wong <e@80x24.org>2019-04-19 23:57:21 +0000
commit7a3946ef122e8218c6ce3355d7f968562212d53b (patch)
tree76b5011e71edbb37494bf1dcaa4db04f7d9882da /lib/PublicInbox/WWW.pm
parentf3b60bf095846ce9290b94a7b1d700ed7bf0f316 (diff)
downloadpublic-inbox-7a3946ef122e8218c6ce3355d7f968562212d53b.tar.gz
We will still return a 404 by default to '/' for compatibility
with users of Plack::App::Cascade or similar.  Inboxes are
sorted by modification times to help users detect activity
(similar to the /$INBOX/ topic view).

New configuration options:

* publicinbox.wwwlisting - configure the listing type
* publicinbox.<name>.hide - hide a particular inbox from the listing

See changes to public-inbox-config.pod for full descriptions
of the new options.

Requested-by: Leah Neukirchen <leah@vuxu.org>
  https://public-inbox.org/meta/871sdfzy80.fsf@gmail.com/
Diffstat (limited to 'lib/PublicInbox/WWW.pm')
-rw-r--r--lib/PublicInbox/WWW.pm14
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 268c5b8c..1f3ca157 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -68,8 +68,9 @@ sub call {
         } split(/[&;]+/, $env->{QUERY_STRING});
         $ctx->{qp} = \%qp;
 
-        # not using $env->{PATH_INFO} here since that's already decoded
+        # avoiding $env->{PATH_INFO} here since that's already decoded
         my ($path_info) = ($env->{REQUEST_URI} =~ path_re($env));
+        $path_info //= $env->{PATH_INFO};
         my $method = $env->{REQUEST_METHOD};
 
         if ($method eq 'POST') {
@@ -87,7 +88,7 @@ sub call {
 
         # top-level indices and feeds
         if ($path_info eq '/') {
-                r404();
+                www_listing($self)->call($env);
         } elsif ($path_info =~ m!$INBOX_RE\z!o) {
                 invalid_inbox($ctx, $1) || r301($ctx, $1);
         } elsif ($path_info =~ m!$INBOX_RE(?:/|/index\.html)?\z!o) {
@@ -157,6 +158,7 @@ sub preload {
         if (ref($self)) {
                 $self->cgit;
                 $self->stylesheets_prepare($_) for ('', '../', '../../');
+                $self->www_listing;
         }
 }
 
@@ -489,6 +491,14 @@ sub cgit {
         }
 }
 
+sub www_listing {
+        my ($self) = @_;
+        $self->{www_listing} ||= do {
+                require PublicInbox::WwwListing;
+                PublicInbox::WwwListing->new($self);
+        }
+}
+
 sub get_attach {
         my ($ctx, $idx, $fn) = @_;
         require PublicInbox::WwwAttach;