aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Contact.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Contact.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Contact.pm28
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;
}