about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-09-04 05:33:17 +0000
committerEric Wong <e@80x24.org>2015-09-04 05:51:24 +0000
commit4dd4e8458d834889eb45bfe2f5ee67be297e7319 (patch)
tree300663e011e3055ef8d6368c2795b9d702449887 /lib
parent943b64d1b509d595f1034821605e3b0c69ce4b25 (diff)
downloadpublic-inbox-4dd4e8458d834889eb45bfe2f5ee67be297e7319.tar.gz
No point in repeating authorship when PATCH messages are
threaded and it's obvious from the top message who the author
is of the series:

 [this message] - John Smith @ 2015-09-04 00:04:20 UTC
  ` [PATCH 1/4] view: eliminate redundant [threaded|flat] link
  ` [PATCH 2/4] view: one line for thread subjects
  ` [PATCH 3/4] view: adjust spacing and indentation of index threads
  ` [PATCH 4/4] view: add missing newline to inline dump
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/View.pm23
1 files changed, 17 insertions, 6 deletions
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 6b717035..d025c993 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -465,6 +465,8 @@ sub thread_inline {
                 cur => $mid,
                 parent_cmp => defined $parent ? $parent : '',
                 parent => $parent,
+                prev_attr => '',
+                prev_level => 0,
         };
         for (thread_results(load_results($res))->rootset) {
                 inline_dump($dst, $state, $upfx, $_, 0);
@@ -691,15 +693,24 @@ sub _inline_header {
         my $mid = mid_clean($mime->header('Message-ID'));
         my $f = $mime->header('X-PI-From');
         my $d = _msg_date($mime);
-        $f = PublicInbox::Hval->new($f);
-        $d = PublicInbox::Hval->new($d);
-        $f = $f->as_html;
-        $d = $d->as_html . ' UTC';
+        $f = PublicInbox::Hval->new($f)->as_html;
+        $d = PublicInbox::Hval->new($d)->as_html;
+        my $attr = "$f @ $d";
+        $state->{first_level} ||= $level;
+        if ($attr ne $state->{prev_attr} || $state->{prev_level} > $level) {
+                $state->{prev_attr} = $attr;
+                $attr = ' - ' . $attr;
+                $attr .= ' UTC' if $level >= $state->{first_level};
+        } else {
+                $attr = '';
+        }
+        $state->{prev_level} = $level;
+
         if ($cur) {
                 if ($cur eq $mid) {
                         delete $state->{cur};
                         $$dst .= "$pfx` <b><a\nid=\"r\"\nhref=\"#t\">".
-                                 "[this message]</a></b> by $f @ $d\n";
+                                 "[this message]</a></b>$attr\n";
 
                         return;
                 }
@@ -722,7 +733,7 @@ sub _inline_header {
         my $m = PublicInbox::Hval->new_msgid($mid);
         $m = $upfx . '../' . $m->as_href . '/';
         if (defined $s) {
-                $$dst .= "$pfx` <a\nhref=\"$m\">$s</a> by $f @ $d\n";
+                $$dst .= "$pfx` <a\nhref=\"$m\">$s</a>$attr\n";
         } else {
                 $$dst .= "$pfx` <a\nhref=\"$m\">$f @ $d</a>\n";
         }