Files
liceo-ariosto/media/plg_editors_tinymce/js/plugins/dragdrop/plugin.min.js
2025-06-17 11:53:18 +02:00

1 line
2.7 KiB
JavaScript

function readFile(e,t){const a=new FileReader;a.onload=a=>{const{result:n}=a.target,o=n.indexOf("base64")+7,r=n.slice(o,n.length);t(e.name,r)},a.readAsDataURL(e)}window.tinymce.PluginManager.add("jdragndrop",(e=>{const t=e.options.register;t("uploadUri",{processor:"string"}),t("comMediaAdapter",{processor:"string"}),t("parentUploadFolder",{processor:"string"}),t("csrfToken",{processor:"string"});const a=t=>{t.dataTransfer.types.includes("Files")&&(t.stopPropagation(),t.preventDefault(),e.contentAreaContainer.style.borderWidth="0")};async function n(t,a){const n=e.options.get;Joomla.request({url:`${n("uploadUri")}&path=${n("comMediaAdapter")}${n("parentUploadFolder")}`,method:"POST",data:JSON.stringify({[n("csrfToken")]:1,name:t,content:a,parent:n("parentUploadFolder")}),headers:{"Content-Type":"application/json"},onSuccess:t=>{let a;try{a=JSON.parse(t)}catch(t){e.windowManager.alert(`${Joomla.Text._("ERROR")}: {${t}}`)}if(a.data&&a.data.path){const t=a.data;let n;const o=Joomla.getOptions("system.paths"),{rootFull:r}=o,s=a.data.url.split(r);s.length>1?n=`${s[1]}`:t.url&&(n=t.url);const l=function(a){const o=a.getData(),r=o.altEmpty?' alt=""':"",s=o.altText?` alt="${o.altText}"`:r,l=o.isLazy?' loading="lazy"':"",i=o.isLazy?` width="${t.width}"`:"",d=o.isLazy?` height="${t.height}"`:"";e.execCommand("mceInsertContent",!1,`<img src="${n}"${s}${l}${i}${d}/>`)};e.windowManager.open({title:Joomla.Text._("PLG_TINY_DND_ADDITIONALDATA"),body:{type:"panel",items:[{type:"input",name:"altText",label:Joomla.Text._("PLG_TINY_DND_ALTTEXT")},{type:"checkbox",name:"altEmpty",label:Joomla.Text._("PLG_TINY_DND_EMPTY_ALT")},{type:"checkbox",name:"isLazy",label:Joomla.Text._("PLG_TINY_DND_LAZYLOADED")}]},buttons:[{type:"cancel",text:"Cancel"},{type:"submit",name:"submitButton",text:"Save",primary:!0}],initialData:{altText:"",isLazy:!0,altEmpty:!1},onSubmit:e=>{l(e),e.close()},onCancel:e=>l(e)})}},onError:t=>e.windowManager.alert(`Error: ${t.statusText}`)})}return window.tinyMCE.DOM.bind(document,"dragleave",a),e.on("remove",(()=>window.tinyMCE.DOM.unbind(document,"dragleave",a))),e.on("dragenter",(e=>{e.dataTransfer.types.includes("Files")&&e.stopPropagation()})),e.on("dragover",(t=>{t.dataTransfer.types.includes("Files")&&(t.preventDefault(),e.contentAreaContainer.style.borderStyle="dashed",e.contentAreaContainer.style.borderWidth="5px")})),e.on("drop",(t=>{t.dataTransfer.types.includes("Files")&&(t.preventDefault(),t.dataTransfer.files.length>0&&Array.from(t.dataTransfer.files).forEach((e=>{e.name.toLowerCase().match(/\.(jpg|jpeg|png|gif|webp)$/)&&readFile(e,n)})),e.contentAreaContainer.style.borderWidth="0")})),{getMetadata:()=>({name:"Drag and Drop (Joomla)",url:"https://www.joomla.org/"})}}));