diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2018-10-12 14:58:26 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2018-10-22 15:00:46 +0100 |
commit | c73e8b5485c4016921777b95582bbe92853f5e4c (patch) | |
tree | 415b778c29c8ca6fe723e10e9f9365c1cd666025 /perllib/FixMyStreet/App/Controller/Moderate.pm | |
parent | d4f330c29611ad469bc9bfa5a46ddc9bc25501cb (diff) |
Allow moderation to potentially change photos.
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Moderate.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Moderate.pm | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Moderate.pm b/perllib/FixMyStreet/App/Controller/Moderate.pm index c47c34f37..d8fc38211 100644 --- a/perllib/FixMyStreet/App/Controller/Moderate.pm +++ b/perllib/FixMyStreet/App/Controller/Moderate.pm @@ -69,19 +69,40 @@ sub report : Chained('moderate') : PathPart('report') : CaptureArgs(1) { sub moderate_report : Chained('report') : PathPart('') : Args(0) { my ($self, $c) = @_; + my $problem = $c->stash->{problem}; + # Make sure user can moderate this report - $c->detach unless $c->user->can_moderate($c->stash->{problem}); + $c->detach unless $c->user->can_moderate($problem); $c->forward('report_moderate_hide'); my @types = grep $_, - ($c->user->can_moderate_title($c->stash->{problem}, 1) + ($c->user->can_moderate_title($problem, 1) ? $c->forward('moderate_text', [ 'title' ]) : ()), $c->forward('moderate_text', [ 'detail' ]), $c->forward('moderate_boolean', [ 'anonymous', 'show_name' ]), $c->forward('moderate_boolean', [ 'photo' ]); + # Deal with possible photo changes. If a moderate form uses a standard + # photo upload field (with upload_fileid, label and file upload handlers), + # this will allow photos to be changed, not just switched on/off. You will + # probably want a hidden field with problem_photo=1 to skip that check. + my $photo_edit_form = defined $c->get_param('photo1'); + if ($photo_edit_form) { + $c->forward('/photo/process_photo'); + if ( my $photo_error = delete $c->stash->{photo_error} ) { + $c->flash->{photo_error} = $photo_error; + } else { + my $fileid = $c->stash->{upload_fileid}; + if ($fileid ne $problem->photo) { + $problem->get_photoset->delete_cached; + $problem->update({ photo => $fileid || undef }); + push @types, 'photo'; + } + } + } + $c->detach( 'report_moderate_audit', \@types ) } |