ldc-dam/resources/js/media.js
2019-06-05 09:10:06 +02:00

958 lines
32 KiB
JavaScript
Vendored

$(document).ready(function() {
/******************************
Liste des dossiers
**********************************/
// ---- init des dossiers
if ( $( ".media_manager" ).length ) {
var sujetId = $("#sujet_selector").val();
if(sujetId != "")
initFolderManager(sujetId);
}
// ---- collapse/expand side menu
$(".close_side_menu").on('click', function(event) {
event.preventDefault();
if($(".side_menu ").hasClass('collapse')){
$(".side_menu ").removeClass('collapse')
$(".close_side_menu i").removeClass('fa-chevron-right');
$(".close_side_menu i").addClass('fa-chevron-left');
}else{
$(".side_menu ").addClass('collapse');
$(".close_side_menu i").removeClass('fa-chevron-left');
$(".close_side_menu 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');
$(".currentFolder").val(0);
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();
$(".currentFolder").val(dossier_id);
$(window).data('offset', 0);
loadMedia(dossier_id, sujet_id);
}
});
// ---- sélectionner la racine
$(".folder_container").on('click', '.root_folder', function(event) {
event.preventDefault();
$(".folder_container .dd3-content").removeClass('selected');
$(this).addClass('selected');
$(".currentFolder").val(0);
var sujetId = $("#sujet_selector").val();
$(window).data('offset', 0);
loadMedia(0, sujetId);
});
// ---- 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');
$(".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();
if(!$('.dd .dd-item[data-id="'+dossier_id+'"] > ol').length){
$.ajax({
url: '/ajax/remove-folder',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
},
success: function(result){
// supprimer dossier
if(result == true){
$('.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();
$.ajax({
url: '/ajax/save-folder-property',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
libelle: libelle,
description: description,
},
success: function(result){
$(".folder_container .dd3-item[data-id='"+dossier_id+"'] > .dd3-content span").html(libelle);
$.fancybox.getInstance().close();
},
error: function(jqXHR, textStatus, errorThrown) {
$.fancybox.getInstance().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($(".currentFolder").val() != dossier_id){
$.ajax({
url: '/ajax/move-media',
method: 'POST',
dataType : 'json',
data: {
dossier_id: dossier_id,
data: data,
},
success: function(result){
var currentFolderId = $(".currentFolder").val();
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"));
}
});
// ---- déselectionne les éléments si on clique en dehors
$(".main_content .wrapper").on("click", function(event) {
if (event.target !== this) return;
$(".imageItem").attr("aria-grabbed", "false");
$(".imageItem").removeClass('flip');
});
// ---- clique droit sur un média
$(".main_content .wrapper").on("contextmenu", '.imageItem' , function(event) {
event.preventDefault();
$(".imageItem").removeClass('flip');
$(this).addClass('flip')
});
// ---- double-clique sur un média
var drPlugin = null;
var viewer = null;
$(".main_content .wrapper").on("dblclick", '.imageItem' , function(event) {
event.preventDefault();
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");
if($(this).attr('data-typemedia') == 1){ // média image
$("#form_media .form_media_retouch").show(); // on active l'onglet ressource
// charge l'image de preview
$(".preview_img").val($(this).attr('data-preview'));
$(".tab_preview").html('<div id="openseadragon" ></div>');
$("#openseadragon").css('width', '100%');
$("#openseadragon").css('height', minHeight);
viewer = OpenSeadragon({
id: "openseadragon",
tileSources: {
type: "image",
url: $(".preview_img").val(),
}
});
// charge l'image pour la retouche
$("#form_media .tab_retouch").html('<img id="drTarget" src="" >');
$("#drTarget").attr("src", $(this).attr('data-src'));
drPlugin = new Darkroom('#drTarget', {
minWidth: 200,
minHeight: 200,
maxWidth: minWidth,
maxHeight: minHeight,
plugins: {
save: {
callback: function() {
var newImage = this.darkroom.sourceCanvas.toDataURL();
$(".preview_img").val(newImage);
viewer.destroy(); viewer = null;
viewer = OpenSeadragon({
id: "openseadragon",
tileSources: {
type: "image",
url: $(".preview_img").val(),
}
});
}
},
}
});
}else if ($(this).attr('data-typemedia') == 2) { // média svg
$("#form_media .form_media_retouch").hide(); // masque l'onglet retouche
// 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
// 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
// charge la vidéo
$(".tab_preview").html('<video src="" controls></video>');
$(".tab_preview video").attr("src", $(this).attr('data-src'));
}
// affiche la popin
$("#form_media").fadeIn('fast');
});
// ---- fermeture de la popup d'édition
$(".form_media_close").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
viewer.destroy(); viewer = null; // on détruit le plugin de preview
}
// ---- 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()
}
$(".tab_edit .tab_content").scrollTop( 0 ); // on remonte la scrollbar de la tab edition
});
// ---- 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');
// ---- 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()
}
});
// ---- gère la sélection des éléments
var lastSelected ;
$("html").on("click", ".imageItem", function(event) {
event.preventDefault();
$(".imageItem").removeClass('flip');
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){
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{
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
$(".main_content .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();
var dossier_id = $(".currentFolder").val();
loadMedia(dossier_id, sujet_id);
}
});
/******************************
Edition d'un média
**********************************/
/******************************
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 d'upload
$('.action_add_media').on('click',function(event){
event.preventDefault();
$('.upload_container').show("fast");
});
// ---- 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();
$("#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 = [];
$('#fileupload').fileupload({
url: "/ajax/upload-media",
dataType: 'json',
limitMultiFileUploads: 10,
maxChunkSize: 10000000,
dragover: function (e, data) {
$(".uploader-window").fadeIn( "fast");
},
add: function (e, data) {
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|eps|svg|indd|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: $(".currentFolder").val(),
};
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 = $(".currentFolder").val();
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("");
currentfiles = [];
$('#progress .progress-bar').css('width', '0%');
$('#progress').hide();
$('.upload_container').hide("fast");
var currentFolder = $(".currentFolder").val();
if(currentFolder == 0 || currentFolder == ""){
$(".root_folder").trigger("click");
}else{
$('.dd .dd-item[data-id="'+currentFolder+'"] > .dd3-content').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;
var data = result.data;
var total = result.count;
$(".root_folder .count").html(total);
$.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,
},
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();
//---- Chargement des médias
var currentFolder = $(".currentFolder").val();
if(currentFolder == 0 || currentFolder == ""){
$(".root_folder").trigger("click");
}else{
$('.dd .dd-item[data-id="'+currentFolder+'"] > .dd3-content').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).data('offset', 0);
$(window).data('limit', 50);
function loadMedia(dossier_id, sujet_id){
var output = '';
if($(window).data('offset') == 0){
$(window).data('noMedia', false);
$('.media_container .wrapper').html("");
$(".media_container .loader").show();
}else{
$(".main_content .scrollLoader").show();
}
$.ajax({
url: '/ajax/load-media',
method: 'POST',
dataType : 'json',
data: {
dossier_id : dossier_id,
sujet_id : sujet_id,
offset : $(window).data('offset'),
limit : $(window).data('limit'),
},
success: function(result){
var data = result.data;
if(data.length == 0){
$(window).data('noMedia', true);
}
$.each(data, function (index, item) {
var ico = "";
var detail = "";
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";
thumb = item.source.split('.')[0]+"_thumb."+item.extension;
preview = item.source.split('.')[0]+"_preview."+item.extension;
break;
case 2:
ico = '<i class="fas fa-file-image"></i>';
thumb = item.source;
preview = item.source;
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;
case 5:
ico = '<i class="fas fa-file"></i>';
itemClass = "doc";
break;
default:
}
output += '<div class="imageItem" data-id="'+item.id+'" data-typemedia="'+item.typemedia_id+'" data-preview="'+preview+'" data-src="'+ item.source+'" draggable="true" aria-grabbed="false">';
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>';
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+'</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);
}
});
}
// ---- 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 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><i class='"+favClass+" fa-star'></i></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){
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 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><i class='fal fa-star'></i></div></li>";
$('.dd .dd-item[data-id="'+parent_id+'"] > ol').append(html);
}
function arrayRemove(arr, value) {
return arr.filter(function(ele){
return ele != value;
});
}
function FileConvertSize(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];
}
}
function create_UUID(){
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;
}