about summary refs log tree commit homepage
path: root/lib/PublicInbox/SearchView.pm
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-08-27 22:04:59 +0000
committerEric Wong <e@yhbt.net>2020-08-28 04:25:15 +0000
commit6c853f5256f3a324c018a37a9e8a6b9fc8fdc063 (patch)
treee8cbeb6cecde0e25ea4bc16d6ea53f19a42671c7 /lib/PublicInbox/SearchView.pm
parent29c5f2a6fc3b86306a5dbeadfae061d06f2bc6dd (diff)
downloadpublic-inbox-6c853f5256f3a324c018a37a9e8a6b9fc8fdc063.tar.gz
Sometimes it's useful to quickly get to threads and messages
which are contemporaries of the current thread/message being
focused on.  This hopefully improves navigation by making:

a) the top line (where $INBOX_DIR/description) is shown
   a link to the latest topics in search results and
   per-thread/per-message views.

b) providing a link to contemporaries ("~YYYY-MM-DD") at
   around the thread overview skeleton area for per-thread
   and per-message views
Diffstat (limited to 'lib/PublicInbox/SearchView.pm')
-rw-r--r--lib/PublicInbox/SearchView.pm11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm
index 76428dfb..7521a66d 100644
--- a/lib/PublicInbox/SearchView.pm
+++ b/lib/PublicInbox/SearchView.pm
@@ -5,9 +5,10 @@
 package PublicInbox::SearchView;
 use strict;
 use v5.10.1;
+use List::Util qw(max);
 use URI::Escape qw(uri_unescape);
 use PublicInbox::Smsg;
-use PublicInbox::Hval qw(ascii_html obfuscate_addrs mid_href);
+use PublicInbox::Hval qw(ascii_html obfuscate_addrs mid_href fmt_ts);
 use PublicInbox::View;
 use PublicInbox::WwwAtomStream;
 use PublicInbox::WwwStream qw(html_oneshot);
@@ -109,13 +110,15 @@ sub mset_summary {
                         };
                         next;
                 };
+                $ctx->{-t_max} //= $smsg->{ts};
+
                 my $s = ascii_html($smsg->{subject});
                 my $f = ascii_html($smsg->{from_name});
                 if ($obfs_ibx) {
                         obfuscate_addrs($obfs_ibx, $s);
                         obfuscate_addrs($obfs_ibx, $f);
                 }
-                my $date = PublicInbox::View::fmt_ts($smsg->{ds});
+                my $date = fmt_ts($smsg->{ds});
                 my $mid = mid_href($smsg->{mid});
                 $s = '(no subject)' if $s eq '';
                 $$res .= qq{$rank. <b><a\nhref="$mid/">}.
@@ -295,6 +298,10 @@ sub mset_thread {
         PublicInbox::View::walk_thread($rootset, $ctx,
                 \&PublicInbox::View::pre_thread);
 
+        # link $INBOX_DIR/description text to "recent" view around
+        # the newest message in this result set:
+        $ctx->{-t_max} = max(map { delete $_->{ts} } @$msgs);
+
         @$msgs = reverse @$msgs if $r;
         $ctx->{msgs} = $msgs;
         PublicInbox::WwwStream::aresponse($ctx, 200, \&mset_thread_i);