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 $module = $form->get('newsletter');
|
||||||
|
|
||||||
my $class =
|
my $class =
|
||||||
$module eq 'manage' ? 'WebGUI::Newsletter::Admin'
|
$module eq 'manage' ? 'WebGUI::Mailing::Admin'
|
||||||
: $module eq 'mailing' ? 'WebGUI::Mailing'
|
: $module eq 'mailing' ? 'WebGUI::Mailing'
|
||||||
: return
|
: return
|
||||||
;
|
;
|
||||||
|
|
||||||
# return unless $form->get('newsletter') eq 'manage';
|
|
||||||
|
|
||||||
my $func = 'www_' . ( $form->get('func') || 'view' );
|
my $func = 'www_' . ( $form->get('func') || 'view' );
|
||||||
my $id = $form->get('id');
|
my $id = $form->get('id');
|
||||||
|
|
||||||
|
|
@ -26,11 +24,6 @@ sub handler {
|
||||||
return $object->$func if $object->can( $func );
|
return $object->$func if $object->can( $func );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
# my $nl = WebGUI::Newsletter::Admin->new( $session );
|
|
||||||
# return unless $nl->can( $func );
|
|
||||||
#
|
|
||||||
# return $nl->$func;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Carp;
|
use Carp;
|
||||||
|
|
||||||
use WebGUI::Newsletter::Admin;
|
use WebGUI::Mailing::Admin;
|
||||||
|
|
||||||
use base 'WebGUI::Crud';
|
use base 'WebGUI::Crud';
|
||||||
|
|
||||||
|
|
@ -155,12 +155,13 @@ sub www_sendTestEmailsConfirm {
|
||||||
my $session = $self->session;
|
my $session = $self->session;
|
||||||
my $form = $session->form;
|
my $form = $session->form;
|
||||||
|
|
||||||
my $to = $form->email( 'to' );
|
# my $to = $form->email( 'to' );
|
||||||
|
my $to = $form->get( 'to' );
|
||||||
my @userIds = $form->selectList( 'userIds' );
|
my @userIds = $form->selectList( 'userIds' );
|
||||||
|
|
||||||
$self->queueTestEmails( $to, \@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 );
|
installNewsletterCollection( $session );
|
||||||
installMailingTables( $session );
|
installMailingTables( $session );
|
||||||
installNewsletterInAdminConsole( $session );
|
installNewsletterInAdminConsole( $session );
|
||||||
|
installNewsletterSettings( $session );
|
||||||
|
|
||||||
finish($session);
|
finish($session);
|
||||||
|
|
||||||
|
|
@ -103,6 +104,17 @@ sub installNewsletterInAdminConsole {
|
||||||
print "Done.\n";
|
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 {
|
sub start {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue