From a380c9b55b39a4db6a21131332a2a5629428dded Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 7 Jul 2016 01:39:37 +0000 Subject: www: remove old footer generation code and normalize new.html We now generate all of our HTML using WwwStream which forces us to have consistent headers and footers in the HTML itself. This also makes the search-capable vs search-less installs go to the new.html endpoint to maintain consistency (in case an admin decides to enable Xapian). --- lib/PublicInbox/Feed.pm | 86 +++++++++++++------------------------------------ 1 file changed, 22 insertions(+), 64 deletions(-) (limited to 'lib/PublicInbox/Feed.pm') diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index 026a069e..65adf373 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -31,7 +31,19 @@ sub generate_thread_atom { sub generate_html_index { my ($ctx) = @_; - sub { emit_html_index($_[0], $ctx) }; + # if the 'r' query parameter is given, it is a legacy permalink + # which we must continue supporting: + my $qp = $ctx->{qp}; + if ($qp && !$qp->{r} && $ctx->{srch}) { + return PublicInbox::View::index_topics($ctx); + } + + my $env = $ctx->{env}; + my $url = $ctx->{-inbox}->base_url($env) . 'new.html'; + my $qs = $env->{QUERY_STRING}; + $url .= "?$qs" if $qs ne ''; + [302, [ 'Location', $url, 'Content-Type', 'text/plain'], + [ "Redirecting to $url\n" ] ]; } sub new_html { @@ -56,7 +68,7 @@ sub new_html { $s .= '' unless $more; return $s; } - undef; + new_html_footer($ctx, $last); }); } @@ -159,74 +171,20 @@ sub _html_index_top { "$top"; } -sub emit_html_index { - my ($res, $ctx) = @_; - my $feed_opts = get_feedopts($ctx); - my $fh = $res->([200,['Content-Type'=>'text/html; charset=UTF-8']]); - - my $max = $ctx->{max} || MAX_PER_PAGE; - $ctx->{-upfx} = ''; - - my ($footer, $param, $last); - $ctx->{seen} = {}; - $ctx->{anchor_idx} = 0; - $ctx->{fh} = $fh; - my $srch = $ctx->{srch}; - $fh->write(_html_index_top($feed_opts, $srch)); - - # if the 'r' query parameter is given, it is a legacy permalink - # which we must continue supporting: - my $qp = $ctx->{qp}; - if ($qp && !$qp->{r} && $srch) { - $last = PublicInbox::View::emit_index_topics($ctx); - $param = 'o'; - } else { - $last = emit_index_nosrch($ctx); - $param = 'r'; - } - $footer = nav_footer($ctx, $last, $feed_opts, $param); - if ($footer) { - my $list_footer = $ctx->{footer}; - $footer .= "\n\n" . $list_footer if $list_footer; - $footer = "
$footer
"; - } - $fh->write("$footer"); - $fh->close; -} - -sub emit_index_nosrch { - my ($ctx) = @_; - my $ibx = $ctx->{-inbox}; - my $fh = $ctx->{fh}; - my (undef, $last) = each_recent_blob($ctx, sub { - my ($path, $commit, $ts, $u, $subj) = @_; - $ctx->{first} ||= $commit; - - my $mime = do_cat_mail($ibx, $path) or return 0; - $fh->write(PublicInbox::View::index_entry($mime, $ctx, 1)); - 1; - }); - $last; -} - -sub nav_footer { - my ($ctx, $last, $feed_opts, $param) = @_; - my $qp = $ctx->{qp} or return ''; - my $old_r = $qp->{$param}; - my $head = ' '; +sub new_html_footer { + my ($ctx, $last) = @_; + my $qp = delete $ctx->{qp} or return; + my $old_r = $qp->{r}; + my $latest = ''; my $next = ' '; - my $first = $ctx->{first}; - my $anchor = $ctx->{anchor_idx}; if ($last) { - $next = qq!next!; + $next = qq!next!; } if ($old_r) { - $head = $ctx->{env}->{PATH_INFO}; - $head = qq!head!; + $latest = qq! latest!; } - my $atom = "{atomurl}\">Atom feed"; - "page: $next $head $atom"; + "
page: $next$latest
"; } sub each_recent_blob { -- cgit v1.2.3-24-ge0c7