From 5d69546de52f0a584641bd3547ea754a7ac4fafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Mon, 4 Apr 2022 18:28:55 +0200 Subject: [PATCH] Ticket 552: Delete files reactivation (except locked ones) --- app/Http/Controllers/MediaController.php | 41 +++++----- .../Requests/Bo/AjaxDeleteMediaRequest.php | 31 ++++++++ resources/js/app.js | 3 +- .../media-manager/ActionsComponent.vue | 79 +++++++++++++++++-- .../media-manager/DisplayComponent.vue | 8 +- .../media-editor/EditComponents.vue | 2 +- .../media-editor/tabs/EditComponent.vue | 63 +++++++++++++-- resources/js/media.js | 54 ------------- 8 files changed, 191 insertions(+), 90 deletions(-) create mode 100644 app/Http/Requests/Bo/AjaxDeleteMediaRequest.php diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index 294659d..11cf952 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Http\Requests\Bo\AjaxDeleteMediaRequest; use App\Http\Traits\ArcadiaLink; use Elasticquent\ElasticquentTrait; use Illuminate\Support\Facades\Auth; @@ -643,41 +644,45 @@ class MediaController extends Controller /** * supprimer des médias * + * @param AjaxDeleteMediaRequest $request + * @return \Illuminate\Http\JsonResponse */ - public function removeMedia(Request $request) + public function removeMedia(AjaxDeleteMediaRequest $request) { - $deletedMediasList = array(); - Auth::user()->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]); - $user_id = Auth::user()->id; - $deleteMedias = $request->input('medias'); + $deletedMediasList = []; - if (Auth::user()->hasRole(config('roles.const.ADMIN'))){ - $medias = Media::whereIn('id', $deleteMedias)->get(); - }else{ - $medias = Media::whereIn('id', $deleteMedias)->whereNull('arcadia_id')->get(); + /** @var \App\User $user */ + $user = auth()->user(); + $user->authorizeRoles([config('roles.const.ADMIN'), config('roles.const.REDACTEUR')]); + $user_id = Auth::user()->id; + + if ($user->hasRole(config('roles.const.ADMIN'))) { + $medias = Media::whereIn('id', $request->medias)->get(); + } else { + $medias = Media::whereIn('id', $request->medias)->whereNull('arcadia_id')->get(); } foreach ($medias as $media) { $deletedMediasList[] = $media->id; - // Historique des actions - $historique = new historique(); - $historique->user_id = $user_id; - $historique->media_id = $media->id; - $historique->type = "Suppression"; - $historique->description = "Le média a été supprimé"; + // * Historique des actions + $historique = new Historique(); + $historique->user_id = $user->id; + $historique->media_id = $media->id; + $historique->type = 'Suppression'; + $historique->description = 'Le média a été supprimé'; $historique->save(); - // Elasticsearch + // * Elasticsearch $media->removeFromIndex(); $media->delete(); - // Lien Arcadia + // * Lien Arcadia ArcadiaLink::delete($media); } - return json_encode($deletedMediasList); + return response()->json($deletedMediasList); } /** diff --git a/app/Http/Requests/Bo/AjaxDeleteMediaRequest.php b/app/Http/Requests/Bo/AjaxDeleteMediaRequest.php new file mode 100644 index 0000000..180a389 --- /dev/null +++ b/app/Http/Requests/Bo/AjaxDeleteMediaRequest.php @@ -0,0 +1,31 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'medias' => 'required|array', + 'medias.*' => 'exists:medias,id,deleted_at,NULL' + ]; + } +} diff --git a/resources/js/app.js b/resources/js/app.js index 8a8e67d..2589641 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -302,6 +302,7 @@ $.fancyMessage = function( opts ) { title: 'Are you sure?', message: '', type: '', + callback: $.noop }, opts || {}) return $.fancybox.open({ @@ -317,7 +318,7 @@ $.fancyMessage = function( opts ) { '

' + '', opts: { - afterClose: opts.afterClose, + afterClose: opts.callback, animationDuration: 350, animationEffect: 'material', modal: false, diff --git a/resources/js/components/media-manager/ActionsComponent.vue b/resources/js/components/media-manager/ActionsComponent.vue index 1381c7f..21edef4 100644 --- a/resources/js/components/media-manager/ActionsComponent.vue +++ b/resources/js/components/media-manager/ActionsComponent.vue @@ -1,11 +1,10 @@