aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2011-07-20 11:29:58 +0100
committerMatthew Somerville <matthew@mysociety.org>2011-08-09 18:32:04 +0100
commite767b9fc4beb8fa3cb33e40a2dfe779e9ccef1d4 (patch)
treee50d5b7d31bcf3355b39c5b1e7bbac4f5f834a23
parent06d5c56d4ae1882e973b14199cf5d3063980823a (diff)
add remove user flag button to report and update edit pages
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm38
-rw-r--r--t/app/controller/admin.t45
-rw-r--r--templates/web/default/admin/report_blocks.html2
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 %]