123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- $(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('<span class="file-' + item + '">' + file.name + '</span><br /><progress class="progress-' + item + '" value="0" max="100"></progress>');
-
- // 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('<div class="highlight-1">' + document.getElementById("files").files[i].name + ' : ' + Msg_errorFileSize + '</div>');
- upload = false;
- }
- // Mime
- if (!checkMimeTypes(document.getElementById("files").files[i].type)) {
- $('#preUpload').append('<div class="highlight-1">' + document.getElementById("files").files[i].name + ' : ' + Msg_errorFileType + '</div>');
- upload = false;
- }
- }
- if (fileAlreadyUploadSizeTotal > Config_maxUploadTotal) {
- $('#preUpload').append('<div class="highlight-1">' + Msg_errorTotalSize + '</div>');
- upload = false;
- }
- if (files.length > Config_maxUploadNb) {
- $('#preUpload').append('<div class="highlight-1">' + Msg_errorUploadNb + '</div>');
- 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('<div id="tooltip"><div class="tipBody">' + tip + '</div></div>');
- // 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();
- });
- });
|