diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Moderate.pm | 18 | ||||
-rw-r--r-- | t/app/controller/moderate.t | 12 |
3 files changed, 32 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 50802a4e4..a6b1b5322 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ * Unreleased - Front end improvements: - Clearer relocation options while you’re reporting a problem #2238 + - Admin improvements: + - Allow moderation to potentially change category. #2320 * v2.4.2 (6th November 2018) - New features: diff --git a/perllib/FixMyStreet/App/Controller/Moderate.pm b/perllib/FixMyStreet/App/Controller/Moderate.pm index 3b452e090..5ab4b940e 100644 --- a/perllib/FixMyStreet/App/Controller/Moderate.pm +++ b/perllib/FixMyStreet/App/Controller/Moderate.pm @@ -84,6 +84,7 @@ sub moderate_report : Chained('report') : PathPart('') : Args(0) { $c->forward('moderate_boolean', [ 'anonymous', 'show_name' ]), $c->forward('moderate_boolean', [ 'photo' ]), $c->forward('moderate_location'), + $c->forward('moderate_category'), $c->forward('moderate_extra'); # Deal with possible photo changes. If a moderate form uses a standard @@ -269,6 +270,23 @@ sub moderate_location : Private { return 'location'; } +# No update left at present +sub moderate_category : Private { + my ($self, $c) = @_; + + return unless $c->get_param('category'); + + # The admin category editing needs to know all the categories etc + $c->forward('/admin/categories_for_point'); + + my $problem = $c->stash->{problem}; + $c->forward( '/admin/report_edit_category', [ $problem, 1 ] ); + # It might need to set_report_extras in future + + $problem->update; + return 'category'; +} + sub update : Chained('report') : PathPart('update') : CaptureArgs(1) { my ($self, $c, $id) = @_; my $comment = $c->stash->{problem}->comments->find($id); diff --git a/t/app/controller/moderate.t b/t/app/controller/moderate.t index 9f6bc7450..00de29dd1 100644 --- a/t/app/controller/moderate.t +++ b/t/app/controller/moderate.t @@ -248,6 +248,18 @@ subtest 'Problem moderation' => sub { is $report->get_extra_metadata('weather'), 'snow'; }; + subtest 'Moderate category' => sub { + $report->update; + my ($csrf) = $mech->content =~ /meta content="([^"]*)" name="csrf-token"/; + $mech->post_ok('http://www.example.org/moderate/report/' . $report->id, { + %problem_prepopulated, + 'category' => 'Lost toys', + token => $csrf, + }); + $report->discard_changes; + is $report->category, 'Lost toys'; + }; + subtest 'Moderate location' => sub { FixMyStreet::override_config { MAPIT_URL => 'http://mapit.uk/', |