Adding nl settings screen
This commit is contained in:
parent
a9321d32da
commit
ef172e2228
4 changed files with 172 additions and 11 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
155
lib/WebGUI/Mailing/Admin.pm
Normal 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;
|
||||
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue