107 lines
2.9 KiB
Perl
107 lines
2.9 KiB
Perl
package WebGUI::Newsletter::Admin;
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Carp 'confess';
|
|
|
|
use WebGUI::Asset;
|
|
use WebGUI::AdminConsole;
|
|
|
|
sub getAdminConsole {
|
|
my $self = shift;
|
|
|
|
my $ac = WebGUI::AdminConsole->new( $self->session );
|
|
|
|
return $ac;
|
|
}
|
|
|
|
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_createMailing {
|
|
my $self = shift;
|
|
my $session = $self->session;
|
|
my $form = $session->form;
|
|
|
|
# TODO: test if assetId and issueId are valid.
|
|
my $assetId = $form->guid( 'assetId' );
|
|
my $issueId = $form->guid( 'issueId' );
|
|
|
|
my $mailing = WebGUI::Mailing->create( $session, {
|
|
assetId => $assetId,
|
|
issueId => $issueId,
|
|
active => 0,
|
|
} );
|
|
|
|
return $self->www_view;
|
|
}
|
|
|
|
sub www_view {
|
|
my $self = shift;
|
|
my $session = $self->session;
|
|
my $url = $session->url;
|
|
|
|
my $letters = $self->getMailables;
|
|
|
|
my @newsletterLoop;
|
|
foreach my $letter ( @{ $letters } ) {
|
|
my $letterId = $letter->getId;
|
|
|
|
my @issues;
|
|
foreach my $issue ( @{ $letter->getIssues } ) {
|
|
my $issueId = $issue->getId;
|
|
|
|
my @mailings;
|
|
my $it = WebGUI::Mailing->getAllIterator( $session, { sequenceKeyValue => $issueId } );
|
|
while ( my $mailing = $it->() ) {
|
|
push @mailings, {
|
|
%{ $mailing->get },
|
|
status => $mailing->getStatusLine,
|
|
sendTestUrl => $url->page('newsletter=mailing;func=sendTestEmails;id='.$mailing->getId),
|
|
};
|
|
};
|
|
|
|
push @issues, {
|
|
%{ $issue->get },
|
|
url => $issue->getUrl,
|
|
createMailingUrl => $url->page("newsletter=manage;func=createMailing;assetId=$letterId;issueId=$issueId"),
|
|
previewUrl => $letter->getUrl( "func=previewEmail;issueId=$issueId" ),
|
|
editUrl => $issue->getUrl( 'func=edit' ),
|
|
sendUrl => '',
|
|
sendTestUrl => '',
|
|
mailing_loop => \@mailings,
|
|
};
|
|
}
|
|
|
|
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 $self->getAdminConsole->render( $template->process( $var ), 'Manage newsletters' );
|
|
}
|
|
|
|
1;
|
|
|