ldc-dam/resources/js/media.js
2019-08-09 10:51:42 +02:00

1809 lines
63 KiB
JavaScript
Vendored

$(document).ready(function() {
/******************************
Liste des dossiers
**********************************/
// ---- init des dossiers et des médias
if ( $( ".media_manager" ).length ) {
// initialise la page avec le bon sujet
if($("#sujetParameter").val() != ""){
$("#sujet_selector").val($("#sujetParameter").val());
}
// initialise la page avec le bon dossier
if($("#folderParameter").val() != ""){
$(window).data('currentFolder', $("#folderParameter").val());
}
// initialise les paramètres de recherche
if($("#filterParameter").val() != ""){
var filters = JSON.parse($("#filterParameter").val());
$(window).data('filter', filters);
}
initFolderManager($("#sujet_selector").val());
}
// ---- collapse/expand side menu
$(".close_side_menu").on('click', function(event) {
event.preventDefault();
if($(this).parents(".side_menu ").hasClass('collapse')){
$(this).parents(".side_menu ").removeClass('collapse')
$(this).find("i").removeClass('fa-chevron-right');
$(this).find("i").addClass('fa-chevron-left');
}else{
$(this).parents(".side_menu ").addClass('collapse');
$(this).find("i").removeClass('fa-chevron-left');
$(this).find("i").addClass('fa-chevron-right');
}
});
// ---- init des dossiers lorsqu'on change de sujet
$("#sujet_selector").on('change', function(event) {
var sujetId = $("#sujet_selector").val();
if(sujetId != "")
$('.dd').nestable('destroy');
$(window).data('currentFolder', 0);
// Vide la bar recherche
$(".search_filters_list").html("");
// supprime tous les éléments de recherche
$(window).data('filter', {});
// masque le bouton de reinitialisation
$(".filter_wrapper .reinit_search_btn").hide();
initFolderManager(sujetId);
});
// ---- sélectionner un dossier et favoris
$(".folder_container").on('click', '.dd3-content', function(e) {
e.preventDefault();
var target = e.target, $target = $(target);
var dossier_id = $target.parents(".dd3-item").attr("data-id");
if($target.hasClass('fa-star')){
// Gestion des favoris
var favoris = false;
if($target.hasClass("fas")){
$target.removeClass("fas").addClass("fal");
}else{
$target.removeClass("fal").addClass("fas");
favoris = true;
}
$.ajax({
url: '/ajax/favoris-folder',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
favoris: favoris,
}
});
}else{
// simple sélection de dossier
$(".folder_container .dd3-content").removeClass('selected');
$(".folder_container .root_folder").removeClass('selected');
$(this).addClass('selected');
var sujet_id = $("#sujet_selector").val();
$(window).data('currentFolder', dossier_id);
$(window).data('offset', 0);
loadMedia(sujet_id);
// ajout du dossier courant dans la barre de filtre
$(".search_filters_list #currentFolder").remove();
var output = '<a id="currentFolder" class="filter_item" href="#">';
output += '<span class="libelle">Dossier : </span>';
output += '<span class="value">'+$(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content span").html()+'</span>';
output += '<i class="delete_filter fal fa-times"></i>';
output += '</a>';
$(".search_filters_list").prepend(output);
}
});
// ---- sélectionner la racine
$(".folder_container").on('click', '.root_folder', function(event) {
event.preventDefault();
$(".folder_container .dd3-content").removeClass('selected');
$(this).addClass('selected');
$(window).data('currentFolder', 0);
var sujetId = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujetId);
// ajout du dossier courant dans la barre de filtre
$(".search_filters_list #currentFolder").remove();
var output = '<a id="currentFolder" class="filter_item" href="#">';
output += '<span class="libelle">Dossier : </span>';
output += '<span class="value">racine</span>';
output += '<i class="delete_filter fal fa-times"></i>';
output += '</a>';
$(".search_filters_list").prepend(output);
});
// ---- menu contextuel des dossiers
$(".folder_container").on('contextmenu', '.dd3-content', function(event) {
event.preventDefault();
// placement du menu
$(".folder_container .folder_menu").css({
left: event.pageX,
top:event.pageY-180
})
// memo l'id du dossier cible
var id = $(this).parent("li").attr("data-id");
$(".folder_container .folder_menu").attr('data-id', id);
// si c'est un dossier parent, on cache certaines options
if($(this).parent("li").hasClass("parent")){
$(".folder_menu .renameItem, .folder_menu .removeItem").hide();
}else{
$(".folder_menu .renameItem, .folder_menu .removeItem").show();
}
$(".folder_container .folder_menu").show();
});
// ---- ajouter un dossier
$(".folder_menu").on('click', '.addItem', function(event) {
event.preventDefault();
var parent_id = $(this).parents(".folder_menu").attr("data-id");
$(".folder_container .folder_menu").hide();
$(".folder_container .loader").show();
var folder = $('.dd .dd-item[data-id="'+parent_id+'"]');
if((folder.parents('.dd-item').length + 1) >= 5){
$.fancyMessage({title : "Attention", message : "Vous ne pouvez pas créer plus de 5 niveaux de sous-dossiers.", type : "info"});
$(".folder_container .loader").hide();
return false;
}
$.ajax({
url: '/ajax/add-folder',
method: 'POST',
dataType : 'json',
data: {
parent_id: parent_id,
libelle: 'Nouveau dossier',
},
success: function(result){
addItem(parent_id, result.folder_id, 'Nouveau dossier', result.system);
$(".folder_container .loader").hide();
},
error: function(jqXHR, textStatus, errorThrown) {
$(".folder_container .loader").hide();
$.fancyMessage({title : "Attention", message : "Erreur lors de l'ajout du dossier. Merci d'actualiser la page.", type : "error"});
}
});
});
// ---- supprimer un dossier
$(".folder_menu").on('click', '.removeItem', function(event) {
event.preventDefault();
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
$(".folder_container .folder_menu").hide();
$(".folder_container .loader").show();
var $countCurrentFolder = $(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content .count").html();
if(!$('.dd .dd-item[data-id="'+dossier_id+'"] > ol').length && $countCurrentFolder == 0){
$.ajax({
url: '/ajax/remove-folder',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
},
success: function(currentFolder){
// supprimer dossier
if(currentFolder){
$('.dd .dd-item[data-id="'+currentFolder+'"] > .dd3-content').trigger("click");
$('.dd').nestable('remove', dossier_id);
}else{
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du dossier. Merci d'actualiser la page.", type : "error"});
}
$(".folder_container .loader").hide();
},
error: function(jqXHR, textStatus, errorThrown) {
$(".folder_container .loader").hide();
$.fancyMessage({title : "Attention", message : "Erreur lors de la suppression du dossier. Merci d'actualiser la page.", type : "error"});
}
});
}else{
$(".folder_container .loader").hide();
$.fancyMessage({title : "Suppresion impossible", message : "Pour supprimer un dossier, vous devez d'abord vider son contenu (médias et sous-dossiers).", type : "error"});
}
});
// ---- renommer un dossier
$(".folder_menu").on('click', '.renameItem', function(event) {
event.preventDefault();
$(".folder_container .folder_menu").hide();
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
$('.dd .dd-item[data-id="'+dossier_id+'"] > .dd3-content').addClass('renaming');
$('.renaming .input_rename').val($('.renaming span').html());
$('.renaming .input_rename').select();
});
$('.folder_container').on('focusout keyup', '.renaming .input_rename', function (e) {
if(e.type == "focusout" || (e.type == "keyup" && e.keyCode == 13)){
var libelle = $(this).val();
var dossier_id = $(this).parents(".dd3-item").attr("data-id");
var span = $(this).next();
var input = $(this);
$.ajax({
url: '/ajax/rename-folder',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
libelle: libelle,
},
success: function(result){
if(result == true){
span.html(input.val());
}else{
$.fancyMessage({title : "Attention", message : "Le dossier n'a pas été renommé. Merci d'actualiser la page.", type : "error"});
}
$(".renaming").removeClass('renaming');
},
error: function(jqXHR, textStatus, errorThrown) {
$(".renaming").removeClass('renaming');
$.fancyMessage({title : "Attention", message : "Le dossier n'a pas été renommé. Merci d'actualiser la page.", type : "error"});
}
});
}
});
// ---- propriétés d'un dossier
$(".folder_menu").on('click', '.propertyItem', function(event) {
event.preventDefault();
$(".folder_container .folder_menu").hide();
var dossier_id = $(this).parents(".folder_menu").attr("data-id");
$.ajax({
url: '/ajax/get-folder-property',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
},
success: function(result){
var dossier = result.data;
$.fancybox.open({
src : '#form_folder_property',
type : 'inline',
opts : {
animationDuration : 350,
animationEffect : 'material',
beforeShow : function( instance, current ) {
if(dossier.parent_id=== null){
$(".form_folder_save").hide();
}else{
$(".form_folder_save").show();
}
var date = new Date(dossier.created_at);
$(".form_folder_datecreate").html(date.toLocaleDateString('fr-FR', {'hour': '2-digit', 'minute': '2-digit'} ));
$("#form_folder_property").attr("data-id", dossier_id);
$(".form_folder_libelle").val(dossier.libelle);
$(".form_folder_description").val(dossier.description);
}
}
});
}
});
});
// ---- enregistre les propriétés d'un dossier
$("html").on('click', '.form_folder_save', function(event) {
event.preventDefault();
var dossier_id = $("#form_folder_property").attr("data-id");
var libelle = $(".form_folder_libelle").val();
var description = $(".form_folder_description").val();
if(libelle == ""){
$.fancyMessage({title : "Propriétés d'un dossier", message : "Vous devez indiquer un nom de dossier.", type : "error"});
return false;
}
$(".form_folder_save").addClass('loading');
$.ajax({
url: '/ajax/save-folder-property',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
libelle: libelle,
description: description,
},
success: function(result){
$(".form_folder_save").removeClass('loading');
$(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content span").html(libelle);
$.fancybox.close();
},
error: function(jqXHR, textStatus, errorThrown) {
$(".form_folder_save").removeClass('loading');
$.fancybox.close();
$.fancyMessage({title : "Attention", message : "Erreur lors de l'édition du dossier, merci d'actualiser la page.", type : "error"});
}
});
});
// ---- affichage des dossiers on draghover
$(".folder_container").on("dragover", ".dd3-content, .root_folder", function(event) {
event.preventDefault();
event.stopPropagation();
$(".folder_container .dd3-content").removeClass('dragged');
$(".folder_container .root_folder").removeClass('dragged');
$(this).addClass('dragged');
});
// ---- affichage des dossiers on dragleave
$(".folder_container").on("dragleave", ".dd3-content, .root_folder", function(event) {
event.preventDefault();
event.stopPropagation();
$(".folder_container .dd3-content").removeClass('dragged');
$(".folder_container .root_folder").removeClass('dragged');
});
// ---- evt lorsque l'on drop des élements dans un dossier
$(".folder_container").on("drop", ".dd3-content, .root_folder", function(event) {
event.preventDefault();
event.stopPropagation();
$(".folder_container .dd3-content").removeClass('dragged');
$(".folder_container .root_folder").removeClass('dragged');
// ---- Cible
if($(this).hasClass("root_folder")){
var dossier_id = $(this).attr("data-id");
}else{
var dossier_id = $(this).parent("li").attr("data-id");
}
// ---- source
var data = event.originalEvent.dataTransfer.getData("Text");
if($(window).data('currentFolder') != dossier_id){
$.ajax({
url: '/ajax/move-media',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
data: data,
sujet_id: $("#sujet_selector").val(),
},
success: function(result){
var currentFolderId = $(window).data('currentFolder');
var arrayMediaId = data.split(',');
if(currentFolderId == 0){
var $countCurrentFolder = $(".folder_container .root_folder .count");
}else{
var $countCurrentFolder = $(".folder_container .dd3-item[data-id='"+currentFolderId+"'] > .dd3-content .count");
}
if(dossier_id == 0){
var $countTargetFolder = $(".folder_container .root_folder .count");
}else{
var $countTargetFolder = $(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content .count");
}
$.each(arrayMediaId, function(index, media_id) {
$(".media_container .imageItem[data-id='"+media_id+"']").remove(); // supprime les éléments déplacés
$countCurrentFolder.html(parseInt($countCurrentFolder.html())-1); // MAJ du compteur du dossier actuel
$countTargetFolder.html(parseInt($countTargetFolder.html())+1); // MAJ du compteur du dossier cible
});
},
error: function(jqXHR, textStatus, errorThrown) {
$.fancyMessage({title : "Attention", message : "Erreur lors du déplacement, merci d'actualiser la page.", type : "error"});
}
});
}
});
/******************************
Gestion des médias
**********************************/
// ---- au début du drag, set les valeurs des éléments draggés
$("html").on("dragstart", ".imageItem", function(event) {
var datavalue = [];
if($(this).attr("aria-grabbed") == "true"){
$(".imageItem").each(function(index, el) {
if($(this).attr("aria-grabbed") == "true"){
datavalue.push($(this).attr("data-id"));
}
});
event.originalEvent.dataTransfer.setData('Text', datavalue);
}else{
$(".imageItem").attr("aria-grabbed", "false");
$(this).attr("aria-grabbed", "true");
event.originalEvent.dataTransfer.setData('Text', $(this).attr("data-id"));
}
});
// ---- Restreint le Drag aux images
$("html").on("dragstart", function(event) {
if(!$(event.target).hasClass('imageItem')){
return false;
}
});
// ---- clique droit sur un média
$(".main_content .wrapper").on("contextmenu", '.imageItem' , function(event) {
event.preventDefault();
$(".imageItem").removeClass('flip');
$(this).addClass('flip')
});
// ---- gère la sélection des éléments
var lastSelected ;
$("html").on("click", ".imageItem", function(event) {
event.preventDefault();
$(".imageItem").removeClass('flip');
// Gestion des actions accessibles lors du clic droit sur un media
var target = event.target, $target = $(target);
if($target.hasClass('menu-option')){
if($target.hasClass('editItem')){ // Editer un média
$(this).dblclick();
}else if ($target.hasClass('downloadItem')) { // Télécharger le média
var medias = [];
medias.push($(this).attr("data-id"));
$("#form_download").fancybox({
type : 'inline',
opts : {
animationDuration : 350,
animationEffect : 'material',
},
beforeShow : function() {
$("#form_download .medias").val(medias.join());
}
}).trigger("click");
}else if ($target.hasClass('addBasket')) { // ajouter le média au panier
addMediasBasket([$(this).attr('data-id')]);
}else if ($target.hasClass('deleteItem')) { // supprimer le média
removeMedias([$(this).attr('data-id')]);
}else if ($target.hasClass('tagItem')) { // Appliquer une étiquette
var medias = [];
medias.push($(this).attr("data-id"));
$("#form_etiquette").fancybox({
type : 'inline',
opts : {
animationDuration : 350,
animationEffect : 'material',
},
beforeShow : function() {
$('#form_etiquette .etiquette').removeClass('selected');
},
afterClose : function() {
if($('#form_etiquette .etiquette.selected').length){
var id = $('#form_etiquette .etiquette.selected').attr('data-id');
applyEtiquette(id, medias);
}
}
}).trigger("click");
}
return false;
}
// Sélection avec touche controle
if(event.ctrlKey){
if($(this).attr("aria-grabbed") == "true"){
$(this).attr("aria-grabbed", "false");
}else{
$(this).attr("aria-grabbed", "true");
}
lastSelected = $(this);
}else if(event.shiftKey){ // Sélection avec touche shift
var select;
if(lastSelected == null){
lastSelected = $(this);
select = true
}else{
select = lastSelected.attr("aria-grabbed");
}
$(".imageItem").attr("aria-grabbed", "false");
var imageItem = $(".imageItem");
var last = imageItem.index(lastSelected);
var first = imageItem.index( $(this));
var start = Math.min(first, last);
var end = Math.max(first, last);
for (var i = start; i <= end; i++) {
imageItem.eq(i).attr("aria-grabbed", select);
}
}else{ // Sélection simple
if($(this).attr("aria-grabbed") == "true"){
$(".imageItem").attr("aria-grabbed", "false");
}else{
$(".imageItem").attr("aria-grabbed", "false");
$(this).attr("aria-grabbed", "true");
}
lastSelected = $(this);
}
});
// ---- Gestion de l'infinite scroll
$(".media_manager .media_container").on("scroll resize", function() {
if ($(window).data('ajaxready') == false) return;
if ($(window).data('noMedia') == true) return;
if( ($(".media_container").scrollTop() + $(".media_container").height() ) == $(".media_container .wrapper").height() ) {
$(window).data('ajaxready', false);
var sujet_id = $("#sujet_selector").val();
loadMedia(sujet_id);
}
});
// ---- Mode d'affichage
$(".action_wrapper .display i").on("click", function(event) {
if($(this).hasClass('fa-th')){ // mode mosaique
if(!$(this).hasClass('selected')){
$(".action_wrapper .display .fa-list").removeClass('selected');
$(this).addClass('selected');
$(".media_container .wrapper").removeClass('inline');
}
}else{ // mode liste
if(!$(this).hasClass('selected')){
$(".action_wrapper .display .fa-th").removeClass('selected');
$(this).addClass('selected');
$(".media_container .wrapper").addClass('inline');
}
}
});
// ---- Gestion de l'ordre d'affichage
$(".action_wrapper #order_select").on("change", function(event) {
var sujet_id = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(sujet_id);
});
/******************************
Edition d'un média
**********************************/
// ---- double-clique sur un média
var drPlugin = null;
var viewer = null;
$(".media_manager").on("dblclick", '.imageItem' , function(event) {
event.preventDefault();
// récupère l'image de preview
var imgPreview = $(this).attr('data-preview')+'?t='+ new Date().getTime();
if($(this).attr('data-depot') == 1){
if($(this).attr('data-typemedia') == 1|| $(this).attr('data-typemedia') == 2){ // image
$.fancybox.open('<img style="width: 640px; height:auto;" src="'+imgPreview+'" alt="" />');
}else if ($(this).attr('data-typemedia') == 3) { // vidéo
$.fancybox.open('<video src="'+$(this).attr('data-src')+'" controls></video>');
}else if ($(this).attr('data-typemedia') == 4) { // Audio
$.fancybox.open('<audio controls src="'+$(this).attr('data-src')+'"></audio>');
}
return false;
}
// initialise le nuage de Tags
$('#tag-editor').val('');
$('#tag-editor').tagEditor({
placeholder: 'Saissisez des tags',
removeDuplicates : false,
clickDelete : true,
initialTags: []
});
var minWidth = $(document).width();
var minHeight = $(document).height()-43-40;
// Mémorise le média courant
$(window).data('current_edit_media', $(this).attr('data-id'));
// sélectionne la tab preview à l'ouverture
$("#form_media .form_media_preview").trigger("click");
// initiliasation des aperçu et du mode retouche selon le type de média
if($(this).attr('data-typemedia') == 1){ // média image
// ---- Gestion de l'aperçu
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
if($(this).attr('data-ext') == 'gif'){
// charge le gif
$(".tab_preview").html('<img class="svgElt" src=""/>');
$(".tab_preview img").attr("src", $(this).attr('data-src'));
}else if($(this).attr('data-ext') == 'pdf'){
// pdf : on affiche le lecteur pdf
$(".tab_preview").html('<embed src="" type="application/pdf">');
$(".tab_preview embed").attr("src", $(this).attr('data-src'));
}else{
// charge l'image de preview
$(".tab_preview").html('<div id="openseadragon" ></div>');
$("#openseadragon").css('width', '100%');
$("#openseadragon").css('height', minHeight);
viewer = OpenSeadragon({
id: "openseadragon",
tileSources: {
type: "image",
url: imgPreview,
}
});
}
// ---- Gestion de la retouche
if(jQuery.inArray($(this).attr('data-ext'), [ 'gif', 'psd', 'ai', 'pdf']) != -1){
// masque l'onglet retouche
$("#form_media .form_media_retouch").hide();
}else{
$("#form_media .form_media_retouch").show(); // on active l'onglet retouche
// charge l'image pour la retouche
$("#form_media .tab_retouch").html('<img id="drTarget" src="" >');
$("#drTarget").attr("src", imgPreview);
drPlugin = new Darkroom('#drTarget', {
minWidth: 200,
minHeight: 200,
maxWidth: minWidth,
maxHeight: minHeight,
plugins: {
save: {
callback: function() {
var dr = this.darkroom;
$.fancyConfirm({
title : "Retouche de l\'image",
message : "Êtes-vous sûr de vouloir modifier cette image ? (cette opération sera irréversible)",
okButton : 'Modifier l\'image',
noButton : 'Annuler',
callback : function (value) {
if (value) {
// récupère la nouvelle image
var newImage = dr.sourceCanvas.toDataURL();
// sauvegarde de l'image en base
$.ajax({
url: '/ajax/edit-photo',
method: 'POST',
dataType : 'json',
data: {
media_id: $(window).data('current_edit_media'),
cropData : $(window).data('cropData')
},
success: function(result){
// Fermeture de la popin
$(".form_media_close, .btn_tab_edit_cancel").trigger('click');
// MAJ du visuel dans la Liste
var mediaId = $(window).data('current_edit_media')
var $media = $(".media_container .imageItem[data-id='"+mediaId+"'] .media");
var mediaBg = $media.css('background-image', 'url('+result.folder+result.uid+"_thumb."+result.extension+'?t='+ new Date().getTime()+')');
},
error: function(jqXHR, textStatus, errorThrown) {
$.fancybox.close();
$.fancyMessage({title : "Attention", message : "Erreur lors de la sauvegarde de l'image, merci d'actualiser la page.", type : "error"});
}
});
}
}
});
}
},
}
});
}
}else if ($(this).attr('data-typemedia') == 2) { // média svg
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
// charge le svg
$(".tab_preview").html('<img class="svgElt" src=""/>');
$(".tab_preview img").attr("src", $(this).attr('data-src'));
}else if ($(this).attr('data-typemedia') == 4) { // média audio
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
// charge l'audio
$(".tab_preview").html('<audio controls src=""></audio>');
$(".tab_preview audio").attr("src", $(this).attr('data-src'));
}else if ($(this).attr('data-typemedia') == 3) { // média video
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
$("#form_media .form_media_preview").show(); // on active l'onglet aperçu
// charge la vidéo
$(".tab_preview").html('<video src="" controls></video>');
$(".tab_preview video").attr("src", $(this).attr('data-src'));
}
// chargement des données du média
$.ajax({
url: '/ajax/get-media',
method: 'POST',
dataType : 'json',
data: {
media_id : $(window).data('current_edit_media'),
},
success: function(result){
// chargement des données
$(".tab_edit #arcadia_id").val(result.data.arcadia_id);
$(".tab_edit #libelle").val(result.data.libelle);
$(".tab_edit #sujetLibelle").val(result.data.sujet.libelle);
$(".tab_edit #typevues").val(result.data.typevue_id);
$(".tab_edit #variantes option").each(function(){
if($(this).attr('data-typevue')== result.data.typevue_id){
$(this).show();
}else{
$(this).hide();
}
});
$(".tab_edit #typemedias").val(result.data.typemedia_id);
$(".tab_edit #variantes").val(result.data.variante_id);
$(".tab_edit #langues").val(result.data.langue_id);
$(".tab_edit #commentaire").val(result.data.commentaire);
$(".tab_edit #version").val(result.data.version);
$(".tab_edit #created_at").val(result.data.created_at);
if(result.data.owner != null){
$(".tab_edit #created_by").val(result.data.owner.firstname+" "+result.data.owner.lastname);
}else{
$(".tab_edit #created_by").val("");
}
$(".tab_edit #updated_at").val(result.data.updated_at);
$(".tab_edit #published_at").val(result.data.published_at);
$(".tab_edit #statut").val(result.data.statut);
// articles lié
$(".tab_edit .article_selector table tbody").html('');
$(".tab_edit #articles").val('');
var elems = [];
$.each(result.data.articles, function (index, article) {
$articleItem = $(".tab_edit .hidden_row tr").clone();
$articleItem.find('.col_lib').html(article.noArt+" : "+article.libCcial);
$articleItem.find('.col_famVente').html(article.codFamVte+" : "+article.libFamVte);
$articleItem.find('.col_marque').html(article.codMarq+" : "+article.libMarq);
$articleItem.find('.col_gencodAdm').html(article.codGencodAdm);
$articleItem.find('.col_gencodSymb').html(article.codGencodSymb);
$articleItem.find('.col_gencodPds').html(article.codGencodPds);
$articleItem.find('.remove_article').attr('data-id', article.id);
$(".tab_edit .article_selector table tbody").append($articleItem);
elems.push(article.id);
});
$(".tab_edit #articles").val(elems.join());
// marque lié
$(".tab_edit .selector_marques .selector_values").html('');
$.each(result.data.marques, function (index, marque) {
$(".tab_edit .selector_marques .selector_values").append('<li data-value="'+marque.codMarq+'" >'+marque.libMarq+'</li>');
});
initSelector(".selector_marques");
// societés liées
$(".tab_edit .selector_societes .selector_values").html('');
$.each(result.data.societes, function (index, societe) {
$(".tab_edit .selector_societes .selector_values").append('<li data-value="'+societe.id+'" >'+societe.libelle+'</li>');
});
initSelector(".selector_societes");
// tags
if(result.tags){
$('#tag-editor').tagEditor('addTag', result.tags);
}
$(".tab_edit #etiquettes").val(result.data.etiquette_id);
$(".tab_edit #extension").val(result.data.extension);
$(".tab_edit #copyrights").val(result.data.copyright_id);
$(".tab_edit #largeur").val(result.data.largeur);
$(".tab_edit #hauteur").val(result.data.hauteur);
$(".tab_edit #resolution").val(result.data.resolution);
$(".tab_edit #largeur_mm").val(result.data.largeur_mm);
$(".tab_edit #hauteur_mm").val(result.data.hauteur_mm);
// Config de la fiche d'édition
if(result.data.sujet.sujet_arcadia == 0){
$(".tab_edit .arcadia_fields").hide();
}else{
$(".tab_edit .arcadia_fields").show();
}
$(".tab_edit .article_form, .tab_edit .marque_form, .tab_edit .societe_form").hide();
switch (result.data.sujet_id) {
case 1: // Visuel Article
$(".tab_edit .article_form").show();
break;
case 2: // Marque
$(".tab_edit .marque_form").show();
break;
case 4: // Sociétés
$(".tab_edit .societe_form").show();
break;
default:
}
// Config de la liste des vignettes
$(".tab_links .table_links tbody").html('');
$.each(result.vignettes, function (index, vignette) {
$linkItem = $(".tab_links .row_copy_hidden table tr").clone();
$linkItem.find('.link_libelle').html(vignette.libelle+" "+vignette.extension+" "+vignette.resolution);
$linkItem.find('.link_input input').val(vignette.url);
$(".tab_links .table_links tbody").append($linkItem);
});
// affiche la popin
$("#form_media").fadeIn('fast');
},
error: function(jqXHR, textStatus, errorThrown) {
// si le plugin de retouche a déjà été chargé
if(drPlugin !== null){
drPlugin.selfDestroy(); drPlugin = null; // on détruit le plugin de retouche
}
// si le plugin de preview a déjà été chargé
if(viewer !== null){
viewer.destroy(); viewer = null; // on détruit le plugin de preview
}
$('#tag-editor').tagEditor('destroy'); $('#tag-editor').val(''); // on détruit le plugin de tag
$.fancyMessage({title : "Edition d'un média", message : "Ouverture du média impossible. Merci d'actualiser la page.", type : "error"});
}
});
});
// ---- fermeture de la popup d'édition
$(".form_media_close, .btn_tab_edit_cancel").on("click" , function(event) {
event.preventDefault();
// masque la popin
$("#form_media").fadeOut('fast');
// si le plugin de retouche a déjà été chargé
if(drPlugin !== null){
drPlugin.selfDestroy(); drPlugin = null; // on détruit le plugin de retouche
}
// si le plugin de preview a déjà été chargé
if(viewer !== null){
viewer.destroy(); viewer = null; // on détruit le plugin de preview
}
$('#tag-editor').tagEditor('destroy'); $('#tag-editor').val(''); // on détruit le plugin de tag
// ---- Stop la vidéo ou le son si présent
if($(".tab_preview video").length){
$(".tab_preview video").get(0).pause()
}
if($(".tab_preview audio").length){
$(".tab_preview audio").get(0).pause()
}
});
// ---- Copie d'un lien dans le clipboard
$('.tab_links').on('click', '.fa-copy', function(event){
$(this).prev().select();
document.execCommand("copy");
});
// ---- Bouton Arcadia
$('.tab_edit .btn-arcadia-link').on('click', function(event){
event.preventDefault();
var arcadia_id = $("#arcadia_id").val();
arcadia_id = prompt("Indiquez le code Arcadia de ce média", arcadia_id);
$.ajax({
url: '/ajax/set-id-arcadia',
method: 'POST',
dataType : 'json',
data: {
arcadia_id: arcadia_id,
media_id : $(window).data('current_edit_media'),
},
success: function(result){
if(result == true){
$.fancybox.close();
$.fancyMessage({title : "Lier un média à Arcadia", message : "Le code Arcadia a bien été ajouté au média", type : "info"});
$("#arcadia_id").val(arcadia_id);
}else{
$.fancybox.close();
$.fancyMessage({title : "Lier un média à Arcadia", message : "Ce code a déjà été attribué à un autre média. Ajout impossible.", type : "error"});
}
},
error: function(jqXHR, textStatus, errorThrown) {
$.fancybox.close();
$.fancyMessage({title : "Lier un média à Arcadia", message : "Erreur lors de l'opération, merci d'actualiser la page.", type : "error"});
}
});
});
// ---- Bouton de suppression d'un article
$('.tab_edit .article_selector').on('click', ".remove_article", function(event){
event.preventDefault();
var elems = $(".tab_edit #articles").val().split(',');
var id = $(this).attr('data-id');
var index = elems.indexOf(id);
elems = jQuery.grep(elems, function(value) {
return value != id;
});
$(".tab_edit #articles").val(elems.join());
$(this).parents("tr").remove();
});
// ---- Bouton d'ajout d'un article à un média
$('.tab_edit .add_article').on('click', function(event){
event.preventDefault();
var arcadia_id = prompt("Indiquez le code Arcadia de l'article.", arcadia_id);
if(arcadia_id === null) return false;
$.ajax({
url: '/ajax/get-article',
method: 'POST',
dataType : 'json',
data: {
arcadia_id: arcadia_id,
},
success: function(result){
if(result){
var article = result.article;
if($(".tab_edit #articles").val() != ""){
var elems = $(".tab_edit #articles").val().split(',');
}else{
var elems = [];
}
if(jQuery.inArray(String(article.id), elems) == -1){
// maj de la valeur du champ hidden
elems.push(String(article.id));
$(".tab_edit #articles").val(elems.join());
// maj du tableau html
$articleItem = $(".tab_edit .hidden_row tr").clone();
$articleItem.find('.col_lib').html(article.noArt+" : "+article.libCcial);
$articleItem.find('.col_famVente').html(article.codFamVte+" : "+article.libFamVte);
$articleItem.find('.col_marque').html(article.codMarq+" : "+article.libMarq);
$articleItem.find('.col_gencodAdm').html(article.codGencodAdm);
$articleItem.find('.col_gencodSymb').html(article.codGencodSymb);
$articleItem.find('.col_gencodPds').html(article.codGencodPds);
$articleItem.find('.remove_article').attr('data-id', article.id);
$(".tab_edit .article_selector table tbody").append($articleItem);
}else{
$.fancyMessage({title : "Impossible d'ajouter l'article", message : "Cet article est déjà présent dans la liste.", type : "error"});
}
}else{
$.fancyMessage({title : "Impossible d'ajouter l'article", message : "La référence de cet article n'a pas été trouvé.", type : "error"});
}
},
error: function(jqXHR, textStatus, errorThrown) {
$.fancyMessage({title : "Attention", message : "Erreur lors de l'opération, merci d'actualiser la page.", type : "error"});
}
});
});
// ---- Suppression de média en masse
$('.action_delete_media').on('click',function(event){
event.preventDefault();
var medias = [];
$('.media_container .imageItem').each(function (index) {
if( $(this ).attr("aria-grabbed") == "true" ){
medias.push($(this ).attr("data-id"));
}
});
removeMedias(medias);
});
// ---- Popup pour Appliquer une étiquette à un média en masse
$('.action_tag_media').on('click',function(event){
event.preventDefault();
var medias = [];
$('.media_container .imageItem').each(function (index) {
if( $(this ).attr("aria-grabbed") == "true" ){
medias.push($(this ).attr("data-id"));
}
});
if(medias.length == 0){
$.fancyMessage({title : "Appliquer une étiquette", message : "Veuillez sélectionner au moins un média.", type : "info"});
}else{
$("#form_etiquette").fancybox({
type : 'inline',
opts : {
animationDuration : 350,
animationEffect : 'material',
},
beforeShow : function() {
$('#form_etiquette .etiquette').removeClass('selected');
},
afterClose : function() {
if($('#form_etiquette .etiquette.selected').length){
var id = $('#form_etiquette .etiquette.selected').attr('data-id');
applyEtiquette(id, medias);
}
}
}).trigger("click");
}
});
// ---- Appliquer une étiquette à un média en masse
$('#form_etiquette .etiquette').on('click',function(event){
event.preventDefault();
$(this).addClass('selected');
$.fancybox.close();
});
// ---- Popup pour télécharger des médias en masse
$('.action_download_media, .form_media_download').on('click',function(event){
event.preventDefault();
var medias = [];
if($(this).hasClass('form_media_download')){
medias.push($(window).data('current_edit_media'));
}else{
$('.media_container .imageItem').each(function (index) {
if( $(this ).attr("aria-grabbed") == "true" ){
medias.push($(this ).attr("data-id"));
}
});
}
if(medias.length == 0){
$.fancyMessage({title : "Télécharger des médias", message : "Veuillez sélectionner au moins un média.", type : "info"});
}else{
$("#form_download").fancybox({
type : 'inline',
opts : {
animationDuration : 350,
animationEffect : 'material',
},
beforeShow : function() {
$("#form_download .medias").val(medias.join());
}
}).trigger("click");
}
});
// ---- Bouton pour remplacer un média par un autre
$('.form_media_replace').on('click',function(event){
event.preventDefault();
$('.upload_container').show("fast");
maxFiles = 1;
replaceMediaId =$(window).data('current_edit_media');
});
// ---- Bouton pour lancer le téléchargement d'un ou plusieurs médias
$('#form_download .btn_form_download').on('click',function(event){
event.preventDefault();
$("#form_download #the_form_download").submit();
// ferme la popup
$.fancybox.close();
});
// ---- gestion des onglets de la popup d'édition
$("#form_media .tabbtn").on("click" , function(event) {
event.preventDefault();
// ---- Affiche l'onglet cliqué
var tabId = $(this).attr("data-tab");
$("#form_media .tabbtn").removeClass('active');
$(this).addClass('active')
$("#form_media .main_content .tab").removeClass('active');
$("#form_media .main_content .tab").eq(tabId).addClass('active');
$(".tab_edit .tab_content").scrollTop( 0 ); // on remonte la scrollbar de la tab edition
// ---- Stop la vidéo ou le son si présent
if($(".tab_preview video").length){
$(".tab_preview video").get(0).pause()
}
if($(".tab_preview audio").length){
$(".tab_preview audio").get(0).pause()
}
// ---- Chargement de l'historique des actions
if($(this).hasClass('form_media_history')){
$(".tab_history table tbody").html('<tr><td colspan="4" style="text-align:center;"><i class="fal fa-circle-notch fa-spin"></i> Chargements de l\'historique</td></tr>');
$.ajax({
url: '/ajax/get-media-history',
method: 'POST',
dataType : 'json',
data: {
media_id : $(window).data('current_edit_media'),
},
success: function(result){
if(result){
$(".tab_history table tbody").html('');
$.each(result, function (index, history) {
var username = "";
if(null !== history.user){
username = history.user.firstname+' '+history.user.lastname;
}
$(".tab_history table tbody").append('<tr><td>'+history.created_date+'</td><td>'+username+'</td><td>'+history.type+'</td><td>'+history.description+'</td></tr>');
});
}
}
});
}
});
// ---- sauvegarde de la popup d'édition
$(".btn_tab_edit_save").on("click" , function(event) {
if(!$(".form_edit_media")[0].checkValidity()){
$.fancyMessage({title : "Sauvegarde d'un média", message : "Le formulaire a mal été renseigné. merci de corriger.", type : "error"});
}
var media = {
id : $(window).data('current_edit_media'),
libelle : $(".tab_edit #libelle").val(),
typevue_id : $(".tab_edit #typevues").val(),
variante_id : $(".tab_edit #variantes").val(),
langue_id : $(".tab_edit #langues").val(),
commentaire : $(".tab_edit #commentaire").val(),
version : $(".tab_edit #version").val(),
statut : $(".tab_edit #statut").val(),
copyright_id : $(".tab_edit #copyrights").val(),
etiquette_id : $(".tab_edit #etiquettes").val(),
tags : $('#tag-editor').tagEditor('getTags')[0].tags,
societes : $(".tab_edit .selector_societes .selector_dataValues").val(),
marques : $(".tab_edit .selector_marques .selector_dataValues").val(),
articles : $(".tab_edit #articles").val(),
published_at : $(".tab_edit #published_at").val(),
}
$.ajax({
url: '/ajax/save-media',
method: 'POST',
dataType : 'json',
data: {
media : media,
},
success: function(result){
$.fancyMessage({title : "Sauvegarde d'un média", message : "Les données ont bien été enregistrées", type : "info"});
},
error: function(jqXHR, textStatus, errorThrown) {
$.fancyMessage({title : "Sauvegarde d'un média", message : "Erreur lors de l'enregistrement. Merci d'actualiser la page.", type : "error"});
}
});
});
// ---- Chargement de la liste des vairantes lors du changement de type de vue
$(".tab_edit #typevues").on("change" , function(event) {
var typevue_id = $(this).val();
$(".tab_edit #variantes option").each(function(){
if($(this).attr('data-typevue')== typevue_id){
$(this).show();
}else{
$(this).hide();
}
});
});
/******************************
Upload de média
**********************************/
// ---- Fermeture de la popup d'upload
$('#close_upload_form').on('click',function(event){
event.preventDefault();
$('.upload_container').hide("fast");
});
// ---- Ouvrir la popup de mode d'ajout
$('.action_add_media').on('click',function(event){
event.preventDefault();
if($(window).data('currentFolder') >=0){
$("#form_select_add_media").fancybox({type : 'inline', opts : { animationDuration : 350, animationEffect : 'material'}}).trigger("click");
}else{
$.fancyMessage({title : "Ajout de média", message : "Pour ajouter des médias, veuillez d'abord sélectionner un dossier de destination.", type : "error"});
}
});
// ---- Ouvrir la popup d'upload
$('.add_media_by_upload').on('click',function(event){
event.preventDefault();
$.fancybox.close();
$('.upload_container').show("fast");
maxFiles = 100;
replaceMediaId = 0;
});
// ---- Ajoute un élément sans média
$('.add_media_without_file').on('click',function(event){
event.preventDefault();
$.fancybox.close();
$.ajax({
url: '/ajax/add-media',
method: 'POST',
dataType : 'json',
data: {
dossier_id : $(window).data('currentFolder'),
sujet_id: $("#sujet_selector").val(),
},
success: function(result){
//---- Chargement des médias
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())+1);
$(".reinit_search_btn").trigger("click");
},
error: function(jqXHR, textStatus, errorThrown) {
$(".folder_container .loader").hide();
$.fancyMessage({title : "Attention", message : "Erreur lors de la création du média. Merci d'actualiser la page.", type : "error"});
}
});
});
// ---- Initialisation du module d'upload
if($('#fileupload').length){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var cancel_btn = $('<button/>')
.addClass('cancel')
.html('<i class="fal fa-times"></i>');
var upload_btn = $('<button/>')
.addClass('upload')
.css('display', 'none');
$('#submit').on('click',function(event){
event.preventDefault();
if($(window).data('currentFolder') == "-1"){
$.fancyMessage({title : "Ajout de média", message : "Pour ajouter des médias, veuillez d'abord sélectionner un dossier de destination.", type : "error"});
return false;
}
if(counter ==0){
return false;
}
$("#submit").html('<i class="fal fa-circle-notch fa-spin"></i> Transférer');
$("#submit").css("pointer-events", "none");
$("#upload_errors").html("");
$('.upload').click() //click upload buttons and upload all files in the queue
});
$('#cancel').on('click',function(event){
event.preventDefault();
$('.cancel').click() //click cancel buttons and remove all files in the queue
$("#upload_errors").html("");
});
$(".uploader-window").on("dragleave", function(){
$(this).stop().fadeOut( "fast");
});
var currentfiles = [];
var maxFiles = 100;
var counter = 0;
var replaceMediaId = 0;
$('#fileupload').fileupload({
url: "/ajax/upload-media",
dataType: 'json',
limitMultiFileUploads: 10,
maxChunkSize: 8000000,
maxNumberOfFiles: 2,
dragover: function (e, data) {
$(".uploader-window").fadeIn( "fast");
},
add: function (e, data) {
if(counter < maxFiles){
counter++;
}else{
$.fancyMessage({title : "Attention", message : "Vous ne pouvez pas ajouter plus de "+maxFiles+" fichier(s)", type : "info"});
return false;
}
data.files = $.map(data.files, function(file,i){
if ($.inArray(file.name,currentfiles) >= 0) {
$.fancyMessage({title : "Attention", message : "Nous ne pouvons pas envoyer plusieurs fichiers du même nom. Veuillez renommer vos fichiers puis essayez à nouveau.", type : "error"});
return null;
}
return file;
});
$.each(data.files, function (index, file) {
var uploadErrors = [];
var acceptFileTypes = /^(gif|jpe?g|png|mp4|mp3|psd|ai|svg|pdf)$/i;
if(file.name.split('.').pop().length && !acceptFileTypes.test(file.name.split('.').pop())) {
uploadErrors.push('Ce type de fichier n\'est pas accepté');
}
if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
uploadErrors.push('La taille du fichier est trop grande.');
}
if(uploadErrors.length > 0) {
alert(uploadErrors.join("\n"));
return false;
}
currentfiles.push($.trim(file.name));
var row = document.createElement('div');
var col1 = document.createElement('div');
var col2 = document.createElement('div');
$(col1).append("<span>"+file.name+"</span>").append(cancel_btn.clone(true).data(data));
$(col2).append("<span>"+file.type+" - "+FileConvertSize(file.size)+"</span>");
$(col2).append(upload_btn.clone(true).data(data));
$(row).append(col1, col2);
$(".files").append(row);
$('.upload').eq(-1).on('click',function(){
data.formData = {
uid: create_UUID(),
sujet_id: $("#sujet_selector").val(),
dossier_id: $(window).data('currentFolder'),
replaceMediaId: replaceMediaId,
};
data.submit();
})
$('.cancel').eq(-1).on('click',function(){
$(this).parent().parent().remove();
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
})
});
},
start: function (e, data) {
$('#progress').show();
},
drop: function (e, data) {
$(".uploader-window").stop().fadeOut( "fast");
},
done: function (e, data) {
$.each(data.files, function (index, file) {
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
});
//---- Chargement des médias
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())+data.files.length);
},
stop: function (e,) {
$(".files").html("");
counter = 0;
currentfiles = [];
$('#progress .progress-bar').css('width', '0%');
$('#progress').hide();
$('.upload_container').hide("fast");
var currentFolder = $(window).data('currentFolder');
$(".reinit_search_btn").trigger("click");
$("#submit").html('Transférer');
$("#submit").css("pointer-events", "auto");
if(replaceMediaId != 0){
// Fermeture de la popin d'édition de média
$(".form_media_close, .btn_tab_edit_cancel").trigger('click');
}
},
fail: function (e, data) {
$.each(data.files, function (index, file) {
$('<p style="color: red;">Erreur durant le transfert du fichier ' + file.name + '.</p>')
.appendTo('#upload_errors');
currentfiles = arrayRemove(currentfiles, $.trim(file.name));
});
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .progress-bar').css(
'width',
progress + '%'
);
}
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
}
});
// ---- init des dossiers
function initFolderManager(sujetId){
$(".folder_container .loader").show();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '/ajax/load-folder',
method: 'POST',
dataType : 'json',
data: {
sujetId: sujetId,
},
success: function(result){
var output = '';
var draggable = result.draggable;
// initialisation de la liste type vues
var typevues = result.typevues;
$("#typevues").find('option').remove();
$.each(typevues, function (index, typevue) {
$("#typevues").append('<option value="'+typevue.codeTypevue+'">'+typevue.libelle+'</option>');
});
$(".search_filters .list_typevue ul").html("");
$.each(typevues, function (index, typevue) {
$(".search_filters .list_typevue ul").append('<li><input id="typeV_'+typevue.codeTypevue+'" type="checkbox" value="'+typevue.codeTypevue+'" name=""><label for="typeV_'+typevue.codeTypevue+'" >'+typevue.libelle+'</label></li>');
});
// initialisation de la liste variantes
var variantes = result.variantes;
$("#variantes").find('option').remove();
$.each(variantes, function (index, variante) {
$("#variantes").append('<option value="'+variante.codeVariante+'" data-typevue="'+variante.typevue_id+'" >'+variante.libelle+'</option>');
});
// initialisation des formats de vignette disponibles au téléchargement
$(window).data('formats', result.formats);
$('#form_download .download_format').html('');
$('#form_download .download_format').append('<option value="0">Format original</option>');
$.each(result.formats, function (index, format) {
$('#form_download .download_format').append('<option value="'+format.id+'">Vignette '+format.extension+' '+format.libelle.toUpperCase()+' ('+format.largeur+'px)</option>');
});
// ajout du total à la racine
var total = result.count;
$(".root_folder .count").html(total);
// construction des dossiers
var data = result.data;
$.each(data, function (index, item) {
output += buildItem(item);
});
$('.folder_container .dd .dd-list').html(output);
$('.dd').nestable({
scroll: true,
onDragStart: function(l,e){
if($(e).hasClass("parent")){ // pour empêcher le déplacement des dossiers parents
return false;
}
return draggable;
},
beforeDragStop: function(l,e, p){
// l is the main container, e is the element that was moved, p is the place where element was moved.
if($(p).hasClass('root')){
$.fancyMessage({title : "Attention", message : "Vous ne pouvez pas déplacer un dossier à la racine.", type : "error"});
return false;
}
var r = confirm("Etes-vous sûr d'appliquer ce déplacement ?");
if (r == true) {
var dossier_id = $(e).attr("data-id");
var parent_id = $(p).parent("li").attr("data-id");
$(".folder_container .loader").show();
$.ajax({
url: '/ajax/move-folder',
method: 'POST',
dataType : 'json',
data: {
parent_id : parent_id,
dossier_id : dossier_id,
sujet_id: $("#sujet_selector").val(),
},
success: function(result){
$(".folder_container .loader").hide();
},
error: function(jqXHR, textStatus, errorThrown) {
$(".folder_container .loader").hide();
$.fancyMessage({title : "Attention", message : "Erreur lors du déplacement du dossier. Merci d'actualiser la page.", type : "error"});
}
});
} else {
return false;
}
}
});
//('.dd').nestable('collapseAll');
$(".folder_container .dd-empty").remove();
$(".folder_container .loader").hide();
// ---- Par défaut déselectionne toutes les checkbox
$(".filter").find('input[type="checkbox"]').prop( "checked", false );
// charge la recherche si necessaire
if(Object.keys($(window).data('filter')).length > 0){
var filters = $(window).data('filter');
$.each(filters, function (index, filter) {
// ajoute le widget filtre
updateFilter(filter);
// init des champs de recherche
if(filter.type == 'search'){
$(".search_filters .search_value").val(filter.value);
}else{
$('.search_filters .filter[data-type="'+filter.type+'"]').find('input[type="checkbox"]').each(function (index, cb){
if($.inArray($(this).val(), filter.value ) >= 0){
$(this ).prop( "checked", true );
}else{
$(this).prop( "checked", false );
}
});
}
});
}
// sélection du dossier
if($(window).data('currentFolder') > 0){
// on se place sur un dossier spécifique
$('.dd .dd-item[data-id="'+$(window).data('currentFolder')+'"] > .dd3-content').trigger("click");
}else if ($(window).data('currentFolder') == -1) {
loadMedia($("#sujet_selector").val());
}else{
// si pasdossier spécifié alors on se place à la racine
$(window).data('currentFolder', 0);
$(".root_folder").trigger("click");
}
},
error: function(jqXHR, textStatus, errorThrown) {
$(".folder_container .loader").hide();
$.fancyMessage({title : "Attention", message : "Erreur lors du chargement des dossiers. Merci d'actualiser la page.", type : "error"});
}
});
}
// ---- Chargement des média
window.loadMedia = function(sujet_id, saveSearch = 0){
var output = '';
if($(window).data('offset') == 0){
$(window).data('noMedia', false);
$('.media_container .wrapper').html("");
$(".media_container .loader").show();
}else{
$(".main_content .scrollLoader").show();
}
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '/ajax/load-media',
method: 'POST',
dataType : 'json',
data: {
dossier_id : $(window).data('currentFolder'),
sujet_id : sujet_id,
filters : JSON.stringify($(window).data('filter')),
offset : $(window).data('offset'),
limit : $(window).data('limit'),
orderField : $("#order_select").val(),
order : $('#order_select option:selected').attr('data-order'),
saveSearch : saveSearch,
},
success: function(result){
var data = result.data;
if(data.length == 0){
$(window).data('noMedia', true);
}
var draggable = result.draggable;
$.each(data, function (index, item) {
var ico = "";
var detail = "";
var statut = "";
var itemClass = "";
var thumb = "";
var preview = "";
switch (item.typemedia_id) {
case 1:
ico = '<i class="fas fa-file-image"></i>';
detail = " - "+item.largeur+"x"+item.hauteur+"px";
if(item.extension == "pdf" || item.extension == "ai" || item.extension == "psd"){
thumb = item.folder+item.uid+"_thumb.png";
preview = item.folder+item.uid+"_preview.png";
}else{
thumb = item.folder+item.uid+"_thumb."+item.extension;
preview = item.folder+item.uid+"_preview."+item.extension;
}
break;
case 2:
ico = '<i class="fas fa-file-image"></i>';
thumb = item.folder+item.uid+"."+item.extension;
preview = item.folder+item.uid+"."+item.extension;
break;
case 3:
ico = '<i class="fas fa-file-video"></i>';
detail = " - durée "+item.duree;
itemClass = "video";
break;
case 4:
ico = '<i class="fas fa-file-audio"></i>';
detail = " - durée "+item.duree;
itemClass = "son";
break;
default:
}
switch (item.statut) {
case 0:
statut = "Brouillon"
break;
case 1:
statut = "Public"
break;
case 2:
statut = "Public étendu"
break;
}
output += '<div class="imageItem" data-id="'+item.id+'" data-depot="'+result.isDepot+'" data-ext="'+item.extension+'" data-typemedia="'+item.typemedia_id+'" data-preview="'+preview+'" data-src="'+item.folder+item.uid+"."+item.extension+'" draggable="'+draggable+'" aria-grabbed="false">';
output += '<div class="etiquette" style="background-color:'+item.etiquette.color+'; border-color:'+item.etiquette.color+';" data-id="'+item.etiquette.etiquette_id+'" >'+item.etiquette.libelle+'</div>';
output += '<div class="contextMenu"><ul>';
output += '<li class="menu-option editItem"><i class="fas fa-edit"></i> Editer</li>';
output += '<li class="menu-option downloadItem"><i class="fas fa-file-download"></i> Télécharger</li>';
output += '<li class="menu-option addBasket"><i class="fas fa-shopping-basket"></i> Ajouter au panier</li>';
if(result.role != 2 ){
output += '<li class="menu-option deleteItem"><i class="fas fa-trash-alt"></i> Supprimer</li>';
output += '<li class="menu-option tagItem"><i class="fas fa-tags"></i> Etiquette</li>';
}
output += '</ul></div>';
output += '<div class="media '+itemClass+'" style="background-image:url('+thumb+')"></div>';
output += '<p class="libelle">'+item.libelle+'</p>';
output += '<div class="info">'+ico+item.extension+' - '+item.taille+detail+' - v'+item.version+'</div>';
output += '<div class="statut stat'+item.statut+'">'+statut+'</div>';
output += '</div>';
});
$('.media_container .wrapper').append(output);
if($(window).data('offset') == 0){
$(".media_container .loader").hide();
}else{
$(".main_content .scrollLoader").hide();
}
$(window).data('offset', $(window).data('offset')+$(window).data('limit'));
$(window).data('ajaxready', true);
}
});
}
// ---- Supression de médias
function removeMedias(medias){
if(medias.length == 0){
$.fancyMessage({title : "Supprimer un média", message : "Veuillez sélectionner les médias à supprimer.", type : "info"});
}else{
$.fancyConfirm({
title : "Suppression de média",
message : "Êtes-vous sûr de vouloir supprimer "+medias.length+" média(s) ?",
okButton : 'Supprimer',
noButton : 'Annuler',
callback : function (value) {
if (value) {
$.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"});
}
}
},
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"});
}
});
}
}
});
}
}
// ---- Appliquer une etiquette à un ou plusieurs médias
function applyEtiquette(etiquette_id, medias){
if(medias.length == 0){
$.fancyMessage({title : "Appliquer une étiquette", message : "Veuillez sélectionner au moins un média.", type : "info"});
}else{
$.ajax({
url: '/ajax/apply-sticker',
method: 'POST',
dataType : 'json',
data: {
medias: medias,
etiquette_id : etiquette_id
},
success: function(result){
$.each(medias, function (index, value) {
var $etiquette = $(".media_container .imageItem[data-id='"+value+"'] .etiquette");
$etiquette.attr('data-id', result.etiquette_id);
$etiquette.html(result.libelle);
$etiquette.css('background-color', result.color);
$etiquette.css('border-color', result.color);
});
},
error: function(jqXHR, textStatus, errorThrown) {
$.fancybox.close();
$.fancyMessage({title : "Attention", message : "Erreur lors du changement d'étiquette, merci d'actualiser la page.", type : "error"});
}
});
}
}
// ---- contruction de l'arborescence des dossiers
function buildItem(item) {
var parentClass = "";
var handleClass = "";
var favClass="fal";
if(item.parent_id === null){
parentClass="parent";
handleClass= "no-handle";
}
if(item.favoris == true){
favClass="fas";
}
var favbtn = "";
if(item.system == 0){
favbtn = "<i class='"+favClass+" fa-star'></i>";
}
var html = "<li class='dd-item dd3-item "+parentClass+" ' data-id='" + item.id + "'>";
html += "<div class='dd-handle dd3-handle "+handleClass+"'></div>";
html += "<div class='dd3-content'><input type='text' value='' class='input_rename' maxlength='100'/><span>" + item.libelle + "</span><div class='count'>" + item.mediacount + "</div>"+favbtn+"</div>";
if (item.sousdossiers.length) {
html += "<ol class='dd-list'>";
$.each(item.sousdossiers, function (index, sub) {
html += buildItem(sub);
});
html += "</ol>";
}
html += "</li>";
return html;
}
// ---- ajouter un dossier
function addItem(parent_id, item_id, content, system = 0){
if(!$('.dd .dd-item[data-id="'+parent_id+'"] > ol').length){
$('.dd .dd-item[data-id="'+parent_id+'"]').append("<ol class='dd-list'></ol>");
$('.dd .dd-item[data-id="'+parent_id+'"]').prepend("<button class='dd-collapse' data-action='collapse' type='button'>Collapse</button><button class='dd-expand' data-action='expand' type='button'>Expand</button>");
}
var favBtn = "";
if(system == 0){
favBtn = "<i class='fal fa-star'></i>";
}
var html = "<li class='dd-item dd3-item' data-id='" + item_id + "'>";
html += "<div class='dd-handle dd3-handle'></div>";
html += "<div class='dd3-content'><input type='text' value='' class='input_rename' maxlength='100' /><span>" + content + "</span><div class='count'>0</div>"+favBtn+"</div></li>";
$('.dd .dd-item[data-id="'+parent_id+'"] > ol').append(html);
}
window.arrayRemove = function(arr, value){
return arr.filter(function(ele){
return ele != value;
});
}
window.FileConvertSize = function(aSize){
aSize = Math.abs(parseInt(aSize, 10));
var def = [[1, 'octets'], [1024, 'ko'], [1024*1024, 'Mo'], [1024*1024*1024, 'Go'], [1024*1024*1024*1024, 'To']];
for(var i=0; i<def.length; i++){
if(aSize<def[i][0]) return (aSize/def[i-1][0]).toFixed(2)+' '+def[i-1][1];
}
}
window.create_UUID = function(){
var dt = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (dt + Math.random()*16)%16 | 0;
dt = Math.floor(dt/16);
return (c=='x' ? r :(r&0x3|0x8)).toString(16);
});
return uuid;
}