aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm63
-rw-r--r--perllib/FixMyStreet/App/Controller/Around.pm2
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm7
-rw-r--r--perllib/FixMyStreet/Cobrand/FixMyStreet.pm2
4 files changed, 40 insertions, 34 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index c2c4e7588..b00c34777 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -1187,37 +1187,44 @@ sub update_extra_fields : Private {
my $meta = {};
$meta->{code} = $c->get_param("metadata[$i].code");
next unless $meta->{code};
+
$meta->{order} = int $c->get_param("metadata[$i].order");
- $meta->{datatype} = $c->get_param("metadata[$i].datatype");
- my $required = $c->get_param("metadata[$i].required") && $c->get_param("metadata[$i].required") eq 'on';
- $meta->{required} = $required ? 'true' : 'false';
- my $notice = $c->get_param("metadata[$i].notice") && $c->get_param("metadata[$i].notice") eq 'on';
- $meta->{variable} = $notice ? 'false' : 'true';
- my $protected = $c->get_param("metadata[$i].protected") && $c->get_param("metadata[$i].protected") eq 'on';
- $meta->{protected} = $protected ? 'true' : 'false';
- my $disable_form = $c->get_param("metadata[$i].disable_form") && $c->get_param("metadata[$i].disable_form") eq 'on';
- $meta->{disable_form} = $disable_form ? 'true' : 'false';
- $meta->{description} = $c->get_param("metadata[$i].description");
- $meta->{datatype_description} = $c->get_param("metadata[$i].datatype_description");
- $meta->{automated} = $c->get_param("metadata[$i].automated")
- if $c->get_param("metadata[$i].automated");
-
- if ( $meta->{datatype} eq "singlevaluelist" ) {
- $meta->{values} = [];
- my $re = qr{^metadata\[$i\]\.values\[\d+\]\.key};
- my @vindices = grep { /$re/ } keys %{ $c->req->params };
- @vindices = sort map { /values\[(\d+)\]/ } @vindices;
- foreach my $j (@vindices) {
- my $name = $c->get_param("metadata[$i].values[$j].name");
- my $key = $c->get_param("metadata[$i].values[$j].key");
- my $disable = $c->get_param("metadata[$i].values[$j].disable");
- push(@{$meta->{values}}, {
- name => $name,
- key => $key,
- $disable ? (disable => 1) : (),
- }) if $name;
+ $meta->{protected} = $c->get_param("metadata[$i].protected") ? 'true' : 'false';
+
+ my $behaviour = $c->get_param("metadata[$i].behaviour") || 'question';
+ if ($behaviour eq 'question') {
+ $meta->{required} = $c->get_param("metadata[$i].required") ? 'true' : 'false';
+ $meta->{variable} = 'true';
+ $meta->{description} = $c->get_param("metadata[$i].description");
+ $meta->{datatype} = $c->get_param("metadata[$i].datatype");
+
+ if ( $meta->{datatype} eq "singlevaluelist" ) {
+ $meta->{values} = [];
+ my $re = qr{^metadata\[$i\]\.values\[\d+\]\.key};
+ my @vindices = grep { /$re/ } keys %{ $c->req->params };
+ @vindices = sort map { /values\[(\d+)\]/ } @vindices;
+ foreach my $j (@vindices) {
+ my $name = $c->get_param("metadata[$i].values[$j].name");
+ my $key = $c->get_param("metadata[$i].values[$j].key");
+ my $disable = $c->get_param("metadata[$i].values[$j].disable");
+ my $disable_message = $c->get_param("metadata[$i].values[$j].disable_message");
+ push(@{$meta->{values}}, {
+ name => $name,
+ key => $key,
+ $disable ? (disable => 1, disable_message => $disable_message) : (),
+ }) if $name;
+ }
}
+ } elsif ($behaviour eq 'notice') {
+ $meta->{variable} = 'false';
+ $meta->{description} = $c->get_param("metadata[$i].description");
+ $meta->{disable_form} = $c->get_param("metadata[$i].disable_form") ? 'true' : 'false';
+ } elsif ($behaviour eq 'hidden') {
+ $meta->{automated} = 'hidden_field';
+ } elsif ($behaviour eq 'server') {
+ $meta->{automated} = 'server_set';
}
+
push @extra_fields, $meta;
}
@extra_fields = sort { $a->{order} <=> $b->{order} } @extra_fields;
diff --git a/perllib/FixMyStreet/App/Controller/Around.pm b/perllib/FixMyStreet/App/Controller/Around.pm
index ebb3d4839..f14d116cc 100644
--- a/perllib/FixMyStreet/App/Controller/Around.pm
+++ b/perllib/FixMyStreet/App/Controller/Around.pm
@@ -234,7 +234,7 @@ sub check_and_stash_category : Private {
my @list_of_names = map { $_->name } values %bodies;
my $csv = Text::CSV->new();
$csv->combine(@list_of_names);
- $c->stash->{bodies} = \@bodies;
+ $c->stash->{around_bodies} = \@bodies;
$c->{stash}->{list_of_names_as_string} = $csv->string;
my $where = { body_id => [ keys %bodies ], };
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 9b7a925b8..5407ec937 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -102,19 +102,18 @@ sub report_new : Path : Args(0) {
$c->stash->{template} = "report/new/fill_in_details.html";
$c->forward('setup_categories_and_bodies');
$c->forward('setup_report_extra_fields');
- $c->forward('generate_map');
$c->forward('check_for_category');
$c->forward('setup_report_extras');
# deal with the user and report and check both are happy
- return unless $c->forward('check_form_submitted');
+ $c->detach('generate_map') unless $c->forward('check_form_submitted');
$c->forward('/auth/check_csrf_token');
$c->forward('process_report');
$c->forward('process_user');
$c->forward('/photo/process_photo');
- return unless $c->forward('check_for_errors');
+ $c->detach('generate_map') unless $c->forward('check_for_errors');
$c->forward('save_user_and_report');
$c->forward('redirect_or_confirm_creation');
}
@@ -322,7 +321,7 @@ sub disable_form_message : Private {
} elsif (($_->{variable} || '') eq 'true' && @{$_->{values} || []}) {
foreach my $opt (@{$_->{values}}) {
if ($opt->{disable}) {
- $out{message} = $_->{datatype_description};
+ $out{message} = $opt->{disable_message} || $_->{datatype_description};
$out{code} = $_->{code};
push @{$out{answers}}, $opt->{key};
}
diff --git a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
index 38e9e09a0..72ba51dd8 100644
--- a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
+++ b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
@@ -42,7 +42,7 @@ sub munge_around_category_where {
my ($self, $where) = @_;
my $user = $self->{c}->user;
- my @iow = grep { $_->name eq 'Isle of Wight Council' } @{ $self->{c}->stash->{bodies} };
+ my @iow = grep { $_->name eq 'Isle of Wight Council' } @{ $self->{c}->stash->{around_bodies} };
return unless @iow;
# display all the categories on Isle of Wight at the moment as there's no way to