diff --git a/lib/WebGUI/Content/NewsletterManager.pm b/lib/WebGUI/Content/NewsletterManager.pm index 0ea8603..93d52e2 100644 --- a/lib/WebGUI/Content/NewsletterManager.pm +++ b/lib/WebGUI/Content/NewsletterManager.pm @@ -21,7 +21,15 @@ sub handler { my $func = 'www_' . ( $form->get('func') || 'view' ); my $id = $form->get('id'); - my $object = WebGUI::Pluggable::instanciate( $class, 'new', [ $session, $id ] ); + my $object = eval { WebGUI::Pluggable::instanciate( $class, 'new', [ $session, $id ] ) }; + + if ( $@ || !$object ) { + my $ac = WebGUI::AdminConsole->new( $session ); + my $output = "Unable to instanciate object of class [$class] with id [$id] because: $@"; + + return $ac->render( $output, 'Error' ); + }; + return $object->$func if $object->can( $func ); return; diff --git a/lib/WebGUI/Mailing.pm b/lib/WebGUI/Mailing.pm index dcf517a..14a2f0a 100644 --- a/lib/WebGUI/Mailing.pm +++ b/lib/WebGUI/Mailing.pm @@ -376,6 +376,16 @@ sub www_cancel { return; } +#---------------------------------------------------------------------------- +sub redirectToManager { + my $self = shift; + my ( $http, $url ) = $self->session->quick( qw{http url} ); + + $http->setRedirect( $url->page('newsletter=manage') ); + + return 'redirect'; +} + #---------------------------------------------------------------------------- sub www_delete { my $self = shift; @@ -385,7 +395,7 @@ sub www_delete { $self->delete; - return WebGUI::Mailing::Admin->new($session)->www_view; + return $self->redirectToManager; } #---------------------------------------------------------------------------- @@ -581,7 +591,9 @@ sub www_editSave { #### TODO: Add error checking and required fields? $self->update( { configuration => $configuration } ); - return WebGUI::Mailing::Admin->new( $session )->www_view; + my $url = $session->url; + + return $self->redirectToManager; } #---------------------------------------------------------------------------- @@ -753,7 +765,6 @@ sub www_sendTestEmailsConfirm { $i18n->get( 'send test mails' ) ); - } 1;