aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2016-06-27 18:11:06 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2016-07-15 12:30:31 +0100
commit34198b1d52dd38c4947a4073eecfe7ffff52afb3 (patch)
tree94c1e1ea269e753f0adcb0023f472f7ac2d31ab1 /perllib/FixMyStreet/App/Controller
parent4eede46db49e74581f39e33bcd5e11b8638eaa9b (diff)
Allow editing of category on admin report edit.
This also updates the body column to match the category.
Diffstat (limited to 'perllib/FixMyStreet/App/Controller')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm28
-rw-r--r--perllib/FixMyStreet/App/Controller/Council.pm7
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm1
3 files changed, 34 insertions, 2 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index 50b4360eb..bcf66f36f 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -681,6 +681,8 @@ sub report_edit : Path('report_edit') : Args(1) {
}
}
+ $c->stash->{categories} = $c->forward('categories_for_point');
+
if ( $c->cobrand->moniker eq 'zurich' ) {
my $done = $c->cobrand->admin_report_edit();
return if $done;
@@ -729,12 +731,18 @@ sub report_edit : Path('report_edit') : Args(1) {
flagged => $c->get_param('flagged') ? 1 : 0,
non_public => $c->get_param('non_public') ? 1 : 0,
);
- $columns{bodies_str} = $c->get_param('body') if $c->get_param('body');
foreach (qw/state anonymous title detail name external_id external_body external_team/) {
$columns{$_} = $c->get_param($_);
}
$problem->set_inflated_columns(\%columns);
+ if ((my $category = $c->get_param('category')) ne $problem->category) {
+ $problem->category($category);
+ my @contacts = grep { $_->category eq $problem->category } @{$c->stash->{contacts}};
+ my $bs = join( ',', map { $_->body_id } @contacts );
+ $problem->bodies_str($bs);
+ }
+
if ( $c->get_param('email') ne $problem->user->email ) {
my $user = $c->model('DB::User')->find_or_create(
{ email => $c->get_param('email') }
@@ -777,6 +785,24 @@ sub report_edit : Path('report_edit') : Args(1) {
return 1;
}
+sub categories_for_point : Private {
+ my ($self, $c) = @_;
+
+ $c->stash->{report} = $c->stash->{problem};
+ # We have a report, stash its location
+ $c->forward('/report/new/determine_location_from_report');
+ # Look up the areas for this location
+ $c->stash->{prefetched_all_areas} = [ grep { $_ } split ',', $c->stash->{report}->areas ];
+ $c->forward('/around/check_location_is_acceptable');
+ # As with a new report, fetch the bodies/categories
+ $c->forward('/report/new/setup_categories_and_bodies');
+
+ # Remove the "Pick a category" option
+ shift @{$c->stash->{category_options}} if @{$c->stash->{category_options}};
+
+ return $c->stash->{category_options};
+}
+
sub templates : Path('templates') : Args(0) {
my ( $self, $c ) = @_;
diff --git a/perllib/FixMyStreet/App/Controller/Council.pm b/perllib/FixMyStreet/App/Controller/Council.pm
index a5915aa46..06a23aec9 100644
--- a/perllib/FixMyStreet/App/Controller/Council.pm
+++ b/perllib/FixMyStreet/App/Controller/Council.pm
@@ -55,7 +55,12 @@ sub load_and_check_areas : Private {
$params{generation} = $c->config->{MAPIT_GENERATION}
if $c->config->{MAPIT_GENERATION};
- if ( $c->stash->{fetch_all_areas} ) {
+ if ($c->stash->{prefetched_all_areas}) {
+ $all_areas = {
+ map { $_ => { id => $_ } }
+ @{$c->stash->{prefetched_all_areas}}
+ };
+ } elsif ( $c->stash->{fetch_all_areas} ) {
my %area_types = map { $_ => 1 } @$area_types;
$all_areas =
mySociety::MaPit::call( 'point',
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 71dbae83a..bbd27c666 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -661,6 +661,7 @@ sub setup_categories_and_bodies : Private {
# put results onto stash for display
$c->stash->{bodies} = \%bodies;
+ $c->stash->{contacts} = \@contacts;
$c->stash->{all_body_names} = [ map { $_->name } values %bodies ];
$c->stash->{all_body_urls} = [ map { $_->external_url } values %bodies ];
$c->stash->{bodies_to_list} = [ keys %bodies_to_list ];