Merge branch 'ticket552' into develop
This commit is contained in:
commit
2ed9468fb5
13 changed files with 305 additions and 138 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
31
app/Http/Requests/Bo/AjaxDeleteMediaRequest.php
Normal file
31
app/Http/Requests/Bo/AjaxDeleteMediaRequest.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Bo;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class AjaxDeleteMediaRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return auth()->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'
|
||||
];
|
||||
}
|
||||
}
|
||||
7
resources/js/app.js
vendored
7
resources/js/app.js
vendored
|
|
@ -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 ) {
|
|||
'</p>' +
|
||||
'</div>',
|
||||
opts: {
|
||||
afterClose: opts.afterClose,
|
||||
afterClose: opts.callback,
|
||||
animationDuration: 350,
|
||||
animationEffect: 'material',
|
||||
modal: false,
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
<template>
|
||||
<div>
|
||||
<a v-if="storeRole !== 2" @click="openUploadFrom" href="#" class="action_add_media"><i class="fas fa-file-upload"></i> Ajouter un média</a>
|
||||
<a href="#" @click="download" class="action_download_media"><i class="fas fa-file-download"></i> Télécharger</a>
|
||||
<!--<a v-if="storeRole === 1 || storeRole === 4" href="#" class="action_delete_media"><i class="fas fa-trash-alt"></i> Supprimer</a>-->
|
||||
<a v-if="storeRole !== 2" @click="duplicateMedia" href="#" class="action_duplicate_media"><i
|
||||
class="fa fa-copy"></i> Dupliquer</a>
|
||||
<a v-if="storeRole !== 2" @click="applySticker" href="#" class="action_tag_media"><i class="fas fa-tags"></i>
|
||||
<a v-if="storeRole !== 2" v-on:click.prevent="openUploadFrom" href="#" class="action_add_media"><i class="fas fa-file-upload"></i> Ajouter un média</a>
|
||||
<a href="#" v-on:click.prevent="download" class="action_download_media"><i class="fas fa-file-download"></i> Télécharger</a>
|
||||
<a v-if="(storeRole === 1 || storeRole === 4) && !selectionContainsLockedMedias" v-on:click.prevent="deleteMedias" class="action_delete_media"><i class="fas fa-trash-alt"></i> Supprimer</a>
|
||||
<a v-if="storeRole !== 2 && !selectionContainsLockedMedias" v-on:click.prevent="duplicateMedia" href="#" class="action_duplicate_media"><i class="fa fa-copy"></i> Dupliquer</a>
|
||||
<a v-if="storeRole !== 2" v-on:click.prevent="applySticker" href="#" class="action_tag_media"><i class="fas fa-tags"></i>
|
||||
Etiquette</a>
|
||||
|
||||
<div id="form_etiquette" style="display: none;">
|
||||
|
|
@ -112,7 +111,8 @@
|
|||
data: function () {
|
||||
return {
|
||||
files: [],
|
||||
uploadedFiles: []
|
||||
uploadedFiles: [],
|
||||
selectionContainsLockedMedias : true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
$.fancyMessage({title: "Dupliquer un média", message: response.data.error, type: "error"});
|
||||
}
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -159,6 +159,70 @@
|
|||
});
|
||||
}
|
||||
},
|
||||
deleteMedias() {
|
||||
let self = this, medias = this.storeGrabbed
|
||||
if (Object.keys(medias).length === 0) {
|
||||
$.fancyMessage({
|
||||
title: "Supprimer un média",
|
||||
message: "Veuillez sélectionner un média.",
|
||||
type: "info"
|
||||
});
|
||||
} else {
|
||||
$.fancyConfirm({
|
||||
title: "Suppression de panier",
|
||||
message: 'Etes-vous sûr de vouloir supprimer ces média ?',
|
||||
okButton: 'Supprimer',
|
||||
noButton: 'Annuler',
|
||||
callback: function (value) {
|
||||
if(!value) {
|
||||
return;
|
||||
}
|
||||
self.$store.commit({
|
||||
type: 'Loading',
|
||||
loading: true
|
||||
})
|
||||
$.ajax({
|
||||
url: '/ajax/remove-media',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
medias: medias.map(function(obj) { return obj.id })
|
||||
},
|
||||
success: function(result) {
|
||||
self.$store.commit({
|
||||
type: 'Loading',
|
||||
loading: false
|
||||
})
|
||||
let reload = function() {
|
||||
self.$store.commit({
|
||||
type: 'Reload',
|
||||
reload: Math.random()
|
||||
})
|
||||
}
|
||||
if(result.length != medias.length) {
|
||||
$.fancybox.close()
|
||||
if(medias.length == 1) {
|
||||
$.fancyMessage({title : "Attention", message : "Ce média est lié à Arcadia. Suppression refusée. ", type : "error"})
|
||||
}else{
|
||||
$.fancyMessage({title : "Attention", message : "Votre sélection contient des médias liés à Arcadia. Ces médias ne seront pas supprimés.", type : "info", callback: reload})
|
||||
}
|
||||
} else {
|
||||
$.fancyMessage({title : "Suppression de média", message : "Le média a été supprimé.", type : "info", callback: reload})
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
self.$store.commit({
|
||||
type: 'Loading',
|
||||
loading: false
|
||||
})
|
||||
$.fancybox.close()
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du média, merci d'actualiser la page.", type : "error"})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
applySticker() {
|
||||
if (Object.keys(this.storeGrabbed).length === 0) {
|
||||
$.fancyMessage({
|
||||
|
|
@ -192,7 +256,7 @@
|
|||
$.fancybox.close();
|
||||
}).catch(error => {
|
||||
$.fancybox.close();
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -375,6 +439,19 @@
|
|||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
storeGrabbed() {
|
||||
let self = this
|
||||
self.selectionContainsLockedMedias = false
|
||||
this.storeGrabbed.map((obj) => {
|
||||
if(obj.isLocked) {
|
||||
self.selectionContainsLockedMedias = true
|
||||
}
|
||||
})
|
||||
if(!this.storeGrabbed.length) {
|
||||
// * Hide if empty selection
|
||||
self.selectionContainsLockedMedias = true
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@
|
|||
}
|
||||
}
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -161,7 +161,7 @@
|
|||
type: "info"
|
||||
});
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -205,7 +205,7 @@
|
|||
type: "info"
|
||||
});
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@
|
|||
type: "info"
|
||||
});
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -282,7 +282,7 @@
|
|||
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du média, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -313,7 +313,7 @@
|
|||
});
|
||||
_this2.$loading.hide();
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,8 +58,8 @@
|
|||
storeGrabbed () {
|
||||
return this.$store.state.grabbed;
|
||||
},
|
||||
storeReload () {
|
||||
return this.$store.state.reload;
|
||||
storeLoading () {
|
||||
return this.$store.state.loading;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
|
@ -86,6 +86,9 @@
|
|||
storeFilters() {
|
||||
this.init();
|
||||
},
|
||||
storeLoading() {
|
||||
this.loader = this.$store.state.loading
|
||||
},
|
||||
storeMedia() {
|
||||
if (Object.keys(this.storeMedia).length > 0) {
|
||||
if (this.storeMedia.close !== undefined && this.storeMedia.close === true) {
|
||||
|
|
@ -102,9 +105,6 @@
|
|||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
storeReload() {
|
||||
this.init();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
@ -116,7 +116,7 @@
|
|||
type: 'updateGrabbed',
|
||||
grabbed: []
|
||||
});
|
||||
this.loadMedias(this.$store.state);
|
||||
this.loadMedias()
|
||||
//set dateSorted
|
||||
this.dateSorted = false;
|
||||
const _that = this;
|
||||
|
|
@ -136,7 +136,8 @@
|
|||
$(".action_wrapper .display i.fa-calendar-check").show();
|
||||
}
|
||||
},
|
||||
loadMedias($state) {
|
||||
loadMedias($state = null) {
|
||||
let self = this
|
||||
if (this.offset === 0){
|
||||
this.medias = [];
|
||||
this.loader = true;
|
||||
|
|
@ -151,25 +152,27 @@
|
|||
limit: this.limit,
|
||||
saveSearch: 0
|
||||
}).then(response => {
|
||||
if (this.offset === 0){
|
||||
this.medias = response.data;
|
||||
this.loader = false;
|
||||
this.$store.commit({
|
||||
if (self.offset === 0){
|
||||
self.medias = response.data;
|
||||
self.loader = false;
|
||||
self.$store.commit({
|
||||
type: 'updateRole',
|
||||
role: response.data.role
|
||||
});
|
||||
}else{
|
||||
if (response.data.data.length){
|
||||
this.medias.data.push(...response.data.data);
|
||||
$state.loaded();
|
||||
this.$store.commit({
|
||||
self.medias.data.push(...response.data.data);
|
||||
if($state) {
|
||||
$state.loaded()
|
||||
}
|
||||
self.$store.commit({
|
||||
type: 'updateRole',
|
||||
role: response.data.role
|
||||
});
|
||||
}else{
|
||||
$state.complete();
|
||||
}else if($state) {
|
||||
$state.complete()
|
||||
}
|
||||
this.scrollLoader = false;
|
||||
self.scrollLoader = false;
|
||||
}
|
||||
|
||||
// Si requete CA alors on cherche la version la plus récente plus griser les autres
|
||||
|
|
@ -186,18 +189,18 @@
|
|||
this.isCAQuery = false;
|
||||
}
|
||||
|
||||
this.offset = this.offset + this.limit;
|
||||
})
|
||||
.catch(function (error) {
|
||||
if(error.response.status === 419) {
|
||||
self.offset = self.offset + self.limit;
|
||||
}).catch(function (error) {
|
||||
console.error(error)
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
console.log(error);
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
infiniteScroll($state) {
|
||||
this.loadMedias($state);
|
||||
this.loadMedias($state)
|
||||
},
|
||||
resetInfiniteScroll() {
|
||||
this.infiniteId = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<div class="folder_container">
|
||||
<div ref="folder_container" class="folder_container">
|
||||
<div :style="isLoading === true ? 'display:block' : 'display:none;'" class="loader">
|
||||
<i class="fa fa-circle-notch fa-spin"></i>
|
||||
</div>
|
||||
|
|
@ -9,7 +9,8 @@
|
|||
<ol class="dd-list dd3-list root">
|
||||
<li v-for="item in folders"
|
||||
:class="item.parent_id === null ? 'dd-item dd3-item parent' : 'dd-item dd3-item'"
|
||||
:data-id="item.id">
|
||||
:data-id="item.id"
|
||||
:id="'_li'+item.id">
|
||||
<div :class="handleClass(item)" @click="toggle(item)"></div>
|
||||
<div @click="selectFolder(item)" @drop="moveMedia($event, item)" @dragover.prevent @dragenter.prevent
|
||||
:class="item.id === storeFolder ? 'dd3-content selected' : 'dd3-content'">
|
||||
|
|
@ -22,7 +23,8 @@
|
|||
<ol v-if="item.sousdossiers.length > 0" class='dd-list' :parent-id="item.id">
|
||||
<li v-for="item2 in item.sousdossiers"
|
||||
:class="item2.parent_id === null ? 'dd-item dd3-item parent' : 'dd-item dd3-item'"
|
||||
:data-id="item2.id">
|
||||
:data-id="item2.id"
|
||||
:id="'_li'+item2.id">
|
||||
<div :class="handleClass(item2)" @click="toggle(item2)"></div>
|
||||
<div @click="selectFolder(item2)" @drop="moveMedia($event, item2)" @dragover.prevent @dragenter.prevent
|
||||
:class="item2.id === storeFolder ? 'dd3-content selected' : 'dd3-content'">
|
||||
|
|
@ -36,7 +38,8 @@
|
|||
<ol v-if="item2.sousdossiers.length > 0" class='dd-list' :parent-id="item2.id">
|
||||
<li v-for="item3 in item2.sousdossiers"
|
||||
:class="item3.parent_id === null ? 'dd-item dd3-item parent' : 'dd-item dd3-item'"
|
||||
:data-id="item3.id">
|
||||
:data-id="item3.id"
|
||||
:id="'_li'+item3.id">
|
||||
<div
|
||||
:class="item3.parent_id === null ? 'dd-handle dd3-handle no-handle' : 'dd-handle dd3-handle'"></div>
|
||||
<div @click="selectFolder(item3)" @drop="moveMedia($event, item3)" @dragover.prevent @dragenter.prevent
|
||||
|
|
@ -77,9 +80,13 @@
|
|||
storeGrabbed() {
|
||||
return this.$store.state.grabbed
|
||||
},
|
||||
storeReload () {
|
||||
return this.$store.state.reload;
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
'selectedFolder' : false,
|
||||
'isLoading': true,
|
||||
'oFolders': [],
|
||||
'racineCount': 0,
|
||||
|
|
@ -89,9 +96,28 @@
|
|||
watch: {
|
||||
storeSujet() {
|
||||
this.initFolders();
|
||||
},
|
||||
storeReload() {
|
||||
this.reload()
|
||||
},
|
||||
isLoading() {
|
||||
this.$store.commit({
|
||||
type: 'Loading',
|
||||
loading: this.isLoading
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
scrollToContent(item, headerOffset = 0) {
|
||||
let element = document.getElementById('_li' + item.id);
|
||||
let elementPosition = element.getBoundingClientRect().top;
|
||||
let offsetPosition = this.$refs.folder_container.pageYOffset + elementPosition - headerOffset;
|
||||
|
||||
this.$refs.folder_container.scrollTo({
|
||||
top: offsetPosition,
|
||||
behavior: "smooth"
|
||||
})
|
||||
},
|
||||
initFolders(toSelectFolder = false) {
|
||||
this.isLoading = true;
|
||||
this.folders = [];
|
||||
|
|
@ -107,19 +133,25 @@
|
|||
this.isLoading = false;
|
||||
|
||||
if (toSelectFolder !== false){
|
||||
this.selectFolder(toSelectFolder);
|
||||
this.selectFolder(toSelectFolder)
|
||||
this.$nextTick(() => {
|
||||
this.scrollToContent(toSelectFolder)
|
||||
})
|
||||
} else {
|
||||
// ! Reset Current folder to none selected
|
||||
this.$store.state.folder = -1
|
||||
}
|
||||
}).catch(function (error) {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
console.log(error);
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
reload() {
|
||||
this.initFolders(this.selectedFolder)
|
||||
},
|
||||
renderItems() {
|
||||
const favs = this.oFolders.filter(item => item.favoris === true),
|
||||
self = this
|
||||
|
|
@ -139,6 +171,7 @@
|
|||
})
|
||||
},
|
||||
selectFolder(item) {
|
||||
this.selectedFolder = item
|
||||
let filter = this.storeFilters.findIndex(e => e.type === 'dossier_id');
|
||||
if (filter !== -1) {
|
||||
this.$delete(this.storeFilters, filter);
|
||||
|
|
@ -167,7 +200,7 @@
|
|||
}).then(response => {
|
||||
_this2.initFolders();
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -176,7 +209,7 @@
|
|||
message: "Une erreur est survenue, veuillez recharger la page (Ctrl + F5).",
|
||||
type: "error"
|
||||
});
|
||||
console.log(error);
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
moveMedia(evt, folder) {
|
||||
|
|
@ -202,12 +235,12 @@
|
|||
_this2.$loading.hide();
|
||||
}, 1000);
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
_this2.$loading.hide();
|
||||
console.log(error);
|
||||
console.error(error);
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors du déplacement, merci d'actualiser la page.", type : "error"});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
formats: response.data.formats
|
||||
});
|
||||
}).catch(function (error) {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
</header>
|
||||
<div class="main_content">
|
||||
<mm-me-tab-preview :currentTab="currentTab"></mm-me-tab-preview>
|
||||
<mm-me-tab-edit :currentTab="currentTab" :typemedias="typemedias" :langues="langues" :societes="societes" :marques="marques" :etiquettes="etiquettes" :copyrights="copyrights"></mm-me-tab-edit>
|
||||
<mm-me-tab-edit :currentTab="currentTab" :typemedias="typemedias" :langues="langues" :societes="societes" :marques="marques" :etiquettes="etiquettes" :copyrights="copyrights" @closeEdit="close"></mm-me-tab-edit>
|
||||
<mm-me-tab-links :currentTab="currentTab"></mm-me-tab-links>
|
||||
<mm-me-tab-history :currentTab="currentTab"></mm-me-tab-history>
|
||||
</div>
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
}
|
||||
}
|
||||
}).catch(function (error) {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
@ -231,7 +231,7 @@
|
|||
$.fancyMessage({title: "Sauvegarde d'un média", message: response.data.error, type: "error"});
|
||||
}
|
||||
}).catch(function (error) {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -196,9 +196,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="button_bar">
|
||||
<!--<button v-if="this.storeMedia.role === 1 || this.storeMedia.role === 3" class="btn btn-red btn_tab_edit_delete" type="button" name="button" :disabled="this.oMedia.isLocked === 1">Supprimer</button>-->
|
||||
<button @click="CheckForm" v-if="storeRole !== 2" class="btn btn_tab_edit_save" type="button" name="button"
|
||||
:disabled="this.oMedia.isLocked === 1">Sauvegarder
|
||||
<button v-if="this.storeRole === 1 || this.storeRole === 3" class="btn btn-red btn_tab_edit_delete" v-on:click.prevent="DeleteMedia" type="button" name="button" :disabled="oMedia.isLocked === 1">Supprimer</button>
|
||||
<button @click="CheckForm" v-if="storeRole !== 2" class="btn btn_tab_edit_save" type="button" name="button" :disabled="oMedia.isLocked === 1">Sauvegarder
|
||||
</button>
|
||||
<!-- <a href="#" class="btn btn-black mr-10 btn_tab_edit_cancel">Fermer</a>-->
|
||||
</div>
|
||||
|
|
@ -318,7 +317,7 @@
|
|||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
console.log(error);
|
||||
console.error(error);
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({
|
||||
title: "Erreur",
|
||||
|
|
@ -358,7 +357,7 @@
|
|||
message: "Erreur lors de l'opération, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
console.log(error);
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
CheckForm() {
|
||||
|
|
@ -412,9 +411,63 @@
|
|||
message: "Erreur lors de l'opération, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
console.log(error);
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
DeleteMedia() {
|
||||
let self = this
|
||||
$.fancyConfirm({
|
||||
title: "Suppression de panier",
|
||||
message: 'Etes-vous sûr de vouloir supprimer ce média ? ' + (self.oMedia.arcadia_id ? '(Lié à Arcadia)' : ''),
|
||||
okButton: 'Supprimer',
|
||||
noButton: 'Annuler',
|
||||
callback: function (value) {
|
||||
if(!value) {
|
||||
return;
|
||||
}
|
||||
self.$store.commit({
|
||||
type: 'Loading',
|
||||
loading: true
|
||||
})
|
||||
$.ajax({
|
||||
url: '/ajax/remove-media',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
medias: [self.oMedia.id]
|
||||
},
|
||||
success: function(result){
|
||||
self.$store.commit({
|
||||
type: 'Loading',
|
||||
loading: false
|
||||
})
|
||||
if(result.length != 1) {
|
||||
$.fancybox.close()
|
||||
if(medias.length == 1) {
|
||||
$.fancyMessage({title : "Attention", message : "Ce média est lié à Arcadia. Suppression refusée. ", type : "error"})
|
||||
}else{
|
||||
$.fancyMessage({title : "Attention", message : "Votre sélection contient des médias liés à Arcadia. Ces médias ne seront pas supprimés.", type : "info"})
|
||||
}
|
||||
} else {
|
||||
self.$emit('closeEdit')
|
||||
$.fancyMessage({title : "Suppression de média", message : "Le média a été supprimé.", type : "info"})
|
||||
$.each(result, function (index, value) {
|
||||
self.DeleteArticles(value)
|
||||
})
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
self.$store.commit({
|
||||
type: 'Loading',
|
||||
loading: false
|
||||
})
|
||||
$.fancybox.close()
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du média, merci d'actualiser la page.", type : "error"})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
AddArticles() {
|
||||
if (this.oMedia.isLocked === 1)
|
||||
return;
|
||||
|
|
@ -470,13 +523,18 @@
|
|||
message: "Erreur lors de l'opération, merci d'actualiser la page.",
|
||||
type: "error"
|
||||
});
|
||||
console.log(error);
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
DeleteArticles(article_id) {
|
||||
if (this.oMedia.isLocked === 1)
|
||||
if (this.oMedia.isLocked === 1) {
|
||||
return;
|
||||
}
|
||||
this.oMedia.articles = this.oMedia.articles.filter(e => e.id !== article_id);
|
||||
this.$store.commit({
|
||||
type: 'Reload',
|
||||
reload: Math.random()
|
||||
});
|
||||
},
|
||||
AddMarques(marque) {
|
||||
const index = this.oMedia.marques.find(e => e.codMarq === marque.codMarq);
|
||||
|
|
@ -504,6 +562,15 @@
|
|||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
<style lang="scss">
|
||||
.main_content {
|
||||
button:disabled,
|
||||
button:disabled:hover,
|
||||
button[disabled],
|
||||
button[disabled]:hover {
|
||||
border: 1px solid #999999 !important;
|
||||
background-color: #cccccc !important;
|
||||
color: #666666 !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
}).then(response => {
|
||||
_this2.history = response.data.history;
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
}).then(response => {
|
||||
_this2.links = response.data.vignettes;
|
||||
}).catch(error => {
|
||||
if(error.response.status === 419) {
|
||||
if(error?.response?.status === 419) {
|
||||
__DAM.methods.sessionTimedOut()
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
54
resources/js/media.js
vendored
54
resources/js/media.js
vendored
|
|
@ -153,60 +153,6 @@ $(document).ready(function () {
|
|||
removeMedias(medias);
|
||||
});
|
||||
|
||||
// Suppression d'un média
|
||||
$(".btn_tab_edit_delete").on("click", function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
if ($(".tab_edit #arcadia_id").val().length) {
|
||||
var r = confirm("Etes-vous sûr de vouloir supprimer ce média ? (Lié à Arcadia)");
|
||||
} else {
|
||||
var r = confirm("Etes-vous sûr de vouloir supprimer ce média ?");
|
||||
}
|
||||
|
||||
if (r == true) {
|
||||
var medias = [$(window).data('current_edit_media')];
|
||||
$.ajax({
|
||||
url: '/ajax/remove-media',
|
||||
method: 'POST',
|
||||
dataType : 'json',
|
||||
data: {
|
||||
medias: medias
|
||||
},
|
||||
success: function(result){
|
||||
$.each(result, function (index, value) {
|
||||
$(".media_container .imageItem[data-id='"+value+"']").remove();
|
||||
});
|
||||
|
||||
// ---- MAJ du nb de média dans le dossier
|
||||
var currentFolder = $(window).data('currentFolder');
|
||||
if(currentFolder == 0 || currentFolder == ""){
|
||||
var count = $(".folder_container .root_folder .count");
|
||||
}else{
|
||||
var count = $(".folder_container .dd3-item[data-id='"+currentFolder+"'] > .dd3-content .count");
|
||||
}
|
||||
count.html(parseInt(count.html())-result.length);
|
||||
|
||||
if(result.length != medias.length){
|
||||
$.fancybox.close();
|
||||
if(medias.length == 1){
|
||||
$.fancyMessage({title : "Attention", message : "Ce média est lié à Arcadia. Suppression refusée. ", type : "error"});
|
||||
}else{
|
||||
$.fancyMessage({title : "Attention", message : "Votre sélection contient des médias liés à Arcadia. Ces médias ne seront pas supprimés.", type : "info"});
|
||||
}
|
||||
}else{
|
||||
$(".form_media_close").trigger('click');
|
||||
$.fancyMessage({title : "Suppression de média", message : "Le média a été supprimé.", type : "info"});
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
$.fancybox.close();
|
||||
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du média, merci d'actualiser la page.", type : "error"});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// ---- gestion des onglets de la popup d'édition
|
||||
$("#form_media .tabbtn").on("click" , function(event) {
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue