diff options
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 6 | ||||
-rw-r--r-- | t/app/controller/admin.t | 59 | ||||
-rw-r--r-- | templates/web/default/admin/report_edit.html | 1 |
3 files changed, 51 insertions, 15 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index c0e6a9475..f0a7e94b6 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -540,12 +540,15 @@ sub report_edit : Path('report_edit') : Args(1) { $done = 1; } + my $flagged = $c->req->param('flagged') ? 1 : 0; + # do this here so before we update the values in problem if ( $c->req->param('anonymous') ne $problem->anonymous || $c->req->param('name') ne $problem->name || $c->req->param('email') ne $problem->user->email || $c->req->param('title') ne $problem->title - || $c->req->param('detail') ne $problem->detail ) + || $c->req->param('detail') ne $problem->detail + || $flagged != $problem->flagged ) { $edited = 1; } @@ -555,6 +558,7 @@ sub report_edit : Path('report_edit') : Args(1) { $problem->detail( $c->req->param('detail') ); $problem->state( $c->req->param('state') ); $problem->name( $c->req->param('name') ); + $problem->flagged( $flagged ); if ( $c->req->param('email') ne $problem->user->email ) { my $user = $c->model('DB::User')->find_or_create( diff --git a/t/app/controller/admin.t b/t/app/controller/admin.t index 2740a1dbb..0c9f03fa6 100644 --- a/t/app/controller/admin.t +++ b/t/app/controller/admin.t @@ -233,6 +233,7 @@ foreach my $test ( name => 'Test User', email => $user->email, anonymous => 0, + flagged => undef, }, changes => { title => 'Edited Report', @@ -250,6 +251,7 @@ foreach my $test ( name => 'Test User', email => $user->email, anonymous => 0, + flagged => undef, }, changes => { detail => 'Edited Detail', @@ -267,6 +269,7 @@ foreach my $test ( name => 'Test User', email => $user->email, anonymous => 0, + flagged => undef, }, changes => { name => 'Edited User', @@ -277,7 +280,7 @@ foreach my $test ( user => $user, }, { - description => 'edit report user email', + description => 'edit report set flagged true', fields => { title => 'Edited Report', detail => 'Edited Detail', @@ -285,13 +288,33 @@ foreach my $test ( name => 'Edited User', email => $user->email, anonymous => 0, + flagged => undef, }, changes => { - email => $user2->email, + flagged => 'on', }, log_count => 4, log_entries => [ qw/edit edit edit edit/ ], resend => 0, + user => $user, + }, + { + description => 'edit report user email', + fields => { + title => 'Edited Report', + detail => 'Edited Detail', + state => 'confirmed', + name => 'Edited User', + email => $user->email, + anonymous => 0, + flagged => 'on', + }, + changes => { + email => $user2->email, + }, + log_count => 5, + log_entries => [ qw/edit edit edit edit edit/ ], + resend => 0, user => $user2, }, { @@ -303,12 +326,13 @@ foreach my $test ( name => 'Edited User', email => $user2->email, anonymous => 0, + flagged => 'on', }, changes => { state => 'unconfirmed' }, - log_count => 5, - log_entries => [ qw/state_change edit edit edit edit/ ], + log_count => 6, + log_entries => [ qw/state_change edit edit edit edit edit/ ], resend => 0, }, { @@ -320,12 +344,13 @@ foreach my $test ( name => 'Edited User', email => $user2->email, anonymous => 0, + flagged => 'on', }, changes => { state => 'confirmed' }, - log_count => 6, - log_entries => [ qw/state_change state_change edit edit edit edit/ ], + log_count => 7, + log_entries => [ qw/state_change state_change edit edit edit edit edit/ ], resend => 0, }, { @@ -337,12 +362,13 @@ foreach my $test ( name => 'Edited User', email => $user2->email, anonymous => 0, + flagged => 'on', }, changes => { state => 'fixed' }, - log_count => 7, - log_entries => [ qw/state_change state_change state_change edit edit edit edit/ ], + log_count => 8, + log_entries => [ qw/state_change state_change state_change edit edit edit edit edit/ ], resend => 0, }, { @@ -354,12 +380,13 @@ foreach my $test ( name => 'Edited User', email => $user2->email, anonymous => 0, + flagged => 'on', }, changes => { state => 'hidden' }, - log_count => 8, - log_entries => [ qw/state_change state_change state_change state_change edit edit edit edit/ ], + log_count => 9, + log_entries => [ qw/state_change state_change state_change state_change edit edit edit edit edit/ ], resend => 0, }, { @@ -371,13 +398,14 @@ foreach my $test ( name => 'Edited User', email => $user2->email, anonymous => 0, + flagged => 'on', }, changes => { state => 'confirmed', anonymous => 1, }, - log_count => 10, - log_entries => [ qw/edit state_change state_change state_change state_change state_change edit edit edit edit/ ], + log_count => 11, + log_entries => [ qw/edit state_change state_change state_change state_change state_change edit edit edit edit edit/ ], resend => 0, }, { @@ -389,11 +417,12 @@ foreach my $test ( name => 'Edited User', email => $user2->email, anonymous => 1, + flagged => 'on', }, changes => { }, - log_count => 11, - log_entries => [ qw/resend edit state_change state_change state_change state_change state_change edit edit edit edit/ ], + log_count => 12, + log_entries => [ qw/resend edit state_change state_change state_change state_change state_change edit edit edit edit edit/ ], resend => 1, }, ) { @@ -426,6 +455,7 @@ foreach my $test ( $mech->content_lacks( 'type="submit" name="resend"', 'no resend button' ); } + $test->{changes}->{flagged} = 1 if $test->{changes}->{flagged}; is $report->$_, $test->{changes}->{$_}, "$_ updated" for grep { $_ ne 'email' } keys %{ $test->{changes} }; if ( $test->{user} ) { @@ -449,6 +479,7 @@ subtest 'change email to new user' => sub { name => $report->name, email => $report->user->email, anonymous => 1, + flagged => 'on', }; is_deeply( $mech->visible_form_values(), $fields, 'initial form values' ); diff --git a/templates/web/default/admin/report_edit.html b/templates/web/default/admin/report_edit.html index d59885681..2f025ec64 100644 --- a/templates/web/default/admin/report_edit.html +++ b/templates/web/default/admin/report_edit.html @@ -35,6 +35,7 @@ <li>[% loc('Cobrand:') %] [% problem.cobrand %]</li> <li>[% loc('Cobrand data:') %] [% problem.cobrand_data %]</li> <li>[% loc('Going to send questionnaire?') %] [% IF problem.send_questionnaire %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</li> +<li><label for="flagged">[% loc('Flagged:') %]</label> <input type="checkbox" name="flagged"[% ' checked' IF problem.flagged %]></li> [% IF problem.photo %] [% photo = problem.get_photo_params %] |