webgui_newsletter/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm
2010-05-26 10:02:09 +02:00

118 lines
3.3 KiB
Perl

package WebGUI::Asset::Wobject::NewsletterCollection;
use strict;
use warnings;
use 5.010;
use Class::C3;
use WebGUI::User::SpecialState;
use base qw{
WebGUI::AssetAspect::Mailable
WebGUI::AssetAspect::Subscriber
WebGUI::Asset::Wobject
};
#----------------------------------------------------------------------------
sub definition {
my $class = shift;
my $session = shift;
my $definition = shift;
my $i18n = WebGUI::International->new( $session, 'Asset_NewsletterCollection' );
tie my %properties, 'Tie::IxHash', (
);
push @{ $definition }, {
assetName => $i18n->echo('newsletter'),
icon => 'newWobject.gif',
autoGenerateForms => 1,
tableName => 'NewsletterCollection',
className => 'WebGUI::Asset::Wobject::NewsletterCollection',
properties => \%properties
};
return $class->SUPER::definition( $session, $definition );
}
#----------------------------------------------------------------------------
sub getIssues {
my $self = shift;
my $issues = $self->getLineage( [ 'children' ], {
returnObjects => 1,
orderByClause => 'revisionDate desc',
} );
return $issues;
}
#----------------------------------------------------------------------------
sub getRecipients {
my $self = shift;
my $db = $self->session->db;
return $self->getSubscriptionGroup->getUsers;
}
#----------------------------------------------------------------------------
sub generateEmailContent {
my $self = shift;
my $issueId = shift;
my $session = $self->session;
my $form = $session->form;
my $issue = WebGUI::Asset->newByDynamicClass( $session, $issueId );
return "Invalid issueId [$issueId]" unless $issue;
$issue->prepareView;
return $issue->view;
}
##----------------------------------------------------------------------------
#sub prepareView {
# my $self = shift;
# $self->SUPER::prepareView();
# my $template = WebGUI::Asset::Template->new( $self->session, $self->get("templateIdView") );
# $template->prepare($self->getMetaDataAsTemplateVariables);
# $self->{_viewTemplate} = $template;
#}
#----------------------------------------------------------------------------
sub view {
my $self = shift;
my $session = $self->session;
my $output = $self->getToolbar if $session->var->isAdminOn;
my $issues = $self->getIssues;
return $output . "No issues yet" unless scalar @{ $issues };
$output .= $self->getSubscriptionForm;
# $output .= $self->isSubscribed
# ? '<p><a href="' . $self->getUrl( 'func=unsubscribe' ) . '">Unsubscribe</a></p>'
# : '<p><a href="' . $self->getUrl( 'func=subscribe' ) . '">Subscribe</a></p>'
# ;
$output .= '<p>Issues: <ul>';
$output .=
join '',
map {
'<li>'
.'<a href="' . $_->getUrl . '">' . $_->get('title') . '</a>'
.' :: '
.' <a href="' .$self->getUrl('func=previewEmail;issueId='.$_->getId.';userId=3').'">preview</a>'
.'</li>'
}
@{ $issues };
$output .= '</ul></p>';
$issues->[0]->prepareView;
$output .= $issues->[0]->view;
return $output;
}
1;