aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/App/Controller')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm2
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm17
-rw-r--r--perllib/FixMyStreet/App/Controller/Reports.pm1
3 files changed, 15 insertions, 5 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index 33404cb82..2cd34b7e2 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -1042,7 +1042,7 @@ sub report_edit_location : Private {
$c->forward('/council/load_and_check_areas', []);
$c->forward('/report/new/setup_categories_and_bodies');
my %allowed_bodies = map { $_ => 1 } @{$problem->bodies_str_ids};
- my @new_bodies = @{$c->stash->{bodies_to_list}};
+ my @new_bodies = keys %{$c->stash->{bodies_to_list}};
my $bodies_match = grep { exists( $allowed_bodies{$_} ) } @new_bodies;
$c->stash($safe_stash);
return unless $bodies_match;
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 312268f65..8c6c1b244 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -695,9 +695,7 @@ sub setup_categories_and_bodies : Private {
# put results onto stash for display
$c->stash->{bodies} = \%bodies;
$c->stash->{contacts} = \@contacts;
- $c->stash->{bodies_to_list} = [ keys %bodies_to_list ];
- $c->stash->{bodies_to_list_names} = [ map { $_->name } values %bodies_to_list ];
- $c->stash->{bodies_to_list_urls} = [ map { $_->external_url } values %bodies_to_list ];
+ $c->stash->{bodies_to_list} = \%bodies_to_list;
$c->stash->{category_options} = \@category_options;
$c->stash->{category_extras} = \%category_extras;
$c->stash->{category_extras_hidden} = \%category_extras_hidden;
@@ -920,6 +918,7 @@ sub process_report : Private {
# set these straight from the params
$report->category( _ $params{category} ) if $params{category};
+ $c->cobrand->call_hook(report_new_munge_category => $report);
$report->subcategory( $params{subcategory} );
my $areas = $c->stash->{all_areas_mapit};
@@ -948,7 +947,7 @@ sub process_report : Private {
if ( $c->stash->{non_public_categories}->{ $report->category } ) {
$report->non_public( 1 );
}
- } elsif ( @{ $c->stash->{bodies_to_list} } ) {
+ } elsif ( %{ $c->stash->{bodies_to_list} } ) {
# There was an area with categories, but we've not been given one. Bail.
$c->stash->{field_errors}->{category} = _('Please choose a category');
@@ -967,6 +966,14 @@ sub process_report : Private {
my $value = $c->get_param($form_name) || '';
$c->stash->{field_errors}->{$form_name} = _('This information is required')
if $field->{required} && !$value;
+ if ($field->{validator}) {
+ eval {
+ $value = $field->{validator}->($value);
+ };
+ if ($@) {
+ $c->stash->{field_errors}->{$form_name} = $@;
+ }
+ }
$report->set_extra_metadata( $form_name => $value );
}
@@ -1353,6 +1360,8 @@ sub save_user_and_report : Private {
$c->log->info($report->user->id . ' exists, but is not logged in for this report');
}
+ $c->cobrand->call_hook(report_new_munge_before_insert => $report);
+
$report->update_or_insert;
# tidy up
diff --git a/perllib/FixMyStreet/App/Controller/Reports.pm b/perllib/FixMyStreet/App/Controller/Reports.pm
index 037458538..20381bb85 100644
--- a/perllib/FixMyStreet/App/Controller/Reports.pm
+++ b/perllib/FixMyStreet/App/Controller/Reports.pm
@@ -93,6 +93,7 @@ sub index : Path : Args(0) {
}
} else {
my @bodies = $c->model('DB::Body')->active->translated->with_area_count->all_sorted;
+ @bodies = @{$c->cobrand->call_hook('reports_hook_restrict_bodies_list', \@bodies) || \@bodies };
$c->stash->{bodies} = \@bodies;
}