From 90a2c224d2f4112609c140777ac065b60076f15d Mon Sep 17 00:00:00 2001 From: Struan Donald Date: Tue, 4 Sep 2018 15:56:03 +0100 Subject: allow web based use of report import if a web parameter is passed to /import then display the email confirmation sent page rather than a SUCCESS message. Enables this page to be used for creating partial reports from a web page. For mysociety/collideoscope#17 --- CHANGELOG.md | 2 ++ perllib/FixMyStreet/App/Controller/Report/New.pm | 6 ++++++ t/app/controller/report_import.t | 17 ++++++++++++++++- templates/web/base/report/new/report_import.html | 1 + 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 508c4b426..b34fb900e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ## Releases * Unreleased + - Front end improvements: + - Import end point can optionally return a web page #2225 - Bugfixes: - Fix display of area/pins on body page when using Bing or TonerLite map. - Do not scan through all problems to show /_dev pages. diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 869ed9461..dd4fef388 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -418,6 +418,12 @@ sub report_import : Path('/import') { $c->send_email( 'partial.txt', { to => $report->user->email, } ); + if ( $c->get_param('web') ) { + $c->res->content_type('text/html; charset=utf-8'); + $c->stash->{template} = 'email_sent.html'; + $c->stash->{email_type} = 'problem'; + return 1; + } $c->res->body('SUCCESS'); return 1; } diff --git a/t/app/controller/report_import.t b/t/app/controller/report_import.t index e4a202db7..223979d1b 100644 --- a/t/app/controller/report_import.t +++ b/t/app/controller/report_import.t @@ -89,6 +89,15 @@ subtest "Test creating bad partial entries" => sub { }; +for my $test ( + { + desc => 'Submit a correct entry', + }, + { + desc => 'Submit a correct web entry', + web => 1, + } +) { subtest "Submit a correct entry" => sub { $mech->get_ok('/import'); @@ -101,13 +110,18 @@ subtest "Submit a correct entry" => sub { subject => 'Test report', detail => 'This is a test report', photo => $sample_file, + web => $test->{web}, } }, "fill in form" ); is_deeply( $mech->import_errors, [], "got no errors" ); - is $mech->content, 'SUCCESS', "Got success response"; + if ( $test->{web} ) { + $mech->content_contains('Nearly done! Now check', "Got email confirmation page"); + } else { + is $mech->content, 'SUCCESS', "Got success response"; + } # check that we have received the email my $token_url = $mech->get_link_from_email; @@ -223,6 +237,7 @@ subtest "Submit a correct entry" => sub { $mech->delete_user($user); }; +} subtest "Submit a correct entry (with location)" => sub { diff --git a/templates/web/base/report/new/report_import.html b/templates/web/base/report/new/report_import.html index 7aa105afe..f2ead081b 100644 --- a/templates/web/base/report/new/report_import.html +++ b/templates/web/base/report/new/report_import.html @@ -85,6 +85,7 @@ line each starting with ERROR:. + -- cgit v1.2.3