aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2018-03-02 10:58:34 +0000
committerMatthew Somerville <matthew-github@dracos.co.uk>2018-03-02 14:14:26 +0000
commit2789a591bb56124e02f13de0fba86fa5899e6ebb (patch)
treea31defeb4525cffd0f3e2640d81ca66cd665e9ae
parent9ccfe2d97943716ae06c98ff85ea3b95c1ff3357 (diff)
Fix post-edit issues on admin report edit page.
If you rotated a photo, updates and the category list weren't loaded. If you changed a report's state, the map pin colour was derived from the old state.
-rw-r--r--CHANGELOG.md1
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm66
-rw-r--r--t/app/controller/admin/report_edit.t4
3 files changed, 37 insertions, 34 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c6bced606..e1ed7a5cc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@
- Stop asset layers obscuring marker layer. #1999
- Don't delete hidden field values when inspecting reports. #1999
- Fix text layout issues in /reports/…/summary dashboard charts.
+ - Fix post-edit issues on admin report edit page.
- Admin improvements:
- Inspectors can set non_public status of reports. #1992
- Development improvements:
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index 85b6204fc..253840082 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -780,24 +780,10 @@ sub update_user : Private {
return 0;
}
-sub report_edit : Path('report_edit') : Args(1) {
- my ( $self, $c, $id ) = @_;
-
- my $problem = $c->cobrand->problems->search( { id => $id } )->first;
-
- $c->detach( '/page_error_404_not_found', [] )
- unless $problem;
-
- unless (
- $c->cobrand->moniker eq 'zurich'
- || $c->user->has_permission_to(report_edit => $problem->bodies_str_ids)
- ) {
- $c->detach( '/page_error_403_access_denied', [] );
- }
-
- $c->stash->{problem} = $problem;
+sub report_edit_display : Private {
+ my ( $self, $c ) = @_;
- $c->forward('/auth/get_csrf_token');
+ my $problem = $c->stash->{problem};
$c->stash->{page} = 'admin';
FixMyStreet::Map::display_map(
@@ -814,27 +800,29 @@ sub report_edit : Path('report_edit') : Args(1) {
: [],
print_report => 1,
);
+}
- if (my $rotate_photo_param = $self->_get_rotate_photo_param($c)) {
- $self->rotate_photo($c, $problem, @$rotate_photo_param);
- if ( $c->cobrand->moniker eq 'zurich' ) {
- # Clicking the photo rotation buttons should do nothing
- # except for rotating the photo, so return the user
- # to the report screen now.
- $c->res->redirect( $c->uri_for( 'report_edit', $problem->id ) );
- return;
- } else {
- return 1;
- }
- }
+sub report_edit : Path('report_edit') : Args(1) {
+ my ( $self, $c, $id ) = @_;
- $c->forward('categories_for_point');
+ my $problem = $c->cobrand->problems->search( { id => $id } )->first;
- if ( $c->cobrand->moniker eq 'zurich' ) {
- my $done = $c->cobrand->admin_report_edit();
- return if $done;
+ $c->detach( '/page_error_404_not_found', [] )
+ unless $problem;
+
+ unless (
+ $c->cobrand->moniker eq 'zurich'
+ || $c->user->has_permission_to(report_edit => $problem->bodies_str_ids)
+ ) {
+ $c->detach( '/page_error_403_access_denied', [] );
}
+ $c->stash->{problem} = $problem;
+
+ $c->forward('/auth/get_csrf_token');
+
+ $c->forward('categories_for_point');
+
$c->forward('check_username_for_abuse', [ $problem->user ] );
$c->stash->{updates} =
@@ -842,6 +830,16 @@ sub report_edit : Path('report_edit') : Args(1) {
->search( { problem_id => $problem->id }, { order_by => 'created' } )
->all ];
+ if (my $rotate_photo_param = $self->_get_rotate_photo_param($c)) {
+ $self->rotate_photo($c, $problem, @$rotate_photo_param);
+ $c->detach('report_edit_display');
+ }
+
+ if ( $c->cobrand->moniker eq 'zurich' ) {
+ my $done = $c->cobrand->admin_report_edit();
+ $c->detach('report_edit_display') if $done;
+ }
+
if ( $c->get_param('resend') ) {
$c->forward('/auth/check_csrf_token');
@@ -937,7 +935,7 @@ sub report_edit : Path('report_edit') : Args(1) {
$problem->discard_changes;
}
- return 1;
+ $c->detach('report_edit_display');
}
=head2 report_edit_category
diff --git a/t/app/controller/admin/report_edit.t b/t/app/controller/admin/report_edit.t
index a8a0bd143..e61f781f5 100644
--- a/t/app/controller/admin/report_edit.t
+++ b/t/app/controller/admin/report_edit.t
@@ -364,6 +364,10 @@ foreach my $test (
$mech->content_lacks( 'type="submit" name="resend"', 'no resend button' );
}
+ if ($report->state eq 'fixed') {
+ $mech->content_contains('pin-green');
+ }
+
$test->{changes}->{flagged} = 1 if $test->{changes}->{flagged};
$test->{changes}->{non_public} = 1 if $test->{changes}->{non_public};