$(document).ready(function() { /*************************** Widget panier *****************************/ if ( $( ".panier_side_menu" ).length ) { // ---- collapse/expand panier side menu $("#menu_panier").on('click', function(event) { event.preventDefault(); $(".panier_side_menu .panier_menu").toggle(); }); // ---- Chargement par défaut du premier panier if($("#panier_selector").val()){ $(window).data('currentBasket', $("#panier_selector").val()); loadBasket($(window).data('currentBasket')); } // ---- chargement du panier on change du sélector $("#panier_selector").on('change', function(event) { $(window).data('currentBasket', $("#panier_selector").val()); loadBasket($(window).data('currentBasket')); }); // ---- Ajout de média au panier en masse $('.action_add_basket').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")); } }); addMediasBasket(medias); }); // ---- Ajout un nouveau panier $('.panier_side_menu .add_panier').on('click',function(event){ event.preventDefault(); $(".panier_side_menu .panier_menu").hide(); var d = new Date(); var strDate = ("0" +d.getDate()).slice(-2)+ "/" + ("0" +(d.getMonth()+1)).slice(-2) + "/" + d.getFullYear(); var defaultTitle = "Panier du "+strDate; var title = prompt("Indiquez le libellé de votre nouveau panier", defaultTitle); if(title != ""){ $.ajax({ url: '/ajax/add-basket', method: 'POST', dataType : 'json', data: { title: title, }, success: function(result){ if(result){ $("#panier_selector").append(new Option(result.libelle, result.id)); $("#panier_selector").val(result.id); $("#panier_selector").trigger("change"); } }, error: function(jqXHR, textStatus, errorThrown) { $.fancybox.close(); $.fancyMessage({title : "Attention", message : "Erreur lors de la création du panier, merci d'actualiser la page.", type : "error"}); } }); } }); // ---- Aller au panier $('.panier_side_menu .goto_panier').on('click',function(event){ event.preventDefault(); $(".panier_side_menu .panier_menu").hide(); window.location.href = $(this).attr("data-url")+"?p="+$(window).data('currentBasket'); }); // ---- Supprimer le panier $('.panier_side_menu .remove_panier').on('click',function(event){ event.preventDefault(); if($(window).data('currentBasket') == null){ $.fancyMessage({title : "Suppression de panier", message : "Veuillez sélectionner un panier à supprimer.", type : "info"}); return false; } $.fancyConfirm({ title : "Suppression de panier", message : "Êtes-vous sûr de vouloir supprimer ce panier ?", okButton : 'Supprimer', noButton : 'Annuler', callback : function (value) { if (value) { // sauvegarde de l'image en base $.ajax({ url: '/ajax/remove-basket', method: 'POST', dataType : 'json', data: { basket_id: $(window).data('currentBasket'), }, success: function(result){ $(".panier_side_menu .panier_content").html(""); $("#panier_selector option[value='"+$(window).data('currentBasket')+"']").remove(); $("#panier_selector").val($("#panier_selector option:first").val()); $("#panier_selector").trigger("change"); }, error: function(jqXHR, textStatus, errorThrown) { $.fancybox.close(); $.fancyMessage({title : "Suppression de panier", message : "Erreur lors de la suppression, merci d'actualiser la page.", type : "error"}); } }); } } }); }); // ---- Propriétés d'un panier $('.panier_side_menu .info_panier').on('click',function(event){ event.preventDefault(); if($(window).data('currentBasket') == null){ $.fancyMessage({title : "Propriétés du panier", message : "Veuillez sélectionner un panier.", type : "info"}); return false; } $.ajax({ url: '/ajax/get-basket', method: 'POST', dataType : 'json', data: { basket_id : $(window).data('currentBasket'), }, success: function(result){ if(result){ var basket = result.basket; $.fancybox.open({ src : '#form_basket_property', type : 'inline', opts : { animationDuration : 350, animationEffect : 'material', beforeShow : function( instance, current ) { var date = new Date(basket.created_at); $(".form_basket_datecreate").html(date.toLocaleDateString('fr-FR', {'hour': '2-digit', 'minute': '2-digit'} )); $(".form_basket_libelle").val(basket.libelle); $(".form_basket_description").val(basket.description); $(".form_basket_statut").val(basket.statut); $(".form_basket_link").val(result.link); } } }); } }, 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"}); } }); }); // ---- enregistre les propriétés d'un panier $("html").on('click', '.form_basket_save', function(event) { event.preventDefault(); var libelle = $(".form_basket_libelle").val(); if(libelle == ""){ $.fancyMessage({title : "Propriétés d'un dossier", message : "Vous devez indiquer un nom de panier.", type : "error"}); return false; } $(".form_basket_save").addClass('loading'); $.ajax({ url: '/ajax/save-basket-property', method: 'POST', dataType : 'json', data: { basket_id: $(window).data('currentBasket'), libelle: libelle, description: $(".form_basket_description").val(), statut: $(".form_basket_statut").val(), }, success: function(result){ $(".form_basket_save").removeClass('loading'); $("#panier_selector option[value='"+$(window).data('currentBasket')+"']").text(result.libelle); $.fancybox.close(); }, error: function(jqXHR, textStatus, errorThrown) { $(".form_basket_save").removeClass('loading'); $.fancybox.close(); $.fancyMessage({title : "Attention", message : "Erreur lors de l'édition du panier, merci d'actualiser la page.", type : "error"}); } }); }); // ---- Supprimer un média du panier $('.panier_content').on('click', ".imageItem .media_remove_basket",function(event){ event.preventDefault(); var $media = $(this).parents(".imageItem"); var media_id = $media.attr("data-id"); $.ajax({ url: '/ajax/remove-media-basket', method: 'POST', dataType : 'json', data: { media_id: media_id, panier_id : $(window).data('currentBasket'), }, success: function(result){ if(result){ $(".panier_side_menu .imageItem[data-id='"+media_id+"']").remove(); } }, 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"}); } }); }); // ---- Supprimer un média du panier $('.panier_content').on('click', ".imageItem .media_info",function(event){ event.preventDefault(); var $media = $(this).parents(".imageItem"); $media.trigger('dblclick'); }); // ---- gestion du dragover $(".panier_content").on("dragover", function(event) { event.preventDefault(); event.stopPropagation(); }); // ---- gestion du dragleave $(".panier_content").on("dragleave", function(event) { event.preventDefault(); event.stopPropagation(); }); // ---- evt lorsque l'on drop des élements dans le widget panier $(".panier_content").on("drop", function(event) { event.preventDefault(); event.stopPropagation(); var isMediaDepot = false; if ($(window).data('currentBasket') == null) { $.fancyMessage({title : "Ajout de média au panier", message : "Veuillez sélectionner un panier.", type : "info"}); return false; } // source var medias = event.originalEvent.dataTransfer.getData("Text").split(","); // Contrôles $.each(medias, function (index, media_id) { if($(".media_container .imageItem[data-id='"+media_id+"']").attr("data-depot") == "1"){ $.fancyMessage({title : "Attention", message : "Vous ne pouvez pas mettre les médias du dépôt dans un panier.", type : "error"}); isMediaDepot = true; return false; } }); // Ajout des médias dans le panier if(!isMediaDepot){ $.ajax({ url: '/ajax/add-media-basket', method: 'POST', dataType : 'json', data: { medias: medias, panier_id : $(window).data('currentBasket'), }, success: function(result){ if(result){ $.each(result, function (index, media) { addmediaBasketHtml(media); }); } }, error: function(jqXHR, textStatus, errorThrown) { $.fancybox.close(); $.fancyMessage({title : "Attention", message : "Erreur lors de l'ajout de média au panier, merci d'actualiser la page.", type : "error"}); } }); } }); } /**************************************** Page publique des paniers *****************************************/ if ( $( ".public_basket" ).length ) { // ---- Aperçu des médias du panier $(".public_basket ").on("dblclick", '.imageItem' , function(event) { var imgPreview = $(this).attr('data-preview')+'?t='+ new Date().getTime(); if($(this).attr('data-typemedia') == 1|| $(this).attr('data-typemedia') == 2){ // image $.fancybox.open(''); }else if ($(this).attr('data-typemedia') == 3) { // vidéo $.fancybox.open(''); }else if ($(this).attr('data-typemedia') == 4) { // Audio $.fancybox.open(''); } }); // ---- Propriétés d'un panier $('.public_basket .btn_basket_Info').on('click',function(event){ event.preventDefault(); $.fancybox.open({ src : '#form_basket_property', type : 'inline', opts : { animationDuration : 350, animationEffect : 'material', } }); }); // ---- Popup pour télécharger des médias en masse $('.public_basket .btn_basket_download').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 : "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"); } }); } }); // ---- Ajout de médias au panier window.addMediasBasket = function(medias){ var thumb = ""; var preview = ""; var content = ""; if(medias.length == 0){ $.fancyMessage({title : "Ajout de média au panier", message : "Veuillez sélectionner les médias à ajouter.", type : "info"}); }else if ($(window).data('currentBasket') == null) { $.fancyMessage({title : "Ajout de média au panier", message : "Veuillez sélectionner un panier.", type : "info"}); }else{ $.ajax({ url: '/ajax/add-media-basket', method: 'POST', dataType : 'json', data: { medias: medias, panier_id : $(window).data('currentBasket'), }, success: function(result){ if(result){ $.each(result, function (index, media) { addmediaBasketHtml(media); }); } }, error: function(jqXHR, textStatus, errorThrown) { $.fancybox.close(); $.fancyMessage({title : "Attention", message : "Erreur lors de l'ajout de média au panier, merci d'actualiser la page.", type : "error"}); } }); } } // ---- Charge un panier dans le widget function loadBasket(panierId){ if(panierId != null){ $.ajax({ url: '/ajax/load-basket', method: 'POST', dataType : 'json', data: { panier_id : $(window).data('currentBasket'), }, success: function(result){ if(result){ $(".panier_side_menu .panier_content").html(""); $.each(result.medias, function (index, media) { addmediaBasketHtml(media); }); } }, error: function(jqXHR, textStatus, errorThrown) { $.fancybox.close(); $.fancyMessage({title : "Attention", message : "Erreur lors du chargement du panier, merci d'actualiser la page.", type : "error"}); } }); } } // ---- Ajoute un média dans le widget panier function addmediaBasketHtml(media){ var thumb = ""; var preview = ""; var content = ""; var itemClass = ""; switch (media.typemedia_id) { case 1: itemClass = ""; if(media.extension == "pdf" || media.extension == "ai" || media.extension == "psd"){ thumb = media.folder+media.uid+"_thumb.png"; preview = media.folder+media.uid+"_preview.png"; }else{ thumb = media.folder+media.uid+"_thumb."+media.extension; preview = media.folder+media.uid+"_preview."+media.extension; } break; case 2: itemClass = ""; thumb = media.folder+media.uid+"."+media.extension; preview = media.folder+media.uid+"."+media.extension; break; case 3: itemClass = "video"; thumb = ""; preview = media.folder+media.uid+"."+media.extension; break; case 4: itemClass = "son"; thumb = ""; preview = media.folder+media.uid+"."+media.extension; break; default: } content = '
'; content += '
'; content += '
'; content += '
'; $(".panier_side_menu .panier_content").append(content); }