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