449 lines
14 KiB
JavaScript
Vendored
449 lines
14 KiB
JavaScript
Vendored
$(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('<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>');
|
|
}
|
|
});
|
|
|
|
// ---- 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 = '<div class="imageItem" data-id="'+media.id+'" data-depot="'+media.isDepot+'" data-ext="'+media.extension+'" data-typemedia="'+media.typemedia_id+'" data-preview="'+preview+'" data-src="'+media.folder+media.uid+"."+media.extension+'" draggable="false" aria-grabbed="false">';
|
|
content += '<div class="media '+itemClass+'" style="background-image:url('+thumb+')"></div>';
|
|
content += '<div class="bar"> <a href="#" class="media_info"><i class="far fa-info-circle"></i></a><a href="#" class="media_remove_basket"><i class="far fa-times-circle"></i></a></div>';
|
|
content += '</div>';
|
|
$(".panier_side_menu .panier_content").append(content);
|
|
}
|