]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/View.pm
www: use "skel" terminology consistently
[public-inbox.git] / lib / PublicInbox / View.pm
index 69948c4a07cea5da391241571df9a93b37748b05..d8a008c7ffe01bf29862c65a3664e8a04a4b4afc 100644 (file)
@@ -8,7 +8,7 @@ use strict;
 use warnings;
 use bytes (); # only for bytes::length
 use PublicInbox::MsgTime qw(msg_datestamp);
-use PublicInbox::Hval qw/ascii_html obfuscate_addrs/;
+use PublicInbox::Hval qw(ascii_html obfuscate_addrs prurl);
 use PublicInbox::Linkify;
 use PublicInbox::MID qw/id_compress mid_escape mids mids_for_index references/;
 use PublicInbox::MsgIter;
@@ -16,7 +16,7 @@ use PublicInbox::Address;
 use PublicInbox::WwwStream;
 use PublicInbox::Reply;
 use PublicInbox::ViewDiff qw(flush_diff);
-require POSIX;
+use POSIX qw(strftime);
 use Time::Local qw(timegm);
 use PublicInbox::SearchMsg qw(subject_normalized);
 use constant COLS => 72;
@@ -123,7 +123,7 @@ sub msg_reply {
        my $info = '';
        my $ibx = $ctx->{-inbox};
        if (my $url = $ibx->{infourl}) {
-               $url = PublicInbox::Hval::prurl($ctx->{env}, $url);
+               $url = prurl($ctx->{env}, $url);
                $info = qq(\n  List information: <a\nhref="$url">$url</a>\n);
        }
 
@@ -149,7 +149,7 @@ EOF
 <hr><pre
 id=R><b>Reply instructions:</b>
 
-You may reply publically to <a
+You may reply publicly to <a
 href=#t>this message</a> via plain-text email
 using any one of the following methods:
 
@@ -208,6 +208,9 @@ sub nr_to_s ($$$) {
        $nr == 1 ? "$nr $singular" : "$nr $plural";
 }
 
+# human-friendly format
+sub fmt_ts ($) { strftime('%Y-%m-%d %k:%M', gmtime($_[0])) }
+
 # this is already inside a <pre>
 sub index_entry {
        my ($smsg, $ctx, $more) = @_;
@@ -272,7 +275,7 @@ sub index_entry {
        # scan through all parts, looking for displayable text
        $ctx->{mhref} = $mhref;
        $ctx->{rv} = \$rv;
-       msg_iter($mime, \&add_text_body, $ctx);
+       msg_iter($mime, \&add_text_body, $ctx, 1);
        delete $ctx->{rv};
 
        # add the footer
@@ -409,7 +412,7 @@ sub thread_index_entry {
 
 sub stream_thread_i { # PublicInbox::WwwStream::getline callback
        my ($nr, $ctx) = @_;
-       return unless exists($ctx->{dst});
+       return unless exists($ctx->{skel});
        my $q = $ctx->{-queue};
        while (@$q) {
                my $level = shift @$q;
@@ -422,7 +425,7 @@ sub stream_thread_i { # PublicInbox::WwwStream::getline callback
                        return ghost_index_entry($ctx, $level, $node);
                }
        }
-       join('', thread_adj_level($ctx, 0)) . ${delete $ctx->{dst}}; # skel
+       join('', thread_adj_level($ctx, 0)) . ${delete $ctx->{skel}};
 }
 
 sub stream_thread ($$) {
@@ -446,6 +449,7 @@ sub stream_thread ($$) {
        PublicInbox::WwwStream->response($ctx, 200, \&stream_thread_i);
 }
 
+# /$INBOX/$MESSAGE_ID/t/
 sub thread_html {
        my ($ctx) = @_;
        my $mid = $ctx->{mid};
@@ -462,7 +466,7 @@ sub thread_html {
        $skel .= "-- links below jump to the message on this page --\n";
        $ctx->{-upfx} = '../../';
        $ctx->{cur_level} = 0;
-       $ctx->{dst} = \$skel;
+       $ctx->{skel} = \$skel;
        $ctx->{prev_attr} = '';
        $ctx->{prev_level} = 0;
        $ctx->{root_anchor} = anchor_for($mid);
@@ -498,17 +502,17 @@ sub thread_html_i { # PublicInbox::WwwStream::getline callback
                $ctx->{-inbox}->smsg_mime($smsg) or next;
                return index_entry($smsg, $ctx, scalar @$msgs);
        }
-       my ($skel) = delete @$ctx{qw(dst msgs)};
+       my ($skel) = delete @$ctx{qw(skel msgs)};
        $$skel;
 }
 
 sub multipart_text_as_html {
-       my ($mime, $mhref, $ctx) = @_;
+       my (undef, $mhref, $ctx) = @_; # $mime = $_[0]
        $ctx->{mhref} = $mhref;
        $ctx->{rv} = \(my $rv = '');
 
        # scan through all parts, looking for displayable text
-       msg_iter($mime, \&add_text_body, $ctx);
+       msg_iter($_[0], \&add_text_body, $ctx, 1);
        ${delete $ctx->{rv}};
 }
 
@@ -719,7 +723,7 @@ sub _msg_html_prepare {
 }
 
 sub thread_skel {
-       my ($dst, $ctx, $hdr, $tpfx) = @_;
+       my ($skel, $ctx, $hdr, $tpfx) = @_;
        my $mid = mids($hdr)->[0];
        my $ibx = $ctx->{-inbox};
        my ($nr, $msgs) = $ibx->over->get_thread($mid);
@@ -729,21 +733,21 @@ sub thread_skel {
                        qq(<a\nhref="${tpfx}t.atom">Atom feed</a>);
 
        my $parent = in_reply_to($hdr);
-       $$dst .= "\n<b>Thread overview: </b>";
+       $$skel .= "\n<b>Thread overview: </b>";
        if ($nr <= 1) {
                if (defined $parent) {
-                       $$dst .= "$expand\n ";
-                       $$dst .= ghost_parent("$tpfx../", $parent) . "\n";
+                       $$skel .= "$expand\n ";
+                       $$skel .= ghost_parent("$tpfx../", $parent) . "\n";
                } else {
-                       $$dst .= "[no followups] $expand\n";
+                       $$skel .= "[no followups] $expand\n";
                }
                $ctx->{next_msg} = undef;
                $ctx->{parent_msg} = $parent;
                return;
        }
 
-       $$dst .= "$nr+ messages / $expand";
-       $$dst .= qq!  <a\nhref="#b">top</a>\n!;
+       $$skel .= "$nr+ messages / $expand";
+       $$skel .= qq!  <a\nhref="#b">top</a>\n!;
 
        # nb: mutt only shows the first Subject in the index pane
        # when multiple Subject: headers are present, so we follow suit:
@@ -753,7 +757,7 @@ sub thread_skel {
        $ctx->{cur} = $mid;
        $ctx->{prev_attr} = '';
        $ctx->{prev_level} = 0;
-       $ctx->{dst} = $dst;
+       $ctx->{skel} = $skel;
 
        # reduce hash lookups in skel_dump
        $ctx->{-obfs_ibx} = $ibx->{obfuscate} ? $ibx : undef;
@@ -801,11 +805,11 @@ sub html_footer {
        my $ibx = $ctx->{-inbox} if $ctx;
        my $upfx = '../';
        my $tpfx = '';
-       my $idx = $standalone ? " <a\nhref=\"$upfx\">index</a>" : '';
+       my $skel = $standalone ? " <a\nhref=\"$upfx\">index</a>" : '';
        my $irt = '';
-       if ($idx && $ibx->over) {
-               $idx .= "\n";
-               thread_skel(\$idx, $ctx, $hdr, $tpfx);
+       if ($skel && $ibx->over) {
+               $skel .= "\n";
+               thread_skel(\$skel, $ctx, $hdr, $tpfx);
                my ($next, $prev);
                my $parent = '       ';
                $next = $prev = '    ';
@@ -840,7 +844,7 @@ sub html_footer {
        }
        $rhref ||= '#R';
        $irt .= qq(<a\nhref="$rhref">reply</a>);
-       $irt .= $idx;
+       $irt .= $skel;
 }
 
 sub linkify_ref_no_over {
@@ -926,8 +930,6 @@ sub missing_thread {
        PublicInbox::ExtMsg::ext_msg($ctx);
 }
 
-sub fmt_ts { POSIX::strftime('%Y-%m-%d %k:%M', gmtime($_[0])) }
-
 sub dedupe_subject {
        my ($prev_subj, $subj, $val) = @_;
 
@@ -951,12 +953,12 @@ sub skel_dump {
        my ($ctx, $level, $node) = @_;
        my $smsg = $node->{smsg} or return _skel_ghost($ctx, $level, $node);
 
-       my $dst = $ctx->{dst};
+       my $skel = $ctx->{skel};
        my $cur = $ctx->{cur};
        my $mid = $smsg->{mid};
 
        if ($level == 0 && $ctx->{skel_dump_roots}++) {
-               $$dst .= delete $ctx->{sl_note} || '';
+               $$skel .= delete($ctx->{sl_note}) || '';
        }
 
        my $f = ascii_html($smsg->from_name);
@@ -985,7 +987,7 @@ sub skel_dump {
        if ($cur) {
                if ($cur eq $mid) {
                        delete $ctx->{cur};
-                       $$dst .= "<b>$d<a\nid=r\nhref=\"#t\">".
+                       $$skel .= "<b>$d<a\nid=r\nhref=\"#t\">".
                                 "$attr [this message]</a></b>\n";
                        return 1;
                } else {
@@ -1025,7 +1027,7 @@ sub skel_dump {
        } else {
                $m = $ctx->{-upfx}.mid_escape($mid).'/';
        }
-       $$dst .=  $d . "<a\nhref=\"$m\"$id>" . $end;
+       $$skel .=  $d . "<a\nhref=\"$m\"$id>" . $end;
        1;
 }
 
@@ -1050,8 +1052,7 @@ sub _skel_ghost {
        } else {
                $d .= qq{&lt;<a\nhref="$href">$html</a>&gt;\n};
        }
-       my $dst = $ctx->{dst};
-       $$dst .= $d;
+       ${$ctx->{skel}} .= $d;
        1;
 }
 
@@ -1159,10 +1160,8 @@ sub dump_topics {
        200;
 }
 
-sub ts2str ($) {
-       my ($ts) = @_;
-       POSIX::strftime('%Y%m%d%H%M%S', gmtime($ts));
-}
+# only for the t= query parameter passed to overview DB
+sub ts2str ($) { strftime('%Y%m%d%H%M%S', gmtime($_[0])) };
 
 sub str2ts ($) {
        my ($yyyy, $mon, $dd, $hh, $mm, $ss) = unpack('A4A2A2A2A2A2', $_[0]);