aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--perllib/FixMyStreet/App/Controller/Moderate.pm18
-rw-r--r--t/app/controller/moderate.t12
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/',