| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | 
							- /**
 
-  * @description
 
-  * 简单上传:点击按钮,直接选择文件上传
 
-  * @author Jinqn
 
-  * @date 2014-03-31
 
-  */
 
- UE.plugin.register('simpleupload', function (){
 
-     var me = this,
 
-         isLoaded = false,
 
-         containerBtn;
 
-     function initUploadBtn(){
 
-         var w = containerBtn.offsetWidth || 20,
 
-             h = containerBtn.offsetHeight || 20,
 
-             btnIframe = document.createElement('iframe'),
 
-             btnStyle = 'display:block;width:' + w + 'px;height:' + h + 'px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;';
 
-         domUtils.on(btnIframe, 'load', function(){
 
-             var timestrap = (+new Date()).toString(36),
 
-                 wrapper,
 
-                 btnIframeDoc,
 
-                 btnIframeBody;
 
-             btnIframeDoc = (btnIframe.contentDocument || btnIframe.contentWindow.document);
 
-             btnIframeBody = btnIframeDoc.body;
 
-             wrapper = btnIframeDoc.createElement('div');
 
-             wrapper.innerHTML = '<form id="edui_form_' + timestrap + '" target="edui_iframe_' + timestrap + '" method="POST" enctype="multipart/form-data" action="' + me.getOpt('serverUrl') + '" ' +
 
-             'style="' + btnStyle + '">' +
 
-             '<input id="edui_input_' + timestrap + '" type="file" accept="image/*" name="' + me.options.imageFieldName + '" ' +
 
-             'style="' + btnStyle + '">' +
 
-             '</form>' +
 
-             '<iframe id="edui_iframe_' + timestrap + '" name="edui_iframe_' + timestrap + '" style="display:none;width:0;height:0;border:0;margin:0;padding:0;position:absolute;"></iframe>';
 
-             wrapper.className = 'edui-' + me.options.theme;
 
-             wrapper.id = me.ui.id + '_iframeupload';
 
-             btnIframeBody.style.cssText = btnStyle;
 
-             btnIframeBody.style.width = w + 'px';
 
-             btnIframeBody.style.height = h + 'px';
 
-             btnIframeBody.appendChild(wrapper);
 
-             if (btnIframeBody.parentNode) {
 
-                 btnIframeBody.parentNode.style.width = w + 'px';
 
-                 btnIframeBody.parentNode.style.height = w + 'px';
 
-             }
 
-             var form = btnIframeDoc.getElementById('edui_form_' + timestrap);
 
-             var input = btnIframeDoc.getElementById('edui_input_' + timestrap);
 
-             var iframe = btnIframeDoc.getElementById('edui_iframe_' + timestrap);
 
-             domUtils.on(input, 'change', function(){
 
-                 if(!input.value) return;
 
-                 var loadingId = 'loading_' + (+new Date()).toString(36);
 
-                 var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '';
 
-                 var imageActionUrl = me.getActionUrl(me.getOpt('imageActionName'));
 
-                 var allowFiles = me.getOpt('imageAllowFiles');
 
-                 me.focus();
 
-                 me.execCommand('inserthtml', '<img class="loadingclass" id="' + loadingId + '" src="' + me.options.themePath + me.options.theme +'/images/spacer.gif">');
 
-                 function callback(){
 
-                     try{
 
-                         var link, json, loader,
 
-                             body = (iframe.contentDocument || iframe.contentWindow.document).body,
 
-                             result = body.innerText || body.textContent || '';
 
-                         json = (new Function("return " + result))();
 
-                         link = me.options.imageUrlPrefix + json.url;
 
-                         if(json.state == 'SUCCESS' && json.url) {
 
-                             loader = me.document.getElementById(loadingId);
 
-                             domUtils.removeClasses(loader, 'loadingclass');
 
-                             loader.setAttribute('src', link);
 
-                             loader.setAttribute('_src', link);
 
-                             loader.setAttribute('alt', json.original || '');
 
-                             loader.removeAttribute('id');
 
-                         } else {
 
-                             showErrorLoader && showErrorLoader(json.state);
 
-                         }
 
-                     }catch(er){
 
-                         showErrorLoader && showErrorLoader(me.getLang('simpleupload.loadError'));
 
-                     }
 
-                     form.reset();
 
-                     domUtils.un(iframe, 'load', callback);
 
-                 }
 
-                 function showErrorLoader(title){
 
-                     if(loadingId) {
 
-                         var loader = me.document.getElementById(loadingId);
 
-                         loader && domUtils.remove(loader);
 
-                         me.fireEvent('showmessage', {
 
-                             'id': loadingId,
 
-                             'content': title,
 
-                             'type': 'error',
 
-                             'timeout': 4000
 
-                         });
 
-                     }
 
-                 }
 
-                 /* 判断后端配置是否没有加载成功 */
 
-                 if (!me.getOpt('imageActionName')) {
 
-                     errorHandler(me.getLang('autoupload.errorLoadConfig'));
 
-                     return;
 
-                 }
 
-                 // 判断文件格式是否错误
 
-                 var filename = input.value,
 
-                     fileext = filename ? filename.substr(filename.lastIndexOf('.')):'';
 
-                 if (!fileext || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {
 
-                     showErrorLoader(me.getLang('simpleupload.exceedTypeError'));
 
-                     return;
 
-                 }
 
-                 domUtils.on(iframe, 'load', callback);
 
-                 form.action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?':'&') + params);
 
-                 form.submit();
 
-             });
 
-             var stateTimer;
 
-             me.addListener('selectionchange', function () {
 
-                 clearTimeout(stateTimer);
 
-                 stateTimer = setTimeout(function() {
 
-                     var state = me.queryCommandState('simpleupload');
 
-                     if (state == -1) {
 
-                         input.disabled = 'disabled';
 
-                     } else {
 
-                         input.disabled = false;
 
-                     }
 
-                 }, 400);
 
-             });
 
-             isLoaded = true;
 
-         });
 
-         btnIframe.style.cssText = btnStyle;
 
-         containerBtn.appendChild(btnIframe);
 
-     }
 
-     return {
 
-         bindEvents:{
 
-             'ready': function() {
 
-                 //设置loading的样式
 
-                 utils.cssRule('loading',
 
-                     '.loadingclass{display:inline-block;cursor:default;background: url(\''
 
-                     + this.options.themePath
 
-                     + this.options.theme +'/images/loading.gif\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n' +
 
-                     '.loaderrorclass{display:inline-block;cursor:default;background: url(\''
 
-                     + this.options.themePath
 
-                     + this.options.theme +'/images/loaderror.png\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' +
 
-                     '}',
 
-                     this.document);
 
-             },
 
-             /* 初始化简单上传按钮 */
 
-             'simpleuploadbtnready': function(type, container) {
 
-                 containerBtn = container;
 
-                 me.afterConfigReady(initUploadBtn);
 
-             }
 
-         },
 
-         outputRule: function(root){
 
-             utils.each(root.getNodesByTagName('img'),function(n){
 
-                 if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr('class'))) {
 
-                     n.parentNode.removeChild(n);
 
-                 }
 
-             });
 
-         },
 
-         commands: {
 
-             'simpleupload': {
 
-                 queryCommandState: function () {
 
-                     return isLoaded ? 0:-1;
 
-                 }
 
-             }
 
-         }
 
-     }
 
- });
 
 
  |