Files
MYSOPHAL/js/fileupload.min.js
2025-08-07 13:15:31 +01:00

1 line
5.0 KiB
JavaScript

function uploadFile(e,a,t){var n=false;var r=new FormData;r.append("filename[0]",e,e.name);r.append("name","filename");$.ajax({type:"POST",url:CFG_GLPI.root_doc+"/ajax/fileupload.php",data:r,processData:false,contentType:false,dataType:"JSON",async:false,success:function(r){$.each(r,(function(r,i){if(i[0].error===undefined){n="";var o=getFileTag(i);if(isImage(e)){n=o.tag}displayUploadedFile(i[0],o,a,t)}else{n=false;alert(i[0].error)}}))},error:function(e){if("responseText"in e&&e.responseText.length>0){alert(e.responseText)}else{alert(e.statusText)}}});return n}var getFileTag=function(e){var a="";$.ajax({type:"POST",url:CFG_GLPI.root_doc+"/ajax/getFileTag.php",data:{data:e},dataType:"JSON",async:false,success:function(e){a=e[0]},error:function(e){console.warn(e.responseText);a=false}});return a};var fileindex=0;var displayUploadedFile=function(e,a,t,n){n=typeof n==="undefined"||n==null?"filename":n;var r=$(t.targetElm);var i=0;var o;do{r=r.parent();o=r.find(".fileupload_info");i++}while(o.length<=0&&i<30);if(o.length){var l=e.name.split(".").pop();var s=$("<p></p>").attr("id",e.id).html(getExtIcon(l)+"&nbsp;"+"<b>"+e.display+"</b>"+"&nbsp;("+getSize(e.size)+")&nbsp;").appendTo(o);$("<input/>").attr("type","hidden").attr("name","_"+n+"["+fileindex+"]").attr("value",e.name).appendTo(s);$("<input/>").attr("type","hidden").attr("name","_prefix_"+n+"["+fileindex+"]").attr("value",e.prefix).appendTo(s);$("<input/>").attr("type","hidden").attr("name","_tag_"+n+"["+fileindex+"]").attr("value",a.name).appendTo(s);var d={0:e.id,1:e.id+"2"};$('<span class="fa fa-times-circle pointer"></span>').click((function(){deleteImagePasted(d,a.tag,t)})).appendTo(s);fileindex++}};var deleteImagePasted=function(e,a,t){$.each(e,(function(e,a){$("#"+a).remove()}));if(typeof t!=="undefined"&&typeof t.dom!=="undefined"){t.setContent(t.getContent().replace("<p>"+a+"</p>",""));var n=new RegExp("#","g");t.dom.remove(a.replace(n,""))}};var insertImgFromFile=function(e,a,t){var n=window.URL||window.webkitURL;var r=n.createObjectURL(a);var i=new RegExp("#","g");var o=$(tinyMCE.activeEditor.getContainer()).height()-60;var l=$(tinyMCE.activeEditor.getContainer()).width()-120;if(window.FileReader&&window.File&&window.FileList&&window.Blob){e.setProgressState(true);var s=new FileReader;s.onload=function(a){var n=new Image;n.src=a.target.result;n.onload=function(){var a=this.width;var n=this.height;var s=0;if(a>l){s=l/a;n=n*s;a=a*s}if(n>o){s=o/n;a=a*s;n=n*s}e.execCommand("mceInsertContent",false,"<img width='"+a+"' height='"+n+"'' id='"+t.replace(i,"")+"' src='"+r+"'>");e.setProgressState(false)}};s.readAsDataURL(a)}else{console.warn("thanks to update your browser to get preview of image")}};var dataURItoBlob=function(e){var a;if(e.split(",")[0].indexOf("base64")>=0){a=atob(e.split(",")[1])}else{a=unescape(e.split(",")[1])}var t=e.split(",")[0].split(":")[1].split(";")[0];var n=t.split("/")[1];var r=new Uint8Array(a.length);for(var i=0;i<a.length;i++){r[i]=a.charCodeAt(i)}var o=new Blob([r],{type:t});o.name="image_paste"+Math.floor(Math.random()*1e7+1)+"."+n;return o};var isImageFromPaste=function(e){return e.match(new RegExp("<img.*data:image/"))!==null};var isImageBlobFromPaste=function(e){return e.match(new RegExp("<img.*src=['\"]blob:"))!==null};var extractSrcFromImgTag=function(e){var a=$("<div></div>").append(e).find("img");if(a.length>0){return a.attr("src")}return""};var insertImageInTinyMCE=function(e,a){var t=$(e.targetElm).attr("name");var n=uploadFile(a,e,t);if(n!==false){insertImgFromFile(e,a,n)}return n};if(typeof tinyMCE!="undefined"){tinyMCE.PluginManager.add("glpi_upload_doc",(function(e){e.on("PastePreProcess",(function(a){if(isImageFromPaste(a.content)){stopEvent(a);var t=extractSrcFromImgTag(a.content);if(t.length){var n=dataURItoBlob(t);insertImageInTinyMCE(e,n)}}else if(isImageBlobFromPaste(a.content)){stopEvent(a);var r=extractSrcFromImgTag(a.content);var i=new XMLHttpRequest;i.open("GET",r,true);i.responseType="arraybuffer";i.onload=function(){if(this.status!==200){console.error("paste error");return}var a=new Uint8Array(this.response);fileType.fromBuffer(a).then((function(t){if(!t||!t.ext||!t.mime){console.error("paste error");return}var n=new Blob([a.buffer],{type:t.mime});n.name="image_paste"+Math.floor(Math.random()*1e7+1)+"."+t.ext;insertImageInTinyMCE(e,n)}))};i.send()}}))}))}$((function(){$(document).bind("dragover",(function(e){e.preventDefault();var a=$(".dropzone");var t;var n=window.dropZoneTimeout;if(!n){a.addClass("dragin")}else{clearTimeout(n)}var r=false;var i=e.target;do{if($(i).hasClass("draghoverable")){r=true;t=$(i);break}i=i.parentNode}while(i!==null);a.removeClass("dragin draghover");if(r){t.addClass("draghover")}}));$(document).bind("drop",(function(e){e.preventDefault();$(".draghoverable").removeClass("draghover");if(typeof e.originalEvent.dataTransfer.files!=="undefined"){$.each(e.originalEvent.dataTransfer.files,(function(a,t){var n=null;var r=$(e.target).find("input[type=file][name]");if(r.length){n=r.attr("name").replace("[]","")}uploadFile(t,{targetElm:$(e.target).find(".fileupload_info")},n)}))}}))}));