aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm17
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/Update.pm4
-rw-r--r--perllib/FixMyStreet/Cobrand/Bromley.pm4
-rw-r--r--perllib/FixMyStreet/Cobrand/Default.pm13
-rw-r--r--perllib/FixMyStreet/Cobrand/EmptyHomes.pm12
-rw-r--r--perllib/FixMyStreet/Cobrand/UK.pm2
6 files changed, 29 insertions, 23 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 2f03bf13b..6aaa4531f 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -854,12 +854,6 @@ sub process_report : Private {
$bodies = join( ',', @{ $c->stash->{bodies_to_list} } ) || -1;
$report->bodies_str( $bodies );
- my %extra;
- $c->cobrand->process_extras( $c, undef, \%extra );
- if ( %extra ) {
- $report->extra( \%extra );
- }
-
} elsif ( $report->category ) {
# FIXME All contacts were fetched in setup_categories_and_bodies,
@@ -931,7 +925,7 @@ sub process_report : Private {
$report->non_public( 1 );
}
- $c->cobrand->process_extras( $c, $contacts[0]->body_id, \@extra );
+ $c->cobrand->process_open311_extras( $c, $contacts[0]->body_id, \@extra );
if ( @extra ) {
$c->stash->{report_meta} = { map { $_->{name} => $_ } @extra };
@@ -950,6 +944,15 @@ sub process_report : Private {
}
+ # Get a list of custom form fields we want and store them in extra metadata
+ foreach my $field ($c->cobrand->report_form_extras) {
+ my $form_name = $field->{name};
+ my $value = $c->get_param($form_name) || '';
+ $c->stash->{field_errors}->{$form_name} = _('This information is required')
+ if $field->{required} && !$value;
+ $report->set_extra_metadata( $form_name => $value );
+ }
+
# set defaults that make sense
$report->state('unconfirmed');
diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm
index 45d924335..8d6bc2019 100644
--- a/perllib/FixMyStreet/App/Controller/Report/Update.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm
@@ -286,9 +286,9 @@ sub process_update : Private {
my @extra; # Next function fills this, but we don't need it here.
- # This is just so that the error checkign for these extra fields runs.
+ # This is just so that the error checking for these extra fields runs.
# TODO Use extra here as it is used on reports.
- $c->cobrand->process_extras( $c, $update->problem->bodies_str, \@extra );
+ $c->cobrand->process_open311_extras( $c, $update->problem->bodies_str, \@extra );
if ( $c->get_param('fms_extra_title') ) {
my %extras = ();
diff --git a/perllib/FixMyStreet/Cobrand/Bromley.pm b/perllib/FixMyStreet/Cobrand/Bromley.pm
index 687843a2a..c9f9a98be 100644
--- a/perllib/FixMyStreet/Cobrand/Bromley.pm
+++ b/perllib/FixMyStreet/Cobrand/Bromley.pm
@@ -81,9 +81,9 @@ sub ask_ever_reported {
return 0;
}
-sub process_extras {
+sub process_open311_extras {
my $self = shift;
- $self->SUPER::process_extras( @_, [ 'first_name', 'last_name' ] );
+ $self->SUPER::process_open311_extras( @_, [ 'first_name', 'last_name' ] );
}
sub contact_email {
diff --git a/perllib/FixMyStreet/Cobrand/Default.pm b/perllib/FixMyStreet/Cobrand/Default.pm
index e7a4dad72..b3b830f06 100644
--- a/perllib/FixMyStreet/Cobrand/Default.pm
+++ b/perllib/FixMyStreet/Cobrand/Default.pm
@@ -754,7 +754,18 @@ If set to an arrayref, will plot those area ID(s) from mapit on all the /around
sub areas_on_around { []; }
-sub process_extras {}
+=head2
+
+A list of extra fields we wish to save to the database in the 'extra' column of
+problems based on variables passed in by the form. Return a list of hashrefs
+of values we wish to save, e.g.
+( { name => 'address', required => 1 }, { name => 'passport', required => 0 } )
+
+=cut
+
+sub report_form_extras {}
+
+sub process_open311_extras {}
=head 2 pin_colour
diff --git a/perllib/FixMyStreet/Cobrand/EmptyHomes.pm b/perllib/FixMyStreet/Cobrand/EmptyHomes.pm
index 0b02f90c4..995c39c85 100644
--- a/perllib/FixMyStreet/Cobrand/EmptyHomes.pm
+++ b/perllib/FixMyStreet/Cobrand/EmptyHomes.pm
@@ -132,16 +132,8 @@ sub council_rss_alert_options {
return ( \@options, @reported_to_options ? \@reported_to_options : undef );
}
-sub process_extras {
- my $self = shift;
- my $ctx = shift;
- my $body_id = shift;
- my $extra = shift;
-
- my $value = $ctx->get_param('address') || '';
- $ctx->stash->{field_errors}->{address} = _('This information is required')
- unless $value;
- $extra->{address} = $value;
+sub report_form_extras {
+ ( { name => 'address', required => 1 } )
}
sub front_stats_data {
diff --git a/perllib/FixMyStreet/Cobrand/UK.pm b/perllib/FixMyStreet/Cobrand/UK.pm
index 824590d38..c33b39aac 100644
--- a/perllib/FixMyStreet/Cobrand/UK.pm
+++ b/perllib/FixMyStreet/Cobrand/UK.pm
@@ -27,7 +27,7 @@ sub disambiguate_location {
};
}
-sub process_extras {
+sub process_open311_extras {
my $self = shift;
my $ctx = shift;
my $body_id = shift;