CGI-Application-NetNewsIface
view release on metacpan or search on metacpan
lib/CGI/Application/NetNewsIface.pm view on Meta::CPAN
{
my $s = $_;
chomp($s);
my $s_esc = CGI::escapeHTML($s);
($s =~ /^(Subject|From):/ ? "<b>$s_esc</b>" : $s_esc) . "\n";
}
@{$self->_get_headers($head)},
) .
"<br />\n" .
join("",
map {
my $s = $_;
chomp($s);
CGI::escapeHTML($s). "\n";
}
@$body
);
return
$self->tt_process(
'article_display_page.tt',
{
'group' => $group,
'article' => $article,
'title' => "$group ($article)",
'text' => $article_text,
'show_headers' => $self->_get_show_headers(),
'first_art' => $first_article,
'last_art' => $last_article,
'thread' => $self->_get_thread($nntp),
},
);
}
sub _thread_render_node
{
my ($self, $node, $current) = @_;
my $subj = CGI::escapeHTML($node->{subject});
my $node_text =
($node->{idx} == $current) ?
"<b>$subj</b>" :
qq|<a href="$node->{idx}">$subj</a>|
;
return "<li>$node_text " .
CGI::escapeHTML($node->{from}) .
(exists($node->{subs}) ?
("<br /><ul>" .
join("",
map
{$self->_thread_render_node($_, $current) }
@{$node->{subs}}
) .
"</ul>") :
""
) .
"</li>";
}
# TODO :
# 2. Make the current article non-linked and bold.
# 3. Add the date (?).
sub _get_thread
{
my ($self, $nntp) = @_;
my $article = $self->param('article');
my $cache = CGI::Application::NetNewsIface::Cache::DBI->new(
{
'nntp' => $nntp,
'dsn' => $self->param('dsn'),
},
);
$cache->select($self->param('group'));
my ($thread, $coords) = $cache->get_thread($article);
return "<ul>" . $self->_thread_render_node($thread, $article) . "</ul>";
}
sub _css
{
my $self = shift;
$self->header_props(-type => 'text/css');
return <<"EOF";
.articles th, .articles td
{
vertical-align:top;
text-align: left;
}
.articles
{
border-collapse: collapse;
}
.articles td, .articles th
{
border: 1.5pt black solid;
padding: 2pt;
}
EOF
}
=head2 $cgiapp->update_group($group)
Updates the cache records for the NNTP group C<$group>. This method is used
for maintenance, to make sure a script loads promptly.
=cut
sub update_group
{
my $self = shift;
my $group = shift;
my $cache = CGI::Application::NetNewsIface::Cache::DBI->new(
{
'nntp' => $self->_get_nntp(),
'dsn' => $self->param('dsn'),
},
);
$cache->select($group);
( run in 1.272 second using v1.01-cache-2.11-cpan-39bf76dae61 )