Adding nl settings screen

This commit is contained in:
Martin Kamerbeek 2010-05-12 18:55:17 +02:00
parent a9321d32da
commit ef172e2228
4 changed files with 172 additions and 11 deletions

View file

@ -12,13 +12,11 @@ sub handler {
my $module = $form->get('newsletter');
my $class =
$module eq 'manage' ? 'WebGUI::Newsletter::Admin'
$module eq 'manage' ? 'WebGUI::Mailing::Admin'
: $module eq 'mailing' ? 'WebGUI::Mailing'
: return
;
# return unless $form->get('newsletter') eq 'manage';
my $func = 'www_' . ( $form->get('func') || 'view' );
my $id = $form->get('id');
@ -26,11 +24,6 @@ sub handler {
return $object->$func if $object->can( $func );
return;
# my $nl = WebGUI::Newsletter::Admin->new( $session );
# return unless $nl->can( $func );
#
# return $nl->$func;
}
1;

View file

@ -4,7 +4,7 @@ use strict;
use warnings;
use Carp;
use WebGUI::Newsletter::Admin;
use WebGUI::Mailing::Admin;
use base 'WebGUI::Crud';
@ -155,12 +155,13 @@ sub www_sendTestEmailsConfirm {
my $session = $self->session;
my $form = $session->form;
my $to = $form->email( 'to' );
# my $to = $form->email( 'to' );
my $to = $form->get( 'to' );
my @userIds = $form->selectList( 'userIds' );
$self->queueTestEmails( $to, \@userIds );
return WebGUI::Newsletter::Admin->new( $session )->www_view;
return WebGUI::Mailing::Admin->new( $session )->www_view;
}

155
lib/WebGUI/Mailing/Admin.pm Normal file
View file

@ -0,0 +1,155 @@
package WebGUI::Mailing::Admin;
use strict;
use warnings;
use Carp 'confess';
use WebGUI::Asset;
use WebGUI::AdminConsole;
sub configurationComplete {
my $self = shift;
return $self->session->setting->get('newsletterReturnDomain') ? 1 : 0;
}
sub getAdminConsole {
my $self = shift;
my $session = $self->session;
my $url = $session->url;
my $ac = WebGUI::AdminConsole->new( $session );
$ac->addSubmenuItem( $url->page( 'newsletter=manage;func=settings' ), 'Newsletter settings' );
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_settings {
my $self = shift;
my $session = $self->session;
my $setting = $session->setting;
my $f = WebGUI::HTMLForm->new( $session );
$f->hidden(
name => 'newsletter',
value => 'manage',
);
$f->hidden(
name => 'func',
value => 'settingsSave',
);
$f->text(
name => 'newsletterReturnDomain',
value => $setting->get( 'newsletterReturnDomain' ),
label => 'Newsletter domain name',
);
$f->submit;
return $self->getAdminConsole->render($f->print, 'Newsletter settings')
}
sub www_settingsSave {
my $self = shift;
my $session = $self->session;
my ($setting, $form) = $session->quick( 'setting', 'form' );
$setting->set( 'newsletterReturnDomain', $form->get('newsletterReturnDomain') );
return $self->www_settings;
}
sub www_view {
my $self = shift;
my $session = $self->session;
my $url = $session->url;
return $self->www_settings unless $self->configurationComplete;
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;

View file

@ -24,6 +24,7 @@ installMailableAspectTable( $session );
installNewsletterCollection( $session );
installMailingTables( $session );
installNewsletterInAdminConsole( $session );
installNewsletterSettings( $session );
finish($session);
@ -103,6 +104,17 @@ sub installNewsletterInAdminConsole {
print "Done.\n";
}
#----------------------------------------------------------------------------
sub installNewsletterSettings {
my $session = shift;
my $setting = $session->setting;
print "\tInstalling newsletter setting slots...";
$setting->add( 'newsletterReturnDomain', undef ) unless $setting->has( 'newsletterReturnDomain' );
print "Done.\n";
}
#----------------------------------------------------------------------------
sub start {