7fe4f761创建于 4月29日历史提交
!function(){var remoteImage,uploadImage,onlineImage,editorOpt={};function initTabs(){for(var e=$G("tabhead").children,t=0;t<e.length;t++)domUtils.on(e[t],"click",function(e){setTabFocus((e.target||e.srcElement).getAttribute("data-content-id"))});editorOpt.disableUpload||($G("tabhead").querySelector('[data-content-id="upload"]').style.display="inline-block"),editorOpt.disableOnline||($G("tabhead").querySelector('[data-content-id="online"]').style.display="inline-block"),editorOpt.selectCallback&&($G("imageSelect").style.display="inline-block",domUtils.on($G("imageSelect"),"click",function(e){editorOpt.selectCallback(editor,function(e){var t;e&&($G("url").value=e.path,$G("title").value=e.name,(t=new Image).onload=function(){$G("width").value=t.width,$G("height").value=t.height,remoteImage.setPreview()},t.onerror=function(){remoteImage.setPreview()},t.src=e.path)})}));var i=editor.selection.getRange().getClosedNode();i&&i.tagName&&i.tagName.toLowerCase(),setTabFocus("remote")}function setTabFocus(e){if(e){for(var t,i=$G("tabhead").children,a=0;a<i.length;a++)(t=i[a].getAttribute("data-content-id"))==e?(domUtils.addClass(i[a],"focus"),domUtils.addClass($G(t),"focus")):(domUtils.removeClasses(i[a],"focus"),domUtils.removeClasses($G(t),"focus"));switch(e){case"remote":remoteImage=remoteImage||new RemoteImage;break;case"upload":setAlign(editor.getOpt("imageInsertAlign")),uploadImage=uploadImage||new UploadImage("queueList");break;case"online":setAlign(editor.getOpt("imageManagerInsertAlign")),(onlineImage=onlineImage||new OnlineImage("imageList")).reset()}}}function initButtons(){dialog.onok=function(){for(var e,t=[],i=$G("tabhead").children,a=0;a<i.length;a++)if(domUtils.hasClass(i[a],"focus")){e=i[a].getAttribute("data-content-id");break}switch(e){case"remote":t=remoteImage.getInsertList();break;case"upload":var t=uploadImage.getInsertList(),s=uploadImage.getQueueCount();if(s)return $(".info","#queueList").html('<span style="color:red;">'+"还有2个未上传文件".replace(/[\d]/,s)+"</span>"),!1;break;case"online":t=onlineImage.getInsertList()}t&&editor.execCommand("insertimage",t)}}function initAlign(){domUtils.on($G("alignIcon"),"click",function(e){e=e.target||e.srcElement;e.className&&-1!=e.className.indexOf("-align")&&setAlign(e.getAttribute("data-align"))})}function setAlign(e){e=e||"none";var t=$G("alignIcon").children;for(i=0;i<t.length;i++)t[i].getAttribute("data-align")==e?(domUtils.addClass(t[i],"focus"),$G("align").value=t[i].getAttribute("data-align")):domUtils.removeClasses(t[i],"focus")}function getAlign(){var e=$G("align").value||"none";return"none"==e?"":e}function RemoteImage(e){this.container=utils.isString(e)?document.getElementById(e):e,this.init()}function UploadImage(e){this.$wrap=e.constructor==String?$("#"+e):$(e),this.init()}function OnlineImage(e){this.container=utils.isString(e)?document.getElementById(e):e,this.init()}window.onload=function(){editorOpt=editor.getOpt("imageConfig"),initTabs(),initAlign(),initButtons()},RemoteImage.prototype={init:function(){this.initContainer(),this.initEvents()},initContainer:function(){this.dom={url:$G("url"),width:$G("width"),height:$G("height"),border:$G("border"),vhSpace:$G("vhSpace"),title:$G("title"),align:$G("align")};var e=editor.selection.getRange().getClosedNode();e&&this.setImage(e)},initEvents:function(){var t=this,i=$G("lock");function a(){t.setPreview()}domUtils.on($G("url"),"keyup",a),domUtils.on($G("border"),"keyup",a),domUtils.on($G("title"),"keyup",a),domUtils.on($G("width"),"keyup",function(){var e;i.checked?(e=i.getAttribute("data-proportion"),$G("height").value=Math.round(this.value/e)):t.updateLocker(),a()}),domUtils.on($G("height"),"keyup",function(){var e;i.checked?(e=i.getAttribute("data-proportion"),$G("width").value=Math.round(this.value*e)):t.updateLocker(),a()}),domUtils.on($G("lock"),"change",function(){var e=parseInt($G("width").value)/parseInt($G("height").value);i.setAttribute("data-proportion",e)})},updateLocker:function(){var e=$G("width").value,t=$G("height").value,i=$G("lock");e&&t&&e==parseInt(e)&&t==parseInt(t)?(i.disabled=!1,i.title=""):(i.checked=!1,i.disabled="disabled",i.title=lang.remoteLockError)},setImage:function(e){var t,i;e.tagName&&("img"==e.tagName.toLowerCase()||e.getAttribute("src"))&&e.src&&(t=(t=e.getAttribute("data-word-image"))?t.replace("&amp;","&"):e.getAttribute("_src")||e.getAttribute("src",2).replace("&amp;","&"),i=editor.queryCommandValue("imageFloat"),t!==$G("url").value&&($G("url").value=t),t)&&($G("width").value=e.width||"",$G("height").value=e.height||"",$G("border").value=e.getAttribute("border")||"0",$G("vhSpace").value=e.getAttribute("vspace")||"0",$G("title").value=e.title||e.alt||"",setAlign(i),this.setPreview(),this.updateLocker())},getData:function(){var e,t={};for(e in this.dom)t[e]=this.dom[e].value;return t},setPreview:function(){var e=$G("url").value,t=$G("width").value,i=$G("height").value,a=$G("border").value,s=$G("title").value,n=$G("preview"),r=t&&i?Math.min(t,n.offsetWidth):n.offsetWidth;r=r+2*a>n.offsetWidth?r:n.offsetWidth-2*a,e&&(n.innerHTML='<img src="'+e+'" width="'+r+'" height="'+(t&&i?r*i/t:"")+'" border="'+a+'px solid #000" title="'+s+'" />')},getInsertList:function(){var e,t=this.getData();return t.url?(e={src:t.url,_src:t.url,_propertyDelete:[],style:[]},t.width?(e.width=t.width,e.style.push("width:"+t.width+"px")):e._propertyDelete.push("width"),t.height?(e.height=t.height,e.style.push("height:"+t.height+"px")):e._propertyDelete.push("height"),t.border?e.border=t.border:e._propertyDelete.push("border"),t.align?e.floatStyle=t.align:e._propertyDelete.push("floatStyle"),t.vhSpace?e.vspace=t.vhSpace:e._propertyDelete.push("vspace"),t.title?e.alt=t.title:e._propertyDelete.push("alt"),0<e.style.length?e.style=e.style.join(";"):e._propertyDelete.push("style"),[e]):[]}},UploadImage.prototype={init:function(){this.imageList=[],this.initContainer(),this.initUploader()},initContainer:function(){this.$queue=this.$wrap.find(".filelist")},initUploader:function(){var d,s=this,u=jQuery,e=s.$wrap,i=e.find(".filelist"),a=e.find(".statusBar"),n=a.find(".info"),r=e.find(".uploadBtn"),t=(e.find(".filePickerBtn"),e.find(".filePickerBlock")),o=e.find(".placeholder"),l=a.find(".progress").hide(),c=0,p=0,e=window.devicePixelRatio||1,g=113*e,h=113*e,m="",f={},v=e="transition"in(e=document.createElement("p").style)||"WebkitTransition"in e||"MozTransition"in e||"msTransition"in e||"OTransition"in e,b=editor.getActionUrl(editor.getOpt("imageActionName")),w=(editor.getOpt("imageAllowFiles")||[]).join("").replace(/\./g,",").replace(/^[,]/,""),C=editor.getOpt("imageMaxSize"),e=editor.getOpt("imageCompressBorder");function y(i){function a(e){switch(e){case"exceed_size":text=lang.errorExceedSize;break;case"interrupt":text=lang.errorInterrupt;break;case"http":text=lang.errorHttp;break;case"not_allow_type":text=lang.errorFileType;break;default:text=lang.errorUploadRetry}l.text(text).show()}var s=u('<li id="'+i.id+'"><p class="title">'+i.name+'</p><p class="imgWrap"></p><p class="progress"><span></span></p></li>'),n=u('<div class="file-panel"><span class="cancel">'+lang.uploadDelete+'</span><span class="rotateRight">'+lang.uploadTurnRight+'</span><span class="rotateLeft">'+lang.uploadTurnLeft+"</span></div>").appendTo(s),r=s.find("p.progress span"),o=s.find("p.imgWrap"),l=u('<p class="error"></p>').hide().appendTo(s);"invalid"===i.getStatus()?a(i.statusText):(o.text(lang.uploadPreview),browser.ie&&browser.version<=7?o.text(lang.uploadNoPreview):d.makeThumb(i,function(e,t){e||!t?o.text(lang.uploadNoPreview):(e=u('<img src="'+t+'">'),o.empty().append(e),e.on("error",function(){o.text(lang.uploadNoPreview)}))},g,h),f[i.id]=[i.size,0],i.rotation=0,i.ext&&-1!=w.indexOf(i.ext.toLowerCase())||(a("not_allow_type"),d.removeFile(i))),i.on("statuschange",function(e,t){"progress"===t?r.hide().width(0):"queued"===t&&(s.off("mouseenter mouseleave"),n.remove()),"error"===e||"invalid"===e?(a(i.statusText),f[i.id][1]=1):"interrupt"===e?a("interrupt"):"queued"===e?f[i.id][1]=0:"progress"===e&&(l.hide(),r.css("display","block")),s.removeClass("state-"+t).addClass("state-"+e)}),s.on("mouseenter",function(){n.stop().animate({height:30})}),s.on("mouseleave",function(){n.stop().animate({height:0})}),n.on("click","span",function(){var e;switch(u(this).index()){case 0:return void d.removeFile(i);case 1:i.rotation+=90;break;case 2:i.rotation-=90}v?(e="rotate("+i.rotation+"deg)",o.css({"-webkit-transform":e,"-mos-transform":e,"-o-transform":e,transform:e})):o.css("filter","progid:DXImageTransform.Microsoft.BasicImage(rotation="+~~(i.rotation/90%4+4)%4+")")}),s.insertBefore(t)}function x(){var e,i=0,a=0,t=l.children();u.each(f,function(e,t){a+=t[0],i+=t[0]*t[1]}),e=a?i/a:0,t.eq(0).text(Math.round(100*e)+"%"),t.eq(1).css("width",Math.round(100*e)+"%"),$()}function I(e){if(e!==m){var t=d.getStats();switch(r.removeClass("state-"+m),r.addClass("state-"+e),e){case"pedding":i.addClass("element-invisible"),a.addClass("element-invisible"),o.removeClass("element-invisible"),l.hide(),n.hide(),d.refresh();break;case"ready":o.addClass("element-invisible"),i.removeClass("element-invisible"),a.removeClass("element-invisible"),l.hide(),n.show(),r.text(lang.uploadStart),d.refresh();break;case"uploading":l.show(),n.hide(),r.text(lang.uploadPause);break;case"paused":l.show(),n.hide(),r.text(lang.uploadContinue);break;case"confirm":if(l.show(),n.hide(),r.text(lang.uploadStart),(t=d.getStats()).successNum&&!t.uploadFailNum)return void I("finish");break;case"finish":l.hide(),n.show(),t.uploadFailNum?r.text(lang.uploadRetry):r.text(lang.uploadStart)}m=e,$()}s.getQueueCount()?r.removeClass("disabled"):r.addClass("disabled")}function $(){var e,t="";"ready"===m?t=lang.updateStatusReady.replace("_",c).replace("_KB",WebUploader.formatSize(p)):"confirm"===m?(e=d.getStats()).uploadFailNum&&(t=lang.updateStatusConfirm.replace("_",e.successNum).replace("_",e.successNum)):(e=d.getStats(),t=lang.updateStatusFinish.replace("_",c).replace("_KB",WebUploader.formatSize(p)).replace("_",e.successNum),e.uploadFailNum&&(t+=lang.updateStatusError.replace("_",e.uploadFailNum))),n.html(t)}WebUploader.Uploader.support()?editor.getOpt("imageActionName")?(e={pick:{id:"#filePickerReady",label:lang.uploadSelectFile},accept:{title:"Images",extensions:w,mimeTypes:"image/*"},swf:"../../third-party/webuploader/Uploader.swf",server:b,fileVal:editor.getOpt("imageFieldName"),duplicate:!0,fileSingleSizeLimit:C,threads:1,headers:editor.getOpt("serverHeaders")||{},compress:!!editor.getOpt("imageCompressEnable")&&{enable:editor.getOpt("imageCompressEnable"),maxWidthOrHeight:e,maxSize:C}},editor.getOpt("uploadServiceEnable")&&(e.customUpload=function(t,i){editor.getOpt("uploadServiceUpload")("image",t,{success:function(e){i.onSuccess(t,{_raw:JSON.stringify(e)})},error:function(e){i.onError(t,e)},progress:function(e){i.onProgress(t,e)}},{from:"image"})}),(d=s.uploader=WebUploader.create(e)).addButton({id:"#filePickerBlock"}),d.addButton({id:"#filePickerBtn",label:lang.uploadAddFile}),I("pedding"),d.on("fileQueued",function(e){c++,p+=e.size,1===c&&(o.addClass("element-invisible"),a.show()),y(e)}),d.on("fileDequeued",function(e){var t;e.ext&&-1!=w.indexOf(e.ext.toLowerCase())&&e.size<=C&&(c--,p-=e.size),t=u("#"+(e=e).id),delete f[e.id],x(),t.off().find(".file-panel").off().end().remove(),x()}),d.on("filesQueued",function(e){d.isInProgress()||"pedding"!=m&&"finish"!=m&&"confirm"!=m&&"ready"!=m||I("ready"),x()}),d.on("all",function(e,t){switch(e){case"uploadFinished":I("confirm");break;case"startUpload":var i=utils.serializeParam(editor.queryCommandValue("serverparam"))||"",i=utils.formatUrl(b+(-1==b.indexOf("?")?"?":"&")+"encode=utf-8&"+i);d.option("server",i),I("uploading");break;case"stopUpload":I("paused")}}),d.on("uploadBeforeSend",function(e,t,i){-1!=b.toLowerCase().indexOf("jsp")&&(i["X-Requested-With"]="XMLHttpRequest")}),d.on("uploadProgress",function(e,t){u("#"+e.id).find(".progress span").css("width",100*t+"%"),f[e.id][1]=t,x()}),d.on("uploadSuccess",function(t,e){t=u("#"+t.id);try{var i=e._raw||e,a=utils.str2json(i);"SUCCESS"==(a=editor.options.serverResponsePrepare(a)).state?(s.imageList.push(a),t.append('<span class="success"></span>'),editor.fireEvent("uploadsuccess",{res:a,type:"image"})):t.find(".error").text(a.state).show()}catch(e){t.find(".error").text(lang.errorServerUpload).show()}}),d.on("uploadError",function(e,t){}),d.on("error",function(e,t,i){"F_EXCEED_SIZE"===e?editor.getOpt("tipError")(lang.errorExceedSize+" "+(t/1024/1024).toFixed(1)+"MB"):console.log("error",e,t,i)}),d.on("uploadComplete",function(e,t){}),r.on("click",function(){if(u(this).hasClass("disabled"))return!1;"ready"===m||"paused"===m?d.upload():"uploading"===m&&d.stop()}),r.addClass("state-"+m),x()):u("#filePickerReady").after(u("<div>").html(lang.errorLoadConfig)).hide():u("#filePickerReady").after(u("<div>").html(lang.errorNotSupport)).hide()},getQueueCount:function(){for(var e,t=0,i=this.uploader.getFiles(),a=0;e=i[a++];)"queued"!=(e=e.getStatus())&&"uploading"!=e&&"progress"!=e||t++;return t},destroy:function(){this.$wrap.remove()},getInsertList:function(){for(var e,t=[],i=getAlign(),a=editor.getOpt("imageUrlPrefix"),s=0;s<this.imageList.length;s++)e=this.imageList[s],t.push({src:a+e.url,_src:a+e.url,alt:e.original,floatStyle:i});return t}},OnlineImage.prototype={init:function(){this.reset(),this.initEvents()},initContainer:function(){this.container.innerHTML="",this.list=document.createElement("ul"),this.clearFloat=document.createElement("li"),domUtils.addClass(this.list,"list"),domUtils.addClass(this.clearFloat,"clearFloat"),this.list.appendChild(this.clearFloat),this.container.appendChild(this.list)},initEvents:function(){var t=this;domUtils.on($G("imageList"),"scroll",function(e){this.scrollHeight-(this.offsetHeight+this.scrollTop)<10&&t.getImageData()}),domUtils.on(this.container,"click",function(e){e=(e.target||e.srcElement).parentNode;"li"==e.tagName.toLowerCase()&&(domUtils.hasClass(e,"selected")?domUtils.removeClasses(e,"selected"):domUtils.addClass(e,"selected"))})},initData:function(){this.state=0,this.listSize=editor.getOpt("imageManagerListSize"),this.listIndex=0,this.listEnd=!1,this.getImageData()},reset:function(){this.initContainer(),this.initData()},getImageData:function(){var _this=this,url,isJsonp;_this.listEnd||this.isLoadingData||(this.isLoadingData=!0,url=editor.getActionUrl(editor.getOpt("imageManagerActionName")),isJsonp=utils.isCrossDomainUrl(url),ajax.request(url,{timeout:1e5,dataType:isJsonp?"jsonp":"",headers:editor.options.serverHeaders||{},data:utils.extend({start:this.listIndex,size:this.listSize},editor.queryCommandValue("serverparam")),method:"get",onsuccess:function(r){try{var json=isJsonp?r:eval("("+r.responseText+")"),json=editor.options.serverResponsePrepare(json);"SUCCESS"===json.state&&(_this.pushData(json.list),_this.listIndex=parseInt(json.start)+parseInt(json.list.length),_this.listIndex>=json.total&&(_this.listEnd=!0),_this.isLoadingData=!1)}catch(e){var list;-1!=r.responseText.indexOf("ue_separate_ue")&&(list=r.responseText.split(r.responseText),_this.pushData(list),_this.listIndex=parseInt(list.length),_this.listEnd=!0,_this.isLoadingData=!1)}},onerror:function(){_this.isLoadingData=!1}}))},pushData:function(e){for(var t,i,a,s=this,n=editor.getOpt("imageManagerUrlPrefix"),r=0;r<e.length;r++)e[r]&&e[r].url&&(t=document.createElement("li"),i=document.createElement("img"),a=document.createElement("span"),domUtils.on(i,"load",(e=>function(){s.scale(e,e.parentNode.offsetWidth,e.parentNode.offsetHeight)})(i)),i.width=113,i.setAttribute("src",n+e[r].url+(-1==e[r].url.indexOf("?")?"?noCache=":"&noCache=")+(+new Date).toString(36)),i.setAttribute("_src",n+e[r].url),domUtils.addClass(a,"icon"),t.appendChild(i),t.appendChild(a),this.list.insertBefore(t,this.clearFloat))},scale:function(e,t,i,a){var s=e.width,n=e.height;"justify"==a?n<=s?(e.width=t,e.height=i*n/s,e.style.marginLeft="-"+parseInt((e.width-t)/2)+"px"):(e.width=t*s/n,e.height=i,e.style.marginTop="-"+parseInt((e.height-i)/2)+"px"):n<=s?(e.width=t*s/n,e.height=i,e.style.marginLeft="-"+parseInt((e.width-t)/2)+"px"):(e.width=t,e.height=i*n/s,e.style.marginTop="-"+parseInt((e.height-i)/2)+"px")},getInsertList:function(){for(var e,t=this.list.children,i=[],a=getAlign(),s=0;s<t.length;s++)domUtils.hasClass(t[s],"selected")&&(e=t[s].firstChild.getAttribute("_src"),i.push({src:e,_src:e,alt:e.substr(e.lastIndexOf("/")+1),floatStyle:a}));return i}}}();