diff options
Diffstat (limited to 'perllib/FixMyStreet/App/Controller')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 4 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/New.pm | 26 |
2 files changed, 30 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 45ac1534d..5373220a7 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -1192,6 +1192,8 @@ sub update_extra_fields : Private { $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") @@ -1205,9 +1207,11 @@ sub update_extra_fields : Private { 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; } } diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 8f1f08d2e..c41b65e2a 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -281,6 +281,11 @@ sub by_category_ajax_data : Private { $body->{category_extra_json} = $c->forward('generate_category_extra_json'); } + if ( $c->stash->{category_extras}->{$category} && @{ $c->stash->{category_extras}->{$category} } >= 1 ) { + my $disable_form = $c->forward('disable_form_message'); + $body->{disable_form} = $disable_form if $disable_form; + } + my $unresponsive = $c->stash->{unresponsive}->{$category}; $unresponsive ||= $c->stash->{unresponsive}->{ALL} || '' if $type eq 'one'; @@ -303,6 +308,27 @@ sub by_category_ajax_data : Private { return $body; } +sub disable_form_message : Private { + my ( $self, $c ) = @_; + + my %out; + foreach (@{$c->stash->{category_extras}->{$c->stash->{category}}}) { + if ($_->{disable_form} && $_->{disable_form} eq 'true') { + $out{all} .= ' ' if $out{all}; + $out{all} .= $_->{description}; + } elsif (($_->{variable} || '') eq 'true' && @{$_->{values} || []}) { + foreach my $opt (@{$_->{values}}) { + if ($opt->{disable}) { + $out{message} = $_->{datatype_description}; + $out{code} = $_->{code}; + push @{$out{answers}}, $opt->{key}; + } + } + } + } + return \%out; +} + =head2 report_import Action to accept report creations from iPhones and other mobile apps. URL is |