trumbowyg
Version:
A lightweight WYSIWYG editor
13 lines • 4.14 kB
JavaScript
/* ===========================================================
* trumbowyg.upload.js v1.2
* Upload plugin for Trumbowyg
* http://alex-d.github.com/Trumbowyg
* ===========================================================
* Author : Alexandre Demode (Alex-D)
* Twitter : @AlexandreDemode
* Website : alex-d.fr
* Mod by : Aleksandr-ru
* Twitter : @Aleksandr_ru
* Website : aleksandr.ru
*/
!function(r){"use strict";var e={serverPath:"",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0,imageWidthModalEdit:!1};function a(r,e){var o=e.shift(),l=e;if(null!==r){if(0===l.length)return r[o];if("object"==typeof r)return a(r[o],l)}return r}r.extend(!0,r.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},az:{upload:"Yüklə",file:"Fayl",uploadError:"Xəta"},by:{upload:"Загрузка",file:"Файл",uploadError:"Памылка"},ca:{upload:"Pujar fitxer",file:"Fitxer",uploadError:"Error"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},da:{upload:"Upload",file:"Fil",uploadError:"Fejl"},de:{upload:"Hochladen",file:"Datei",uploadError:"Fehler"},es:{upload:"Subir archivo",file:"Archivo",uploadError:"Error"},et:{upload:"Lae üles",file:"Fail",uploadError:"Viga"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},hu:{upload:"Feltöltés",file:"Fájl",uploadError:"Hiba"},ja:{upload:"アップロード",file:"ファイル",uploadError:"エラー"},ko:{upload:"그림 올리기",file:"파일",uploadError:"에러"},pt_br:{upload:"Enviar do local",file:"Arquivo",uploadError:"Erro"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"},sl:{upload:"Naloži datoteko",file:"Datoteka",uploadError:"Napaka"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},tr:{upload:"Yükle",file:"Dosya",uploadError:"Hata"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},zh_tw:{upload:"上傳",file:"文件",uploadError:"錯誤"}},plugins:{upload:{init:function(o){o.o.plugins.upload=r.extend(!0,{},e,o.o.plugins.upload||{});var l={fn:function(){o.saveRange();var e,l=o.o.prefix,t={file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:o.getRangeText()}};o.o.plugins.upload.imageWidthModalEdit&&(t.width={value:""});var i=!1,d=o.openModalInsert(o.lang.upload,t,(function(t){const u=o.o.plugins.upload;if(!i){i=!0;var s=new FormData;s.append(u.fileFieldName,e),u.data.map((function(r){s.append(r.name,r.value)})),r.map(t,(function(r,e){"file"!==e&&s.append(e,r)})),0===r("."+l+"progress",d).length&&r("."+l+"modal-title",d).after(r("<div/>",{class:l+"progress"}).append(r("<div/>",{class:l+"progress-bar"}))),function(r,e,a){var o=new XMLHttpRequest;o.open("POST",r,!0),Object.keys(a.headers).forEach((r=>{o.setRequestHeader(r,a.headers[r])})),Object.keys(a.xhrFields).forEach((r=>{o[r]=a.headers[r]})),o.upload.addEventListener("progress",(function(r){a.progress(r)}),!1),o.onreadystatechange=function(){if(4===o.readyState){if((o.status<200||o.status>=300)&&304!==o.status)return a.error(),void(o=null);var r=JSON.parse(o.responseText);a.success(r),o=null}},o.send(e)}(u.serverPath,s,{headers:u.headers,xhrFields:u.xhrFields,progress:function(e){r("."+l+"progress-bar").css("width",Math.round(100*e.loaded/e.total)+"%")},success:function(e){if(i=!1,u.success)u.success(e,o,d,t);else{if(!a(e,u.statusPropertyName.split(".")))return o.addErrorOnModalField(r("input[type=file]",d),o.lang[e.message]),void o.$c.trigger("tbwuploaderror",[o,e]);var l=a(e,u.urlPropertyName.split("."));o.execCmd("insertImage",l,!1,!0);var s=r('img[src="'+l+'"]:not([alt])',o.$box);s.attr("alt",t.alt),u.imageWidthModalEdit&&parseInt(t.width)>0&&s.attr({width:t.width}),o.syncCode(),setTimeout((function(){o.closeModal()}),250),o.$c.trigger("tbwuploadsuccess",[o,e,l])}},error:u.error||function(){o.addErrorOnModalField(r("input[type=file]",d),o.lang.uploadError),o.$c.trigger("tbwuploaderror",[o]),i=!1}})}}));r("input[type=file]").on("change",(function(r){e=r.target.files[0]}))}};o.addBtnDef("upload",l)}}}})}(jQuery);