From ddaaebe6a0855f2e94bab490d43ea76048ec4da8 Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Thu, 20 May 2010 15:49:26 +0200 Subject: [PATCH] Implement cancel functionality. --- lib/WebGUI/Mailing.pm | 29 +++++++++++++++++++++++++++++ lib/WebGUI/Mailing/Admin.pm | 1 + 2 files changed, 30 insertions(+) diff --git a/lib/WebGUI/Mailing.pm b/lib/WebGUI/Mailing.pm index 90bc27c..56b0a5a 100644 --- a/lib/WebGUI/Mailing.pm +++ b/lib/WebGUI/Mailing.pm @@ -8,6 +8,24 @@ use WebGUI::Mailing::Admin; use base 'WebGUI::Crud'; +sub canCancel { + my $self = shift; + + return 1 if $self->get('state') eq 'scheduled'; + return 0; +} + +sub cancel { + my $self = shift; + + $self->update( { + state => 'idle', + sendDate => undef, + } ); + + return; +} + sub crud_definition { my $class = shift; my $session = shift; @@ -162,6 +180,17 @@ sub sendQueuedEmails { return 1; } +sub www_cancel { + my $self = shift; + my $session = $self->session; + + return 'Cannot cancel mailing ['.$self->getId.']' unless $self->canCancel; + + $self->cancel; + + return WebGUI::Mailing::Admin->new($session)->www_view; +} + sub www_delete { my $self = shift; my $session = $self->session; diff --git a/lib/WebGUI/Mailing/Admin.pm b/lib/WebGUI/Mailing/Admin.pm index 793508c..404c080 100644 --- a/lib/WebGUI/Mailing/Admin.pm +++ b/lib/WebGUI/Mailing/Admin.pm @@ -129,6 +129,7 @@ sub www_view { editUrl => $url->page('newsletter=mailing;func=edit;id='.$mailing->getId ), deleteUrl => $url->page('newsletter=mailing;func=delete;id='.$mailing->getId ), previewUrl => $url->page('newsletter=mailing;func=previewEmail;id='.$mailing->getId ), + cancelUrl => $url->page('newsletter=mailing;func=cancel;id='.$mailing->getId ), }; };