$(function () { function checkMimeTypes(mimeTypesTest) { var mimeDetect=false; Config_mimeTypes.forEach(function(item, index, array) { var regex = item.replace(/\//g, "\\\/"); if (mimeTypesTest.match(regex) != undefined) { mimeDetect=true; } }); if ((Config_mimeTypesConduct == 'allow' && mimeDetect) || (Config_mimeTypesConduct == 'deny' && !mimeDetect)) { return true; } else { return false; } } /** * Function called to upload one file. * @param file * @param item */ function uploadFile(item, file, expire, random, resize, key) { // Add progress bar $('.progress').show(); $('.progress').append('' + file.name + '
'); // Create object XMLHttpRequest var request = new XMLHttpRequest(); // Event progress to change value of progress bar request.upload.addEventListener('progress', function (e) { $('.progress-' + item).css('display', 'block'); var value = Math.round((e.loaded / e.total) * 100); $('.progress-' + item).attr("value", value); }, false); // Create object FormData var formData = new FormData(); // Add file to FormData formData.append('random', random); formData.append('item', item); formData.append('file', file); formData.append('expire', expire); formData.append('resize', resize); formData.append('key', key); // File to call request.open('post', 'upload.php'); // Function called when request ended request.onload = function (e) { $('#result').append(request.response); }; // Send request request.send(formData); } /** * Function called to upload files. */ function upload() { // Vide les messages si jamais il y en avait $( "#preUpload" ).html( "" ); var upload = true; // Get files var files = $('#files')[0].files; var expire = Math.floor(Date.now() / 1000 + $('#expire').val() * 86400); var random = Math.floor(Math.random() * Math.floor(99)); // Check size and mime var fileAlreadyUploadSizeTotal = 0; for (var i = 0; i < files.length; i++) { // Size fileAlreadyUploadSizeTotal = fileAlreadyUploadSizeTotal + document.getElementById("files").files[i].size; if (document.getElementById("files").files[i].size > Config_maxUploadPerFile) { $('#preUpload').append('
' + document.getElementById("files").files[i].name + ' : ' + Msg_errorFileSize + '
'); upload = false; } // Mime if (!checkMimeTypes(document.getElementById("files").files[i].type)) { $('#preUpload').append('
' + document.getElementById("files").files[i].name + ' : ' + Msg_errorFileType + '
'); upload = false; } } if (fileAlreadyUploadSizeTotal > Config_maxUploadTotal) { $('#preUpload').append('
' + Msg_errorTotalSize + '
'); upload = false; } if (files.length > Config_maxUploadNb) { $('#preUpload').append('
' + Msg_errorUploadNb + '
'); upload = false; } if (files.length == 0) { upload = false; } // Upload file by file if (upload == true) { // Session pour compter le nombre de fichier en cours de download sessionStorage.setItem('uploadWait', files.length); $( ".uploadArea" ).hide(); // On lance l'upload fichier par fichier: for (var i = 0; i < files.length; i++) { if (i == 0) { // On mémorise l'upload dans le localStorage if (localStorage.getItem('myFiles')) { var data = JSON.parse(localStorage.getItem('myFiles')); } else { var data = {items: []}; } var keyGen = Math.floor(Math.random() * (999999999999 - 100000000000) + 100000000000); data.items.push( {id: expire + '-' + random, key: keyGen} ); localStorage.setItem('myFiles', JSON.stringify(data)); } uploadFile(i, files[i], expire, random, $('#resize').val(), keyGen); } } } // Copy on clipart : https://stackoverflow.com/questions/44888884/copying-to-clipboard-textbox-value-using-jquery-javascript function copyToClipboard(text) { var textArea = document.createElement( "textarea" ); textArea.value = text; document.body.appendChild( textArea ); textArea.select(); try { var successful = document.execCommand( 'copy' ); var msg = successful ? 'successful' : 'unsuccessful'; } catch (err) { console.log('Oops, unable to copy'); } document.body.removeChild( textArea ); } $('.btn-upload').on('click', upload); $( "#similarServices" ).click(function() { $('.similarHref').hide(); $('.similarLink').show(); }); $(document).on('click', '.copy', function(){ copyToClipboard($(this).val()); $(this).select(); }); $("input[type=file]").on('change',function(){ $('#resizeForm').hide(); for (var i = 0; i < this.files.length; i++) { var mime = this.files[i].type; if (mime.match('^image\/(jpeg|gif)$')) { $('#resizeForm').show(); } } }); /* infobulles http://javascript.developpez.com/tutoriels/javascript/creer-info-bulles-css-et-javascript-simplement-avec-jquery/ */ // Sélectionner tous les liens ayant l'attribut rel valant tooltip $('a[rel=tooltip]').mouseover(function(e) { // Récupérer la valeur de l'attribut title et l'assigner à une variable var tip = $(this).attr('title'); // Supprimer la valeur de l'attribut title pour éviter l'infobulle native $(this).attr('title',''); // Insérer notre infobulle avec son texte dans la page $(this).append('
' + tip + '
'); // Ajuster les coordonnées de l'infobulle $('#tooltip').css('top', e.pageY - 30 ); $('#tooltip').css('left', e.pageX - 145 ); // Faire apparaitre l'infobulle avec un effet fadeIn }).mousemove(function(e) { // Ajuster la position de l'infobulle au déplacement de la souris $('#tooltip').css('top', e.pageY - 30 ); $('#tooltip').css('left', e.pageX - 145 ); }).mouseout(function() { // Réaffecter la valeur de l'attribut title $(this).attr('title',$('.tipBody').html()); // Supprimer notre infobulle $(this).children('div#tooltip').remove(); }); });