Add distinction between mailing managers and admins.

This commit is contained in:
Martin Kamerbeek 2010-06-04 15:17:26 +02:00
parent a1d8ab6f70
commit 36a51a17a3
6 changed files with 152 additions and 23 deletions

View file

@ -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' );