aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2017-05-19 12:04:05 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2017-05-26 12:41:32 +0100
commit018193054d34778488ed8e5a1669eb9e03c317cd (patch)
tree33284e882ec609f063b5992659d6d1fd1273b348
parentd7286a011c7216cdae9e8aee21895f4f74c3277b (diff)
Use same state input in update form as elsewhere.
This lets it look the same as admin/inspect uses, with optgroups.
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/Update.pm10
-rw-r--r--t/app/controller/report_updates.t17
-rw-r--r--templates/web/base/report/update/form_update.html12
3 files changed, 14 insertions, 25 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm
index 6e94547f3..81a50dfa2 100644
--- a/perllib/FixMyStreet/App/Controller/Report/Update.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm
@@ -286,8 +286,6 @@ sub process_update : Private {
}
if ( $params{state} ) {
- $params{state} = 'fixed - council'
- if $params{state} eq 'fixed' && $c->user && $c->user->belongs_to_body( $update->problem->bodies_str );
$update->problem_state( $params{state} );
} else {
# we do this so we have a record of the state of the problem at this point
@@ -344,14 +342,10 @@ sub check_for_errors : Private {
my ( $self, $c ) = @_;
# they have to be an authority user to update the state
- if ( $c->get_param('state') ) {
+ if ( my $state = $c->get_param('state') ) {
my $error = 0;
$error = 1 unless $c->user && $c->user->belongs_to_body( $c->stash->{update}->problem->bodies_str );
-
- my $state = $c->get_param('state');
- $state = 'fixed - council' if $state eq 'fixed';
- $error = 1 unless ( grep { $state eq $_ } ( FixMyStreet::DB::Result::Problem->council_states() ) );
-
+ $error = 1 unless grep { $state eq $_ } FixMyStreet::DB::Result::Problem->council_states();
if ( $error ) {
$c->stash->{errors} ||= [];
push @{ $c->stash->{errors} }, _('There was a problem with your update. Please try again.');
diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t
index de153978b..a1e26476f 100644
--- a/t/app/controller/report_updates.t
+++ b/t/app/controller/report_updates.t
@@ -134,7 +134,7 @@ for my $test (
subtest "updates displayed on report with empty bodies_str" => sub {
my $old_bodies_str = $report->bodies_str;
$report->update({ bodies_str => undef });
- $comment->update({ problem_state => 'fixed' , mark_open => 'false', mark_fixed => 'false' });
+ $comment->update({ problem_state => 'fixed - user' , mark_open => 'false', mark_fixed => 'false' });
$mech->get_ok("/report/$report_id");
@@ -587,9 +587,10 @@ for my $test (
name => $user->name,
may_show_name => 1,
update => 'Set state to fixed',
- state => 'fixed',
+ state => 'fixed - council',
},
state => 'fixed - council',
+ meta => 'fixed',
},
{
desc => 'from authority user marks report as action scheduled',
@@ -661,9 +662,10 @@ for my $test (
name => $user->name,
may_show_name => 1,
update => 'Set state to fixed',
- state => 'fixed',
+ state => 'fixed - council',
},
state => 'fixed - council',
+ meta => 'fixed',
report_bodies => $body->id . ',2505',
},
{
@@ -672,9 +674,10 @@ for my $test (
name => $user->name,
may_show_name => 1,
update => 'Set state to fixed',
- state => 'fixed',
+ state => 'fixed - council',
},
state => 'fixed - council',
+ meta => 'fixed',
report_bodies => $body->id . ',2505',
view_username => 1
},
@@ -1662,14 +1665,14 @@ for my $test (
},
{
desc => 'update fixed without marking as open leaves state unchanged',
- initial_state => 'fixed',
+ initial_state => 'fixed - user',
expected_form_fields => {
reopen => undef,
},
submitted_form_fields => {
reopen => 0,
},
- end_state => 'fixed',
+ end_state => 'fixed - user',
},
{
desc => 'update unable to fix without marking as fixed leaves state unchanged',
@@ -1761,7 +1764,7 @@ for my $test (
},
{
desc => 'cannot mark fixed as fixed, can mark as not fixed',
- initial_state => 'fixed',
+ initial_state => 'fixed - user',
expected_form_fields => {
reopen => undef,
},
diff --git a/templates/web/base/report/update/form_update.html b/templates/web/base/report/update/form_update.html
index f15a1f74b..34abf53c5 100644
--- a/templates/web/base/report/update/form_update.html
+++ b/templates/web/base/report/update/form_update.html
@@ -36,16 +36,8 @@
<textarea rows="7" cols="30" name="update" class="form-control" id="form_update" placeholder="[% loc('Please write your update here') %]" required>[% update.text | html %]</textarea>
[% IF c.user && c.user.belongs_to_body( problem.bodies_str ) %]
- <label for="form_state">[% loc( 'State' ) %]</label>
- <select name="state" id="form_state" class="form-control">
- [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating',
- loc('Investigating')], ['action scheduled', loc('Action Scheduled')],
- ['in progress', loc('In Progress')], ['duplicate', loc('Duplicate')],
- ['unable to fix', loc('No further action')], ['not responsible', loc('Not Responsible')],
- ['fixed', loc('Fixed')] ] %]
- <option [% 'selected ' IF state.0 == problem.state_display %] value="[% state.0 %]">[% state.1 %]</option>
- [% END %]
- </select>
+ <label for="state">[% loc( 'State' ) %]</label>
+ [% INCLUDE 'report/inspect/state_groups_select.html' %]
[% ELSE %]
[% IF (problem.is_fixed OR problem.state == 'closed') AND ((c.user_exists AND c.user.id == problem.user_id) OR alert_to_reporter) %]