请教js文件上传图片返回图片url路径的修改


如果希望修改上传后的图片url的路径为绝对路径或者在相对路径前添加二级域名,应该如何修改?

EXCMS.Resource.ImageSelector={
    baseAction:'index.php?M=Resource&A=Index',
    uploadAction:'index.php?M=Resource&A=ResoureFileAction',
    resourceType : 'image',
    images : 0,
    maxImages : 20,
    urlImages : new Array,
    uploadImages : new Array,
    //file_size_limit : 1024 * 4,
    single : true,
    selected : null,
    postfixArray : {thumb:'t', smallslide:'ss', largeslide:'ls', medium:'m', large:'l', original:'o'},
    imgNameInput : 0,
    tid:1,
    // load
    load:function(item){
        this.callback = item.callback;
        this.action = item.action || false;
        this.single = item.single || false;
        this.postfix = item.postfix || '';
        this.channelid = item.channelid || 0;
        this.nid = item.nid || 0;               //节点ID
        this.nodename = item.nodename || '';    //节点名称
        this.filetype = item.filetype || '';
        this.filesize = item.filesize || 0;
        this.fid = item.fid || 0;   //上传目录
        this.config = item.config || null;
        this.assocw = item.assocw || 0;  
        this.activeTab = {local:item.local, url:item.url};
        this.store = item.store || null;
        if(this.action != 'upload'){ // 从资源点上传
            this.resource_config = _EXCMS_content_config.resourceconfig;
            var channelselect = this.resource_config.defaultresource && this.resource_config.defaultresource[this.tid] && this.resource_config.defaultresource[this.tid].channelselect;
            if((this.resource_config.assocwchannel=='1' || channelselect) && !this.channelid){
                alert("资源选择需要先选定栏目");
                return ;
            }
            if(this.resource_config.defaultresource && this.resource_config.defaultresource[this.tid]){
                if(this.filetype==''){
                    this.filetype = this.resource_config.defaultresource[this.tid].config.filetype;
                }
                if(parseInt(this.filesize) < 1){
                    this.filesize = this.resource_config.defaultresource[this.tid].config.size;
                }
                if(!this.nid){
                    this.nid = this.resource_config.defaultresource[this.tid].nid;
                }
                if(this.nodename==''){
                    this.nodename = this.resource_config.defaultresource[this.tid].name;
                }
                if(!this.config){
                    this.config = this.resource_config.defaultresource[this.tid].config.image;
                }
            }
        }
        this.filesize = parseInt(this.filesize) || 1024 * 4;    //上传文件大小
        this.filetype = this.filetype || new Array('jpg','jpeg','png','gif');
        if(!this.win) this.render();
        this.win.show();
        this.win.center();
        this.setResourceNode();
    },
    //设置文件类型
    setFileType : function(filetype){
        if(filetype && typeof filetype == 'string'){        //上传文件类型
            filetype = filetype.split(',');
        }else if(typeof filetype == 'array'){

        }else{
            filetype = new Array('jpg','jpeg','png','gif');
        }
        var _types = [];
        for(var i=0,len=filetype.length;i<len;i++){
            filetype[i] = filetype[i].trim().toLowerCase();
            if(filetype[i]) _types.push('*.'+filetype[i]);
        }
        if(_types.length){
            filetype = _types.join(';');
        }else{
            filetype = '*.*';
        }
        if(this.swfupload){
            this.swfupload.setFileTypes(filetype,'All Files ('+filetype+')');
        }
    },
    //设置文件大小
    setFileSize : function(){
        if(this.swfupload){
            this.swfupload.setFileSizeLimit(this.filesize);
        }
    },
    //render image selector
    render:function(){
        this.win =  new Ext.Window({title:'图片资源',maximizable:true,minimizable:false,modal:true,
            resizable:true,width:658,height:413,minWidth:656,minHeight:413,bodyStyle:'background:#FFFFFF',
            closeAction:'hide',plain:false,labelWidth:35,autoScroll:true,html:'',
            buttons:[{text:'确定',handler:this.ok,scope:this},{text:'取消',handler:function(){this.win.hide()},scope:this}],
            'listeners' : {'show':{fn:this.onshow,scope:this}}
        });
        this.win.on('render',function(c){
            var tthis = this;
            setCls(c.body.dom, 'ex-img-selector');
            this.tab = this.createElement({tag:'ul', cls:'ex-img-selector-tab', parent:c.body.dom});
            this.tab.li = [];
            this.tab.li[0] = this.createElement({tag:'li', cls:'active', html:'我的电脑', parent:this.tab});
            this.tab.li[0].index = 0;
            this.tab.li[1] = this.createElement({tag:'li', html:'网上图片', parent:this.tab});
            this.tab.li[1].index = 1;
            this.tab.li[2] = this.createElement({tag:'li', cls:'uploadsetting', html:'图片上传设置', parent:this.tab});
            this.tab.li[2].index = 2;
            this.tab.active = function(idx){
                this.li[0].className = idx == 0 ? 'active' : '';
                this.li[1].className = idx == 1 ? 'active' : '';
                this.li[2].className = idx == 2 ? 'uploadsetting active' : 'uploadsetting';
                this.div[0].style.display = idx == 0 ? 'block' : 'none';
                this.div[1].style.display = idx == 1 ? 'block' : 'none';
                this.div[2].style.display = idx == 2 ? 'block' : 'none';
                tthis.listCt.parentNode.style.display = idx != 2 ? 'block' : 'none';
            }
            this.tab.li[0].onclick = this.tab.li[1].onclick = function(){this.parentNode.active(this.index)}
            this.tab.li[2].onclick = function(){
                this.parentNode.active(this.index);
                if(!tthis.resourceNode) tthis.renderResourceCombo();
            }
            this.form = this.createElement({tag:'form', parent:c.body.dom});
            this.tab.div = [];
            this.tab.div[0] = this.createElement({tag:'div', cls:'ct', parent:this.form});
            this.createElement({tag:'p', cls:'t', html:'<span style="float:right"><input type="checkbox" id="image-user-oname" style="margin-right:2px;vertical-align:top" onclick="EXCMS.Resource.ImageSelector.setImageName(this)"><label for="image-user-oname" style="color:#03c;line-height:normal">使用原始文件名</label></span>提示:图片文件大小不能超过4M,支持jpg、jpeg、gif、png;', parent:this.tab.div[0]});
            this.uploadCt = this.createElement({tag:'div', cls:'uploadct', parent:this.tab.div[0]});
            p = this.createElement({tag:'p', cls:'swfuploact t', parent:this.tab.div[0]});
            this.createElement({tag:'span', id:'image-selector-swfupload-btn', parent:p});
            this.uploadAddButton = this.createElement({tag:'span', cls:'button', html:'添加...', style:'display:none;', parent:p});
            var upbutton = this.createElement({tag:'span', cls:'button', html:'上传', parent:p});
            this.uploadTipEl = this.createElement({tag:'label', parent:p});
            this.uploadTipEl.show = show;
            this.uploadTipEl.hide = hide;
            this.uploadTipEl.setHtml = function(s){this.innerHTML=s}

            this.tab.div[1] = this.createElement({tag:'div', cls:'ct', style:'display:none', parent:this.form});
            this.createElement({tag:'p', cls:'t', parent:this.tab.div[1], html:'请填写您要插入的网上图片的URL'});
            var p = this.createElement({tag:'p', cls:'clearfix', parent:this.tab.div[1]});
            this.createElement({tag:'label', html:'图片:', input:'ex-img-url', parent:p});
            var url = this.createElement({tag:'input', id:'ex-img-url', type:'text', cls:'txt urltxt', name:'url', value:'http://', parent:p});
            p = this.createElement({tag:'p', cls:'clearfix', parent:this.tab.div[1]});
            this.createElement({tag:'label', html:'描述:', input:'ex-img-url-desc', parent:p});
            var urldesc = this.createElement({tag:'textarea', name:'urldesc', id:'ex-img-url-desc', parent:p});
            p = this.createElement({tag:'p', cls:'t clearfix b', parent:this.tab.div[1]});
            var urlbutton = this.createElement({tag:'span', cls:'button', html:'添加', parent:p});
            var urlsave = this.saveinput = this.createElement({tag:'input', id:'ex-img-url-save', type:'checkbox', name:'save', parent:p});
            this.createElement({tag:'label', html:'将图片保存到资源库中', input:'ex-img-url-save', style:'padding-left:4px;line-height:normal', parent:p});   

            p = this.createElement({tag:'div', cls:'ex-img-selector-body', parent:c.body.dom});
            this.createElement({tag:'p', cls:'t', html:'可插入的图片(双击预览图片)', parent:p});
            this.listCt = this.createElement({tag:'ul', cls:'clearfix', parent:p});
            this.addImageCt(20);
            this.tab.div[2] = this.createElement({tag:'div', html:'',parent:this.form});

            upbutton.onmouseover = urlbutton.onmouseover = function(){setCls(this,'over')}
            upbutton.onmouseout = urlbutton.onmouseout = function(){setCls(this,'over',1);setCls(this,'click',1)}
            upbutton.onmouseup = urlbutton.onmouseup = function(){setCls(this,'click',1)}
            upbutton.onmousedown = urlbutton.onmousedown = function(){setCls(this,'click')}
            upbutton.onclick = function(){tthis.doUpload()}
            urlbutton.onclick = function(){tthis.addUrlImage()}
            this.upbutton = upbutton;
            url.onfocus = function(){if(this.value.trim()=='http://')this.value=''}
            url.blur = function(){if(this.value.trim()=='')this.value='http://'}
            this.form.url = url;
            this.form.urldesc = urldesc;
            this.form.urlsave = urlsave;
            this.initUploader();
        },this);
    },
    // on this win show
    onshow : function(){
        if(this.activeTab.url){
            this.tab.active(1);
        }else{
            this.tab.active(0);
        }
        this.unselectAll();
        this.form.reset();
        this.form.url.value = 'http://';
    },
    // initial swf upload
    initUploader:function(){
        var _this = this;
        this.swfupload = new SWFUpload({
            flash_url : EXCMS.Resource.Upload.flash_url,
            //flash9_url : EXCMS.Resource.Upload.flash9_url,
            upload_url: EXCMS.Resource.Upload.baseAction,
            use_query_string:false,
            post_params:{'session_id':EXCMS.config.session_id},
            file_post_name : 'EXCMSFILES',
            file_size_limit : 1024 * 4,
            file_types : '*.jpg;*.jpeg;*.png;*.gif',
            file_types_description : "All Files",
            file_upload_limit : 0,
            file_queue_limit : 0,
            swfupload_preload_handler : function(){_this.uploadTipEl.setHtml('<font color=red>正在加载 swfupload 上传组件,请稍候...</font>')},
            swfupload_loaded_handler : function(){
                _this.uploadAddButton.style.display = 'block';
                _this.uploadTipEl.setHtml('请点击“添加...”按钮选择要上传的图片,支持多选');
                _this.setFileType(_this.filetype);  //设置上传文件类型
                _this.setFileSize();    //设置上传文件大小
            },
            swfupload_load_failed_handler : function(m){alert('请升级浏览器Flash Player版本至9.0以上');},
            file_dialog_start_handler : function(){},
            file_queued_handler : function(f){_this.addUploadImage(f)},
            file_queue_error_handler : function(f,e,m){
                switch (e){
                    case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
                        if (m > 0) {
                           errorMsg = "您只能上传" + message + "个文件!";
                        } else{
                            errorMsg = "您不可继续上传文件!";
                        }
                        break;
                    case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
                        errorMsg = "您不可上传0字节的文件";
                        break;
                    case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
                        errorMsg = '上传的图片太大,请重新选择(不能超过'+formatSizes(_this.filesize*1024)+')';
                        break;
                    case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
                    case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
                    default:
                        errorMsg = m;
                        break;
                }
                alert(errorMsg);
            },
            file_dialog_complete_handler : function(ns,nq,t){},
            upload_start_handler : function(f){},
            upload_progress_handler : function(f,c,t){
                var p = ((c/t)*100).toFixed(2);
                var li = _this.uploadImages[f.id].li;
                li.p.innerHTML = li.percent.style.width = p + '%';
                if(p == 100) li.p.innerHTML = '处理中';
            },
            upload_error_handler : function(f,e,m){if(e!=-280)alert(m)},
            upload_success_handler : function(f,d,r){
                var v = Ext.decode(d);
                if(v.success == 1){
                    v.fileid = f.id;
                    _this.addImage(v);
                    _this.swfupload.startUpload();
                    if(_this.store) _this.store.load({params:{start:0,limit:_this.store.pagesize||25}})
                }else{
                    if(v.success == 0){
                        alert(v.message)
                    }else if(v.message){
                        alert(v.message)
                    }else{
                        alert('服务器异常,请重新上传');
                    }
                    var li = _this.uploadImages[f.id].li;
                    li.delBtn.style.display = 'none';
                    li.removeChild(li.upload);
                    _this.images--;
                    _this.swfupload.cancelUpload(f.id);
                    delete(_this.uploadImages[f.id]);
                }
            },
            upload_complete_handler : function(f){},
            // Button Settings
            button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
            button_placeholder_id : 'image-selector-swfupload-btn',
            button_width: 48,
            button_height: 23,
            custom_settings:{},
            debug: false
        });
    },
    // add a image contariner
    addImageCt : function(n){
        var tthis = this;
        for(var i=0;i<n;i++){
            var li = document.createElement('li');
            li.delBtn = document.createElement('a');
            li.delBtn.setAttribute('href', 'javascript:void(0)');
            li.delBtn.setAttribute('title', '删除');
            li.delBtn.onclick = function(){tthis.deleteImage(this)}
            li.appendChild(li.delBtn);
            li.div = document.createElement('div');
            li.div.className = 'ct'
            li.appendChild(li.div);
            li.ct = document.createElement('em');
            li.div.appendChild(li.ct);
            li.onmouseover = function(){if(this.haveImg)setCls(this,'over')}
            li.onmouseout = function(){if(this.haveImg)setCls(this,'over',1)}
            li.onclick = function(){if(!this.haveImg) return;this.selected?this.unselect():this.select()}
            li.ondblclick = function(){
                if(this.haveImg){
                    var imageurl = li.isurl ? this.img.src : tthis.uploadImages[this.img.fileid].images.resource;
                    EXCMS.Previewer.image(imageurl);
                }
            }
            li.select = function(){
                if(!this.haveImg || this.selected || (tthis.single && tthis.selected && tthis.selected == this)) return;
                if(tthis.single){
                    if(tthis.selected) tthis.selected.unselect();
                    tthis.selected = this;
                }
                if(!this.selected){
                    this.selected = true;
                    setCls(this, 'selected');
                    this.setAttribute('title', '点击取消选择');
                }
            }
            li.unselect = function(){
                if(this.haveImg && this.selected){
                    if(tthis.selected = this) tthis.selected = null;
                    this.selected = false;
                    setCls(this, 'selected', true);
                    this.setAttribute('title', '点击选择');
                }
            }
            this.listCt.appendChild(li);
        }
        return li;
    },
    // unselect images
    unselectAll : function(){
        for(var i=0;i<this.images;i++) this.listCt.childNodes[i].unselect();
    },
    // add a local image
    addUploadImage : function(file){
        this.imgNameInput++;
        var div = this.createElement({tag:'div', cls:'aimg clearfix', parent:this.uploadCt});
        var p = this.createElement({tag:'div', cls:'clearfix', parent:div});
        if(this.userOriginalName){
            this.createElement({tag:'label', html:'名称:', input:'ex-img-name' + this.imgNameInput, parent:p});
            div.originalName = this.createElement({tag:'input', id:'ex-img-name' + this.imgNameInput, type:'text', cls:'txt nametxt', value:file.name, parent:p});
            var del = this.createElement({tag:'span', cls:'delimg', title:'删除', parent:p});
            del.style.marginTop = '7px';
            del.style.marginLeft = '-18px';
        }else{
            this.createElement({tag:'span', html:'图片:' + file.name, parent:p});
            var del = this.createElement({tag:'span', cls:'delimg', title:'删除', parent:p});
        }

        p = this.createElement({tag:'p', cls:'clearfix', parent:div});
        var id = 'ex-img-local-desc-' + file.id;
        this.createElement({tag:'label', html:'描述:', input:id, parent:p});
        div.description = this.createElement({tag:'textarea', id:id, parent:p});
        div.file = file;
        var tthis = this;
        del.onclick = function(){
            var p=this.parentNode.parentNode;
            tthis.swfupload.cancelUpload(p.file.id);
            p.parentNode.removeChild(p);
        }
        return div;
    },
    // do upload local image
    doUpload : function(){
        var images = this.uploadCt.childNodes;
        if(!images.length){alert('请先添加要上传的图片文件');return}
        var config = this.thumbItems && this.thumbItems.items ? Ext.encode(this.thumbItems.items) : '';
        var i = 0;
        while(images.length){
            var file = images[0].file;
            file.description = images[0].description.value.trim();
            this.swfupload.addFileParam(file.id, 'channelid', this.channelid);
            this.swfupload.addFileParam(file.id, 'nid', this.nid);
            this.swfupload.addFileParam(file.id, 'tid', this.tid);
            this.swfupload.addFileParam(file.id, 'fid', this.fid);
            this.swfupload.addFileParam(file.id, 'filetype', this.filetype);
            this.swfupload.addFileParam(file.id, 'filesize', this.filesize);
            if(images[0].originalName){
                file.originalName = images[0].originalName.value.trim();
                this.swfupload.addFileParam(file.id, 'originalname', file.originalName);
            }
            this.swfupload.addFileParam(file.id, 'description', file.description);
            this.swfupload.addFileParam(file.id, 'config', config);
            if(i === 0) this.swfupload.startUpload(file.id);
            var li = this.images == this.listCt.childNodes.length ? this.addImageCt(1) : this.listCt.childNodes[this.images];
            file.li = li;
            this.uploadImages[file.id] = file;
            li.delBtn.style.display = 'block';
            li.upload = document.createElement('div');
            li.upload.className = 'ex-img-selector-upload';
            li.upload.setAttribute('title', file.name + '('+ SWFUpload.speed.formatBytes(file.size) +  (i === 0 ? ', 正在上传)' : ', 等待上传)'));
            li.p = document.createElement('p');
            li.p.innerHTML = i === 0 ? '0%' : '等待';
            li.upload.appendChild(li.p);
            var div = document.createElement('div');
            li.percent = document.createElement('span');
            div.appendChild(li.percent);
            li.upload.appendChild(div);
            li.appendChild(li.upload);
            this.uploadCt.removeChild(images[0]);
            this.images++;
            i++;
        }
    },
    // add a url image
    addUrlImage : function(o){
        var url = this.form.url.value.trim();
        var isUrl = isImgUrl(url)
        if(isUrl > 0){
            if(isUrl == 1 && !confirm("图片URL: " + url + "\n可能不是正确的图片URL,确定添加此图片URL吗?")) return;
            this.form.url.value = 'http://';
            if(this.urlImages.length && this.urlImages.indexOf(url) >= 0){
                alert('网址图片已经添加');
                return ;
            }
            if(!this.validateFileType(url,this.filetype)){
                return ;
            }
            if(this.form.urlsave.checked){
                this.uploadUrlFile(url, this.form.urldesc.value.trim());
            }else{
                this.addImage(url, this.form.urldesc.value.trim());
            }
            this.form.urldesc.value = '';
        }else{
            alert("错误的URL: \n" + url);
        }
    },
    validateFileType : function(fileURL,right_type){
        if(typeof right_type == 'undefined') return true;
        var filetype = (typeof right_type == 'string') ? right_type.split(',') : right_type;
        var filename = fileURL.toLowerCase().trim();
        var ext = filename.substr(filename.lastIndexOf('.') + 1);
        if(filetype.indexOf(ext) < 0){
            alert("文件类型错误!\n当前支持的文件类型:"+filetype.join(','));
            return false;
        }
         return true;
    },
    // upload url files
    uploadUrlFile:function(url, description){
        var li = this.images == this.listCt.childNodes.length ? this.addImageCt(1) : this.listCt.childNodes[this.images];
        li.delBtn.style.display = 'block';
        li.upload = document.createElement('div');
        li.upload.className = 'ex-img-selector-upload';
        li.upload.setAttribute('title', '图片保存中');
        li.p = document.createElement('p');
        li.p.innerHTML = '保存中';
        li.upload.appendChild(li.p);
        var div = document.createElement('div');
        li.percent = document.createElement('span');
        div.appendChild(li.percent);
        li.upload.appendChild(div);
        li.appendChild(li.upload);
        this.images++;
        var config = this.thumbItems && this.thumbItems.items ? Ext.encode(this.thumbItems.items) : null;
        var tthis = this;
        Ext.Ajax.request({
            url:EXCMS.Resource.Upload.baseAction, method:'POST', scope:this, params:{action:'urlimage',fid:this.fid, nid:this.nid, channelid:this.channelid, config:config,filetype:this.filetype,filesize:this.filesize, description: description, file:url},
            failure:function(){alert('图片保存失败');},
            success:function(r,o){
                r=jsonReturn(r);
                if(r.success){
                    r.fileid = 'url_' + this.images;
                    r.li = li;
                    r.description = description;
                    tthis.uploadImages[r.fileid] = r;
                    tthis.addImage(r);
                    return ;
                }else if(r.message){
                    alert(r.message);
                }else{
                    alert('服务器异常,请重新上传');
                }
                li.delBtn.style.display = 'none';
                li.removeChild(li.upload);
                tthis.images--;
            }
        });
    },
    // add image into image list
    addImage : function(data, description){
        var li = typeof data == 'string' ? this.listCt.childNodes[this.images] : this.uploadImages[data.fileid].li;
        li.img = document.createElement('img');
        li.img.onload = function(){resizeImage(this,48,48);this.style.marginLeft='0px';}
        li.img.onerror = function(){this.parentNode.innerHTML='图片错误'}
        li.haveImg = true;
        li.ct.appendChild(li.img);
        li.setAttribute('title', '选择');
        if(typeof data == 'string'){
            this.images++;
            li.img.src = data;
            li.img.description = description ? description : '';
            li.isurl = true;
            li.delBtn.style.display = 'block';
            this.urlImages.push(data);
        }else{
            li.img.src = data.resource.src;
            li.img.fileid = data.fileid;
            li.img.description = description ? description : '';
            this.uploadImages[data.fileid].uploaded = true;
            this.uploadImages[data.fileid].images = data.resource;
            this.uploadImages[data.fileid].images.description = this.uploadImages[data.fileid].description;
            li.removeChild(li.upload);
        }
    },
    // delte image
    deleteImage : function(o){
        this.images--;
        var li = o.parentNode;
        if(li.isurl){
            this.urlImages.splice(this.urlImages.indexOf(li.img.src), 1);
        }else{
            this.swfupload.cancelUpload(li.fileid);
            delete(this.uploadImages[li.fileid]);
        }
        this.listCt.removeChild(li);
        this.addImageCt(1);
    },
    // on ok button click event
    ok : function(){
        if(this.action == 'upload'){
            this.win.hide();
        }else{
            var data = new Array;
            for(var i=0;i<this.images;i++){
                var li = this.listCt.childNodes[i];
                if (li.selected) {
                    data.push(li.isurl ? {src:li.img.src, description:li.img.description} : this.uploadImages[li.img.fileid].images);
                    if(!li.isurl && this.postfix){
                        data[data.length-1].src = this.getPostfixSrc(data[data.length-1].src,data[data.length-1].thumb,this.postfix);
                        if(data[data.length-1].resource){
                            if(this.postfix && this.postfixArray[this.postfix]) this.postfix = this.postfixArray[this.postfix];
                            if(this.postfix == 't' || this.postfix == 'thumb' ) this.postfix = '';
                            if(this.postfix && data[data.length-1].thumb.indexOf(this.postfix)== -1)    this.postfix = '';
                            data[data.length-1].resource = 'resource:' + data[data.length-1]['rid'] + ':' + this.postfix + ':' + data[data.length-1]['nid'] + ':' + data[data.length-1]['src'];
                        }
                    }
                }
            }
            if(data.length){
                if(this.single) data = data[0];
                if(this.callback && typeof this.callback == 'function') this.callback(data);
                this.win.hide();
            }else{
                alert('请先选择图片');
            }
        }
    },
    createElement : function(c){
        var el = document.createElement(c.tag);
        if(c.id) el.setAttribute('id', c.id);
        if(c.name) el.name = c.name;
        if(c.type) el.type = c.type;
        if(c.title) el.title = c.title;
        if(c.input) el.setAttribute('for', c.input);
        if(c.value) el.value = c.value;
        if(c.readonly) el.readOnly = true;
        if(c.cls) el.className = c.cls;
        if(c.html) el.innerHTML = c.html;
        if(c.parent) c.parent.appendChild(el);
        if(c.style) el.setAttribute('style', c.style);
        return el;
    },
    // render 
    renderResourceCombo : function(){   
        var el = this.createElement({tag:'div', cls:'combo-ct', parent:this.tab.div[2]});
        this.createElement({tag:'label', input:'ex-image-upload-resource-node', html:'将图片上传到:',parent:el});
        el = this.createElement({tag:'div', cls:'combo',parent:el});

        this.resourceNode = new Ext.form.ComboBox({renderTo:el,id:'ex-image-upload-resource-node',store:new Ext.data.SimpleStore({fields:[],data:[[]]}),editable:false,mode:'local',width:407,triggerAction:'all',tpl:'<tpl for="."><div style="height:160px"><div id="ex-img-resource-combox"></div></div></tpl>',selectedClass:'',onSelect:Ext.emptyFn,emptyText:'请选择资源点'});
        this.resourceNode.tree = new Ext.tree.TreePanel({useArrows:true,border:false,cls:'channel-tree browse-tree',bodyStyle:'padding:1px;',rootVisible:false,autoScroll:true,root:new Ext.tree.AsyncTreeNode({id:'01',text:'图片类型资源点',leaf:0,cls:'resouce-tree-type resouce-tree-image',expanded:true,dir:'0'})});

        this.resourceNode.tree.on('beforeclick',function(n){if(n.id == '01') return false},this);
        this.resourceNode.tree.on('click',function(n){
            if(n.attributes.istype == 1) return ;
            this.nid = n.id;
            if(n.attributes.config){
                n.thumbConfig = n.attributes.config;
                n.thumbConfig = n.thumbConfig.image && n.thumbConfig.image != {} ? n.thumbConfig.image : null;
            }else{
                n.thumbConfig = null;
            }
            this.imageSetting('render', n.thumbConfig);
            this.resourceNode.setValue(n.text);
            this.resourceNode.collapse();
        },this);
        this.resourceNode.on('expand',function(c){if(!c.tree.rendered)c.tree.render('ex-img-resource-combox');},this);
        this.resourceNode.tree.on('contextmenu',function(n,e){},this);
        this.resourceNode.on('collapse',function(c){if(this.localrefresh) {this.localrefresh = false;c.expand();}},this)
        this.resourceNode.on('focus',function(){this.loadTree();},this);
        this.resourceNode.trigger.on('click',function(){this.loadTree();},this);


        this.createElement({tag:'p', cls:'t', html:'不选择资源点,图片将上传至默认的资源点',style:'padding-left:88px', parent:this.tab.div[2]});
        el = this.createElement({tag:'div', cls:'combo-ct', parent:this.tab.div[2]});
        this.createElement({tag:'label', html:'图片缩放设置:', parent:el});
        var imgsetingbutton = this.createElement({tag:'span', cls:'button', html:'添加', parent:el});
        imgsetingbutton.onmouseover = function(){setCls(this,'over')}
        imgsetingbutton.onmouseout = function(){setCls(this,'over',1);setCls(this,'click',1)}
        imgsetingbutton.onmouseup = function(){setCls(this,'click',1)}
        imgsetingbutton.onmousedown = function(){setCls(this,'click')}
        this.thumbItems = this.createElement({tag:'div', cls:'combo-ct st-thumb-items', parent:this.tab.div[2]});
        var tthis = this;
        imgsetingbutton.onclick = function(){tthis.imageSetting()}
        this.setResourceNode();
    },
    // load resouce type tree data
    loadTree : function(){
        if(this.treechannel == this.channelid) return ;
        Ext.Ajax.request({
            url:this.uploadAction+'&method=loadResourceConfig',method:'POST',scope:this,params:{channelid:this.channelid,tid:this.tid,assocw:this.assocw},
            failure:function(){},
            success:function(r,o){
                r = Ext.decode(r.responseText);
                if(r.success){
                    if(r.nodes){
                        this.treechannel = this.channelid;
                        this.treeData = r.nodes;
                        this.renderTreeNode();
                    }
                }
            }
        });
    },
    renderTreeNode : function(){
        if(!this.treeData) return ;
        if(this.resourceNode.tree.getRootNode().hasChildNodes()){
             this.resourceNode.tree.getRootNode().eachChild(function(node){node.remove();});
        }
        tree = this.resourceNode.tree;
        if(!tree.rendered) return ;
        for(var i = 0, dlen = this.treeData.length; i < dlen; i++){
            this.treeData[i].expanded = true;
            var node = tree.root.appendChild(new Ext.tree.TreeNode(this.treeData[i]));
            if(node.attributes.children.length > 0){
                var cs = node.attributes.children;
                node.beginUpdate();
                for(var k = 0, len = cs.length; k < len; k++) node.appendChild(new Ext.tree.TreeNode(cs[k]));
                node.endUpdate();
            }
        }
    },
    setResourceDefault : function(){

    },
    // set resource node
    setResourceNode : function(){
        if(!this.resourceNode) return ;
        if(this.action=='upload'){
            this.resourceNode.setValue(this.nodename);
            //this.resourceNode.setDisabled(true);
            this.imageSetting('render', this.config);
        }else{
            this.resourceNode.setValue('');
            //this.resourceNode.setDisabled(false);
            this.thumbItems.innerHTML = '';
        }
    },
    // image setting config
    imageSetting : function(action, config){
        this.isRenderThumbConfig = true;
        if(action && !config){
            this.thumbItems.innerHTML = '';
            return;
        }
        EXCMS.util.QuickCreate({model:'Resource.image', action:action, thumbItems:this.thumbItems, config:config});
    },
    // 设置栏目
    selectChannelCallback : function(data){
        this.channelid = data.channelid;
    },
    // format image
    getPostfixSrc : function(src,thumb,postfix){
        if(this.postfixArray[postfix]) postfix = this.postfixArray[postfix];
        if(thumb.indexOf(postfix)== -1) postfix = 't';
        if(postfix == 't') return src;
        var idx = src.lastIndexOf('.');
        return src.substr(0, idx) + '_' + postfix + src.substr(idx);
    },
    // set image name
    setImageName : function(e){
        this.userOriginalName = e.checked;
    }
};

function isImgUrl(s){
    var pic = new RegExp("((?:http|https)://(&(?=amp;)|[A-Za-z0-9\./=\?%_~@#:;\+\-])+(gif|jpg|jpeg|png)+)", "ig");
    var url = new RegExp("((?:http|https)://(&(?=amp;)|[A-Za-z0-9\./=\?%_~@&#:;\+\-])+)","ig");
    if(pic.test(s.trim())){return 2}else if(url.test(s.trim())){return 1}else{return 0}
}

如果希望修改上传后的图片url的路径为绝对路径或者在相对路径前添加二级域名,应该如何修改?

路径 url

Korosu 11 years, 12 months ago

Your Answer