package PublicInbox::View;
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::Linkify;
my $irt;
my $obfs_ibx = $ctx->{-obfs_ibx};
+ $subj = '(no subject)' if $subj eq '';
my $rv = "<a\nhref=#e$id\nid=m$id>*</a> ";
$subj = '<b>'.ascii_html($subj).'</b>';
obfuscate_addrs($obfs_ibx, $subj) if $obfs_ibx;
sub stream_thread ($$) {
my ($rootset, $ctx) = @_;
- my $inbox = $ctx->{-inbox};
+ my $ibx = $ctx->{-inbox};
my @q = map { (0, $_) } @$rootset;
my $level;
my $smsg;
my $node = shift @q or next;
my $cl = $level + 1;
unshift @q, map { ($cl, $_) } @{$node->{children}};
- $smsg = $inbox->smsg_mime($node->{smsg}) and last;
+ $smsg = $ibx->smsg_mime($node->{smsg}) and last;
}
return missing_thread($ctx) unless $smsg;
- $ctx->{-obfs_ibx} = $inbox->{obfuscate} ? $inbox : undef;
+ $ctx->{-obfs_ibx} = $ibx->{obfuscate} ? $ibx : undef;
$ctx->{-title_html} = ascii_html($smsg->subject);
$ctx->{-html_tip} = thread_index_entry($ctx, $level, $smsg);
$smsg = undef;
my $node = shift @q or next;
my $cl = $level + 1;
unshift @q, map { ($cl, $_) } @{$node->{children}};
- if ($smsg = $inbox->smsg_mime($node->{smsg})) {
+ if ($smsg = $ibx->smsg_mime($node->{smsg})) {
return thread_index_entry($ctx, $level, $smsg);
} else {
return ghost_index_entry($ctx, $level, $node);
$ctx->{prev_level} = 0;
$ctx->{root_anchor} = anchor_for($mid);
$ctx->{mapping} = {};
- $ctx->{s_nr} = "$nr+ messages in thread";
+ $ctx->{s_nr} = ($nr > 1 ? "$nr+ messages" : 'only message')
+ .' in thread';
my $rootset = thread_results($ctx, $msgs);
# reduce hash lookups in pre_thread->skel_dump
- my $inbox = $ctx->{-inbox};
- $ctx->{-obfs_ibx} = $inbox->{obfuscate} ? $inbox : undef;
+ my $ibx = $ctx->{-inbox};
+ $ctx->{-obfs_ibx} = $ibx->{obfuscate} ? $ibx : undef;
walk_thread($rootset, $ctx, *pre_thread);
$skel .= '</pre>';
# flat display: lazy load the full message from smsg
my $smsg;
while (my $m = shift @$msgs) {
- $smsg = $inbox->smsg_mime($m) and last;
+ $smsg = $ibx->smsg_mime($m) and last;
}
return missing_thread($ctx) unless $smsg;
$ctx->{-title_html} = ascii_html($smsg->subject);
return unless $msgs;
$smsg = undef;
while (my $m = shift @$msgs) {
- $smsg = $inbox->smsg_mime($m) and last;
+ $smsg = $ibx->smsg_mime($m) and last;
}
return index_entry($smsg, $ctx, scalar @$msgs) if $smsg;
$msgs = undef;
$ctx->{-apfx} = join('/', @idx);
$ctx->{-anchors} = {}; # attr => filename
$ctx->{-diff} = $diff = [];
+ delete $ctx->{-long_path};
my $spfx;
if ($ibx->{-repo_objs}) {
if (index($upfx, '//') >= 0) { # absolute URL (Atom feeds)
my $subj = $hdr->header('Subject');
defined $subj or $subj = '';
+ $subj = '(no subject)' if $subj eq '';
$ctx->{prev_subj} = [ split(/ /, $srch->subject_normalized($subj)) ];
$ctx->{cur} = $mid;
$ctx->{prev_attr} = '';
if ($x) {
$subj = $x->subject;
$subj = $srch->subject_normalized($subj);
+ $subj = '(no subject)' if $subj eq '';
$ds = $x->ds;
if ($level == 0) {
$topic = [ $ds, 1, { $subj => $mid }, $subj ];