/usr/local/CPAN/MKDoc-Forum/MKDoc/Forum/Plugin/View.pm
package MKDoc::Forum::Plugin::View;
use warnings;
use strict;
use base qw /MKDoc::Forum::Plugin::List/;
sub activate
{
my $self = shift;
my $uid = $self->uid() || return;
my $mbox = $self->mbox() || return;
$::MKD_IMAP && $::MKD_IMAP->connect() or return;
$::MKD_IMAP->set_mbox ($mbox);
$::MKD_IMAP->mbox_exists() || return;
MKDoc::Core::Plugin::activate ($self, @_) || return;
$self->_prefetch();
$self->message() || return;
return 1;
}
sub current_slice
{
my $self = shift;
my $uid = $self->uid() || return;
my $count;
for my $slice (@{$self->{slices}})
{
for (@{$slice->{uids}})
{
return $slice if ($uid == $_);
}
}
return $self->SUPER::current_slice();
}
sub message
{
my $self = shift;
my $uid = $self->uid();
my $thread = $self->top_thread;
return $thread->get ($uid);
}
sub mbox
{
my $self = shift;
my $req = $self->request();
my $path = $req->path_info();
my $hint = $self->uri_hint();
my ($mbox) = $path =~ /^\/.$hint\/(.*)\/\d+.html$/;
return $mbox;
}
sub uid
{
my $self = shift;
my $req = $self->request();
my $path = $req->path_info();
my $hint = $self->uri_hint();
my ($uid) = $path =~ /^\/.$hint\/.*\/(\d+).html$/;
return $uid;
}
sub uri
{
my $self = shift;
my %args = @_;
my $mbox = delete $args{'mbox'} || $self->mbox();
my $uid = delete $args{'uid'} || $self->uid();
my $hint = $self->uri_hint();
local *location;
*location = sub { "/.$hint/$mbox/$uid.html" };
return $self->SUPER::uri (%args);
}
1;
__END__