Adding basis of nl manager.

This commit is contained in:
Martin Kamerbeek 2010-04-22 16:20:03 +02:00
parent 0fa97d2d9d
commit af40a772a9
4 changed files with 98 additions and 21 deletions

View file

@ -24,25 +24,25 @@ sub canUnsubscribe {
return !$self->session->user->isVisitor && $self->isSubscribed; return !$self->session->user->isVisitor && $self->isSubscribed;
} }
#---------------------------------------------------------------------------- ##----------------------------------------------------------------------------
sub configureMailingForm { #sub configureMailingForm {
my $self = shift; # my $self = shift;
my $f = $self->next::method; # my $f = $self->next::method;
#
tie my %issues, 'Tie::IxHash', ( # tie my %issues, 'Tie::IxHash', (
'' => 'Choose issue...', # '' => 'Choose issue...',
map { $_->getId => $_->getTitle } # map { $_->getId => $_->getTitle }
@{ $self->getIssues } # @{ $self->getIssues }
); # );
#
$f->selectBox( # $f->selectBox(
name => $issue, # name => 'issue',
label => 'Issue', # label => 'Issue',
options => $self->getIssues # options => $self->getIssues
); # );
#
return $f; # return $f;
} #}
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
sub definition { sub definition {
@ -80,7 +80,8 @@ sub getIssues {
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
sub getRecipients { sub getRecipients {
my $self = shift; my $self = shift;
my $db = $self->session->db;
my @subscribers = $db->buildArray( 'select userId from NewsletterCollection_subscriptions where assetId=?', [ my @subscribers = $db->buildArray( 'select userId from NewsletterCollection_subscriptions where assetId=?', [
$self->getId, $self->getId,

View file

@ -0,0 +1,21 @@
package WebGUI::Content::NewsletterManager;
use strict;
use warnings;
sub handler {
my $session = shift;
my $form = $session->form;
return unless $form->get('newsletter') eq 'manage';
my $func = 'www_' . ( $form->get('func') || 'view' );
my $nl = WebGUI::Newsletter::Admin->new( $session );
return unless $nl->can( $func );
return $nl->$func;
}
1;

View file

@ -0,0 +1,55 @@
package WebGUI::Newsletter::Admin;
use strict;
use warnings;
use Carp 'confess';
sub getMailables {
my $self = shift;
return WebGUI::Asset->getRoot( $self->session )->getLineage( ['descendants'], {
returnObjects => 1,
whereClause => 'assetData.assetId in (select distinct assetId from assetAspectMailable)',
} );
}
sub new {
my $class = shift;
my $session = shift || confess 'No session passed';
bless { _session => $session }, $class;
}
sub session {
return (shift)->{ _session };
}
sub www_view {
my $self = shift;
my $letters = $self->getMailables;
my @newsletterLoop;
foreach my $letter ( @{ $letters } ) {
my @issues =
map { $_->get }
@{ $letter->getIssues };
push @newsletterLoop, {
%{ $letter->get },
issue_loop => \@issues,
issueCount => scalar( @issues ),
};
}
my $var = { newsletter_loop => \@newsletterLoop };
my $template = WebGUI::Asset::Template->new( $self->session, 'FTfNhWI8KJOwLzFUl5rYeQ' );
return $template->process( $var );
}
1;

Binary file not shown.