From: Eric Wong Date: Mon, 29 Aug 2022 09:26:39 +0000 (+0000) Subject: view: /$INBOX/: show "messages from $old to $new" X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=0093503cf22570012b3bafcc0130bfac1ea157bf;p=public-inbox.git view: /$INBOX/: show "messages from $old to $new" With the ViewVCS commit view using /$INBOX/?t=YYYYMMDDhhmmss- links, the use of `t=' may not be immediately obvious to a reader and confuse them into thinking the inbox hasn't been updated in a while. So add a header to the top of the page whenever the `t=' query parameter is used. And kill a couple of redundant variable assignments while we're at it. --- diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 466ec6cf..11ed2d76 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -20,6 +20,7 @@ use PublicInbox::WwwStream qw(html_oneshot); use PublicInbox::Reply; use PublicInbox::ViewDiff qw(flush_diff); use PublicInbox::Eml; +use POSIX qw(strftime); use Time::Local qw(timegm); use PublicInbox::Smsg qw(subject_normalized); use PublicInbox::ContentHash qw(content_hash); @@ -1161,9 +1162,10 @@ sub dump_topics { } my @out; - my $ibx = $ctx->{ibx}; - my $obfs_ibx = $ibx->{obfuscate} ? $ibx : undef; - + my $obfs_ibx = $ctx->{ibx}->{obfuscate} ? $ctx->{ibx} : undef; + if (my $note = delete $ctx->{t_note}) { + push @out, $note; # "messages from ... to ..." + } # sort by recency, this allows new posts to "bump" old topics... foreach my $topic (sort { $b->[0] <=> $a->[0] } @$order) { my ($ds, $n, $seen, $top_subj, @extra) = @$topic; @@ -1222,7 +1224,7 @@ sub pagination_footer ($$) { $next = $next ? "$next | " : ' | '; $prev .= qq[ | latest]; } - ($next || $prev) ? "
page: $next$prev
" : ''; + ($next || $prev) ? "
" : ''; } sub paginate_recent ($$) { @@ -1238,21 +1240,29 @@ sub paginate_recent ($$) { $t =~ /\A([0-9]{8,14})\z/ and $before = str2ts($1); my $msgs = $ctx->{ibx}->over->recent($opts, $after, $before); - my $nr = scalar @$msgs; - if ($nr < $lim && defined($after)) { + if (defined($after) && scalar(@$msgs) < $lim) { $after = $before = undef; $msgs = $ctx->{ibx}->over->recent($opts); - $nr = scalar @$msgs; } - my $more = $nr == $lim; + my $more = scalar(@$msgs) == $lim; my ($newest, $oldest); - if ($nr) { + if (@$msgs) { $newest = $msgs->[0]->{ts}; $oldest = $msgs->[-1]->{ts}; # if we only had $after, our SQL query in ->recent ordered if ($newest < $oldest) { ($oldest, $newest) = ($newest, $oldest); - $more = 0 if defined($after) && $after < $oldest; + $more = undef if defined($after) && $after < $oldest; + } + if (defined($after // $before)) { + my $n = strftime('%Y-%m-%d %H:%M:%S', gmtime($newest)); + my $o = strftime('%Y-%m-%d %H:%M:%S', gmtime($oldest)); + $ctx->{t_note} = <more...] +EOM + my $s = ts2str($newest); + $ctx->{prev_page} = qq[] . + 'prev (newer)'; } } if (defined($oldest) && $more) { @@ -1260,11 +1270,6 @@ sub paginate_recent ($$) { $ctx->{next_page} = qq[] . 'next (older)'; } - if (defined($newest) && (defined($before) || defined($after))) { - my $s = ts2str($newest); - $ctx->{prev_page} = qq[] . - 'prev (newer)'; - } $msgs; }