about summary refs log tree commit homepage
path: root/lib/PublicInbox/WWW.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-08-16 08:14:40 +0000
committerEric Wong <e@80x24.org>2015-08-16 08:19:53 +0000
commiteb5f82b20944d780ac3b2ff9a926c023da9468fd (patch)
tree993d57db192d18dd46216adc66158135e43860d7 /lib/PublicInbox/WWW.pm
parent7745ac38a4e2d4ae42e7192183f65c84a8e5662a (diff)
downloadpublic-inbox-eb5f82b20944d780ac3b2ff9a926c023da9468fd.tar.gz
Quick-and-dirty wiring up of to Subject: paths.
This may prove more memorizable and easier-to-share than
/t/$MESSAGE_ID.html links, but less strict.

This changes our schema version to 1, since we now
use lower-case subject paths.
Diffstat (limited to 'lib/PublicInbox/WWW.pm')
-rw-r--r--lib/PublicInbox/WWW.pm20
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 52e51c43..7fe9b85b 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -53,8 +53,13 @@ sub run {
         } elsif ($path_info =~ m!$LISTNAME_RE/t/(\S+)\.html\z!o) {
                 invalid_list_mid(\%ctx, $1, $2) || get_thread(\%ctx, $cgi);
 
+        # subject_path display
+        } elsif ($path_info =~ m!$LISTNAME_RE/s/(\S+)\.html\z!o) {
+                my $sp = $2;
+                invalid_list(\%ctx, $1) || get_subject_path(\%ctx, $cgi, $sp);
+
         # convenience redirects, order matters
-        } elsif ($path_info =~ m!$LISTNAME_RE/(m|f|t)/(\S+)\z!o) {
+        } elsif ($path_info =~ m!$LISTNAME_RE/(m|f|t|s)/(\S+)\z!o) {
                 my $pfx = $2;
                 invalid_list_mid(\%ctx, $1, $3) ||
                         redirect_mid(\%ctx, $cgi, $2);
@@ -211,6 +216,19 @@ sub get_thread {
           [ $body ] ];
 }
 
+# /$LISTNAME/s/$SUBJECT_PATH.html
+sub get_subject_path {
+        my ($ctx, $cgi, $sp) = @_;
+        $ctx->{subject_path} = $sp;
+        my $srch = searcher($ctx) or return need_search($ctx);
+        require PublicInbox::View;
+        my $foot = footer($ctx);
+        my $body = PublicInbox::View->subject_path_html($ctx, $foot, $srch) or
+                return r404();
+        [ 200, [ 'Content-Type' => 'text/html; charset=UTF-8' ],
+          [ $body ] ];
+}
+
 sub self_url {
         my ($cgi) = @_;
         ref($cgi) eq 'CGI' ? $cgi->self_url : $cgi->uri->as_string;