diff options
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Contact.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Contact.pm | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Contact.pm b/perllib/FixMyStreet/App/Controller/Contact.pm index b98bdbcc7..f2c3be47c 100644 --- a/perllib/FixMyStreet/App/Controller/Contact.pm +++ b/perllib/FixMyStreet/App/Controller/Contact.pm @@ -54,7 +54,8 @@ sub submit : Path('submit') : Args(0) { && $c->forward('determine_contact_type') && $c->forward('validate') && $c->forward('prepare_params_for_email') - && $c->forward('send_email'); + && $c->forward('send_email') + && $c->forward('redirect_on_success'); } =head2 determine_contact_type @@ -99,7 +100,7 @@ sub determine_contact_type : Private { =head2 validate -Validate the form submission parameters. Sets error messages and redirect +Validate the form submission parameters. Sets error messages and redirect to index page if errors. =cut @@ -168,8 +169,7 @@ sub prepare_params_for_email : Private { if ( $c->stash->{update} ) { - $c->stash->{problem_url} = $base_url . '/report/' . $c->stash->{update}->problem_id - . '#update_' . $c->stash->{update}->id; + $c->stash->{problem_url} = $base_url . $c->stash->{update}->url; $c->stash->{admin_url} = $admin_url . '/update_edit/' . $c->stash->{update}->id; $c->stash->{complaint} = sprintf( "Complaint about update %d on report %d", @@ -258,10 +258,24 @@ sub send_email : Private { $params->{from} = $from; } - $c->send_email('contact.txt', $params); + $c->stash->{success} = $c->send_email('contact.txt', $params); - # above is always succesful :( - $c->stash->{success} = 1; + return 1; +} + +=head2 redirect_on_success + +Redirect to a custom URL if one was provided + +=cut + +sub redirect_on_success : Private { + my ( $self, $c ) = @_; + + if (my $success_url = $c->get_param('success_url')) { + $c->res->redirect($success_url); + $c->detach; + } return 1; } |