ldc-dam/resources/js/depot.js

181 lines
6.4 KiB
JavaScript
Vendored

$(document).ready(function() {
/******************************
Dépôt de média
**********************************/
// ---- Initialisation du module de dépôt
if($('#uploadDepot').length){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var dossier_id = 0;
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(!$(".form_depot_media")[0].checkValidity()){
$(".form_depot_media")[0].reportValidity()
$.fancyMessage({title : "Dépôt de médias", message : "Veuillez compléter tous les champs avant de lancer le transfert.", type : "error"});
return false;
}
if(currentfiles.length == 0){
$.fancyMessage({title : "Dépôt de médias", message : "Veuillez ajouter des médias avant de lancer le transfert.", type : "error"});
return false;
}
$("#submit").html('<i class="fal fa-circle-notch fa-spin"></i> Transférer');
$("#submit").css("pointer-events", "none");
var currentdate = new Date();
folderName = $("#depot_societe").val().replace(' ', '_')+"_"+currentdate.getFullYear().toString()+("0" +(currentdate.getMonth()+1)).slice(-2)+currentdate.getDate().toString()+"_"+currentdate.getHours().toString()+currentdate.getMinutes().toString()+ currentdate.getSeconds().toString();
var description = "Nom : "+$("#depot_nom").val()+'\n'+"Société : "+$("#depot_societe").val()+'\n'+$("#depot_description").val();
// création d'un dossier de dépôt
$("#upload_errors").html("");
$.ajax({
url: '/ajax/add-depot-folder',
method: 'POST',
dataType : 'json',
data: {
libelle: folderName,
description : description,
},
success: function(result){
dossier_id = result.folder_id;
$('.upload').click() //click upload buttons and upload all files in the queue
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
});
$('#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;
$('#uploadDepot').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+" fichiers", 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(),
dossier_id: dossier_id,
};
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));
});
},
stop: function (e,) {
$(".files").html("");
counter = 0;
currentfiles = [];
$('#progress .progress-bar').css('width', '0%');
$('#progress').hide();
$("#depot_nom").val('');
$("#depot_societe").val('');
$("#depot_description").val('');
$.fancyMessage({title : "Dépôt de médias", message : "Le transfert des fichiers est terminé !", type : "info"});
$("#submit").html('Transférer');
$("#submit").css("pointer-events", "auto");
},
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');
}
});