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..d1cec4f 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -158,6 +158,7 @@ Vue.use(Dialog, { const store = new Vuex.Store({ state: { + loading: false, reload: '', sujet: 0, folder: -1, @@ -172,6 +173,9 @@ const store = new Vuex.Store({ mediaTab: 'preview' }, mutations: { + Loading(state, payload) { + state.loading = payload.loading; + }, Reload (state, payload) { state.reload = payload.reload; }, @@ -302,6 +306,7 @@ $.fancyMessage = function( opts ) { title: 'Are you sure?', message: '', type: '', + callback: $.noop }, opts || {}) return $.fancybox.open({ @@ -317,7 +322,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..034d277 100644 --- a/resources/js/components/media-manager/ActionsComponent.vue +++ b/resources/js/components/media-manager/ActionsComponent.vue @@ -1,11 +1,10 @@