diff options
author | Struan Donald <struan@exo.org.uk> | 2011-07-20 11:29:58 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2011-08-09 18:32:04 +0100 |
commit | e767b9fc4beb8fa3cb33e40a2dfe779e9ccef1d4 (patch) | |
tree | e50d5b7d31bcf3355b39c5b1e7bbac4f5f834a23 | |
parent | 06d5c56d4ae1882e973b14199cf5d3063980823a (diff) |
add remove user flag button to report and update edit pages
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 38 | ||||
-rw-r--r-- | t/app/controller/admin.t | 45 | ||||
-rw-r--r-- | templates/web/default/admin/report_blocks.html | 2 |
3 files changed, 79 insertions, 6 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index ed7fc7ce8..fcdc351ce 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -520,6 +520,11 @@ sub report_edit : Path('report_edit') : Args(1) { } elsif ( $c->req->param('flaguser') ) { $c->forward('flag_user'); + $c->stash->{problem}->discard_changes; + } + elsif ( $c->req->param('removeuserflag') ) { + $c->forward('remove_user_flag'); + $c->stash->{problem}->discard_changes; } elsif ( $c->req->param('banuser') ) { $c->forward('ban_user'); @@ -637,6 +642,11 @@ sub update_edit : Path('update_edit') : Args(1) { } elsif ( $c->req->param('flaguser') ) { $c->forward('flag_user'); + $c->stash->{update}->discard_changes; + } + elsif ( $c->req->param('removeuserflag') ) { + $c->forward('remove_user_flag'); + $c->stash->{update}->discard_changes; } elsif ( $c->req->param('submit') ) { $c->forward('check_token'); @@ -871,7 +881,7 @@ sub ban_user : Private { =head2 flag_user -Sets the flag on a user with the give email +Sets the flag on a user with the given email =cut @@ -897,6 +907,32 @@ sub flag_user : Private { return 1; } +=head2 remove_user_flag + +Remove the flag on a user with the given email + +=cut + +sub remove_user_flag : Private { + my ( $self, $c ) = @_; + + my $email = $c->req->param('email'); + + return unless $email; + + my $user = $c->model('DB::User')->find({ email => $email }); + + if ( !$user ) { + $c->stash->{status_message} = _('Could not find user'); + } else { + $user->flagged(0); + $user->update; + $c->stash->{status_message} = _('User flag removed'); + } + + return 1; +} + =head2 check_email_for_abuse diff --git a/t/app/controller/admin.t b/t/app/controller/admin.t index 2ccb2ea73..8d55bbc18 100644 --- a/t/app/controller/admin.t +++ b/t/app/controller/admin.t @@ -550,13 +550,32 @@ subtest 'flagging user from report page' => sub { $mech->click_ok('flaguser'); $mech->content_contains('User flagged'); - $mech->content_contains('<small>(Flagged)</small>'); + $mech->content_contains('Remove flag'); $report->discard_changes; ok $report->user->flagged, 'user flagged'; $mech->get_ok( '/admin/report_edit/' . $report->id ); - $mech->content_contains('<small>(Flagged)</small>'); + $mech->content_contains('Remove flag'); +}; + +subtest 'unflagging user from report page' => sub { + $report->user->flagged(1); + $report->user->update; + + $mech->get_ok( '/admin/report_edit/' . $report->id ); + $mech->content_contains('Remove flag'); + + $mech->click_ok('removeuserflag'); + + $mech->content_contains('User flag removed'); + $mech->content_contains('Flag user'); + + $report->discard_changes; + ok !$report->user->flagged, 'user not flagged'; + + $mech->get_ok( '/admin/report_edit/' . $report->id ); + $mech->content_contains('Flag user'); }; $log_entries->delete; @@ -770,15 +789,33 @@ subtest 'flagging user from update page' => sub { $mech->click_ok('flaguser'); $mech->content_contains('User flagged'); - $mech->content_contains('<small>(Flagged)</small>'); + $mech->content_contains('Remove flag'); $update->discard_changes; ok $update->user->flagged, 'user flagged'; $mech->get_ok( '/admin/update_edit/' . $update->id ); - $mech->content_contains('<small>(Flagged)</small>'); + $mech->content_contains('Remove flag'); }; +subtest 'unflagging user from update page' => sub { + $update->user->flagged(1); + $update->user->update; + + $mech->get_ok( '/admin/update_edit/' . $update->id ); + $mech->content_contains('Remove flag'); + + $mech->click_ok('removeuserflag'); + + $mech->content_contains('User flag removed'); + $mech->content_contains('Flag user'); + + $update->discard_changes; + ok !$update->user->flagged, 'user not flagged'; + + $mech->get_ok( '/admin/update_edit/' . $update->id ); + $mech->content_contains('Flag user'); +}; subtest 'hiding comment marked as fixed reopens report' => sub { $update->mark_fixed( 1 ); diff --git a/templates/web/default/admin/report_blocks.html b/templates/web/default/admin/report_blocks.html index fa610b597..f08529ce7 100644 --- a/templates/web/default/admin/report_blocks.html +++ b/templates/web/default/admin/report_blocks.html @@ -13,5 +13,5 @@ [%- END %] [% BLOCK flag_button -%] -[% IF user.flagged || user_flagged %]<small>([% loc('Flagged') %])</small>[% ELSE %]<input type="submit" name="flaguser" value="[% loc('Flag user') %]" />[% END %] +[% IF user.flagged || user_flagged %]<input type="submit" name="removeuserflag" value="[% loc('Remove flag') %]">[% ELSE %]<input type="submit" name="flaguser" value="[% loc('Flag user') %]" />[% END %] [%- END %] |