about summary refs log tree commit homepage
path: root/lib/PublicInbox/Feed.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2014-04-28 04:56:47 +0000
committerEric Wong <e@80x24.org>2014-04-28 04:56:47 +0000
commitebbd4ea1b468d80f7ddd446ed1e14961b62e8c03 (patch)
tree78169a2bfc2b5cf8730d787cdb14b8901ee3c6ef /lib/PublicInbox/Feed.pm
parent59e7af124580f46bdb2dec21273607599ba1e8f9 (diff)
downloadpublic-inbox-ebbd4ea1b468d80f7ddd446ed1e14961b62e8c03.tar.gz
This might be slightly cleaner, though generating the base URL
now has an ugly condition in it.
Diffstat (limited to 'lib/PublicInbox/Feed.pm')
-rw-r--r--lib/PublicInbox/Feed.pm21
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm
index bddba912..22070370 100644
--- a/lib/PublicInbox/Feed.pm
+++ b/lib/PublicInbox/Feed.pm
@@ -109,16 +109,13 @@ sub nav_footer {
         my $old_r = $cgi->param('r');
         my $prev = '    ';
         my $next = '    ';
-        my %opts = (-path => 1, -query => 1, -relative => 1);
 
         if ($last) {
-                $cgi->param('r', $last);
-                $next = $cgi->url(%opts);
+                $next = $cgi->path_info . "?r=$last";
                 $next = qq!<a href="$next">next</a>!;
         }
         if ($first && $old_r) {
-                $cgi->param('r', "$first..");
-                $prev = $cgi->url(%opts);
+                $prev = $cgi->path_info . "?r=$first..";
                 $prev = qq!<a href="$prev">prev</a>!;
         }
         "$prev $next";
@@ -213,14 +210,20 @@ sub get_feedopts {
         }
         my $url_base;
         if ($cgi) {
-                my $cgi_url = $cgi->url(-path=>1, -relative=>1);
-                my $base = $cgi->url(-base);
-                $url_base = $cgi_url;
+                my $path_info = $cgi->path_info;
+                my $base;
+                if (ref($cgi) eq 'CGI') {
+                        $base = $cgi->url(-base);
+                } else {
+                        $base = "${$cgi->base}";
+                        $base =~ s!/\z!!;
+                }
+                $url_base = $path_info;
                 if ($url_base =~ s!/(?:|index\.html)?\z!!) {
                         $rv{atomurl} = "$base$url_base/atom.xml";
                 } else {
                         $url_base =~ s!/atom\.xml\z!!;
-                        $rv{atomurl} = $base . $cgi_url;
+                        $rv{atomurl} = $base . $path_info;
                         $url_base = $base . $url_base; # XXX is this needed?
                 }
         } else {