Add distinction between mailing managers and admins.
This commit is contained in:
parent
a1d8ab6f70
commit
36a51a17a3
6 changed files with 152 additions and 23 deletions
|
|
@ -9,6 +9,13 @@ use JSON qw{ to_json };
|
|||
|
||||
use base 'WebGUI::Crud';
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
sub admin {
|
||||
my $self = shift;
|
||||
|
||||
return WebGUI::Mailing::Admin->new( $self->session );
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
sub canCancel {
|
||||
my $self = shift;
|
||||
|
|
@ -333,6 +340,8 @@ sub www_cancel {
|
|||
my $session = $self->session;
|
||||
my $i18n = WebGUI::International->new( $session, 'MailingManager' );
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
if ( $self->canCancel ) {
|
||||
$self->cancel;
|
||||
|
||||
|
|
@ -356,6 +365,8 @@ sub www_delete {
|
|||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
$self->delete;
|
||||
|
||||
return WebGUI::Mailing::Admin->new($session)->www_view;
|
||||
|
|
@ -367,6 +378,8 @@ sub www_edit {
|
|||
my $session = $self->session;
|
||||
my $i18n = WebGUI::International->new( $session, 'MailingManager' );
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
my $f = WebGUI::HTMLForm->new( $session );
|
||||
$f->hidden(
|
||||
name => 'newsletter',
|
||||
|
|
@ -384,22 +397,33 @@ sub www_edit {
|
|||
my %fields = %{ $self->getAsset->getMailingProperties };
|
||||
my $configuration = $self->get('configuration') || {};
|
||||
while ( my( $name, $properties ) = each %fields ) {
|
||||
$f->dynamicField(
|
||||
name => $name,
|
||||
%{ $properties },
|
||||
value => $configuration->{ $name },
|
||||
$properties->{ name } = $name;
|
||||
$properties->{ value } = $configuration->{ $name } if exists $properties->{ value };
|
||||
|
||||
my $formField = WebGUI::Form::DynamicField->new( $session, %{ $properties } );
|
||||
my $html = $self->admin->canOverride
|
||||
? $formField->toHtml
|
||||
: $formField->getValueAsHtml
|
||||
;
|
||||
|
||||
$f->readOnly(
|
||||
label => $properties->{ label },
|
||||
value => $html,
|
||||
);
|
||||
}
|
||||
|
||||
$f->submit;
|
||||
|
||||
return WebGUI::Mailing::Admin->new($session)->getAdminConsole->render( $f->print, $i18n->get('configure mailing') );
|
||||
return $self->renderInConsole( $f->print, $i18n->get('configure mailing') );
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
sub www_previewContent {
|
||||
my $self = shift;
|
||||
my $form = $self->session->form;
|
||||
my $session = $self->session;
|
||||
my $form = $session->form;
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
my $issueId = $self->get('issueId');
|
||||
my $userId = $form->get('userId');
|
||||
|
|
@ -414,6 +438,8 @@ sub www_previewEmail {
|
|||
my ( $form, $url ) = $session->quick( 'form', 'url' );
|
||||
my $i18n = WebGUI::International->new( $session, 'MailingManager' );
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
my $asset = $self->getAsset;
|
||||
|
||||
my $manageUrl = $url->page('newsletter=manage');
|
||||
|
|
@ -516,12 +542,19 @@ sub www_editSave {
|
|||
my $session = $self->session;
|
||||
my $form = $session->form;
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
my %fields = %{ $self->getAsset->getMailingProperties };
|
||||
my $configuration = {};
|
||||
while ( my( $name, $properties ) = each %fields ) {
|
||||
my $value = $form->process( $name, $properties->{ fieldType }, $properties->{ defaultValue } );
|
||||
if ( $self->admin->canOverride ) {
|
||||
while ( my( $name, $properties ) = each %fields ) {
|
||||
my $value = $form->process( $name, $properties->{ fieldType }, $properties->{ defaultValue } );
|
||||
|
||||
$configuration->{ $name } = $value;
|
||||
$configuration->{ $name } = $value;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$configuration = \%fields;
|
||||
}
|
||||
|
||||
#### TODO: Add error checking and required fields?
|
||||
|
|
@ -536,6 +569,8 @@ sub www_sendBatch {
|
|||
my $session = $self->session;
|
||||
my $i18n = WebGUI::International->new( $session, 'MailingManager' );
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
my $f = WebGUI::HTMLForm->new( $session );
|
||||
$f->hidden(
|
||||
name => 'newsletter',
|
||||
|
|
@ -596,6 +631,8 @@ sub www_sendBatchConfirm {
|
|||
my $form = $session->form;
|
||||
my $i18n = WebGUI::International->new( $session, 'MailingManager' );
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
my $scheduled = $form->dateTime( 'sendDate' );
|
||||
|
||||
return $self->www_sendBatch unless $scheduled;
|
||||
|
|
@ -620,7 +657,8 @@ sub www_sendTestEmails {
|
|||
my $session = $self->session;
|
||||
my $i18n = WebGUI::International->new( $session, 'MailingManager' );
|
||||
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
my $asset = WebGUI::Asset->newByDynamicClass( $session, $self->get('assetId') );
|
||||
croak "Cannot instanciate asset " . $self->get('assetId') unless $asset;
|
||||
|
||||
|
|
@ -678,6 +716,8 @@ sub www_sendTestEmailsConfirm {
|
|||
my $form = $session->form;
|
||||
my $i18n = WebGUI::International->new( $session, 'MailingManager' );
|
||||
|
||||
return $session->privilege->insufficient unless $self->admin->canManage;
|
||||
|
||||
my $to = $form->get( 'to' );
|
||||
my @userIds = $form->selectList( 'userIds' );
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue