From db2157200159247dde70ecb61fdd61bc7b7de6ee Mon Sep 17 00:00:00 2001 From: Jim Graham Date: Fri, 22 Mar 2024 10:26:02 -0400 Subject: [PATCH] Fix Element handling from within Categories tree (#16493) ### What does it do? Adds a new tree method to properly extract Element data from the working tree Node. There are three patterns for a Node's id, but only one was being accounted for in the code. Additionally, cleans up code formatting in the affected methods. ### Why is it needed? Within the Categories tree, these actions are currently inoperable: - Element removal - Plugin activation/deactivation ### How to test 1. Create a handful of Elements (at least one of each type), both within a Category and within the root (no Category) 2. Verify the ability to remove each Element (from both the Categories tree and from within the individual Element trees) 3. Verify the ability to activate/deactivate Plugins (from both the Categories tree and from within the individual Element trees) ### Related issue(s)/PR(s) Resolves https://github.com/modxcms/revolution/issues/16487 for MODX 2.x Port of PR https://github.com/modxcms/revolution/pull/16489 --------- Co-authored-by: Jason Coward --- manager/assets/modext/modx.jsgrps-min.js | 2 +- .../widgets/element/modx.tree.element.js | 151 ++++++++++++------ 2 files changed, 105 insertions(+), 48 deletions(-) diff --git a/manager/assets/modext/modx.jsgrps-min.js b/manager/assets/modext/modx.jsgrps-min.js index 7eb884146a6..089bf53edff 100644 --- a/manager/assets/modext/modx.jsgrps-min.js +++ b/manager/assets/modext/modx.jsgrps-min.js @@ -47,4 +47,4 @@ Ext.ns("Ext.ux.grid"),Ext.ux.grid.RowExpander=Ext.extend(Ext.util.Observable,{ex /*! FileAPI 2.0.19 - BSD | git://github.com/mailru/FileAPI.git * FileAPI — a set of javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF. */ -function(window){"use strict";var CanvasPrototype=window.HTMLCanvasElement&&window.HTMLCanvasElement.prototype,hasBlobConstructor=window.Blob&&function(){try{return Boolean(new Blob)}catch(e){return!1}}(),hasArrayBufferViewSupport=hasBlobConstructor&&window.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(e){return!1}}(),BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,dataURLtoBlob=(hasBlobConstructor||BlobBuilder)&&window.atob&&window.ArrayBuffer&&window.Uint8Array&&function(dataURI){var byteString,arrayBuffer,intArray,i,mimeString,bb;for(byteString=dataURI.split(",")[0].indexOf("base64")>=0?atob(dataURI.split(",")[1]):decodeURIComponent(dataURI.split(",")[1]),arrayBuffer=new ArrayBuffer(byteString.length),intArray=new Uint8Array(arrayBuffer),i=0;i0,dataURLtoBlob=window.dataURLtoBlob,_rimg=/img/i,_rcanvas=/canvas/i,_rimgcanvas=/img|canvas/i,_rinput=/input/i,_rdata=/^data:[^,]+,/,_toString={}.toString,Math=window.Math,_SIZE_CONST=function(pow){return(pow=new window.Number(Math.pow(1024,pow))).from=function(sz){return Math.round(sz*this)},pow},_elEvents={},_infoReader=[],_readerEvents="abort progress error load loadend",_xhrPropsExport="status statusText readyState response responseXML responseText responseBody".split(" "),_isArray=function(ar){return ar&&"length"in ar},_each=function(obj,fn,ctx){if(obj)if(_isArray(obj))for(var i=0,n=obj.length;i=_length&&!_fail&&queue.end()},isFail:function(){return _fail},fail:function(){!_fail&&fn(_fail=!0)},end:function(){_end||(_end=!0,fn())}};return queue},each:_each,afor:function(array,callback){var i=0,n=array.length;_isArray(array)&&n--?function _next(){callback(n!=i&&_next,array[i],i++)}():callback(!1)},extend:_extend,isFile:function(file){return"[object File]"===_toString.call(file)},isBlob:function(blob){return this.isFile(blob)||"[object Blob]"===_toString.call(blob)},isCanvas:function(el){return el&&_rcanvas.test(el.nodeName)},getFilesFilter:function(filter){return(filter="string"==typeof filter?filter:filter.getAttribute&&filter.getAttribute("accept")||"")?new RegExp("("+filter.replace(/\./g,"\\.").replace(/,/g,"|")+")$","i"):/./},readAsDataURL:function(file,fn){api.isCanvas(file)?_emit(file,fn,"load",api.toDataURL(file)):_readAs(file,fn,"DataURL")},readAsBinaryString:function(file,fn){_hasSupportReadAs("BinaryString")?_readAs(file,fn,"BinaryString"):_readAs(file,(function(evt){if("load"==evt.type)try{evt.result=api.toBinaryString(evt.result)}catch(e){evt.type="error",evt.message=e.toString()}fn(evt)}),"DataURL")},readAsArrayBuffer:function(file,fn){_readAs(file,fn,"ArrayBuffer")},readAsText:function(file,encoding,fn){fn||(fn=encoding,encoding="utf-8"),_readAs(file,fn,"Text",encoding)},toDataURL:function(el,type){return"string"==typeof el?el:el.toDataURL?el.toDataURL(type||"image/png"):void 0},toBinaryString:function(val){return window.atob(api.toDataURL(val).replace(_rdata,""))},readAsImage:function(file,fn,progress){if(api.isBlob(file))if(apiURL){var data=apiURL.createObjectURL(file);undefined===data?_emit(file,fn,"error"):api.readAsImage(data,fn,progress)}else api.readAsDataURL(file,(function(evt){"load"==evt.type?api.readAsImage(evt.result,fn,progress):(progress||"error"==evt.type)&&_emit(file,fn,evt,null,{loaded:evt.loaded,total:evt.total})}));else if(api.isCanvas(file))_emit(file,fn,"load",file);else if(_rimg.test(file.nodeName))if(file.complete)_emit(file,fn,"load",file);else{_one(file,"error abort load",(function _fn(evt){"load"==evt.type&&apiURL&&apiURL.revokeObjectURL(file.src),_off(file,"error abort load",_fn),_emit(file,fn,evt,file)}))}else if(file.iframe)_emit(file,fn,{type:"error"});else{var img=api.newImage(file.dataURL||file);api.readAsImage(img,fn,progress)}},checkFileObj:function(name){var file={},accept=api.accept;return"object"==typeof name?file=name:file.name=(name+"").split(/\\|\//g).pop(),null==file.type&&(file.type=file.name.split(".").pop()),_each(accept,(function(ext,type){((ext=new RegExp(ext.replace(/\s/g,"|"),"i")).test(file.type)||api.ext2mime[file.type])&&(file.type=api.ext2mime[file.type]||type.split("/")[0]+"/"+file.type)})),file},getDropFiles:function(evt,callback){var items,files=[],all=[],dataTransfer=_getDataTransfer(evt),transFiles=dataTransfer.files,transItems=dataTransfer.items,entrySupport=_isArray(transItems)&&transItems[0]&&_getAsEntry(transItems[0]),queue=api.queue((function(){callback(files,all)}));if(entrySupport)if(normalize&&transFiles){var file,entry,i=transFiles.length;for(items=new Array(i);i--;){file=transFiles[i];try{entry=_getAsEntry(transItems[i])}catch(err){api.log("[err] getDropFiles: ",err),entry=null}_isEntry(entry)&&(entry.isDirectory||entry.isFile&&file.name==file.name.normalize("NFC"))?items[i]=entry:items[i]=file}}else items=transItems;else items=transFiles;_each(items||[],(function(item){queue.inc();try{entrySupport&&_isEntry(item)?_readEntryAsFiles(item,(function(err,entryFiles,allEntries){err?api.log("[err] getDropFiles:",err):files.push.apply(files,entryFiles),all.push.apply(all,allEntries),queue.next()})):function(file,callback){if(!file.type&&(safari||file.size%4096==0&&file.size<=102400))if(FileReader)try{var reader=new FileReader;_one(reader,_readerEvents,(function(evt){var isFile="error"!=evt.type;isFile?(null!=reader.readyState&&reader.readyState!==reader.LOADING||reader.abort(),callback(isFile)):callback(!1,reader.error)})),reader.readAsDataURL(file)}catch(err){callback(!1,err)}else callback(null,new Error("FileReader is not supported"));else callback(!0)}(item,(function(yes,err){yes?files.push(item):item.error=err,all.push(item),queue.next()}))}catch(err){queue.next(),api.log("[err] getDropFiles: ",err)}})),queue.check()},getFiles:function(input,filter,callback){var files=[];return callback?(api.filterFiles(api.getFiles(input),filter,callback),null):(input.jquery&&(input.each((function(){files=files.concat(api.getFiles(this))})),input=files,files=[]),"string"==typeof filter&&(filter=api.getFilesFilter(filter)),input.originalEvent?input=_fixEvent(input.originalEvent):input.srcElement&&(input=_fixEvent(input)),input.dataTransfer?input=input.dataTransfer:input.target&&(input=input.target),input.files?(files=input.files,html5||(files[0].blob=input,files[0].iframe=!0)):!html5&&isInputFile(input)?api.trim(input.value)&&((files=[api.checkFileObj(input.value)])[0].blob=input,files[0].iframe=!0):_isArray(input)&&(files=input),api.filter(files,(function(file){return!filter||filter.test(file.name)})))},getTotalSize:function(files){for(var size=0,i=files&&files.length;i--;)size+=files[i].size;return size},getInfo:function(file,fn){var info={},readers=_infoReader.concat();api.isBlob(file)?function _next(){var reader=readers.shift();reader?reader.test(file.type)?reader(file,(function(err,res){err?fn(err):(_extend(info,res),_next())})):_next():fn(!1,info)}():fn("not_support_info",info)},addInfoReader:function(mime,fn){fn.test=function(type){return mime.test(type)},_infoReader.push(fn)},filter:function(input,fn){for(var val,result=[],i=0,n=input.length;i>2,enc2=(3&byte1)<<4|byte2>>4;isNaN(byte2)?enc3=enc4=64:(enc3=(15&byte2)<<2|byte3>>6,enc4=isNaN(byte3)?64:63&byte3),outStr+=b64.charAt(enc1)+b64.charAt(enc2)+b64.charAt(enc3)+b64.charAt(enc4)}return outStr}};function _emit(target,fn,name,res,ext){var evt={type:name.type||name,target,result:res};_extend(evt,ext),fn(evt)}function _hasSupportReadAs(method){return FileReader&&!!FileReader.prototype["readAs"+method]}function _readAs(file,fn,method,encoding){if(api.isBlob(file)&&_hasSupportReadAs(method)){var Reader=new FileReader;_on(Reader,_readerEvents,(function _fn(evt){var type=evt.type;"progress"==type?_emit(file,fn,evt,evt.target.result,{loaded:evt.loaded,total:evt.total}):"loadend"==type?(_off(Reader,_readerEvents,_fn),Reader=null):_emit(file,fn,evt,evt.target.result)}));try{encoding?Reader["readAs"+method](file,encoding):Reader["readAs"+method](file)}catch(err){_emit(file,fn,"error",undefined,{error:err.toString()})}}else _emit(file,fn,"error",undefined,{error:"filreader_not_support_"+method})}function _isEntry(item){return item&&(item.isFile||item.isDirectory)}function _getAsEntry(item){var entry;return item.getAsEntry?entry=item.getAsEntry():item.webkitGetAsEntry&&(entry=item.webkitGetAsEntry()),entry}function _readEntryAsFiles(entry,callback){if(entry)if(entry.isFile)entry.file((function(file){file.fullPath=entry.fullPath,callback(!1,[file],[file])}),(function(err){entry.error=err,callback("FileError.code: "+err.code,[],[entry])}));else if(entry.isDirectory){var reader=entry.createReader(),firstAttempt=!0,files=[],all=[entry],onerror=function(err){entry.error=err,callback("DirectoryError.code: "+err.code,files,all)};reader.readEntries((function ondone(entries){firstAttempt&&(firstAttempt=!1,entries.length||(entry.error=new Error("directory is empty"))),entries.length?api.afor(entries,(function(next,entry){_readEntryAsFiles(entry,(function(err,entryFiles,allEntries){err||(files=files.concat(entryFiles)),all=all.concat(allEntries),next?next():reader.readEntries(ondone,onerror)}))})):callback(!1,files,all)}),onerror)}else _readEntryAsFiles(_getAsEntry(entry),callback);else{var err=new Error("invalid entry");(entry=new Object(entry)).error=err,callback(err.message,[],[entry])}}function isInputFile(el){return _rinput.test(el&&el.tagName)}function _getDataTransfer(evt){return(evt.originalEvent||evt||"").dataTransfer||{}}api.addInfoReader(/^image/,(function(file,callback){if(!file.__dimensions){var defer=file.__dimensions=api.defer();api.readAsImage(file,(function(evt){var img=evt.target;defer.resolve("load"!=evt.type&&"error",{width:img.width,height:img.height}),img.src=api.EMPTY_PNG,img=null}))}file.__dimensions.then(callback)})),api.event.dnd=function(el,onHover,onDrop){var _id,_type;onDrop||(onDrop=onHover,onHover=api.F),FileReader?(_on(el,"dragenter dragleave dragover",onHover.ff=onHover.ff||function(evt){for(var types=_getDataTransfer(evt).types,i=types&&types.length,debounceTrigger=!1;i--;)if(~types[i].indexOf("File")){evt.preventDefault(),_type!==evt.type&&("dragleave"!=(_type=evt.type)&&onHover.call(evt.currentTarget,!0,evt),debounceTrigger=!0);break}debounceTrigger&&(clearTimeout(_id),_id=setTimeout((function(){onHover.call(evt.currentTarget,"dragleave"!=_type,evt)}),50))}),_on(el,"drop",onDrop.ff=onDrop.ff||function(evt){evt.preventDefault(),_type=0,onHover.call(evt.currentTarget,!1,evt),api.getDropFiles(evt,(function(files,all){onDrop.call(evt.currentTarget,files,all,evt)}))})):api.log("Drag'n'Drop -- not supported")},api.event.dnd.off=function(el,onHover,onDrop){_off(el,"dragenter dragleave dragover",onHover.ff),_off(el,"drop",onDrop.ff)},jQuery&&!jQuery.fn.dnd&&(jQuery.fn.dnd=function(onHover,onDrop){return this.each((function(){api.event.dnd(this,onHover,onDrop)}))},jQuery.fn.offdnd=function(onHover,onDrop){return this.each((function(){api.event.dnd.off(this,onHover,onDrop)}))}),window.FileAPI=_extend(api,window.FileAPI),api.log("FileAPI: "+api.version),api.log("protocol: "+window.location.protocol),api.log("doctype: ["+doctype.name+"] "+doctype.publicId+" "+doctype.systemId),_each(document.getElementsByTagName("meta"),(function(meta){/x-ua-compatible/i.test(meta.getAttribute("http-equiv"))&&api.log("meta.http-equiv: "+meta.getAttribute("content"))}));try{_supportConsoleLog=!!console.log,_supportConsoleLogApply=!!console.log.apply}catch(err){}api.flashUrl||(api.flashUrl=api.staticPath+"FileAPI.flash.swf"),api.flashImageUrl||(api.flashImageUrl=api.staticPath+"FileAPI.flash.image.swf"),api.flashWebcamUrl||(api.flashWebcamUrl=api.staticPath+"FileAPI.flash.camera.swf")}(window),function(api,document,undef){"use strict";var min=Math.min,round=Math.round,getCanvas=function(){return document.createElement("canvas")},support=!1,exifOrientation={8:270,3:180,6:90,7:270,4:180,5:90};try{support=getCanvas().toDataURL("image/png").indexOf("data:image/png")>-1}catch(e){}function Image(file){if(file instanceof Image){var img=new Image(file.file);return api.extend(img.matrix,file.matrix),img}if(!(this instanceof Image))return new Image(file);this.file=file,this.size=file.size||100,this.matrix={sx:0,sy:0,sw:0,sh:0,dx:0,dy:0,dw:0,dh:0,resize:0,deg:0,quality:1,filter:0}}Image.prototype={image:!0,constructor:Image,set:function(attrs){return api.extend(this.matrix,attrs),this},crop:function(x,y,w,h){return undefined===w&&(w=x,h=y,x=y=0),this.set({sx:x,sy:y,sw:w,sh:h||w})},resize:function(w,h,strategy){return/min|max|height|width/.test(h)&&(strategy=h,h=w),this.set({dw:w,dh:h||w,resize:strategy})},preview:function(w,h){return this.resize(w,h||w,"preview")},rotate:function(deg){return this.set({deg})},filter:function(filter){return this.set({filter})},overlay:function(images){return this.set({overlay:images})},clone:function(){return new Image(this)},_load:function(image,fn){var self=this;/img|video/i.test(image.nodeName)?fn.call(self,null,image):api.readAsImage(image,(function(evt){fn.call(self,"load"!=evt.type,evt.result)}))},_apply:function(image,fn){var copy,canvas=getCanvas(),m=this.getMatrix(image),ctx=canvas.getContext("2d"),width=image.videoWidth||image.width,height=image.videoHeight||image.height,deg=m.deg,dw=m.dw,dh=m.dh,w=width,h=height,filter=m.filter,buffer=image,overlay=m.overlay,queue=api.queue((function(){image.src=api.EMPTY_PNG,fn(!1,canvas)})),renderImageToCanvas=api.renderImageToCanvas;for(deg-=360*Math.floor(deg/360),image._type=this.file.type;m.multipass&&min(w/dw,h/dh)>2;)w=w/2+.5|0,h=h/2+.5|0,(copy=getCanvas()).width=w,copy.height=h,buffer!==image?(renderImageToCanvas(copy,buffer,0,0,buffer.width,buffer.height,0,0,w,h),buffer=copy):(renderImageToCanvas(buffer=copy,image,m.sx,m.sy,m.sw,m.sh,0,0,w,h),m.sx=m.sy=m.sw=m.sh=0);canvas.width=deg%180?dh:dw,canvas.height=deg%180?dw:dh,canvas.type=m.type,canvas.quality=m.quality,ctx.rotate(deg*Math.PI/180),renderImageToCanvas(ctx.canvas,buffer,m.sx,m.sy,m.sw||buffer.width,m.sh||buffer.height,180==deg||270==deg?-dw:0,90==deg||180==deg?-dh:0,dw,dh),dw=canvas.width,dh=canvas.height,overlay&&api.each([].concat(overlay),(function(over){queue.inc();var img=new window.Image,fn=function(){var x=0|over.x,y=0|over.y,w=over.w||img.width,h=over.h||img.height,rel=over.rel;x=1==rel||4==rel||7==rel?(dw-w+x)/2:2==rel||5==rel||8==rel?dw-(w+x):x,y=3==rel||4==rel||5==rel?(dh-h+y)/2:rel>=6?dh-(h+y):y,api.event.off(img,"error load abort",fn);try{ctx.globalAlpha=over.opacity||1,ctx.drawImage(img,x,y,w,h)}catch(er){}queue.next()};api.event.on(img,"error load abort",fn),img.src=over.src,img.complete&&fn()})),filter&&(queue.inc(),Image.applyFilter(canvas,filter,queue.next)),queue.check()},getMatrix:function(image){var w,h,m=api.extend({},this.matrix),sw=m.sw=m.sw||image.videoWidth||image.naturalWidth||image.width,sh=m.sh=m.sh||image.videoHeight||image.naturalHeight||image.height,dw=m.dw=m.dw||sw,dh=m.dh=m.dh||sh,sf=sw/sh,df=dw/dh,strategy=m.resize;"preview"==strategy?dw==sw&&dh==sh||(df>=sf?h=(w=sw)/df:w=(h=sh)*df,w==sw&&h==sh||(m.sx=~~((sw-w)/2),m.sy=~~((sh-h)/2),sw=w,sh=h)):"height"==strategy?dw=dh*sf:"width"==strategy?dh=dw/sf:strategy&&(sw>dw||sh>dh?"min"==strategy?(dw=round(sf=df?min(sw,dw):dh*sf),dh=round(sf>=df?dw/sf:min(sh,dh))):(dw=sw,dh=sh));return m.sw=sw,m.sh=sh,m.dw=dw,m.dh=dh,m.multipass=api.multiPassResize,m},_trans:function(fn){this._load(this.file,(function(err,image){if(err)fn(err);else try{this._apply(image,fn)}catch(err){api.log("[err] FileAPI.Image.fn._apply:",err),fn(err)}}))},get:function(fn){if(api.support.transform){var _this=this,matrix=_this.matrix;"auto"==matrix.deg?api.getInfo(_this.file,(function(err,info){matrix.deg=exifOrientation[info&&info.exif&&info.exif.Orientation]||0,_this._trans(fn)})):_this._trans(fn)}else fn("not_support_transform");return this},toData:function(fn){return this.get(fn)}},Image.exifOrientation=exifOrientation,Image.transform=function(file,transform,autoOrientation,fn){function _transform(err,img){var images={},queue=api.queue((function(err){fn(err,images)}));err?queue.fail():api.each(transform,(function(params,name){if(!queue.isFail()){var ImgTrans=new Image(img.nodeType?img:file),isFn="function"==typeof params;if(isFn?params(img,ImgTrans):params.width?ImgTrans[params.preview?"preview":"resize"](params.width,params.height,params.strategy):params.maxWidth&&(img.width>params.maxWidth||img.height>params.maxHeight)&&ImgTrans.resize(params.maxWidth,params.maxHeight,"max"),params.crop){var crop=params.crop;ImgTrans.crop(0|crop.x,0|crop.y,crop.w||crop.width,crop.h||crop.height)}undefined===params.rotate&&autoOrientation&&(params.rotate="auto"),ImgTrans.set({type:ImgTrans.matrix.type||params.type||file.type||"image/png"}),isFn||ImgTrans.set({deg:params.rotate,overlay:params.overlay,filter:params.filter,quality:params.quality||1}),queue.inc(),ImgTrans.toData((function(err,image){err?queue.fail():(images[name]=image,queue.next())}))}}))}file.width?_transform(!1,file):api.getInfo(file,_transform)},api.each(["TOP","CENTER","BOTTOM"],(function(x,i){api.each(["LEFT","CENTER","RIGHT"],(function(y,j){Image[x+"_"+y]=3*i+j,Image[y+"_"+x]=3*i+j}))})),Image.toCanvas=function(el){var canvas=document.createElement("canvas");return canvas.width=el.videoWidth||el.width,canvas.height=el.videoHeight||el.height,canvas.getContext("2d").drawImage(el,0,0),canvas},Image.fromDataURL=function(dataURL,size,callback){var img=api.newImage(dataURL);api.extend(img,size),callback(img)},Image.applyFilter=function(canvas,filter,doneFn){"function"==typeof filter?filter(canvas,doneFn):window.Caman&&window.Caman("IMG"==canvas.tagName?Image.toCanvas(canvas):canvas,(function(){"string"==typeof filter?this[filter]():api.each(filter,(function(val,method){this[method](val)}),this),this.render(doneFn)}))},api.renderImageToCanvas=function(canvas,img,sx,sy,sw,sh,dx,dy,dw,dh){try{return canvas.getContext("2d").drawImage(img,sx,sy,sw,sh,dx,dy,dw,dh)}catch(ex){throw api.log("renderImageToCanvas failed"),ex}},api.support.canvas=api.support.transform=support,api.Image=Image}(FileAPI,document),function(factory){"use strict";!function(loadImage){if(!window.navigator||!window.navigator.platform||!/iP(hone|od|ad)/.test(window.navigator.platform))return;var originalRenderMethod=loadImage.renderImageToCanvas;loadImage.detectSubsampling=function(img){var canvas,context;return img.width*img.height>1048576&&((canvas=document.createElement("canvas")).width=canvas.height=1,(context=canvas.getContext("2d")).drawImage(img,1-img.width,0),0===context.getImageData(0,0,1,1).data[3])},loadImage.detectVerticalSquash=function(img,subsampled){var data,sy,ey,py,naturalHeight=img.naturalHeight||img.height,canvas=document.createElement("canvas"),context=canvas.getContext("2d");for(subsampled&&(naturalHeight/=2),canvas.width=1,canvas.height=naturalHeight,context.drawImage(img,0,0),data=context.getImageData(0,0,1,naturalHeight).data,sy=0,ey=naturalHeight,py=naturalHeight;py>sy;)0===data[4*(py-1)+3]?ey=py:sy=py,py=ey+sy>>1;return py/naturalHeight||1},loadImage.renderImageToCanvas=function(canvas,img,sourceX,sourceY,sourceWidth,sourceHeight,destX,destY,destWidth,destHeight){if("image/jpeg"===img._type){var subsampled,vertSquashRatio,tileX,tileY,context=canvas.getContext("2d"),tmpCanvas=document.createElement("canvas"),tileSize=1024,tmpContext=tmpCanvas.getContext("2d");if(tmpCanvas.width=tileSize,tmpCanvas.height=tileSize,context.save(),(subsampled=loadImage.detectSubsampling(img))&&(sourceX/=2,sourceY/=2,sourceWidth/=2,sourceHeight/=2),vertSquashRatio=loadImage.detectVerticalSquash(img,subsampled),subsampled||1!==vertSquashRatio){for(sourceY*=vertSquashRatio,destWidth=Math.ceil(tileSize*destWidth/sourceWidth),destHeight=Math.ceil(tileSize*destHeight/sourceHeight/vertSquashRatio),destY=0,tileY=0;tileY0&&1==api.filter(this.items,(function(item){return item.file})).length,api.support.html5?api.formData&&!this.multipart&&FormData?options._chunked?(api.log("FileAPI.Form.toPlainData"),this.toPlainData(fn)):(api.log("FileAPI.Form.toFormData"),this.toFormData(fn)):(api.log("FileAPI.Form.toMultipartData"),this.toMultipartData(fn)):(api.log("FileAPI.Form.toHtmlData"),this.toHtmlData(fn))},_to:function(data,complete,next,arg){var queue=api.queue((function(){complete(data)}));this.each((function(file){try{next(file,data,queue,arg)}catch(err){api.log("FileAPI.Form._to: "+err.message),complete(err)}})),queue.check()},toHtmlData:function(fn){this._to(document.createDocumentFragment(),fn,(function(file,data){var hidden,blob=file.blob;file.file?(api.reset(blob,!0),blob.name=file.name,blob.disabled=!1,data.appendChild(blob)):((hidden=document.createElement("input")).name=file.name,hidden.type="hidden",hidden.value=blob,data.appendChild(hidden))}))},toPlainData:function(fn){this._to({},fn,(function(file,data,queue){file.file&&(data.type=file.file),file.blob.toBlob?(queue.inc(),_convertFile(file,(function(file,blob){data.name=file.name,data.file=blob,data.size=blob.length,data.type=file.type,queue.next()}))):file.file?(data.name=file.blob.name,data.file=file.blob,data.size=file.blob.size,data.type=file.type):(data.params||(data.params=[]),data.params.push(encodeURIComponent(file.name)+"="+encodeURIComponent(file.blob))),data.start=-1,data.end=data.file&&data.file.FileAPIReadPosition||-1,data.retry=0}))},toFormData:function(fn){this._to(new FormData,fn,(function(file,data,queue){file.blob&&file.blob.toBlob?(queue.inc(),_convertFile(file,(function(file,blob){data.append(file.name,blob,file.file),queue.next()}))):file.file?data.append(file.name,file.blob,file.file):data.append(file.name,file.blob),file.file&&data.append("_"+file.name,file.file)}))},toMultipartData:function(fn){this._to([],fn,(function(file,data,queue,boundary){queue.inc(),_convertFile(file,(function(file,blob){data.push("--_"+boundary+'\r\nContent-Disposition: form-data; name="'+file.name+'"'+(file.file?'; filename="'+encodeURIComponent(file.file)+'"':"")+(file.file?"\r\nContent-Type: "+(file.type||"application/octet-stream"):"")+"\r\n\r\n"+(file.file?blob:encodeURIComponent(blob))+"\r\n"),queue.next()}),!0)}),api.expando)}},api.Form=Form}(FileAPI,window),function(window,api){"use strict";var noop=function(){},document=window.document,XHR=function(options){this.uid=api.uid(),this.xhr={abort:noop,getResponseHeader:noop,getAllResponseHeaders:noop},this.options=options},_xhrResponsePostfix={"":1,XML:1,Text:1,Body:1};XHR.prototype={status:0,statusText:"",constructor:XHR,getResponseHeader:function(name){return this.xhr.getResponseHeader(name)},getAllResponseHeaders:function(){return this.xhr.getAllResponseHeaders()||{}},end:function(status,statusText){var _this=this,options=_this.options;_this.end=_this.abort=noop,_this.status=status,statusText&&(_this.statusText=statusText),api.log("xhr.end:",status,statusText),options.complete(200!=status&&201!=status&&(_this.statusText||"unknown"),_this),_this.xhr&&_this.xhr.node&&setTimeout((function(){var node=_this.xhr.node;try{node.parentNode.removeChild(node)}catch(e){}try{delete window[_this.uid]}catch(e){}window[_this.uid]=_this.xhr.node=null}),9)},abort:function(){this.end(0,"abort"),this.xhr&&(this.xhr.aborted=!0,this.xhr.abort())},send:function(FormData){var _this=this,options=this.options;FormData.toData((function(data){data instanceof Error?_this.end(0,data.message):(options.upload(options,_this),_this._send.call(_this,options,data))}),options)},_send:function(options,data){var xhr,_this=this,uid=_this.uid,onLoadFnName=_this.uid+"Load",url=options.url;if(api.log("XHR._send:",data),options.cache||(url+=(~url.indexOf("?")?"&":"?")+api.uid()),data.nodeName){var jsonp=options.jsonp;url=url.replace(/([a-z]+)=(\?)/i,"$1="+uid),options.upload(options,_this);var onPostMessage=function(evt){if(~url.indexOf(evt.origin))try{var result=api.parseJSON(evt.data);result.id==uid&&complete(result.status,result.statusText,result.response)}catch(err){complete(0,err.message)}},complete=window[uid]=function(status,statusText,response){_this.readyState=4,_this.responseText=response,_this.end(status,statusText),api.event.off(window,"message",onPostMessage),window[uid]=xhr=transport=window[onLoadFnName]=null};_this.xhr.abort=function(){try{transport.stop?transport.stop():transport.contentWindow.stop?transport.contentWindow.stop():transport.contentWindow.document.execCommand("Stop")}catch(er){}complete(0,"abort")},api.event.on(window,"message",onPostMessage),window[onLoadFnName]=function(){try{var win=transport.contentWindow,doc=win.document,result=win.result||api.parseJSON(doc.body.innerHTML);complete(result.status,result.statusText,result.response)}catch(e){api.log("[transport.onload]",e)}},(xhr=document.createElement("div")).innerHTML='
'+(jsonp&&options.url.indexOf("=?")<0?'':"")+"
";var form=xhr.getElementsByTagName("form")[0],transport=xhr.getElementsByTagName("iframe")[0];form.appendChild(data),api.log(form.parentNode.innerHTML),document.body.appendChild(xhr),_this.xhr.node=xhr,_this.readyState=2;try{form.submit()}catch(err){api.log("iframe.error: "+err)}form=null}else{if(url=url.replace(/([a-z]+)=(\?)&?/i,""),this.xhr&&this.xhr.aborted)return void api.log("Error: already aborted");if(xhr=_this.xhr=api.getXHR(),data.params&&(url+=(url.indexOf("?")<0?"?":"&")+data.params.join("&")),xhr.open("POST",url,!0),api.withCredentials&&(xhr.withCredentials="true"),options.headers&&options.headers["X-Requested-With"]||xhr.setRequestHeader("X-Requested-With","XMLHttpRequest"),api.each(options.headers,(function(val,key){xhr.setRequestHeader(key,val)})),options._chunked){xhr.upload&&xhr.upload.addEventListener("progress",api.throttle((function(evt){data.retry||options.progress({type:evt.type,total:data.size,loaded:data.start+evt.loaded,totalSize:data.size},_this,options)}),100),!1),xhr.onreadystatechange=function(){var lkb=parseInt(xhr.getResponseHeader("X-Last-Known-Byte"),10);if(_this.status=xhr.status,_this.statusText=xhr.statusText,_this.readyState=xhr.readyState,4==xhr.readyState){for(var k in _xhrResponsePostfix)_this["response"+k]=xhr["response"+k];if(xhr.onreadystatechange=null,!xhr.status||xhr.status-201>0)if(api.log("Error: "+xhr.status),(!xhr.status&&!xhr.aborted||500==xhr.status||416==xhr.status)&&++data.retry<=options.chunkUploadRetry){var delay=xhr.status?0:api.chunkNetworkDownRetryTimeout;options.pause(data.file,options),api.log("X-Last-Known-Byte: "+lkb),lkb?data.end=lkb:(data.end=data.start-1,416==xhr.status&&(data.end=data.end-options.chunkSize)),setTimeout((function(){_this._send(options,data)}),delay)}else _this.end(xhr.status);else data.retry=0,data.end==data.size-1?_this.end(xhr.status):(api.log("X-Last-Known-Byte: "+lkb),lkb&&(data.end=lkb),data.file.FileAPIReadPosition=data.end,setTimeout((function(){_this._send(options,data)}),0));xhr=null}},data.start=data.end+1,data.end=Math.max(Math.min(data.start+options.chunkSize,data.size)-1,data.start);var file=data.file,slice=(file.slice||file.mozSlice||file.webkitSlice).call(file,data.start,data.end+1);data.size&&!slice.size?setTimeout((function(){_this.end(-1)})):(xhr.setRequestHeader("Content-Range","bytes "+data.start+"-"+data.end+"/"+data.size),xhr.setRequestHeader("Content-Disposition","attachment; filename="+encodeURIComponent(data.name)),xhr.setRequestHeader("Content-Type",data.type||"application/octet-stream"),xhr.send(slice)),file=slice=null}else if(xhr.upload&&xhr.upload.addEventListener("progress",api.throttle((function(evt){options.progress(evt,_this,options)}),100),!1),xhr.onreadystatechange=function(){if(_this.status=xhr.status,_this.statusText=xhr.statusText,_this.readyState=xhr.readyState,4==xhr.readyState){for(var k in _xhrResponsePostfix)_this["response"+k]=xhr["response"+k];if(xhr.onreadystatechange=null,!xhr.status||xhr.status>201)if(api.log("Error: "+xhr.status),(!xhr.status&&!xhr.aborted||500==xhr.status)&&(options.retry||0)=0?val+"px":val}Camera.Shot=Shot,api.Camera=Camera}(window,FileAPI),function(window,jQuery,api){"use strict";var document=window.document,location=window.location,navigator=window.navigator,_each=api.each;api.support.flash=function(){var mime=navigator.mimeTypes,has=!1;if(navigator.plugins&&"object"==typeof navigator.plugins["Shockwave Flash"])has=navigator.plugins["Shockwave Flash"].description&&!(mime&&mime["application/x-shockwave-flash"]&&!mime["application/x-shockwave-flash"].enabledPlugin);else try{has=!(!window.ActiveXObject||!new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))}catch(er){api.log("Flash -- does not supported.")}return has&&/^file:/i.test(location)&&api.log("[warn] Flash does not work on `file:` protocol."),has}(),api.support.flash&&(!api.html5||!api.support.html5||api.cors&&!api.support.cors||api.media&&!api.support.media)&&function(){var _attr=api.uid(),_retry=0,_files={},_rhttp=/^https?:/i,flash={_fn:{},init:function(){var child=document.body&&document.body.firstChild;if(child)do{if(1==child.nodeType){api.log("FlashAPI.state: awaiting");var dummy=document.createElement("div");return dummy.id="_"+_attr,_css(dummy,{top:1,right:1,width:5,height:5,position:"absolute",zIndex:"2147483647"}),child.parentNode.insertBefore(dummy,child),void flash.publish(dummy,_attr)}}while(child=child.nextSibling);_retry<10&&setTimeout(flash.init,50*++_retry)},publish:function(el,id,opts){opts=opts||{},el.innerHTML=_makeFlashHTML({id,src:_getUrl(api.flashUrl,"r="+api.version),wmode:opts.camera?"":"transparent",flashvars:"callback="+(opts.onEvent||"FileAPI.Flash.onEvent")+"&flashId="+id+"&storeKey="+navigator.userAgent.match(/\d/gi).join("")+"_"+api.version+(flash.isReady||(api.pingUrl?"&ping="+api.pingUrl:""))+"&timeout="+api.flashAbortTimeout+(opts.camera?"&useCamera="+_getUrl(api.flashWebcamUrl):"")+"&debug="+(api.debug?"1":"")})},ready:function(){api.log("FlashAPI.state: ready"),flash.ready=api.F,flash.isReady=!0,flash.patch(),flash.patchCamera&&flash.patchCamera(),api.event.on(document,"mouseover",flash.mouseover),api.event.on(document,"click",(function(evt){flash.mouseover(evt)&&(evt.preventDefault?evt.preventDefault():evt.returnValue=!0)}))},getEl:function(){return document.getElementById("_"+_attr)},getWrapper:function(node){do{if(/js-fileapi-wrapper/.test(node.className))return node}while((node=node.parentNode)&&node!==document.body)},mouseover:function(evt){var target=api.event.fix(evt).target;if(/input/i.test(target.nodeName)&&"file"==target.type&&!target.disabled){var state=target.getAttribute(_attr),wrapper=flash.getWrapper(target);if(api.multiFlash){if("i"==state||"r"==state)return!1;if("p"!=state){target.setAttribute(_attr,"i");var dummy=document.createElement("div");if(!wrapper)return void api.log("[err] FlashAPI.mouseover: js-fileapi-wrapper not found");_css(dummy,{top:0,left:0,width:target.offsetWidth,height:target.offsetHeight,zIndex:"2147483647",position:"absolute"}),wrapper.appendChild(dummy),flash.publish(dummy,api.uid()),target.setAttribute(_attr,"p")}return!0}if(wrapper){var box=function(el){var box=el.getBoundingClientRect(),body=document.body,docEl=(el&&el.ownerDocument).documentElement;return{top:box.top+(window.pageYOffset||docEl.scrollTop)-(docEl.clientTop||body.clientTop||0),left:box.left+(window.pageXOffset||docEl.scrollLeft)-(docEl.clientLeft||body.clientLeft||0),width:box.right-box.left,height:box.bottom-box.top}}(wrapper);_css(flash.getEl(),box),flash.curInp=target}}else/object|embed/i.test(target.nodeName)||_css(flash.getEl(),{top:1,left:1,width:5,height:5})},onEvent:function(evt){var type=evt.type;if("ready"==type){try{flash.getInput(evt.flashId).setAttribute(_attr,"r")}catch(e){}return flash.ready(),setTimeout((function(){flash.mouseenter(evt)}),50),!0}"ping"===type?api.log("(flash -> js).ping:",[evt.status,evt.savedStatus],evt.error):"log"===type?api.log("(flash -> js).log:",evt.target):type in flash&&setTimeout((function(){api.log("FlashAPI.event."+evt.type+":",evt),flash[type](evt)}),1)},mouseenter:function(evt){var node=flash.getInput(evt.flashId);if(node){flash.cmd(evt,"multiple",null!=node.getAttribute("multiple"));var accept=[],exts={};_each((node.getAttribute("accept")||"").split(/,\s*/),(function(mime){api.accept[mime]&&_each(api.accept[mime].split(" "),(function(ext){exts[ext]=1}))})),_each(exts,(function(i,ext){accept.push(ext)})),flash.cmd(evt,"accept",accept.length?accept.join(",")+","+accept.join(",").toUpperCase():"*")}},get:function(id){return document[id]||window[id]||document.embeds[id]},getInput:function(id){if(!api.multiFlash)return flash.curInp;try{var node=flash.getWrapper(flash.get(id));if(node)return node.getElementsByTagName("input")[0]}catch(e){api.log('[err] Can not find "input" by flashId:',id,e)}},select:function(evt){var event,inp=flash.getInput(evt.flashId),uid=api.uid(inp),files=evt.target.files;_each(files,(function(file){api.checkFileObj(file)})),_files[uid]=files,document.createEvent?((event=document.createEvent("Event")).files=files,event.initEvent("change",!0,!0),inp.dispatchEvent(event)):jQuery?jQuery(inp).trigger({type:"change",files}):((event=document.createEventObject()).files=files,inp.fireEvent("onchange",event))},cmd:function(id,name,data,last){try{return api.log("(js -> flash)."+name+":",data),flash.get(id.flashId||id).cmd(name,data)}catch(err){api.log("(js -> flash).onError:",err.toString()),last||setTimeout((function(){flash.cmd(id,name,data,!0)}),50)}},patch:function(){api.flashEngine=!0,_inherit(api,{getFiles:function(input,filter,callback){if(callback)return api.filterFiles(api.getFiles(input),filter,callback),null;var files=api.isArray(input)?input:_files[api.uid(input.target||input.srcElement||input)];return files?(filter&&(filter=api.getFilesFilter(filter),files=api.filter(files,(function(file){return filter.test(file.name)}))),files):this.parent.apply(this,arguments)},getInfo:function(file,fn){if(_isHtmlFile(file))this.parent.apply(this,arguments);else if(file.isShot)fn(null,file.info={width:file.width,height:file.height});else{if(!file.__info){var defer=file.__info=api.defer();flash.cmd(file,"getFileInfo",{id:file.id,callback:_wrap((function _(err,info){_unwrap(_),defer.resolve(err,file.info=info)}))})}file.__info.then(fn)}}}),api.support.transform=!0,api.Image&&_inherit(api.Image.prototype,{get:function(fn,scaleMode){return this.set({scaleMode:scaleMode||"noScale"}),this.parent(fn)},_load:function(file,fn){if(api.log("FlashAPI.Image._load:",file),_isHtmlFile(file))this.parent.apply(this,arguments);else{var _this=this;api.getInfo(file,(function(err){fn.call(_this,err,file)}))}},_apply:function(file,fn){if(api.log("FlashAPI.Image._apply:",file),_isHtmlFile(file))this.parent.apply(this,arguments);else{var m=this.getMatrix(file.info),doneFn=fn;flash.cmd(file,"imageTransform",{id:file.id,matrix:m,callback:_wrap((function _(err,base64){api.log("FlashAPI.Image._apply.callback:",err),_unwrap(_),err?doneFn(err):api.support.html5||api.support.dataURI&&!(base64.length>3e4)?(m.filter&&(doneFn=function(err,img){err?fn(err):api.Image.applyFilter(img,m.filter,(function(){fn(err,this.canvas)}))}),api.newImage("data:"+file.type+";base64,"+base64,doneFn)):_makeFlashImage({width:m.deg%180?m.dh:m.dw,height:m.deg%180?m.dw:m.dh,scale:m.scaleMode},base64,doneFn)}))})}},toData:function(fn){var file=this.file,info=file.info,matrix=this.getMatrix(info);api.log("FlashAPI.Image.toData"),_isHtmlFile(file)?this.parent.apply(this,arguments):("auto"==matrix.deg&&(matrix.deg=api.Image.exifOrientation[info&&info.exif&&info.exif.Orientation]||0),fn.call(this,!file.info,{id:file.id,flashId:file.flashId,name:file.name,type:file.type,matrix}))}}),api.Image&&_inherit(api.Image,{fromDataURL:function(dataURL,size,callback){!api.support.dataURI||dataURL.length>3e4?_makeFlashImage(api.extend({scale:"exactFit"},size),dataURL.replace(/^data:[^,]+,/,""),(function(err,el){callback(el)})):this.parent(dataURL,size,callback)}}),_inherit(api.Form.prototype,{toData:function(fn){for(var items=this.items,i=items.length;i--;)if(items[i].file&&_isHtmlFile(items[i].blob))return this.parent.apply(this,arguments);api.log("FlashAPI.Form.toData"),fn(items)}}),_inherit(api.XHR.prototype,{_send:function(options,formData){if(formData.nodeName||formData.append&&api.support.html5||api.isArray(formData)&&"string"==typeof formData[0])return this.parent.apply(this,arguments);var flashId,fileId,data={},files={},_this=this;if(_each(formData,(function(item){var file;item.file?(files[item.name]=item={id:(file=item.blob).id,name:file.name,matrix:file.matrix,flashId:file.flashId},fileId=item.id,flashId=item.flashId):data[item.name]=item.blob})),fileId||(flashId=_attr),!flashId)return api.log("[err] FlashAPI._send: flashId -- undefined"),this.parent.apply(this,arguments);api.log("FlashAPI.XHR._send: "+flashId+" -> "+fileId),_this.xhr={headers:{},abort:function(){flash.cmd(flashId,"abort",{id:fileId})},getResponseHeader:function(name){return this.headers[name]},getAllResponseHeaders:function(){return this.headers}};var queue=api.queue((function(){flash.cmd(flashId,"upload",{url:_getUrl(options.url.replace(/([a-z]+)=(\?)&?/i,"")),data,files:fileId?files:null,headers:options.headers||{},callback:_wrap((function upload(evt){var type=evt.type,result=evt.result;api.log("FlashAPI.upload."+type),"progress"==type?(evt.loaded=Math.min(evt.loaded,evt.total),evt.lengthComputable=!0,options.progress(evt)):"complete"==type?(_unwrap(upload),"string"==typeof result&&(_this.responseText=result.replace(/%22/g,'"').replace(/%5c/g,"\\").replace(/%26/g,"&").replace(/%25/g,"%")),_this.end(evt.status||200)):"abort"!=type&&"error"!=type||(_this.end(evt.status||0,evt.message),_unwrap(upload))}))})}));_each(files,(function(file){queue.inc(),api.getInfo(file,queue.next)})),queue.check()}})}};function _makeFlashHTML(opts){return('').replace(/#(\w+)#/gi,(function(a,name){return opts[name]}))}function _css(el,css){var key,val;if(el&&el.style)for(key in css){"number"==typeof(val=css[key])&&(val+="px");try{el.style[key]=val}catch(e){}}}function _inherit(obj,methods){_each(methods,(function(fn,name){var prev=obj[name];obj[name]=function(){return this.parent=prev,fn.apply(this,arguments)}}))}function _isHtmlFile(file){return file&&!file.flashId}function _wrap(fn){var id=fn.wid=api.uid();return flash._fn[id]=fn,"FileAPI.Flash._fn."+id}function _unwrap(fn){try{flash._fn[fn.wid]=null,delete flash._fn[fn.wid]}catch(e){}}function _getUrl(url,params){if(!_rhttp.test(url)){if(/^\.\//.test(url)||"/"!=url.charAt(0)){var path=location.pathname;url=((path=path.substr(0,path.lastIndexOf("/")))+"/"+url).replace("/./","/")}"//"!=url.substr(0,2)&&(url="//"+location.host+url),_rhttp.test(url)||(url=location.protocol+url)}return params&&(url+=(/\?/.test(url)?"&":"?")+params),url}function _makeFlashImage(opts,base64,fn){var key,flashId=api.uid(),el=document.createElement("div"),attempts=10;for(key in opts)el.setAttribute(key,opts[key]),el[key]=opts[key];_css(el,opts),opts.width="100%",opts.height="100%",el.innerHTML=_makeFlashHTML(api.extend({id:flashId,src:_getUrl(api.flashImageUrl,"r="+api.uid()),wmode:"opaque",flashvars:"scale="+opts.scale+"&callback="+_wrap((function _(){return _unwrap(_),--attempts>0&&function(){try{flash.get(flashId).setImage(base64)}catch(e){api.log('[err] FlashAPI.Preview.setImage -- can not set "base64":',e)}}(),!0}))},opts)),fn(!1,el),el=null}api.Flash=flash,api.newImage("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",(function(err,img){api.support.dataURI=!(1!=img.width||1!=img.height),flash.init()}))}()}(window,window.jQuery,FileAPI),function(window,jQuery,api){"use strict";var _each=api.each,_cameraQueue=[];!api.support.flash||!api.media||api.support.media&&api.html5||function(){function _wrap(fn){var id=fn.wid=api.uid();return api.Flash._fn[id]=fn,"FileAPI.Flash._fn."+id}function _unwrap(fn){try{api.Flash._fn[fn.wid]=null,delete api.Flash._fn[fn.wid]}catch(e){}}var flash=api.Flash;api.extend(api.Flash,{patchCamera:function(){api.Camera.fallback=function(el,options,callback){var camId=api.uid();api.log("FlashAPI.Camera.publish: "+camId),flash.publish(el,camId,api.extend(options,{camera:!0,onEvent:_wrap((function _(evt){"camera"===evt.type&&(_unwrap(_),evt.error?(api.log("FlashAPI.Camera.publish.error: "+evt.error),callback(evt.error)):(api.log("FlashAPI.Camera.publish.success: "+camId),callback(null)))}))}))},_each(_cameraQueue,(function(args){api.Camera.fallback.apply(api.Camera,args)})),_cameraQueue=[],api.extend(api.Camera.prototype,{_id:function(){return this.video.id},start:function(callback){var _this=this;flash.cmd(this._id(),"camera.on",{callback:_wrap((function _(evt){_unwrap(_),evt.error?(api.log("FlashAPI.camera.on.error: "+evt.error),callback(evt.error,_this)):(api.log("FlashAPI.camera.on.success: "+_this._id()),_this._active=!0,callback(null,_this))}))})},stop:function(){this._active=!1,flash.cmd(this._id(),"camera.off")},shot:function(){api.log("FlashAPI.Camera.shot:",this._id());var shot=api.Flash.cmd(this._id(),"shot",{});return shot.type="image/png",shot.flashId=this._id(),shot.isShot=!0,new api.Camera.Shot(shot)}})}}),api.Camera.fallback=function(){_cameraQueue.push(arguments)}}()}(window,window.jQuery,FileAPI),"function"==typeof define&&define.amd&&define("FileAPI",[],(function(){return FileAPI})),function(){var maxFileSize=parseInt(MODx.config.upload_maxsize,10),permittedFileTypes=MODx.config.upload_files.toLowerCase().split(",");FileAPI.debug=!1,FileAPI.staticPath=MODx.config.manager_url+"assets/fileapi/";var api_humanFileSize=function(bytes,si){var thresh=si?1e3:1024;if(bytes=thresh);return bytes.toFixed(1)+" "+units[u]},api_getFileExtension=function(filename){var result="",parts=filename.split(".");return parts.length>1&&(result=parts.pop()),result},api_isFileSizePermitted=function(size){return size<=maxFileSize};Ext.namespace("MODx.util.MultiUploadDialog"),MODx.util.MultiUploadDialog.BrowseButton=Ext.extend(Ext.Button,{input_name:"file",input_file:null,original_handler:null,original_scope:null,initComponent:function(){MODx.util.MultiUploadDialog.BrowseButton.superclass.initComponent.call(this),this.original_handler=this.handler||null,this.original_scope=this.scope||window,this.handler=null,this.scope=null},onRender:function(ct,position){MODx.util.MultiUploadDialog.BrowseButton.superclass.onRender.call(this,ct,position),this.createInputFile()},createInputFile:function(){var button_container=this.el.child("button").wrap();this.input_file=button_container.createChild({tag:"input",type:"file",size:1,name:this.input_name||Ext.id(this.el),style:"cursor: pointer; display: inline-block; opacity: 0; position: absolute; top: 0; left: 0; width: 100%; height: 100%;",multiple:!0}),this.handleMouseEvents&&(this.input_file.on("mouseover",this.onMouseOver,this),this.input_file.on("mousedown",this.onMouseDown,this)),this.tooltip&&("object"==typeof this.tooltip?Ext.QuickTips.register(Ext.apply({target:this.input_file},this.tooltip)):this.input_file.dom[this.tooltipType]=this.tooltip),this.input_file.on("change",this.onInputFileChange,this),this.input_file.on("click",(function(e){e.stopPropagation()}))},detachInputFile:function(no_create){var result=this.input_file;return"object"==typeof this.tooltip?Ext.QuickTips.unregister(this.input_file):this.input_file.dom[this.tooltipType]=null,this.input_file.removeAllListeners(),this.input_file=null,result},getInputFile:function(){return this.input_file},disable:function(){MODx.util.MultiUploadDialog.BrowseButton.superclass.disable.call(this),this.input_file.dom.disabled=!0},enable:function(){MODx.util.MultiUploadDialog.BrowseButton.superclass.enable.call(this),this.input_file.dom.disabled=!1},destroy:function(){var input_file=this.detachInputFile(!0);input_file.remove(),input_file=null,MODx.util.MultiUploadDialog.BrowseButton.superclass.destroy.call(this)},reset:function(){var form=new Ext.Element(document.createElement("form")),buttonParent=this.input_file.parent();form.appendChild(this.input_file),form.dom.reset(),buttonParent.appendChild(this.input_file)},onInputFileChange:function(ev){this.original_handler&&this.original_handler.call(this.original_scope,this,ev),this.fireEvent("click",this,ev)}}),Ext.reg("multiupload-browse-btn",MODx.util.MultiUploadDialog.BrowseButton),MODx.util.MultiUploadDialog.FilesGrid=function(config){config=config||{},Ext.applyIf(config,{height:300,autoScroll:!0,border:!1,fields:["name","size","file","permitted","message","uploaded"],paging:!1,remoteSort:!1,viewConfig:{forceFit:!0,getRowClass:function(record,index,rowParams){return record.get("permitted")?record.get("uploaded")?"upload-success":void 0:"upload-error"}},sortInfo:{field:"name",direction:"ASC"},deferRowRender:!0,anchor:"100%",autoExpandColumn:"state",columns:[{header:_("upload.columns.file"),dataIndex:"name",sortable:!0,width:200,renderer:function(value,meta,record){var id=Ext.id();return FileAPI.Image(record.get("file")).resize(100,50,"max").get((function(err,img){err||(img=new Ext.Element(img).addClass("upload-thumb"),Ext.get(id).insertFirst(img))})),'

'+Ext.util.Format.htmlEncode(value)+"

"}},{header:_("upload.columns.state"),id:"state",width:100,renderer:function(value,meta,record){if(!record.get("permitted")||record.get("uploaded"))return'

'+record.get("message")+"

";var id=Ext.id();return function(){record.progressbar=new Ext.ProgressBar({renderTo:id,value:0,text:"0 / "+record.get("size")})}.defer(25),'
'}}],getMenu:function(){return[{text:_("upload.contextmenu.remove_entry"),handler:this.removeFile}]}}),MODx.util.MultiUploadDialog.FilesGrid.superclass.constructor.call(this,config)},Ext.extend(MODx.util.MultiUploadDialog.FilesGrid,MODx.grid.LocalGrid,{removeFile:function(){var selected=this.getSelectionModel().getSelections();this.getStore().remove(selected)}}),Ext.reg("multiupload-grid-files",MODx.util.MultiUploadDialog.FilesGrid),MODx.util.MultiUploadDialog.Dialog=function(config){this.filesGridId=Ext.id(),config=config||{},Ext.applyIf(config,{permitted_extensions:permittedFileTypes,autoHeight:!0,width:600,closeAction:"hide",layout:"anchor",listeners:{show:{fn:this.onShow},hide:{fn:this.onHide}},items:[{xtype:"multiupload-grid-files",id:this.filesGridId,anchor:"100%"}],buttons:[{xtype:"multiupload-browse-btn",text:_("upload.buttons.choose"),cls:"primary-button",listeners:{click:{scope:this,fn:function(btn,ev){var files=FileAPI.getFiles(ev);this.addFiles(files),btn.reset()}}}},{xtype:"splitbutton",text:_("upload.buttons.clear"),listeners:{click:{scope:this,fn:this.clearStore}},menu:new Ext.menu.Menu({items:[{text:_("upload.clear_list.all"),listeners:{click:{scope:this,fn:this.clearStore}}},{text:_("upload.clear_list.notpermitted"),listeners:{click:{scope:this,fn:this.clearNotPermittedItems}}}]})},{xtype:"button",text:_("upload.buttons.upload"),cls:"primary-button",listeners:{click:{scope:this,fn:this.startUpload}}},{xtype:"button",text:_("upload.buttons.close"),listeners:{click:{scope:this,fn:this.hideDialog}}}]}),MODx.util.MultiUploadDialog.Dialog.superclass.constructor.call(this,config)};var originalWindowOnShow=Ext.Window.prototype.onShow,originalWindowOnHide=Ext.Window.prototype.onHide;Ext.extend(MODx.util.MultiUploadDialog.Dialog,Ext.Window,{addFiles:function(files){var store=Ext.getCmp(this.filesGridId).getStore(),dialog=this;FileAPI.each(files,(function(file){var permitted=!0,message="";api_isFileSizePermitted(file.size)||(message=_("upload.notpermitted.filesize",{size:api_humanFileSize(file.size),max:api_humanFileSize(maxFileSize)}),permitted=!1),dialog.isFileTypePermitted(file.name)||(message=_("upload.notpermitted.extension",{ext:api_getFileExtension(file.name)}),permitted=!1);var data={name:file.name,size:api_humanFileSize(file.size),file,permitted,message,uploaded:!1},p=new store.recordType(data);store.insert(0,p)}))},startUpload:function(){var dialog=this,files=[],params=Ext.apply(this.base_params,{HTTP_MODAUTH:MODx.siteId});Ext.getCmp(this.filesGridId).getStore().each((function(){var file=this.get("file");this.get("permitted")&&!this.get("uploaded")&&(file.record=this,files.push(file))}));FileAPI.upload({url:this.url,data:params,files:{file:files},fileprogress:function(evt,file){file.record.progressbar.updateProgress(evt.loaded/evt.total,_("upload.upload_progress",{loaded:api_humanFileSize(evt.loaded),total:file.record.get("size")}),!0)},filecomplete:function(err,xhr,file,options){if(err)401!==xhr.status&&MODx.msg.alert(_("upload.msg.title.error"),err);else{var resp=Ext.util.JSON.decode(xhr.response);resp.success?(file.record.set("uploaded",!0),file.record.set("message",_("upload.upload.success"))):(file.record.set("permitted",!1),file.record.set("message",resp.message))}},complete:function(err,xhr){dialog.fireEvent("uploadsuccess")}})},removeEntry:function(record){Ext.getCmp(this.filesGridId).getStore().remove(record)},clearStore:function(){Ext.getCmp(this.filesGridId).getStore().removeAll()},clearNotPermittedItems:function(){var store=Ext.getCmp(this.filesGridId).getStore(),notPermitted=store.query("permitted",!1);store.remove(notPermitted.getRange())},hideDialog:function(){this.hide()},onDDrag:function(ev){ev&&ev.preventDefault()},onDDrop:function(ev){ev&&ev.preventDefault();var dialog=this;FileAPI.getDropFiles(ev.browserEvent,(function(files){files.length&&dialog.addFiles(files)}))},onShow:function(){var ret=originalWindowOnShow.apply(this,arguments);return Ext.getCmp(this.filesGridId).getStore().removeAll(),this.isDDSet||(this.el.on("dragenter",this.onDDrag,this),this.el.on("dragover",this.onDDrag,this),this.el.on("dragleave",this.onDDrag,this),this.el.on("drop",this.onDDrop,this),this.isDDSet=!0),ret},onHide:function(){var ret=originalWindowOnHide.apply(this,arguments);return this.el.un("dragenter",this.onDDrag,this),this.el.un("dragover",this.onDDrag,this),this.el.un("dragleave",this.onDDrag,this),this.el.un("drop",this.onDDrop,this),this.isDDSet=!1,ret},setBaseParams:function(params){this.base_params=params,this.setTitle(_("upload.title.destination_path",{path:this.base_params.path}))},isFileTypePermitted:function(filename){var ext=api_getFileExtension(filename);return this.permitted_extensions.indexOf(ext.toLowerCase())>-1}}),Ext.reg("multiupload-window-dialog",MODx.util.MultiUploadDialog.Dialog)}(),Ext.namespace("MODx.tree"),MODx.tree.Tree=function(config){var tl,root;if(config=config||{},Ext.applyIf(config,{baseParams:{},action:"getNodes",loaderConfig:{}}),config.action&&(config.baseParams.action=config.action),config.loaderConfig.dataUrl=config.url,config.loaderConfig.baseParams=config.baseParams,Ext.applyIf(config.loaderConfig,{preloadChildren:!0,clearOnLoad:!0}),this.config=config,this.config.url?((tl=new MODx.tree.TreeLoader(config.loaderConfig)).on("beforeload",(function(l,node){tl.dataUrl=this.config.url+"?action="+this.config.action+"&id="+node.attributes.id,node.attributes.type&&(tl.dataUrl+="&type="+node.attributes.type)}),this),tl.on("load",this.onLoad,this),root={nodeType:"async",text:config.root_name||config.rootName||"",qtip:config.root_qtip||config.rootQtip||"",draggable:!1,id:config.root_id||config.rootId||"root",pseudoroot:!0,attributes:{pseudoroot:!0},cls:"tree-pseudoroot-node",iconCls:config.root_iconCls||config.rootIconCls||""}):(tl=new Ext.tree.TreeLoader({preloadChildren:!0,baseAttrs:{uiProvider:MODx.tree.CheckboxNodeUI}}),root=new Ext.tree.TreeNode({text:this.config.rootName||"",draggable:!1,id:this.config.rootId||"root",children:this.config.data||[],pseudoroot:!0})),Ext.applyIf(config,{useArrows:!0,autoScroll:!0,animate:!0,enableDD:!0,enableDrop:!0,ddAppendOnly:!1,containerScroll:!0,collapsible:!0,border:!1,autoHeight:!0,rootVisible:!0,loader:tl,header:!1,hideBorders:!0,bodyBorder:!1,cls:"modx-tree",root,preventRender:!1,stateful:!0,menuConfig:{defaultAlign:"tl-b?",enableScrolling:!1,listeners:{show:function(){var node=this.activeNode;node&&node.ui.addClass("x-tree-selected")},hide:function(){var node=this.activeNode;node&&(node.isSelected()||node.ui&&node.ui.removeClass("x-tree-selected"))}}}}),!0!==config.remoteToolbar||void 0!==config.tbar&&null!==config.tbar){var tb=this.getToolbar();if(config.tbar&&config.useDefaultToolbar)for(var i=0;i150&&(w=this.config.width),el.setWidth(w),this.doLayout()}},setup:function(config){config.listeners=config.listeners||{},config.listeners.render={fn:function(){!1===config.autoExpandRoot&&config.hasOwnProperty("autoExpandRoot")||this.root.expand();var tl=this.getLoader();Ext.apply(tl,{fullMask:new Ext.LoadMask(this.getEl())}),tl.fullMask.removeMask=!1,tl.on({load:function(){this.fullMask.hide()},loadexception:function(){this.fullMask.hide()},beforeload:function(){this.fullMask.show()},scope:tl})},scope:this},MODx.tree.Tree.superclass.constructor.call(this,config),this.addEvents("afterSort","beforeSort"),this.cm=new Ext.menu.Menu(config.menuConfig),this.on("contextmenu",this._showContextMenu,this),this.on("beforenodedrop",this._handleDrop,this),this.on("nodedragover",this._handleDrop,this),this.on("nodedrop",this._handleDrag,this),this.on("click",this._saveState,this),this.on("contextmenu",this._saveState,this),this.on("click",this._handleClick,this),this.treestate_id=this.config.id||Ext.id(),this.on("load",this._initExpand,this,{single:!0}),this.on("expandnode",this._saveState,this),this.on("collapsenode",this._saveState,this),this.on("expandnode",(function(){var cnt=Ext.getCmp("modx-content");cnt&&cnt.doLayout()}),this)},_initExpand:function(){var treeState=Ext.state.Manager.get(this.treestate_id);if(Ext.isEmpty(treeState)&&this.root)this.root.expand(),this.root.firstChild&&this.config.expandFirst&&this.root.firstChild.expand();else for(var i=0;i"+node.attributes.text+"",target:this}),node,handler:function(btn,evt){evt.stopPropagation(evt),node.getOwnerTree().handleDirectCreateClick(node)},iconCls:"icon-plus-square",renderTo:elId,listeners:{mouseover:function(button,e){button.tooltip.onTargetOver(e)},mouseout:function(button,e){button.tooltip.onTargetOut(e)}}})}},_showContextMenu:function(node,e){var m;this.cm.activeNode=node,this.cm.removeAll();var handled=!1;if(!Ext.isEmpty(node.attributes.treeHandler)||node.isRoot&&!Ext.isEmpty(node.childNodes[0].attributes.treeHandler)){var h=Ext.getCmp(node.isRoot?node.childNodes[0].attributes.treeHandler:node.attributes.treeHandler);h&&(node.isRoot&&(node.attributes.type="root"),m=h.getMenu(this,node,e),handled=!0)}handled||(this.getMenu?m=this.getMenu(node,e):node.attributes.menu&&node.attributes.menu.items&&(m=node.attributes.menu.items)),m&&m.length>0&&(this.addContextMenuItem(m),this.cm.showAt(e.xy)),e.preventDefault(),e.stopEvent()},hasNode:function(t,n){return t.findChild("id",n.id)||!0===t.leaf&&t.parentNode.findChild("id",n.id)},refresh:function(func,scope,args){var treeState=Ext.state.Manager.get(this.treestate_id);return this.root.reload(),void 0===treeState?this.root.expand():Ext.isArray(treeState)&&Ext.each(treeState,(function(path,idx){this.expandPath(path)}),this),func&&(scope=scope||this,args=args||[],this.root.on("load",(function(){Ext.callback(func,scope,args)}),scope)),!0},removeChildren:function(node){for(;node.firstChild;){var c=node.firstChild;node.removeChild(c),c.destroy()}},loadRemoteData:function(data){for(var c in this.removeChildren(this.getRootNode()),data)"object"==typeof data[c]&&this.getRootNode().appendChild(data[c])},reloadNode:function(n){this.getLoader().load(n),n.expand()},remove:function(text,substr,split){if(this.destroying)return MODx.tree.Tree.superclass.remove.apply(this,arguments);var node=this.cm.activeNode,id=this._extractId(node.id,substr,split),p={action:this.config.removeAction||"remove"};p[this.config.primaryKey||"id"]=id,MODx.msg.confirm({title:this.config.removeTitle||_("warning"),text:_(text),url:this.config.url,params:p,listeners:{success:{fn:this.refresh,scope:this}}})},_extractId:function(id,substr,split){return split=split||!1,!1!==(substr=substr||!1)&&(id=node.id.substr(substr)),!1!==split&&(id=(id=node.id.split("_"))[split]),id},expandNodes:function(){this.root&&(this.root.expand(),this.root.expandChildNodes(!0))},collapseNodes:function(){this.root&&(this.root.collapseChildNodes(!0),this.root.collapse())},_saveState:function(n){if(!this.stateful)return!0;var i,s=Ext.state.Manager.get(this.treestate_id),p=n.getPath();if(s=Ext.isObject(s)||Ext.isArray(s)?s.slice():[s],!Ext.isEmpty(p)&&null!=p){if(n.expanded){if(Ext.isString(p)&&-1===s.indexOf(p)){var sr,f=!1;for(i=0;is[i].length&&(f=!0):s.splice(i,1);f||s.push(p)}}else for(s=s.remove(p),i=0;i',id:"modx-iprops-container"}]}],modps:[]}),MODx.window.InsertElement.superclass.constructor.call(this,config),this.on("show",(function(){this.center(),this.mask=new Ext.LoadMask(Ext.get("modx-iprops-container"),{msg:_("loading")}),this.mask.show()}),this)},Ext.extend(MODx.window.InsertElement,MODx.Window,{changePropertySet:function(cb){var fp=Ext.getCmp("modx-iprops-fp");fp&&fp.destroy();var resourceCmp=Ext.get("modx-resource-id"),resourceId=null!==resourceCmp?resourceCmp.getValue():0;Ext.getCmp("modx-dise-proplist").getUpdater().update({url:MODx.config.connector_url,params:{action:"element/getinsertproperties",classKey:this.config.record.classKey,pk:this.config.record.pk,resourceId,propertySet:cb.getValue()},scripts:!0,callback:this.onPropFormLoad,scope:this}),this.modps=[],this.mask.show()},createStore:function(data){return new Ext.data.SimpleStore({fields:["v","d"],data})},onPropFormLoad:function(el,s,r){this.mask.hide();var vs=Ext.decode(r.responseText);if(!vs||vs.length<=0)return!1;for(var i=0;i]+)>)/gi,"")))}},_handleDrop:function(e){var dropNode=e.dropNode,targetParent=e.target;if(null!==targetParent.findChild("id",dropNode.attributes.id))return!1;if("modContext"==dropNode.attributes.type&&(targetParent.getDepth()>1||targetParent.attributes.id==targetParent.attributes.pk+"_0"&&"append"==e.point))return!1;if("modContext"!==dropNode.attributes.type&&targetParent.getDepth()<=1&&"append"!==e.point)return!1;if(null==MODx.config.resource_classes_drop[targetParent.attributes.classKey]){if(targetParent.attributes.hide_children_in_tree)return!1}else if(0==MODx.config.resource_classes_drop[targetParent.attributes.classKey])return!1;return"root"!=dropNode.attributes.text&&""!==dropNode.attributes.text&&"root"!=targetParent.attributes.text&&""!==targetParent.attributes.text},getContextSettingForNode:function(node,ctx,setting,dv){var val=dv||null;if("modContext"!=node.attributes.type){var cn=node.getOwnerTree().getRootNode().findChild("ctx",ctx,!1);cn&&(val=cn.attributes.settings[setting])}else val=node.attributes.settings[setting];return val},quickCreate:function(itm,e,cls,ctx,p){var r={class_key:cls=cls||"modDocument",context_key:ctx||"web",parent:p||0,template:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"default_template",MODx.config.default_template)),richtext:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"richtext_default",MODx.config.richtext_default)),hidemenu:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"hidemenu_default",MODx.config.hidemenu_default)),searchable:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"search_default",MODx.config.search_default)),cacheable:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"cache_default",MODx.config.cache_default)),published:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"publish_default",MODx.config.publish_default)),content_type:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"default_content_type",MODx.config.default_content_type))};if("modContext"!=this.cm.activeNode.attributes.type){var cn=this.cm.activeNode.getOwnerTree().getRootNode().findChild("ctx",ctx,!1);cn&&(r.template=cn.attributes.settings.default_template)}else r.template=this.cm.activeNode.attributes.settings.default_template;var w=MODx.load({xtype:"modx-window-quick-create-modResource",record:r,listeners:{success:{fn:function(){this.refreshNode(this.cm.activeNode.id,this.cm.activeNode.childNodes.length>0)},scope:this},hide:{fn:function(){this.destroy()}},show:{fn:function(){this.center()}}}});w.setValues(r),w.show(e.target,(function(){Ext.isSafari?w.setPosition(null,30):w.center()}),this)},quickUpdate:function(itm,e,cls){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"resource/get",id:this.cm.activeNode.attributes.pk,skipFormatDates:!0},listeners:{success:{fn:function(r){var pr=r.object;pr.class_key=cls;var w=MODx.load({xtype:"modx-window-quick-update-modResource",record:pr,listeners:{success:{fn:function(r){this.refreshNode(this.cm.activeNode.id);var newTitle=''+r.f.findField("pagetitle").getValue()+" ("+w.record.id+")";w.setTitle(w.title.replace(//,newTitle))},scope:this},hide:{fn:function(){this.destroy()}}}});w.title+=': '+Ext.util.Format.htmlEncode(w.record.pagetitle)+" ("+w.record.id+")",w.setValues(r.object),w.show(e.target,(function(){Ext.isSafari?w.setPosition(null,30):w.center()}),this)},scope:this}}})},_getModContextMenu:function(n){var a=n.attributes,ui=n.getUI(),m=[];return m.push({text:""+a.text+"",handler:function(){return!1},header:!0}),m.push("-"),ui.hasClass("pedit")&&m.push({text:_("edit_context"),handler:function(){var at=this.cm.activeNode.attributes;this.loadAction("a=context/update&key="+at.pk)}}),m.push({text:_("context_refresh"),handler:function(){this.refreshNode(this.cm.activeNode.id,!0)}}),ui.hasClass("pnewdoc")&&(m.push("-"),this._getCreateMenus(m,"0",ui)),ui.hasClass("pnew")&&m.push({text:_("context_duplicate"),handler:this.duplicateContext}),ui.hasClass("pdelete")&&(m.push("-"),m.push({text:_("context_remove"),handler:this.removeContext})),ui.hasClass("x-tree-node-leaf")||(m.push("-"),m.push(this._getSortMenu())),m},overviewResource:function(){this.loadAction("a=resource/data")},quickUpdateResource:function(itm,e){this.quickUpdate(itm,e,itm.classKey)},editResource:function(){this.loadAction("a=resource/update")},_getModResourceMenu:function(n){var a=n.attributes,ui=n.getUI(),m=[];return m.push({text:""+a.text+"",handler:function(){return!1},header:!0}),m.push("-"),ui.hasClass("pview")&&m.push({text:_("resource_overview"),handler:this.overviewResource}),ui.hasClass("pedit")&&m.push({text:_("resource_edit"),handler:this.editResource}),ui.hasClass("pqupdate")&&m.push({text:_("quick_update_resource"),classKey:a.classKey,handler:this.quickUpdateResource}),ui.hasClass("pduplicate")&&m.push({text:_("resource_duplicate"),handler:this.duplicateResource}),m.push({text:_("resource_refresh"),handler:this.refreshResource,scope:this}),ui.hasClass("pnew")&&(m.push("-"),this._getCreateMenus(m,null,ui)),ui.hasClass("psave")&&(m.push("-"),ui.hasClass("ppublish")&&ui.hasClass("unpublished")?m.push({text:_("resource_publish"),handler:this.publishDocument}):ui.hasClass("punpublish")&&m.push({text:_("resource_unpublish"),handler:this.unpublishDocument}),ui.hasClass("pundelete")&&ui.hasClass("deleted")?m.push({text:_("resource_undelete"),handler:this.undeleteDocument}):ui.hasClass("pdelete")&&!ui.hasClass("deleted")&&m.push({text:_("resource_delete"),handler:this.deleteDocument})),ui.hasClass("x-tree-node-leaf")||(m.push("-"),m.push(this._getSortMenu())),ui.hasClass("pview")&&""!=a.preview_url&&(m.push("-"),m.push({text:_("resource_view"),handler:this.preview})),m},refreshResource:function(){this.refreshNode(this.cm.activeNode.id)},createResourceHere:function(itm){var at=this.cm.activeNode.attributes,p=itm.usePk?itm.usePk:at.pk;this.loadAction("a=resource/create&class_key="+itm.classKey+"&parent="+p+(at.ctx?"&context_key="+at.ctx:""))},createResource:function(itm,e){var at=this.cm.activeNode.attributes,p=itm.usePk?itm.usePk:at.pk;this.quickCreate(itm,e,itm.classKey,at.ctx,p)},_getCreateMenus:function(m,pk,ui){var types=MODx.config.resource_classes,o=this.fireEvent("loadCreateMenus",types);Ext.isObject(o)&&Ext.apply(types,o);var coreTypes=["modDocument","modWebLink","modSymLink","modStaticResource"],ct=[],qct=[];for(var k in types)(-1==coreTypes.indexOf(k)||ui.hasClass("pnew_"+k))&&(ct.push({text:types[k].text_create_here,classKey:k,usePk:pk||!1,handler:this.createResourceHere,scope:this}),ui&&ui.hasClass("pqcreate")&&qct.push({text:types[k].text_create,classKey:k,handler:this.createResource,scope:this}));return m.push({text:_("create"),handler:function(){return!1},menu:{items:ct}}),ui&&ui.hasClass("pqcreate")&&m.push({text:_("quick_create"),handler:function(){return!1},menu:{items:qct}}),m},_handleDrag:function(dropEvent){var encNodes=Ext.encode(function simplifyNodes(node){for(var resultNode={},kids=node.childNodes,len=kids.length,i=0;i*',description:"[[*pagetitle]]
"+_("resource_pagetitle_help"),anchor:"100%",allowBlank:!1},{xtype:"textfield",name:"longtitle",id:"modx-"+this.ident+"-longtitle",fieldLabel:_("resource_longtitle"),description:"[[*longtitle]]
"+_("resource_longtitle_help"),anchor:"100%"},{xtype:"textarea",name:"description",id:"modx-"+this.ident+"-description",fieldLabel:_("resource_description"),description:"[[*description]]
"+_("resource_description_help"),anchor:"100%",grow:!1,height:50},{xtype:"textarea",name:"introtext",id:"modx-"+this.ident+"-introtext",fieldLabel:_("resource_summary"),description:"[[*introtext]]
"+_("resource_summary_help"),anchor:"100%",height:50}]},{columnWidth:.4,border:!1,layout:"form",items:[{xtype:"modx-combo-template",name:"template",id:"modx-"+this.ident+"-template",fieldLabel:_("resource_template"),description:"[[*template]]
"+_("resource_template_help"),editable:!1,anchor:"100%",baseParams:{action:"element/template/getList",combo:"1",limit:0},value:MODx.config.default_template},{xtype:"textfield",name:"alias",id:"modx-"+this.ident+"-alias",fieldLabel:_("resource_alias"),description:"[[*alias]]
"+_("resource_alias_help"),anchor:"100%"},{xtype:"textfield",name:"menutitle",id:"modx-"+this.ident+"-menutitle",fieldLabel:_("resource_menutitle"),description:"[[*menutitle]]
"+_("resource_menutitle_help"),anchor:"100%"},{xtype:"textfield",fieldLabel:_("resource_link_attributes"),description:"[[*link_attributes]]
"+_("resource_link_attributes_help"),name:"link_attributes",id:"modx-"+this.ident+"-attributes",maxLength:255,anchor:"100%"},{xtype:"xcheckbox",boxLabel:_("resource_hide_from_menus"),description:"[[*hidemenu]]
"+_("resource_hide_from_menus_help"),hideLabel:!0,name:"hidemenu",id:"modx-"+this.ident+"-hidemenu",inputValue:1,checked:"1"==MODx.config.hidemenu_default?1:0},{xtype:"xcheckbox",name:"published",id:"modx-"+this.ident+"-published",boxLabel:_("resource_published"),description:"[[*published]]
"+_("resource_published_help"),hideLabel:!0,inputValue:1,checked:"1"==MODx.config.publish_default?1:0}]}]},MODx.getQRContentField(this.ident,config.record.class_key)]},{id:"modx-"+this.ident+"-settings",title:_("settings"),layout:"form",cls:"modx-panel",autoHeight:!0,forceLayout:!0,labelWidth:100,defaults:{autoHeight:!0,border:!1},items:MODx.getQRSettings(this.ident,config.record)}]}],keys:[{key:Ext.EventObject.ENTER,shift:!0,fn:this.submit,scope:this}]}),MODx.window.QuickCreateResource.superclass.constructor.call(this,config)},Ext.extend(MODx.window.QuickCreateResource,MODx.Window),Ext.reg("modx-window-quick-create-modResource",MODx.window.QuickCreateResource),MODx.window.QuickUpdateResource=function(config){config=config||{},this.ident=config.ident||"qur"+Ext.id(),Ext.applyIf(config,{title:_("quick_update_resource"),id:this.ident,action:"resource/update",buttons:[{text:config.cancelBtnText||_("cancel"),scope:this,handler:function(){this.hide()}},{text:config.saveBtnText||_("save"),scope:this,handler:function(){this.submit(!1)}},{text:config.saveBtnText||_("save_and_close"),cls:"primary-button",scope:this,handler:this.submit}]}),MODx.window.QuickUpdateResource.superclass.constructor.call(this,config)},Ext.extend(MODx.window.QuickUpdateResource,MODx.window.QuickCreateResource),Ext.reg("modx-window-quick-update-modResource",MODx.window.QuickUpdateResource),MODx.getQRContentField=function(id,cls){id=id||"qur",cls=cls||"modDocument";Ext.getBody().getViewSize();var o={};switch(cls){case"modSymLink":o={xtype:"textfield",fieldLabel:_("symlink"),name:"content",id:"modx-"+id+"-content",anchor:"100%",maxLength:255};break;case"modWebLink":o={xtype:"textfield",fieldLabel:_("weblink"),name:"content",id:"modx-"+id+"-content",anchor:"100%",maxLength:255,value:"http://"};break;case"modStaticResource":o={xtype:"modx-combo-browser",browserEl:"modx-browser",prependPath:!1,prependUrl:!1,fieldLabel:_("static_resource"),name:"content",id:"modx-"+id+"-content",anchor:"100%",maxLength:255,value:"",listeners:{select:{fn:function(data){"/"==data.url.substring(0,1)&&Ext.getCmp("modx-"+id+"-content").setValue(data.url.substring(1))},scope:this}}};break;default:o={xtype:"textarea",name:"content",id:"modx-"+id+"-content",fieldLabel:_("content"),labelSeparator:"",anchor:"100%",style:"min-height: 200px",grow:!0}}return o},MODx.getQRSettings=function(id,va){return[{layout:"column",border:!1,anchor:"100%",defaults:{labelSeparator:"",labelAlign:"top",border:!1,layout:"form"},items:[{columnWidth:.5,items:[{xtype:"hidden",name:"parent",id:"modx-"+(id=id||"qur")+"-parent",value:va.parent},{xtype:"hidden",name:"context_key",id:"modx-"+id+"-context_key",value:va.context_key},{xtype:"hidden",name:"class_key",id:"modx-"+id+"-class_key",value:va.class_key},{xtype:"hidden",name:"publishedon",id:"modx-"+id+"-publishedon",value:va.publishedon},{xtype:"modx-field-parent-change",fieldLabel:_("resource_parent"),description:"[[*parent]]
"+_("resource_parent_help"),name:"parent-cmb",id:"modx-"+id+"-parent-change",value:va.parent||0,anchor:"100%",parentcmp:"modx-"+id+"-parent",contextcmp:"modx-"+id+"-context_key",currentid:va.id},{xtype:"modx-combo-class-derivatives",fieldLabel:_("resource_type"),description:"[[*class_key]]
",name:"class_key",hiddenName:"class_key",id:"modx-"+id+"-class-key",anchor:"100%",value:null!=va.class_key?va.class_key:"modDocument"},{xtype:"modx-combo-content-type",fieldLabel:_("resource_content_type"),description:"[[*content_type]]
"+_("resource_content_type_help"),name:"content_type",hiddenName:"content_type",id:"modx-"+id+"-type",anchor:"100%",value:null!=va.content_type?va.content_type:MODx.config.default_content_type||1},{xtype:"modx-combo-content-disposition",fieldLabel:_("resource_contentdispo"),description:"[[*content_dispo]]
"+_("resource_contentdispo_help"),name:"content_dispo",hiddenName:"content_dispo",id:"modx-"+id+"-dispo",anchor:"100%",value:null!=va.content_dispo?va.content_dispo:0},{xtype:"numberfield",fieldLabel:_("resource_menuindex"),description:"[[*menuindex]]
"+_("resource_menuindex_help"),name:"menuindex",id:"modx-"+id+"-menuindex",width:75,value:va.menuindex||0}]},{columnWidth:.5,items:[{xtype:"xdatetime",fieldLabel:_("resource_publishedon"),description:"[[*publishedon]]
"+_("resource_publishedon_help"),name:"publishedon",id:"modx-"+id+"-publishedon",allowBlank:!0,dateFormat:MODx.config.manager_date_format,timeFormat:MODx.config.manager_time_format,startDay:parseInt(MODx.config.manager_week_start),dateWidth:153,timeWidth:153,offset_time:MODx.config.server_offset_time,value:va.publishedon},{xtype:va.canpublish?"xdatetime":"hidden",fieldLabel:_("resource_publishdate"),description:"[[*pub_date]]
"+_("resource_publishdate_help"),name:"pub_date",id:"modx-"+id+"-pub-date",allowBlank:!0,dateFormat:MODx.config.manager_date_format,timeFormat:MODx.config.manager_time_format,startDay:parseInt(MODx.config.manager_week_start),dateWidth:153,timeWidth:153,offset_time:MODx.config.server_offset_time,value:va.pub_date},{xtype:va.canpublish?"xdatetime":"hidden",fieldLabel:_("resource_unpublishdate"),description:"[[*unpub_date]]
"+_("resource_unpublishdate_help"),name:"unpub_date",id:"modx-"+id+"-unpub-date",allowBlank:!0,dateFormat:MODx.config.manager_date_format,timeFormat:MODx.config.manager_time_format,startDay:parseInt(MODx.config.manager_week_start),dateWidth:153,timeWidth:153,offset_time:MODx.config.server_offset_time,value:va.unpub_date},{xtype:"xcheckbox",boxLabel:_("resource_folder"),description:_("resource_folder_help"),hideLabel:!0,name:"isfolder",id:"modx-"+id+"-isfolder",inputValue:1,checked:null!=va.isfolder&&va.isfolder},{xtype:"xcheckbox",boxLabel:_("resource_richtext"),description:_("resource_richtext_help"),hideLabel:!0,name:"richtext",id:"modx-"+id+"-richtext",inputValue:1,checked:void 0!==va.richtext?va.richtext?1:0:"1"==MODx.config.richtext_default?1:0},{xtype:"xcheckbox",boxLabel:_("resource_searchable"),description:_("resource_searchable_help"),hideLabel:!0,name:"searchable",id:"modx-"+id+"-searchable",inputValue:1,checked:null!=va.searchable?va.searchable:"1"==MODx.config.search_default?1:0,listeners:{check:{fn:MODx.handleQUCB}}},{xtype:"xcheckbox",boxLabel:_("resource_cacheable"),description:_("resource_cacheable_help"),hideLabel:!0,name:"cacheable",id:"modx-"+id+"-cacheable",inputValue:1,checked:null!=va.cacheable?va.cacheable:"1"==MODx.config.cache_default?1:0},{xtype:"xcheckbox",name:"clearCache",id:"modx-"+id+"-clearcache",boxLabel:_("clear_cache_on_save"),description:_("clear_cache_on_save_msg"),hideLabel:!0,inputValue:1,checked:!0},{xtype:"xcheckbox",boxLabel:_("deleted"),description:_("resource_delete"),hideLabel:!0,name:"deleted",id:"modx-"+id+"-deleted",inputValue:1,checked:null!=va.deleted?va.deleted:0},{xtype:"xcheckbox",boxLabel:_("resource_alias_visible"),description:_("resource_alias_visible_help"),hideLabel:!0,name:"alias_visible",id:"modx-"+id+"-alias-visible",inputValue:1,checked:null!=va.alias_visible?va.alias_visible:1},{xtype:"xcheckbox",boxLabel:_("resource_uri_override"),description:_("resource_uri_override_help"),hideLabel:!0,name:"uri_override",id:"modx-"+id+"-uri-override",value:1,checked:!!parseInt(va.uri_override),listeners:{check:{fn:MODx.handleFreezeUri}}},{xtype:"textfield",fieldLabel:_("resource_uri"),description:"[[*uri]]
"+_("resource_uri_help"),name:"uri",id:"modx-"+id+"-uri",maxLength:255,anchor:"100%",value:va.uri||"",hidden:!va.uri_override}]}]}]},MODx.handleQUCB=function(cb){var h=Ext.getCmp(cb.id+"-hd");cb.checked&&h?(cb.setValue(1),h.setValue(1)):h&&(cb.setValue(0),h.setValue(0))},MODx.handleFreezeUri=function(cb){var uri=Ext.getCmp(cb.id.replace("-override",""));if(!uri)return!1;cb.checked?uri.show():uri.hide()},Ext.override(Ext.tree.AsyncTreeNode,{listeners:{click:{fn:function(){return console.log("Clicked me!",arguments),!1},scope:this}}}),MODx.tree.Element=function(config){config=config||{},Ext.applyIf(config,{rootVisible:!1,enableDD:!Ext.isEmpty(MODx.config.enable_dragdrop),ddGroup:"modx-treedrop-elements-dd",title:"",url:MODx.config.connector_url,action:"element/getnodes",sortAction:"element/sort",useDefaultToolbar:!1,baseParams:{currentElement:MODx.request.id||0,currentAction:MODx.request.a||0},tbar:[{cls:"tree-new-template",tooltip:{text:_("new")+" "+_("template")},handler:function(){this.redirect("?a=element/template/create")},scope:this,hidden:!MODx.perm.new_template},{cls:"tree-new-tv",tooltip:{text:_("new")+" "+_("tv")},handler:function(){this.redirect("?a=element/tv/create")},scope:this,hidden:!MODx.perm.new_tv},{cls:"tree-new-chunk",tooltip:{text:_("new")+" "+_("chunk")},handler:function(){this.redirect("?a=element/chunk/create")},scope:this,hidden:!MODx.perm.new_chunk},{cls:"tree-new-snippet",tooltip:{text:_("new")+" "+_("snippet")},handler:function(){this.redirect("?a=element/snippet/create")},scope:this,hidden:!MODx.perm.new_snippet},{cls:"tree-new-plugin",tooltip:{text:_("new")+" "+_("plugin")},handler:function(){this.redirect("?a=element/plugin/create")},scope:this,hidden:!MODx.perm.new_plugin},{cls:"tree-new-category",tooltip:{text:_("new_category")},handler:function(){this.createCategory(null,{target:this.getEl()})},scope:this,hidden:!MODx.perm.new_category}]}),MODx.tree.Element.superclass.constructor.call(this,config),this.on("afterSort",this.afterSort)},Ext.extend(MODx.tree.Element,MODx.tree.Tree,{forms:{},windows:{},stores:{},createCategory:function(n,e){var r={};this.cm.activeNode&&this.cm.activeNode.attributes.data&&(r.parent=this.cm.activeNode.attributes.data.id),MODx.load({xtype:"modx-window-category-create",record:r,listeners:{success:{fn:function(){var node=this.cm.activeNode?this.cm.activeNode.id:"n_category",self=-1!==node.indexOf("_category_");this.refreshNode(node,self)},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},renameCategory:function(itm,e){var r=this.cm.activeNode.attributes.data,w=MODx.load({xtype:"modx-window-category-rename",record:r,listeners:{success:{fn:function(r){var c=r.a.result.object,n=this.cm.activeNode;n.setText(c.category+" ("+c.id+")"),Ext.get(n.getUI().getEl()).frame(),n.attributes.data.id=c.id,n.attributes.data.category=c.category},scope:this},hide:{fn:function(){this.destroy()}}}});w.show(e.target)},removeCategory:function(itm,e){var id=this.cm.activeNode.attributes.data.id;MODx.msg.confirm({title:_("warning"),text:_("category_confirm_delete"),url:MODx.config.connector_url,params:{action:"element/category/remove",id},listeners:{success:{fn:function(){this.cm.activeNode.remove()},scope:this}}})},duplicateElement:function(itm,e,id,type){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"element/"+type+"/get",id},listeners:{success:{fn:function(results){var r={id,type,name:_("duplicate_of",{name:this.cm.activeNode.attributes.name}),caption:_("duplicate_of",{name:this.cm.activeNode.attributes.caption}),category:results.object.category,source:results.object.source,static:results.object.static,static_file:results.object.static_file};MODx.load({xtype:"modx-window-element-duplicate",record:r,listeners:{success:{fn:function(){this.refreshNode(this.cm.activeNode.id)},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},scope:this}}})},removeElement:function(itm,e){var oar=this.cm.activeNode.id.substr(2).split("_");MODx.msg.confirm({title:_("warning"),text:_("remove_this_confirm",{type:_(oar[0]),name:this.cm.activeNode.attributes.name}),url:MODx.config.connector_url,params:{action:"element/"+oar[0]+"/remove",id:oar[2]},listeners:{success:{fn:function(){this.cm.activeNode.remove(),MODx.request.a=="element/"+oar[0]+"/update"&&MODx.request.id==oar[2]&&MODx.loadPage("welcome")},scope:this}}})},activatePlugin:function(itm,e){var oar=this.cm.activeNode.id.substr(2).split("_");MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"element/plugin/activate",id:oar[2]},listeners:{success:{fn:function(){this.refreshParentNode()},scope:this}}})},deactivatePlugin:function(itm,e){var oar=this.cm.activeNode.id.substr(2).split("_");MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"element/plugin/deactivate",id:oar[2]},listeners:{success:{fn:function(){this.refreshParentNode()},scope:this}}})},quickCreate:function(itm,e,type){var r={category:this.cm.activeNode.attributes.pk||""},w=MODx.load({xtype:"modx-window-quick-create-"+type,record:r,listeners:{success:{fn:function(){this.refreshNode(this.cm.activeNode.id,!0)},scope:this},hide:{fn:function(){this.destroy()}}}});w.setValues(r),w.show(e.target)},quickUpdate:function(itm,e,type){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"element/"+type+"/get",id:this.cm.activeNode.attributes.pk},listeners:{success:{fn:function(r){var nameField="template"==type?"templatename":"name",w=MODx.load({xtype:"modx-window-quick-update-"+type,record:r.object,listeners:{success:{fn:function(r){this.refreshNode(this.cm.activeNode.id);var newTitle=''+Ext.util.Format.htmlEncode(r.f.findField(nameField).getValue())+" ("+w.record.id+")";w.setTitle(w.title.replace(//,newTitle))},scope:this},hide:{fn:function(){this.destroy()}}}});w.title+=': '+Ext.util.Format.htmlEncode(w.record[nameField])+" ("+w.record.id+")",w.setValues(r.object),w.show(e.target)},scope:this}}})},_createElement:function(itm,e,t){var oar=this.cm.activeNode.id.substr(2).split("_"),type="type"==oar[0]?oar[1]:oar[0],cat_id="type"==oar[0]?0:"category"==oar[1]?oar[2]:oar[3],a="element/"+type+"/create";return this.redirect("?a="+a+"&category="+cat_id),this.cm.hide(),!1},afterSort:function(o){var tn=o.event.target.attributes;if("category"==tn.type){var dn=o.event.dropNode.attributes;"n_category"!=tn.id&&"category"==dn.type?o.event.target.expand():(this.refreshNode(o.event.target.attributes.id,!0),this.refreshNode("n_type_"+o.event.dropNode.attributes.type,!0))}},_handleDrop:function(e){var target=e.target;return"above"!=e.point&&"below"!=e.point&&(("modCategory"==target.attributes.classKey||"root"==target.attributes.classKey)&&(!!this.isCorrectType(e.dropNode,target)&&("category"==target.attributes.type&&"append"==e.point||target.getDepth()>0)))},isCorrectType:function(dropNode,targetNode){var r=!1;return targetNode.attributes.type==dropNode.attributes.type&&(targetNode.parentNode&&("folder"==dropNode.attributes.cls&&"folder"==targetNode.attributes.cls&&dropNode.parentNode.id==targetNode.parentNode.id||"file"==targetNode.attributes.cls)||(r=!0)),r},_showContextMenu:function(n,e){if(this.cm.activeNode=n,this.cm.removeAll(),n.attributes.menu&&n.attributes.menu.items)this.addContextMenuItem(n.attributes.menu.items),this.cm.show(n.getUI().getEl(),"t?");else{var m=[];switch(n.attributes.classKey){case"root":m=this._getRootMenu(n);break;case"modCategory":m=this._getCategoryMenu(n);break;default:m=this._getElementMenu(n)}this.addContextMenuItem(m),this.cm.showAt(e.xy)}e.stopEvent()},_getQuickCreateMenu:function(n,m){for(var t,ui=n.getUI(),mn=[],types=["template","tv","chunk","snippet","plugin"],i=0;i"+a.text+"",handler:function(){return!1},header:!0}),m.push("-"),ui.hasClass("pedit")&&(m.push({text:_("edit_"+a.type),type:a.type,pk:a.pk,handler:function(itm,e){MODx.loadPage("element/"+itm.type+"/update","id="+itm.pk)}}),m.push({text:_("quick_update_"+a.type),type:a.type,handler:function(itm,e){this.quickUpdate(itm,e,itm.type)}}),"modPlugin"==a.classKey&&(a.active?m.push({text:_("plugin_deactivate"),type:a.type,handler:this.deactivatePlugin}):m.push({text:_("plugin_activate"),type:a.type,handler:this.activatePlugin}))),ui.hasClass("pnew")&&m.push({text:_("duplicate_"+a.type),pk:a.pk,type:a.type,handler:function(itm,e){this.duplicateElement(itm,e,itm.pk,itm.type)}}),ui.hasClass("pdelete")&&m.push({text:_("remove_"+a.type),handler:this.removeElement}),m.push("-"),ui.hasClass("pnew")&&m.push({text:_("add_to_category_"+a.type),handler:this._createElement}),ui.hasClass("pnewcat")&&m.push({text:_("new_category"),handler:this.createCategory}),m},_getCategoryMenu:function(n){var a=n.attributes,ui=n.getUI(),m=[];return m.push({text:""+a.text+"",handler:function(){return!1},header:!0}),m.push("-"),ui.hasClass("pnewcat")&&m.push({text:_("category_create"),handler:this.createCategory}),ui.hasClass("peditcat")&&m.push({text:_("category_rename"),handler:this.renameCategory}),m.length>2&&m.push("-"),a.elementType&&m.push({text:_("add_to_category_"+a.type),handler:this._createElement}),this._getQuickCreateMenu(n,m),ui.hasClass("pdelcat")&&(m.push("-"),m.push({text:_("category_remove"),handler:this.removeCategory})),m},_getRootMenu:function(n){var a=n.attributes,ui=n.getUI(),m=[];return ui.hasClass("pnew")&&(m.push({text:_("new_"+a.type),handler:this._createElement}),m.push({text:_("quick_create_"+a.type),type:a.type,handler:function(itm,e){this.quickCreate(itm,e,itm.type)}})),ui.hasClass("pnewcat")&&(ui.hasClass("pnew")&&m.push("-"),m.push({text:_("new_category"),handler:this.createCategory})),m},handleCreateClick:function(node){this.cm.activeNode=node,"category"!=this.cm.activeNode.id.substr(2).split("_")[0]?this._createElement(null,null,null):this.createCategory(null,{target:this})}}),Ext.reg("modx-tree-element",MODx.tree.Element),MODx.tree.Directory=function(config){(config=config||{}).id=config.id||Ext.id(),Ext.applyIf(config,{rootVisible:!0,rootName:"Filesystem",rootId:"/",title:_("files"),ddAppendOnly:!0,ddGroup:"modx-treedrop-sources-dd",url:MODx.config.connector_url,hideSourceCombo:!1,baseParams:{hideFiles:config.hideFiles||!1,hideTooltips:config.hideTooltips||!1,wctx:MODx.ctx||"web",currentAction:MODx.request.a||0,currentFile:MODx.request.file||"",source:config.source||0},action:"browser/directory/getList",primaryKey:"dir",useDefaultToolbar:!0,autoExpandRoot:!1,tbar:[{cls:"x-btn-icon icon-folder",tooltip:{text:_("file_folder_create")},handler:this.createDirectory,scope:this,hidden:!MODx.perm.directory_create},{cls:"x-btn-icon icon-page_white",tooltip:{text:_("file_create")},handler:this.createFile,scope:this,hidden:!MODx.perm.file_create},{cls:"x-btn-icon icon-file_upload",tooltip:{text:_("upload_files")},handler:this.uploadFiles,scope:this,hidden:!MODx.perm.file_upload},"->",{cls:"x-btn-icon icon-file_manager",tooltip:{text:_("modx_browser")},handler:this.loadFileManager,scope:this,hidden:!(MODx.perm.file_manager&&!MODx.browserOpen)}],tbarCfg:{id:config.id+"-tbar"}}),MODx.tree.Directory.superclass.constructor.call(this,config),this.addEvents({beforeUpload:!0,afterUpload:!0,afterQuickCreate:!0,afterRename:!0,afterRemove:!0,fileBrowserSelect:!0,changeSource:!0,afterSort:!0}),this.on("click",(function(n,e){n.select(),this.cm.activeNode=n}),this),this.on("render",(function(){var el=Ext.get(this.config.id);el.createChild({tag:"div",id:this.config.id+"_tb"}),el.createChild({tag:"div",id:this.config.id+"_filter"}),this.addSourceToolbar()}),this),this.on("show",(function(){if(!this.config.hideSourceCombo)try{this.sourceCombo.show()}catch(e){}}),this),this._init(),this.on("afterrender",this.showRefresh,this),this.on("afterSort",this._handleAfterDrop,this)},Ext.extend(MODx.tree.Directory,MODx.tree.Tree,{windows:{},getRootMenu:function(node){var menu=[];return MODx.perm.directory_create&&menu.push({text:_("file_folder_create"),handler:this.createDirectory,scope:this}),MODx.perm.file_create&&menu.push({text:_("file_create"),handler:this.createFile,scope:this}),MODx.perm.file_upload&&menu.push({text:_("upload_files"),handler:this.uploadFiles,scope:this}),node.ownerTree.el.hasClass("pupdate")&&menu.push(["-",{text:_("edit_media_source"),handler:function(){MODx.loadPage("source/update","id="+node.ownerTree.source)}}]),menu},_showContextMenu:function(node,e){var m;this.cm.activeNode=node,this.cm.removeAll(),node.isRoot?m=this.getRootMenu(node):node.attributes.menu&&node.attributes.menu.items&&(m=node.attributes.menu.items),m&&m.length>0&&(this.addContextMenuItem(m),this.cm.showAt(e.xy)),e.preventDefault(),e.stopEvent()},showRefresh:function(){var node=this.getRootNode(),inlineButtonsLang=this.getInlineButtonsLang(node),elId=node.ui.elNode.id+"_tools",el=document.createElement("div");el.id=elId,el.className="modx-tree-node-tool-ct",node.ui.elNode.appendChild(el),MODx.load({xtype:"modx-button",text:"",scope:this,tooltip:new Ext.ToolTip({title:inlineButtonsLang.refresh,target:this}),node,handler:function(btn,evt){evt.stopPropagation(evt),node.reload()},iconCls:"icon-refresh",renderTo:elId,listeners:{mouseover:function(button,e){button.tooltip.onTargetOver(e)},mouseout:function(button,e){button.tooltip.onTargetOut(e)}}})},addSourceToolbar:function(){if(this.sourceCombo=new MODx.combo.MediaSource({value:this.config.source||MODx.config.default_media_source,listWidth:236,listeners:{select:{fn:this.changeSource,scope:this},loaded:{fn:function(combo){var rec=combo.store.getById(this.config.source),rn=this.getRootNode();rn&&rec&&rn.setText(rec.data.name)},scope:this}}}),this.searchBar=new Ext.Toolbar({renderTo:this.tbar,id:this.config.id+"-sourcebar",items:[this.sourceCombo]}),this.on("resize",(function(){this.sourceCombo.setWidth(this.getWidth()-12)}),this),this.config.hideSourceCombo)try{this.sourceCombo.hide()}catch(e){}},changeSource:function(sel){this.cm.activeNode="";var s=sel.getValue(),rn=this.getRootNode();rn&&rn.setText(sel.getRawValue()),this.config.baseParams.source=s,this.fireEvent("changeSource",s),this.refresh()},_init:function(){var treeState=Ext.state.Manager.get(this.treestate_id);this.root.getPath("text")!==treeState&&this.root.expand()},_initExpand:function(){var treeState=Ext.state.Manager.get(this.treestate_id);Ext.isEmpty(this.config.openTo)?this.expandPath(treeState,"text"):this.selectPath("/"+_("files")+"/"+this.config.openTo,"text")},_saveState:function(n){n.expanded||n.isRoot||(n=n.parentNode),n.id==this.config.openTo&&n.select();var p=n.getPath("text");Ext.state.Manager.set(this.treestate_id,p)},_handleAfterDrop:function(o,r){var targetNode=o.event.target,dropNode=o.event.dropNode;if("append"==o.event.point&&targetNode){var ui=targetNode.getUI();ui.addClass("haschildren"),ui.removeClass("icon-resource")}if(MODx.request.a==MODx.action["resource/update"]&&dropNode.attributes.pk==MODx.request.id){var parentFieldCmb=Ext.getCmp("modx-resource-parent"),parentFieldHidden=Ext.getCmp("modx-resource-parent-hidden");parentFieldCmb&&parentFieldHidden&&(parentFieldHidden.setValue(dropNode.parentNode.attributes.pk),parentFieldCmb.setValue(dropNode.parentNode.attributes.text.replace(/(<([^>]+)>)/gi,"")))}targetNode.reload(!0)},_handleDrag:function(dropEvent){var from=dropEvent.dropNode.attributes.id,to=dropEvent.target.attributes.id;MODx.Ajax.request({url:this.config.url,params:{source:this.config.baseParams.source,from,to,action:this.config.sortAction||"browser/directory/sort",point:dropEvent.point},listeners:{success:{fn:function(r){var el=dropEvent.dropNode.getUI().getTextEl();el&&Ext.get(el).frame(),this.fireEvent("afterSort",{event:dropEvent,result:r})},scope:this},failure:{fn:function(r){return MODx.form.Handler.errorJSON(r),this.refresh(),!1},scope:this}}})},getPath:function(node){var path,p,a;if(node!==this.root){for(p=node.parentNode,a=[node.text];p&&p!==this.root;)a.unshift(p.text),p=p.parentNode;a.unshift(this.root.attributes.path||""),path=a.join(this.pathSeparator)}else path=node.attributes.path||"";return(path=path.replace(/^[\/\.]*/,""))+"/"},editFile:function(itm,e){MODx.loadPage("system/file/edit","file="+this.cm.activeNode.attributes.id+"&source="+this.config.source)},quickUpdateFile:function(itm,e){var node=this.cm.activeNode;MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/get",file:node.attributes.id,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:function(response){var r={file:node.attributes.id,name:node.text,path:node.attributes.pathRelative,source:this.getSource(),content:response.object.content};MODx.load({xtype:"modx-window-file-quick-update",record:r,listeners:{hide:{fn:function(){this.destroy()}}}}).show(e.target)},scope:this}}})},createFile:function(itm,e){var active=this.cm.activeNode,dir=active&&active.attributes&&(active.isRoot||"dir"==active.attributes.type)?active.attributes.id:"";MODx.loadPage("system/file/create","directory="+dir+"&source="+this.getSource())},quickCreateFile:function(itm,e){var r={directory:this.cm.activeNode.attributes.id,source:this.getSource()};MODx.load({xtype:"modx-window-file-quick-create",record:r,listeners:{success:{fn:function(r){this.fireEvent("afterQuickCreate"),this.refreshActiveNode()},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},browser:null,loadFileManager:function(btn,e){var refresh=!1;null===this.browser?this.browser=MODx.load({xtype:"modx-browser",hideFiles:MODx.config.modx_browser_tree_hide_files,rootId:"/",wctx:MODx.ctx,source:this.config.baseParams.source,listeners:{select:{fn:function(data){this.fireEvent("fileBrowserSelect",data)},scope:this}}}):refresh=!0,this.browser&&(this.browser.setSource(this.config.baseParams.source),refresh&&this.browser.win.tree.refresh(),this.browser.show())},renameNode:function(field,nv,ov){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/rename",new_name:nv,old_name:ov,file:this.treeEditor.editNode.id,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:function(r){this.fireEvent("afterRename"),this.refreshActiveNode()},scope:this}}})},renameDirectory:function(item,e){var node=this.cm.activeNode,r={old_name:node.text,name:node.text,path:node.attributes.pathRelative,source:this.getSource()};MODx.load({xtype:"modx-window-directory-rename",record:r,listeners:{success:{fn:this.refreshParentNode,scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},renameFile:function(item,e){var node=this.cm.activeNode,r={old_name:node.text,name:node.text,path:node.attributes.pathRelative,source:this.getSource()};MODx.load({xtype:"modx-window-file-rename",record:r,listeners:{success:{fn:function(r){this.fireEvent("afterRename"),this.refreshParentNode()},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},createDirectory:function(item,e){var node=!(!this.cm||!this.cm.activeNode)&&this.cm.activeNode,r={parent:node&&"dir"==node.attributes.type?node.attributes.pathRelative:"/",source:this.getSource()};MODx.load({xtype:"modx-window-directory-create",record:r,listeners:{success:{fn:function(){var parent=Ext.getCmp("folder-parent").getValue();this.cm.activeNode&&"constructor"===this.cm.activeNode.constructor.name||""===parent||"/"===parent?this.refresh():this.refreshActiveNode()},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e?e.target:Ext.getBody())},chmodDirectory:function(item,e){var node=this.cm.activeNode,r={dir:node.attributes.path,mode:node.attributes.perms,source:this.getSource()};MODx.load({xtype:"modx-window-directory-chmod",record:r,listeners:{success:{fn:this.refreshActiveNode,scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},removeDirectory:function(item,e){var node=this.cm.activeNode;MODx.msg.confirm({text:_("file_folder_remove_confirm"),url:MODx.config.connector_url,params:{action:"browser/directory/remove",dir:node.attributes.path,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:this._afterRemove,scope:this}}})},removeFile:function(item,e){var node=this.cm.activeNode;MODx.msg.confirm({text:_("file_confirm_remove"),url:MODx.config.connector_url,params:{action:"browser/file/remove",file:node.attributes.pathRelative,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:this._afterRemove,scope:this}}})},_afterRemove:function(){this.fireEvent("afterRemove"),this.refreshParentNode(),this.cm.activeNode=null},unpackFile:function(item,e){var node=this.cm.activeNode;MODx.msg.confirm({text:_("file_download_unzip")+" "+node.attributes.id,url:MODx.config.connectors_url,params:{action:"browser/file/unpack",file:node.attributes.id,wctx:MODx.ctx||"",source:this.getSource(),path:node.attributes.directory},listeners:{success:{fn:this.refreshParentNode,scope:this}}})},downloadFile:function(item,e){var node=this.cm.activeNode;MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/download",file:node.attributes.pathRelative,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:function(r){Ext.isEmpty(r.object.url)||(location.href=MODx.config.connector_url+"?action=browser/file/download&download=1&file="+node.attributes.id+"&HTTP_MODAUTH="+MODx.siteId+"&source="+this.getSource()+"&wctx="+MODx.ctx)},scope:this}}})},copyRelativePath:function(item,e){var node=this.cm.activeNode,dummyRelativePathInput=document.createElement("input");document.body.appendChild(dummyRelativePathInput),dummyRelativePathInput.setAttribute("value",node.attributes.pathRelative),dummyRelativePathInput.select(),document.execCommand("copy"),document.body.removeChild(dummyRelativePathInput)},getSource:function(){return this.config.baseParams.source},uploadFiles:function(btn,e){this.uploader||(this.uploader=new MODx.util.MultiUploadDialog.Dialog({url:MODx.config.connector_url,base_params:{action:"browser/file/upload",wctx:MODx.ctx||"",source:this.getSource()},cls:"ext-ux-uploaddialog-dialog modx-upload-window"}),this.uploader.on("show",this.beforeUpload,this),this.uploader.on("uploadsuccess",this.uploadSuccess,this),this.uploader.on("uploaderror",this.uploadError,this),this.uploader.on("uploadfailed",this.uploadFailed,this)),this.uploader.base_params.source=this.getSource(),this.uploader.show(btn)},uploadError:function(dlg,file,data,rec){},uploadFailed:function(dlg,file,rec){},uploadSuccess:function(){if(this.cm.activeNode){var node=this.cm.activeNode;if(node.isLeaf){var pn=node.isLeaf()?node.parentNode:node;pn?pn.reload():this.refreshActiveNode(),this.fireEvent("afterUpload",node)}else this.refreshActiveNode()}else this.refresh(),this.fireEvent("afterUpload")},beforeUpload:function(){var path=this.config.openTo||this.config.rootId||"/";this.cm.activeNode&&(path=this.getPath(this.cm.activeNode),this.cm.activeNode.isLeaf()&&(path=this.getPath(this.cm.activeNode.parentNode))),this.uploader.setBaseParams({action:"browser/file/upload",path,wctx:MODx.ctx||"",source:this.getSource()}),this.fireEvent("beforeUpload",this.cm.activeNode)}}),Ext.reg("modx-tree-directory",MODx.tree.Directory),MODx.window.CreateDirectory=function(config){config=config||{},Ext.applyIf(config,{title:_("file_folder_create"),url:MODx.config.connector_url,action:"browser/directory/create",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{fieldLabel:_("name"),name:"name",xtype:"textfield",anchor:"100%",allowBlank:!1},{fieldLabel:_("file_folder_parent"),id:"folder-parent",name:"parent",xtype:"textfield",anchor:"100%"}]}),MODx.window.CreateDirectory.superclass.constructor.call(this,config)},Ext.extend(MODx.window.CreateDirectory,MODx.Window),Ext.reg("modx-window-directory-create",MODx.window.CreateDirectory),MODx.window.ChmodDirectory=function(config){config=config||{},Ext.applyIf(config,{title:_("file_folder_chmod"),url:MODx.config.connector_url,action:"browser/directory/chmod",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{name:"dir",fieldLabel:_("name"),xtype:"statictextfield",anchor:"100%",submitValue:!0},{fieldLabel:_("mode"),name:"mode",xtype:"textfield",anchor:"100%",allowBlank:!1}]}),MODx.window.ChmodDirectory.superclass.constructor.call(this,config)},Ext.extend(MODx.window.ChmodDirectory,MODx.Window),Ext.reg("modx-window-directory-chmod",MODx.window.ChmodDirectory),MODx.window.RenameDirectory=function(config){config=config||{},Ext.applyIf(config,{title:_("rename"),url:MODx.config.connector_url,action:"browser/directory/rename",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{fieldLabel:_("path"),name:"path",xtype:"statictextfield",submitValue:!0,anchor:"100%"},{fieldLabel:_("old_name"),name:"old_name",xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("new_name"),name:"name",xtype:"textfield",anchor:"100%",allowBlank:!1}]}),MODx.window.RenameDirectory.superclass.constructor.call(this,config)},Ext.extend(MODx.window.RenameDirectory,MODx.Window),Ext.reg("modx-window-directory-rename",MODx.window.RenameDirectory),MODx.window.RenameFile=function(config){config=config||{},Ext.applyIf(config,{title:_("rename"),url:MODx.config.connector_url,action:"browser/file/rename",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{fieldLabel:_("path"),name:"path",xtype:"statictextfield",submitValue:!0,anchor:"100%"},{fieldLabel:_("old_name"),name:"old_name",xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("new_name"),name:"name",xtype:"textfield",anchor:"100%",allowBlank:!1},{name:"dir",xtype:"hidden"}]}),MODx.window.RenameFile.superclass.constructor.call(this,config)},Ext.extend(MODx.window.RenameFile,MODx.Window),Ext.reg("modx-window-file-rename",MODx.window.RenameFile),MODx.window.QuickUpdateFile=function(config){config=config||{},Ext.applyIf(config,{title:_("file_quick_update"),width:600,layout:"anchor",url:MODx.config.connector_url,action:"browser/file/update",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{xtype:"hidden",name:"file"},{fieldLabel:_("name"),name:"name",xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("path"),name:"path",xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("content"),xtype:"textarea",name:"content",anchor:"100%",height:200}],keys:[{key:Ext.EventObject.ENTER,shift:!0,fn:this.submit,scope:this}],buttons:[{text:config.cancelBtnText||_("cancel"),scope:this,handler:function(){this.hide()}},{text:config.saveBtnText||_("save"),scope:this,handler:function(){this.submit(!1)}},{text:config.saveBtnText||_("save_and_close"),cls:"primary-button",scope:this,handler:this.submit}]}),MODx.window.QuickUpdateFile.superclass.constructor.call(this,config)},Ext.extend(MODx.window.QuickUpdateFile,MODx.Window),Ext.reg("modx-window-file-quick-update",MODx.window.QuickUpdateFile),MODx.window.QuickCreateFile=function(config){config=config||{},Ext.applyIf(config,{title:_("file_quick_create"),width:600,layout:"anchor",url:MODx.config.connector_url,action:"browser/file/create",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{fieldLabel:_("directory"),name:"directory",submitValue:!0,xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("name"),name:"name",xtype:"textfield",anchor:"100%",allowBlank:!1},{fieldLabel:_("content"),xtype:"textarea",name:"content",anchor:"100%",height:200}],keys:[{key:Ext.EventObject.ENTER,shift:!0,fn:this.submit,scope:this}]}),MODx.window.QuickCreateFile.superclass.constructor.call(this,config)},Ext.extend(MODx.window.QuickCreateFile,MODx.Window),Ext.reg("modx-window-file-quick-create",MODx.window.QuickCreateFile),MODx.panel.FileTree=function(config){config=config||{},Ext.applyIf(config,{_treePrefix:"source-tree-",autoHeight:!0,defaults:{autoHeight:!0,border:!1}}),MODx.panel.FileTree.superclass.constructor.call(this,config),this.on("render",this.getSourceList,this)},Ext.extend(MODx.panel.FileTree,Ext.Container,{getSourceList:function(){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"source/getList",limit:0},listeners:{success:{fn:function(data){this.onSourceListReceived(data.results)},scope:this},failure:{fn:function(data){return data.total>0&&null!=data.results&&this.onSourceListReceived(data.results),!1},scope:this}}})},onSourceListReceived:function(sources){for(var k=0;k=0&&rect.left>=0&&rect.top<=height&&(image.src=image.getAttribute("data-src"),delete this.thumbnails[i])}}},refresh:function(){MODx.DataView.prototype.refresh.call(this),this.thumbnails=Array.prototype.slice.call(document.querySelectorAll("img[data-src]")),this.lazyLoad()},listeners:{selectionchange:{fn:this.showDetails,scope:this,buffer:100},dblclick:config.onSelect||{fn:Ext.emptyFn,scope:this},render:{fn:this.sortStore,scope:this},afterrender:{fn:function(){this.getEl().parent().on("scroll",(function(){this.lazyLoad()}),this)},scope:this}},prepareData:this.formatData.createDelegate(this)}),MODx.browser.View.superclass.constructor.call(this,config)},Ext.extend(MODx.browser.View,MODx.DataView,{templates:{},run:function(p){(p=p||{}).dir&&(this.dir=p.dir),Ext.applyIf(p,{action:"browser/directory/getFiles",dir:this.dir,source:this.config.source||MODx.config.default_media_source}),this.mask=new Ext.LoadMask(Ext.getBody(),{msg:_("loading")}),this.mask.show(),this.store.load({params:p,callback:function(){this.mask.hide(),this.refresh(),Ext.getCmp(this.ident+"-filepath").setValue(""),this.select(0)},scope:this})},editFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id];MODx.loadPage("system/file/edit","file="+encodeURIComponent(data.pathRelative)+"&source="+this.config.source)},quickUpdateFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id];MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/get",file:data.pathRelative,wctx:MODx.ctx||"",source:this.config.source},listeners:{success:{fn:function(response){var r={file:data.pathRelative,name:data.name,path:data.pathRelative,source:this.config.source,content:response.object.content};MODx.load({xtype:"modx-window-file-quick-update",record:r,listeners:{hide:{fn:function(){this.destroy()}}}}).show(e.target)},scope:this}}})},renameFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id],r={old_name:data.name,name:data.name,path:data.pathRelative,source:this.config.source};MODx.load({xtype:"modx-window-file-rename",record:r,listeners:{success:{fn:function(r){this.config.tree.refreshParentNode(),this.run()},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},downloadFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id];MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/download",file:data.pathRelative,wctx:MODx.ctx||"",source:this.config.source},listeners:{success:{fn:function(r){Ext.isEmpty(r.object.url)||(location.href=MODx.config.connector_url+"?action=browser/file/download&download=1&file="+data.pathRelative+"&HTTP_MODAUTH="+MODx.siteId+"&source="+this.config.source+"&wctx="+MODx.ctx)},scope:this}}})},copyRelativePath:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id],dummyRelativePathInput=document.createElement("input");document.body.appendChild(dummyRelativePathInput),dummyRelativePathInput.setAttribute("value",data.pathRelative),dummyRelativePathInput.select(),document.execCommand("copy"),document.body.removeChild(dummyRelativePathInput)},removeFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id];MODx.msg.confirm({text:_("file_remove_confirm"),url:MODx.config.connector_url,params:{action:"browser/file/remove",file:data.pathRelative,source:this.config.source,wctx:this.config.wctx||"web"},listeners:{success:{fn:function(r){this.config.tree.refreshParentNode(),this.run()},scope:this}}})},setTemplate:function(tpl){"list"===tpl?(this.tpl=this.templates.list,this.itemSelector="div.modx-browser-list-item"):(this.tpl=this.templates.thumb,this.itemSelector="div.modx-browser-thumb-wrap"),this.refresh(),this.select(0)},sortStore:function(){var v=MODx.config.modx_browser_default_sort||"name";this.store.sort(v,"name"==v?"ASC":"DESC"),this.select(0)},showDetails:function(){var node=this.getSelectedNodes(),detailPanel=Ext.getCmp(this.config.ident+"-img-detail-panel").body,okBtn=Ext.getCmp(this.ident+"-ok-btn");if(node&&node.length>0){node=node[0],okBtn&&okBtn.enable();var data=this.lookup[node.id];this.config.tree.getNodeById(data.pathRelative)&&(this.config.tree.cm.activeNode=this.config.tree.getNodeById(data.pathRelative),this.config.tree.getSelectionModel().select(this.config.tree.getNodeById(data.pathRelative))),Ext.getCmp(this.ident+"-filepath").setValue((-1===data.fullRelativeUrl.indexOf("http")?"/":"")+data.fullRelativeUrl),detailPanel.hide(),this.templates.details.overwrite(detailPanel,data),detailPanel.slideIn("l",{stopFx:!0,duration:".2"})}else okBtn&&okBtn.disable(),detailPanel.update("")},showFullView:function(name,ident){var data=this.lookup[name];if(data){this.fvWin||(this.fvWin=new Ext.Window({layout:"fit",width:600,height:450,bodyStyle:"padding: 0;",closeAction:"hide",plain:!0,items:[{id:this.ident+"modx-view-item-full",cls:"modx-browser-fullview",html:""}],buttons:[{text:_("close"),cls:"primary-button",handler:function(){this.fvWin.hide()},scope:this}]})),this.fvWin.show();var ratio=data.image_width>800?800/data.image_width:1,w=data.image_width<250?250:data.image_width>800?800:data.image_width,hfit=data.image_height*ratio+this.fvWin.footer.dom.clientHeight+1+this.fvWin.header.dom.clientHeight+1,h=data.image_height<200?200:data.image_height>600?hfit>600?600:hfit:data.image_height;this.fvWin.setSize(w,h),this.fvWin.center(),this.fvWin.setTitle(data.name),Ext.get(this.ident+"modx-view-item-full").update(''+data.name+'")}},formatData:function(data){var size;return data.shortName=Ext.util.Format.ellipsis(data.name,18),data.sizeString=0!=data.size?(size=data.size)<1024?size+" bytes":Math.round(10*size/1024)/10+" KB":0,data.imageSizeString=0!=data.preview?data.image_width+"x"+data.image_height+"px":0,data.imageSizeString="xpx"===data.imageSizeString?0:data.imageSizeString,data.dateString=Ext.isEmpty(data.lastmod)?0:new Date(data.lastmod).format(MODx.config.manager_date_format+" "+MODx.config.manager_time_format),this.lookup[data.name]=data,data},_initTemplates:function(){this.templates.thumb=new Ext.XTemplate('','
','
',' {name:htmlEncode}',"
"," {shortName:htmlEncode}","
","
"),this.templates.thumb.compile(),this.templates.list=new Ext.XTemplate('','
',' ',' {name:htmlEncode}',' ',' {sizeString}'," ",' ',' {imageSizeString}'," "," ","
","
"),this.templates.list.compile(),this.templates.details=new Ext.XTemplate('
',' ',' ','
",' {name:htmlEncode}',"
","
",' ','
',' ',"
","
",'
'," "+_("file_name")+":"," {name:htmlEncode}",' '," "+_("file_size")+":"," {sizeString}"," ",' '," "+_("image_size")+":"," {imageSizeString}"," ",' '," "+_("last_modified")+":"," {dateString}"," ","
","
","
"),this.templates.details.compile()}}),Ext.reg("modx-browser-view",MODx.browser.View),MODx.browser.Window=function(config){config=config||{},this.ident=Ext.id(),MODx.browserOpen=!0,this.tree=MODx.load({xtype:"modx-tree-directory",onUpload:function(){this.view.run()},scope:this,source:config.source||MODx.config.default_media_source,hideFiles:config.hideFiles||MODx.config.modx_browser_tree_hide_files,hideTooltips:config.hideTooltips||MODx.config.modx_browser_tree_hide_tooltips||!0,openTo:config.openTo||"",ident:this.ident,rootId:config.rootId||"/",rootName:_("files"),rootVisible:null==config.rootVisible||!Ext.isEmpty(config.rootId),id:this.ident+"-tree",hideSourceCombo:config.hideSourceCombo||!1,useDefaultToolbar:!1,listeners:{afterUpload:{fn:function(){this.view.run()},scope:this},afterQuickCreate:{fn:function(){this.view.run()},scope:this},afterRename:{fn:function(){this.view.run()},scope:this},afterRemove:{fn:function(){this.view.run()},scope:this},changeSource:{fn:function(s){this.config.source=s,this.view.config.source=s,this.view.baseParams.source=s,this.view.dir="/",this.view.run()},scope:this},afterrender:{fn:function(tree){tree.root.expand()},scope:this},beforeclick:{fn:function(node,e){if(node.leaf)return this.view.select(this.view.store.indexOfId("/"+node.attributes.url)),this.view.dir!==node.parentNode.id&&this.load(node.parentNode.id),!1;this.load(node.id)},scope:this}}}),this.view=MODx.load({xtype:"modx-browser-view",onSelect:{fn:this.onSelect,scope:this},source:config.source||MODx.config.default_media_source,allowedFileTypes:config.allowedFileTypes||"",wctx:config.wctx||"web",openTo:config.openTo||"",ident:this.ident,id:this.ident+"-view",tree:this.tree}),Ext.applyIf(config,{title:_("modx_browser")+" ("+(MODx.ctx?MODx.ctx:"web")+")",cls:"modx-browser modx-browser-window",layout:"border",minWidth:500,minHeight:300,width:"90%",height:.9*Ext.getBody().getViewSize().height,modal:!1,closeAction:"hide",border:!1,items:[{id:this.ident+"-browser-tree",cls:"modx-browser-tree",region:"west",width:250,height:"100%",items:this.tree,autoScroll:!0,split:!0,border:!1},{id:this.ident+"-browser-view",cls:"modx-browser-view-ct",region:"center",autoScroll:!0,border:!1,items:this.view,tbar:this.getToolbar(),bbar:this.getPathbar()},{id:this.ident+"-img-detail-panel",cls:"modx-browser-details-ct",region:"east",split:!0,border:!1,width:250}],buttons:[{id:this.ident+"-cancel-btn",text:_("cancel"),handler:this.close,scope:this},{id:this.ident+"-ok-btn",text:_("ok"),cls:"primary-button",handler:this.onSelect,scope:this}],keys:{key:27,handler:this.hide,scope:this}}),MODx.browser.Window.superclass.constructor.call(this,config),this.config=config,this.addEvents({select:!0})},Ext.extend(MODx.browser.Window,Ext.Window,{returnEl:null,filter:function(){var filter=Ext.getCmp(this.ident+"filter");this.view.store.filter("name",filter.getValue(),!0),this.view.select(0)},load:function(dir){dir=dir||(Ext.isEmpty(this.config.openTo)?"":this.config.openTo),this.view.run({dir,source:this.config.source,allowedFileTypes:this.config.allowedFileTypes||"",wctx:this.config.wctx||"web"}),this.sortStore()},sortStore:function(){var v=Ext.getCmp(this.ident+"sortSelect").getValue();this.view.store.sort(v,"name"==v?"ASC":"DESC"),this.view.select(0)},changeViewmode:function(){var v=Ext.getCmp(this.ident+"viewSelect").getValue();this.view.setTemplate(v),this.view.select(0)},reset:function(){this.rendered&&(Ext.getCmp(this.ident+"filter").reset(),this.view.getEl().dom.scrollTop=0),this.view.store.clearFilter(),this.view.select(0)},getToolbar:function(){return[{text:_("filter")+":",xtype:"label"},{xtype:"textfield",id:this.ident+"filter",selectOnFocus:!0,width:200,listeners:{render:{fn:function(){Ext.getCmp(this.ident+"filter").getEl().on("keyup",(function(){this.filter()}),this,{buffer:500})},scope:this}}},{text:_("sort_by")+":",xtype:"label"},{id:this.ident+"sortSelect",xtype:"combo",typeAhead:!0,triggerAction:"all",width:130,editable:!1,mode:"local",displayField:"desc",valueField:"name",lazyInit:!1,value:MODx.config.modx_browser_default_sort||"name",store:new Ext.data.SimpleStore({fields:["name","desc"],data:[["name",_("name")],["size",_("file_size")],["lastmod",_("last_modified")]]}),listeners:{select:{fn:this.sortStore,scope:this}}},"-",{text:_("files_viewmode")+":",xtype:"label"},"-",{id:this.ident+"viewSelect",xtype:"combo",typeAhead:!1,triggerAction:"all",width:100,editable:!1,mode:"local",displayField:"desc",valueField:"type",lazyInit:!1,value:MODx.config.modx_browser_default_viewmode||"grid",store:new Ext.data.SimpleStore({fields:["type","desc"],data:[["grid",_("files_viewmode_grid")],["list",_("files_viewmode_list")]]}),listeners:{select:{fn:this.changeViewmode,scope:this}}}]},getPathbar:function(){return{cls:"modx-browser-pathbbar",items:[{xtype:"textfield",id:this.ident+"-filepath",cls:"modx-browser-filepath",listeners:{focus:{fn:function(el){setTimeout((function(){var field=el.getEl().dom;if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(!0),selRange.moveStart("character",0),selRange.moveEnd("character",field.value.length),selRange.select()}else field.setSelectionRange?field.setSelectionRange(0,field.value.length):field.selectionStart&&(field.selectionStart=0,field.selectionEnd=field.value.length)}),50)},scope:this}}}]}},setReturn:function(el){this.returnEl=el},onSelect:function(data){var selNode=this.view.getSelectedNodes()[0],callback=this.config.onSelect||this.onSelectHandler,lookup=this.view.lookup,scope=this.config.scope;this.hide(this.config.animEl||null,(function(){if(selNode&&callback){var data=lookup[selNode.id];Ext.callback(callback,scope||this,[data]),this.fireEvent("select",data)}}),scope)},onSelectHandler:function(data){Ext.get(this.returnEl).dom.value=unescape(data.url)}}),Ext.reg("modx-browser-window",MODx.browser.Window),MODx.Media=function(config){config=config||{},this.ident=config.ident||Ext.id(),MODx.browserOpen=!0,this.tree=MODx.load({xtype:"modx-tree-directory",onUpload:function(){this.view.run()},scope:this,source:config.source||MODx.config.default_media_source,hideFiles:config.hideFiles||MODx.config.modx_browser_tree_hide_files,hideTooltips:config.hideTooltips||MODx.config.modx_browser_tree_hide_tooltips||!0,openTo:config.openTo||"",ident:this.ident,rootId:config.rootId||"/",rootName:_("files"),rootVisible:null==config.rootVisible||!Ext.isEmpty(config.rootId),id:this.ident+"-tree",hideSourceCombo:config.hideSourceCombo||!1,useDefaultToolbar:!1,listeners:{afterUpload:{fn:function(){this.view.run()},scope:this},afterQuickCreate:{fn:function(){this.view.run()},scope:this},afterRename:{fn:function(){this.view.run()},scope:this},afterRemove:{fn:function(){this.view.run()},scope:this},changeSource:{fn:function(s){this.config.source=s,this.view.config.source=s,this.view.baseParams.source=s,this.view.dir="/",this.view.run()},scope:this},afterrender:{fn:function(tree){tree.root.expand()},scope:this},beforeclick:{fn:function(node,e){if(node.leaf)return this.view.select(this.view.store.indexOfId("/"+node.attributes.url)),this.view.dir!==node.parentNode.id&&this.load(node.parentNode.id),!1;this.load(node.id)},scope:this}}}),this.view=MODx.load({xtype:"modx-browser-view",onSelect:{fn:this.onSelect,scope:this},source:config.source||MODx.config.default_media_source,allowedFileTypes:config.allowedFileTypes||"",wctx:config.wctx||"web",openTo:config.openTo||"",ident:this.ident,id:this.ident+"-view",tree:this.tree}),Ext.applyIf(config,{cls:"modx-browser modx-browser-panel container",layout:"border",width:"98%",height:"95%",items:[{region:"west",width:250,items:this.tree,id:this.ident+"-browser-tree",cls:"modx-browser-tree",autoScroll:!0,split:!0},{region:"center",layout:"fit",items:this.view,id:this.ident+"-browser-view",cls:"modx-browser-view-ct",autoScroll:!0,border:!1,tbar:this.getToolbar(),bbar:this.getPathbar()},{region:"east",width:250,id:this.ident+"-img-detail-panel",cls:"modx-browser-details-ct",split:!0}]}),MODx.Media.superclass.constructor.call(this,config),this.config=config},Ext.extend(MODx.Media,Ext.Container,{returnEl:null,filter:function(){var filter=Ext.getCmp(this.ident+"filter");this.view.store.filter("name",filter.getValue(),!0),this.view.select(0)},load:function(dir){dir=dir||(Ext.isEmpty(this.config.openTo)?"":this.config.openTo),this.view.run({dir,source:this.config.source,allowedFileTypes:this.config.allowedFileTypes||"",wctx:this.config.wctx||"web"}),this.sortStore()},sortStore:function(){var v=Ext.getCmp(this.ident+"sortSelect").getValue();this.view.store.sort(v,"name"==v?"ASC":"DESC"),this.view.select(0)},changeViewmode:function(){var v=Ext.getCmp(this.ident+"viewSelect").getValue();this.view.setTemplate(v),this.view.select(0)},reset:function(){this.rendered&&(Ext.getCmp(this.ident+"filter").reset(),this.view.getEl().dom.scrollTop=0),this.view.store.clearFilter(),this.view.select(0)},getToolbar:function(){return[{text:_("filter")+":",xtype:"label"},{xtype:"textfield",id:this.ident+"filter",selectOnFocus:!0,width:200,listeners:{render:{fn:function(){Ext.getCmp(this.ident+"filter").getEl().on("keyup",(function(){this.filter()}),this,{buffer:500})},scope:this}}},{text:_("sort_by")+":",xtype:"label"},{id:this.ident+"sortSelect",xtype:"combo",typeAhead:!0,triggerAction:"all",width:130,editable:!1,mode:"local",displayField:"desc",valueField:"name",lazyInit:!1,value:MODx.config.modx_browser_default_sort||"name",store:new Ext.data.SimpleStore({fields:["name","desc"],data:[["name",_("name")],["size",_("file_size")],["lastmod",_("last_modified")]]}),listeners:{select:{fn:this.sortStore,scope:this}}},"-",{text:_("files_viewmode")+":",xtype:"label"},"-",{id:this.ident+"viewSelect",xtype:"combo",typeAhead:!1,triggerAction:"all",width:100,editable:!1,mode:"local",displayField:"desc",valueField:"type",lazyInit:!1,value:MODx.config.modx_browser_default_viewmode||"grid",store:new Ext.data.SimpleStore({fields:["type","desc"],data:[["grid",_("files_viewmode_grid")],["list",_("files_viewmode_list")]]}),listeners:{select:{fn:this.changeViewmode,scope:this}}}]},getPathbar:function(){return{cls:"modx-browser-pathbbar",items:[{xtype:"textfield",id:this.ident+"-filepath",cls:"modx-browser-filepath",listeners:{focus:{fn:function(el){setTimeout((function(){var field=el.getEl().dom;if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(!0),selRange.moveStart("character",0),selRange.moveEnd("character",field.value.length),selRange.select()}else field.setSelectionRange?field.setSelectionRange(0,field.value.length):field.selectionStart&&(field.selectionStart=0,field.selectionEnd=field.value.length)}),50)},scope:this}}}]}},setReturn:function(el){this.returnEl=el},onSelect:function(data){},onSelectHandler:function(data){Ext.get(this.returnEl).dom.value=unescape(data.url)}}),Ext.reg("modx-media-view",MODx.Media),MODx.browser.RTE=function(config){config=config||{},this.ident=config.ident||Ext.id(),MODx.browserOpen=!0,Ext.Ajax.defaultHeaders={modAuth:config.auth},Ext.Ajax.extraParams={HTTP_MODAUTH:config.auth},this.tree=MODx.load({xtype:"modx-tree-directory",onUpload:function(){this.view.run()},scope:this,source:config.source||MODx.config.default_media_source,hideFiles:config.hideFiles||MODx.config.modx_browser_tree_hide_files,hideTooltips:config.hideTooltips||MODx.config.modx_browser_tree_hide_tooltips||!0,openTo:config.openTo||"",ident:this.ident,rootId:config.rootId||"/",rootName:_("files"),rootVisible:null==config.rootVisible||!Ext.isEmpty(config.rootId),id:this.ident+"-tree",hideSourceCombo:config.hideSourceCombo||!1,useDefaultToolbar:!1,listeners:{afterUpload:{fn:function(){this.view.run()},scope:this},afterQuickCreate:{fn:function(){this.view.run()},scope:this},afterRename:{fn:function(){this.view.run()},scope:this},afterRemove:{fn:function(){this.view.run()},scope:this},changeSource:{fn:function(s){this.config.source=s,this.view.config.source=s,this.view.baseParams.source=s,this.view.dir="/",this.view.run()},scope:this},afterrender:{fn:function(tree){tree.root.expand()},scope:this},beforeclick:{fn:function(node,e){if(node.leaf)return this.view.select(this.view.store.indexOfId("/"+node.attributes.url)),this.view.dir!==node.parentNode.id&&this.load(node.parentNode.id),!1;this.load(node.id)},scope:this}}}),this.view=MODx.load({xtype:"modx-browser-view",onSelect:{fn:this.onSelect,scope:this},source:config.source||MODx.config.default_media_source,allowedFileTypes:config.allowedFileTypes||"",wctx:config.wctx||"web",openTo:config.openTo||"",ident:this.ident,id:this.ident+"-view",tree:this.tree}),Ext.applyIf(config,{title:_("modx_browser"),cls:"modx-browser modx-browser-rte",layout:"border",renderTo:document.body,id:this.ident+"-viewport",onSelect:MODx.onBrowserReturn||function(data){},items:[{id:this.ident+"-browser-tree",cls:"modx-browser-tree",region:"west",width:250,height:"100%",split:!0,items:this.tree,autoScroll:!0},{id:this.ident+"-browser-view",cls:"modx-browser-view-ct",region:"center",autoScroll:!0,width:450,items:this.view,tbar:this.getToolbar(),bbar:this.getPathbar()},{id:this.ident+"-img-detail-panel",cls:"modx-browser-details-ct",region:"east",split:!0,width:200,minWidth:200,maxWidth:300},{id:this.ident+"-south",cls:"modx-browser-rte-buttons",region:"south",split:!1,bbar:["->",{xtype:"button",id:this.ident+"-cancel-btn",text:_("cancel"),minWidth:75,handler:this.onCancel,scope:this},{xtype:"button",id:this.ident+"-ok-btn",text:_("ok"),cls:"primary-button",minWidth:75,handler:this.onSelect,scope:this}]}]}),MODx.browser.RTE.superclass.constructor.call(this,config),this.config=config},Ext.extend(MODx.browser.RTE,Ext.Viewport,{returnEl:null,filter:function(){var filter=Ext.getCmp(this.ident+"filter");this.view.store.filter("name",filter.getValue(),!0),this.view.select(0)},load:function(dir){dir=dir||(Ext.isEmpty(this.config.openTo)?"":this.config.openTo),this.view.run({dir,source:this.config.source,allowedFileTypes:this.config.allowedFileTypes||"",wctx:this.config.wctx||"web"}),this.sortStore()},sortStore:function(){var v=Ext.getCmp(this.ident+"sortSelect").getValue();this.view.store.sort(v,"name"==v?"ASC":"DESC"),this.view.select(0)},changeViewmode:function(){var v=Ext.getCmp(this.ident+"viewSelect").getValue();this.view.setTemplate(v),this.view.select(0)},reset:function(){this.rendered&&(Ext.getCmp(this.ident+"filter").reset(),this.view.getEl().dom.scrollTop=0),this.view.store.clearFilter(),this.view.select(0)},getToolbar:function(){return[{text:_("filter")+":",xtype:"label"},{xtype:"textfield",id:this.ident+"filter",selectOnFocus:!0,width:200,listeners:{render:{fn:function(){Ext.getCmp(this.ident+"filter").getEl().on("keyup",(function(){this.filter()}),this,{buffer:500})},scope:this}}},{text:_("sort_by")+":",xtype:"label"},{id:this.ident+"sortSelect",xtype:"combo",typeAhead:!0,triggerAction:"all",width:130,editable:!1,mode:"local",displayField:"desc",valueField:"name",lazyInit:!1,value:MODx.config.modx_browser_default_sort||"name",store:new Ext.data.SimpleStore({fields:["name","desc"],data:[["name",_("name")],["size",_("file_size")],["lastmod",_("last_modified")]]}),listeners:{select:{fn:this.sortStore,scope:this}}},"-",{text:_("files_viewmode")+":",xtype:"label"},"-",{id:this.ident+"viewSelect",xtype:"combo",typeAhead:!1,triggerAction:"all",width:100,editable:!1,mode:"local",displayField:"desc",valueField:"type",lazyInit:!1,value:MODx.config.modx_browser_default_viewmode||"grid",store:new Ext.data.SimpleStore({fields:["type","desc"],data:[["grid",_("files_viewmode_grid")],["list",_("files_viewmode_list")]]}),listeners:{select:{fn:this.changeViewmode,scope:this}}}]},getPathbar:function(){return{cls:"modx-browser-pathbbar",items:[{xtype:"textfield",id:this.ident+"-filepath",cls:"modx-browser-filepath",listeners:{focus:{fn:function(el){setTimeout((function(){var field=el.getEl().dom;if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(!0),selRange.moveStart("character",0),selRange.moveEnd("character",field.value.length),selRange.select()}else field.setSelectionRange?field.setSelectionRange(0,field.value.length):field.selectionStart&&(field.selectionStart=0,field.selectionEnd=field.value.length)}),50)},scope:this}}}]}},setReturn:function(el){this.returnEl=el},onSelect:function(data){var selNode=this.view.getSelectedNodes()[0],callback=this.config.onSelect||this.onSelectHandler,lookup=this.view.lookup,scope=this.config.scope;callback&&(data=selNode?lookup[selNode.id]:null,Ext.callback(callback,scope||this,[data]),this.fireEvent("select",data),window.top.opener&&(window.top.close(),window.top.opener.focus()))},onCancel:function(){var callback=this.config.onSelect||this.onSelectHandler,scope=this.config.scope;Ext.callback(callback,scope||this,[null]),this.fireEvent("select",null),window.top.opener&&(window.top.close(),window.top.opener.focus())},onSelectHandler:function(data){Ext.get(this.returnEl).dom.value=unescape(data.url)}}),Ext.reg("modx-browser-rte",MODx.browser.RTE),Ext.apply(Ext,{isFirebug:window.console&&window.console.firebug}),MODx.Layout=function(config){config=config||{},Ext.BLANK_IMAGE_URL=MODx.config.manager_url+"assets/ext3/resources/images/default/s.gif",Ext.Ajax.defaultHeaders={modAuth:config.auth},Ext.Ajax.extraParams={HTTP_MODAUTH:config.auth},MODx.siteId=config.auth,MODx.expandHelp=!!+MODx.config.inline_help;var sp=new MODx.HttpProvider;Ext.state.Manager.setProvider(sp),sp.initState(MODx.defaultState),config.showTree=!1,Ext.applyIf(config,{layout:"border",id:"modx-layout",stateSave:!0,items:this.buildLayout(config)}),MODx.Layout.superclass.constructor.call(this,config),this.config=config,this.addEvents({afterLayout:!0,loadKeyMap:!0,loadTabs:!0}),this.loadKeys(),config.showTree||(Ext.getCmp("modx-leftbar-tabs").collapse(!1),Ext.get("modx-leftbar").hide(),Ext.get("modx-leftbar-tabs-xcollapsed").setStyle("display","none")),this.fireEvent("afterLayout")},Ext.extend(MODx.Layout,Ext.Viewport,{buildLayout:function(config){var items=[],north=this.getNorth(config),west=this.getWest(config),center=this.getCenter(config),south=this.getSouth(config),east=this.getEast(config);return north&&Ext.isObject(north)&&items.push(north),west&&Ext.isObject(west)&&items.push(west),center&&Ext.isObject(center)&&items.push(center),south&&Ext.isObject(south)&&items.push(south),east&&Ext.isObject(east)&&items.push(east),items},getNorth:function(config){return{xtype:"box",region:"north",applyTo:"modx-header"}},getWest:function(config){var tabs=[];MODx.perm.resource_tree&&(tabs.push({title:_("resources"),xtype:"modx-tree-resource",id:"modx-resource-tree"}),config.showTree=!0),MODx.perm.element_tree&&(tabs.push({title:_("elements"),xtype:"modx-tree-element",id:"modx-tree-element"}),config.showTree=!0),MODx.perm.file_tree&&(tabs.push({title:_("files"),xtype:"modx-panel-filetree",id:"modx-file-tree"}),config.showTree=!0);return{region:"west",applyTo:"modx-leftbar",id:"modx-leftbar-tabs",split:!0,width:310,minSize:288,autoScroll:!0,unstyled:!0,collapseMode:"mini",useSplitTips:!0,monitorResize:!0,layout:"anchor",items:[{xtype:"modx-tabs",plain:!0,defaults:{autoScroll:!0,fitToFrame:!0},id:"modx-leftbar-tabpanel",border:!1,anchor:"100%",activeTab:0,stateful:!0,stateEvents:["tabchange"],getState:function(){return{activeTab:this.items.indexOf(this.getActiveTab())}},items:tabs}],getState:function(){return{collapsed:this.collapsed,width:this.width}},listeners:{beforestatesave:this.onBeforeSaveState,scope:this}}},getCenter:function(config){return{region:"center",applyTo:"modx-content",padding:"0 1px 0 0",bodyStyle:"background-color:transparent;",id:"modx-content",border:!1,autoScroll:!0}},getSouth:function(config){},getEast:function(config){},getLeftBar:function(){var nav=Ext.getCmp("modx-leftbar-tabpanel");return nav||null},addToLeftBar:function(items){var nav=this.getLeftBar();nav&&items&&(nav.add(items),this.onAfterLeftBarAdded(nav,items))},onAfterLeftBarAdded:function(nav,items){},loadKeys:function(){Ext.KeyMap.prototype.stopEvent=!0;var k=new Ext.KeyMap(Ext.get(document));k.addBinding({key:Ext.EventObject.H,ctrl:!0,shift:!0,fn:this.toggleLeftbar,scope:this,stopEvent:!0}),k.addBinding({key:Ext.EventObject.N,ctrl:!0,shift:!0,fn:function(){var t=Ext.getCmp("modx-resource-tree");t&&t.quickCreate(document,{},"modDocument","web",0)},stopEvent:!0}),k.addBinding({key:Ext.EventObject.U,ctrl:!0,shift:!0,alt:!1,fn:MODx.clearCache,scope:this,stopEvent:!0}),this.fireEvent("loadKeyMap",{keymap:k})},refreshTrees:function(){var t;(t=Ext.getCmp("modx-resource-tree"))&&t.rendered&&t.refresh(),(t=Ext.getCmp("modx-tree-element"))&&t.rendered&&t.refresh(),(t=Ext.getCmp("modx-file-tree"))&&t.rendered&&t.items.each((function(tree,idx){tree.refresh()}))},leftbarVisible:!0,toggleLeftbar:function(){this.leftbarVisible?this.hideLeftbar(!0):this.showLeftbar(!0),this.leftbarVisible=!this.leftbarVisible},hideLeftbar:function(anim,state){Ext.getCmp("modx-leftbar-tabs").collapse(anim),Ext.isBoolean(state)&&(this.stateSave=state)},showLeftbar:function(anim){Ext.getCmp("modx-leftbar-tabs").expand(anim)},onBeforeSaveState:function(component,state){var collapsed=state.collapsed;if(collapsed&&!this.stateSave)return this.stateSave=!0,!1;if(!collapsed){var wrap=Ext.get("modx-leftbar").down("div");wrap.isVisible()||(wrap.setVisible(!0),Ext.getCmp("modx-leftbar-tabpanel").expand(!0))}}}),MODx.LayoutMgr=function(){var _activeMenu="menu0";return{loadPage:function(action,parameters){var parts=[];action&&(!isNaN(parseInt(action))||"?"!=action.substr(0,1)&&"index.php?"!=action.substr(0,10)?parts.push("?a="+action):parts.push(action)),parameters&&parts.push(parameters);var url=parts.join("&");if(MODx.fireEvent("beforeLoadPage",url)){var e=window.event,middleMouseButtonClick=e&&(4===e.button||2===e.which),keyboardKeyPressed=e&&(1===e.button||!0===e.ctrlKey||!0===e.metaKey||!0===e.shiftKey);if(middleMouseButtonClick||keyboardKeyPressed)return window.open(url);location.href=url}return!1},changeMenu:function(a,sm){if(sm===_activeMenu)return!1;Ext.get(sm).addClass("active");var om=Ext.get(_activeMenu);return om&&om.removeClass("active"),_activeMenu=sm,!1}}}(),MODx.loadPage=MODx.LayoutMgr.loadPage,MODx.showDashboard=MODx.LayoutMgr.showDashboard,MODx.hideDashboard=MODx.LayoutMgr.hideDashboard,MODx.changeMenu=MODx.LayoutMgr.changeMenu; \ No newline at end of file +function(window){"use strict";var CanvasPrototype=window.HTMLCanvasElement&&window.HTMLCanvasElement.prototype,hasBlobConstructor=window.Blob&&function(){try{return Boolean(new Blob)}catch(e){return!1}}(),hasArrayBufferViewSupport=hasBlobConstructor&&window.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(e){return!1}}(),BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,dataURLtoBlob=(hasBlobConstructor||BlobBuilder)&&window.atob&&window.ArrayBuffer&&window.Uint8Array&&function(dataURI){var byteString,arrayBuffer,intArray,i,mimeString,bb;for(byteString=dataURI.split(",")[0].indexOf("base64")>=0?atob(dataURI.split(",")[1]):decodeURIComponent(dataURI.split(",")[1]),arrayBuffer=new ArrayBuffer(byteString.length),intArray=new Uint8Array(arrayBuffer),i=0;i0,dataURLtoBlob=window.dataURLtoBlob,_rimg=/img/i,_rcanvas=/canvas/i,_rimgcanvas=/img|canvas/i,_rinput=/input/i,_rdata=/^data:[^,]+,/,_toString={}.toString,Math=window.Math,_SIZE_CONST=function(pow){return(pow=new window.Number(Math.pow(1024,pow))).from=function(sz){return Math.round(sz*this)},pow},_elEvents={},_infoReader=[],_readerEvents="abort progress error load loadend",_xhrPropsExport="status statusText readyState response responseXML responseText responseBody".split(" "),_isArray=function(ar){return ar&&"length"in ar},_each=function(obj,fn,ctx){if(obj)if(_isArray(obj))for(var i=0,n=obj.length;i=_length&&!_fail&&queue.end()},isFail:function(){return _fail},fail:function(){!_fail&&fn(_fail=!0)},end:function(){_end||(_end=!0,fn())}};return queue},each:_each,afor:function(array,callback){var i=0,n=array.length;_isArray(array)&&n--?function _next(){callback(n!=i&&_next,array[i],i++)}():callback(!1)},extend:_extend,isFile:function(file){return"[object File]"===_toString.call(file)},isBlob:function(blob){return this.isFile(blob)||"[object Blob]"===_toString.call(blob)},isCanvas:function(el){return el&&_rcanvas.test(el.nodeName)},getFilesFilter:function(filter){return(filter="string"==typeof filter?filter:filter.getAttribute&&filter.getAttribute("accept")||"")?new RegExp("("+filter.replace(/\./g,"\\.").replace(/,/g,"|")+")$","i"):/./},readAsDataURL:function(file,fn){api.isCanvas(file)?_emit(file,fn,"load",api.toDataURL(file)):_readAs(file,fn,"DataURL")},readAsBinaryString:function(file,fn){_hasSupportReadAs("BinaryString")?_readAs(file,fn,"BinaryString"):_readAs(file,(function(evt){if("load"==evt.type)try{evt.result=api.toBinaryString(evt.result)}catch(e){evt.type="error",evt.message=e.toString()}fn(evt)}),"DataURL")},readAsArrayBuffer:function(file,fn){_readAs(file,fn,"ArrayBuffer")},readAsText:function(file,encoding,fn){fn||(fn=encoding,encoding="utf-8"),_readAs(file,fn,"Text",encoding)},toDataURL:function(el,type){return"string"==typeof el?el:el.toDataURL?el.toDataURL(type||"image/png"):void 0},toBinaryString:function(val){return window.atob(api.toDataURL(val).replace(_rdata,""))},readAsImage:function(file,fn,progress){if(api.isBlob(file))if(apiURL){var data=apiURL.createObjectURL(file);undefined===data?_emit(file,fn,"error"):api.readAsImage(data,fn,progress)}else api.readAsDataURL(file,(function(evt){"load"==evt.type?api.readAsImage(evt.result,fn,progress):(progress||"error"==evt.type)&&_emit(file,fn,evt,null,{loaded:evt.loaded,total:evt.total})}));else if(api.isCanvas(file))_emit(file,fn,"load",file);else if(_rimg.test(file.nodeName))if(file.complete)_emit(file,fn,"load",file);else{_one(file,"error abort load",(function _fn(evt){"load"==evt.type&&apiURL&&apiURL.revokeObjectURL(file.src),_off(file,"error abort load",_fn),_emit(file,fn,evt,file)}))}else if(file.iframe)_emit(file,fn,{type:"error"});else{var img=api.newImage(file.dataURL||file);api.readAsImage(img,fn,progress)}},checkFileObj:function(name){var file={},accept=api.accept;return"object"==typeof name?file=name:file.name=(name+"").split(/\\|\//g).pop(),null==file.type&&(file.type=file.name.split(".").pop()),_each(accept,(function(ext,type){((ext=new RegExp(ext.replace(/\s/g,"|"),"i")).test(file.type)||api.ext2mime[file.type])&&(file.type=api.ext2mime[file.type]||type.split("/")[0]+"/"+file.type)})),file},getDropFiles:function(evt,callback){var items,files=[],all=[],dataTransfer=_getDataTransfer(evt),transFiles=dataTransfer.files,transItems=dataTransfer.items,entrySupport=_isArray(transItems)&&transItems[0]&&_getAsEntry(transItems[0]),queue=api.queue((function(){callback(files,all)}));if(entrySupport)if(normalize&&transFiles){var file,entry,i=transFiles.length;for(items=new Array(i);i--;){file=transFiles[i];try{entry=_getAsEntry(transItems[i])}catch(err){api.log("[err] getDropFiles: ",err),entry=null}_isEntry(entry)&&(entry.isDirectory||entry.isFile&&file.name==file.name.normalize("NFC"))?items[i]=entry:items[i]=file}}else items=transItems;else items=transFiles;_each(items||[],(function(item){queue.inc();try{entrySupport&&_isEntry(item)?_readEntryAsFiles(item,(function(err,entryFiles,allEntries){err?api.log("[err] getDropFiles:",err):files.push.apply(files,entryFiles),all.push.apply(all,allEntries),queue.next()})):function(file,callback){if(!file.type&&(safari||file.size%4096==0&&file.size<=102400))if(FileReader)try{var reader=new FileReader;_one(reader,_readerEvents,(function(evt){var isFile="error"!=evt.type;isFile?(null!=reader.readyState&&reader.readyState!==reader.LOADING||reader.abort(),callback(isFile)):callback(!1,reader.error)})),reader.readAsDataURL(file)}catch(err){callback(!1,err)}else callback(null,new Error("FileReader is not supported"));else callback(!0)}(item,(function(yes,err){yes?files.push(item):item.error=err,all.push(item),queue.next()}))}catch(err){queue.next(),api.log("[err] getDropFiles: ",err)}})),queue.check()},getFiles:function(input,filter,callback){var files=[];return callback?(api.filterFiles(api.getFiles(input),filter,callback),null):(input.jquery&&(input.each((function(){files=files.concat(api.getFiles(this))})),input=files,files=[]),"string"==typeof filter&&(filter=api.getFilesFilter(filter)),input.originalEvent?input=_fixEvent(input.originalEvent):input.srcElement&&(input=_fixEvent(input)),input.dataTransfer?input=input.dataTransfer:input.target&&(input=input.target),input.files?(files=input.files,html5||(files[0].blob=input,files[0].iframe=!0)):!html5&&isInputFile(input)?api.trim(input.value)&&((files=[api.checkFileObj(input.value)])[0].blob=input,files[0].iframe=!0):_isArray(input)&&(files=input),api.filter(files,(function(file){return!filter||filter.test(file.name)})))},getTotalSize:function(files){for(var size=0,i=files&&files.length;i--;)size+=files[i].size;return size},getInfo:function(file,fn){var info={},readers=_infoReader.concat();api.isBlob(file)?function _next(){var reader=readers.shift();reader?reader.test(file.type)?reader(file,(function(err,res){err?fn(err):(_extend(info,res),_next())})):_next():fn(!1,info)}():fn("not_support_info",info)},addInfoReader:function(mime,fn){fn.test=function(type){return mime.test(type)},_infoReader.push(fn)},filter:function(input,fn){for(var val,result=[],i=0,n=input.length;i>2,enc2=(3&byte1)<<4|byte2>>4;isNaN(byte2)?enc3=enc4=64:(enc3=(15&byte2)<<2|byte3>>6,enc4=isNaN(byte3)?64:63&byte3),outStr+=b64.charAt(enc1)+b64.charAt(enc2)+b64.charAt(enc3)+b64.charAt(enc4)}return outStr}};function _emit(target,fn,name,res,ext){var evt={type:name.type||name,target,result:res};_extend(evt,ext),fn(evt)}function _hasSupportReadAs(method){return FileReader&&!!FileReader.prototype["readAs"+method]}function _readAs(file,fn,method,encoding){if(api.isBlob(file)&&_hasSupportReadAs(method)){var Reader=new FileReader;_on(Reader,_readerEvents,(function _fn(evt){var type=evt.type;"progress"==type?_emit(file,fn,evt,evt.target.result,{loaded:evt.loaded,total:evt.total}):"loadend"==type?(_off(Reader,_readerEvents,_fn),Reader=null):_emit(file,fn,evt,evt.target.result)}));try{encoding?Reader["readAs"+method](file,encoding):Reader["readAs"+method](file)}catch(err){_emit(file,fn,"error",undefined,{error:err.toString()})}}else _emit(file,fn,"error",undefined,{error:"filreader_not_support_"+method})}function _isEntry(item){return item&&(item.isFile||item.isDirectory)}function _getAsEntry(item){var entry;return item.getAsEntry?entry=item.getAsEntry():item.webkitGetAsEntry&&(entry=item.webkitGetAsEntry()),entry}function _readEntryAsFiles(entry,callback){if(entry)if(entry.isFile)entry.file((function(file){file.fullPath=entry.fullPath,callback(!1,[file],[file])}),(function(err){entry.error=err,callback("FileError.code: "+err.code,[],[entry])}));else if(entry.isDirectory){var reader=entry.createReader(),firstAttempt=!0,files=[],all=[entry],onerror=function(err){entry.error=err,callback("DirectoryError.code: "+err.code,files,all)};reader.readEntries((function ondone(entries){firstAttempt&&(firstAttempt=!1,entries.length||(entry.error=new Error("directory is empty"))),entries.length?api.afor(entries,(function(next,entry){_readEntryAsFiles(entry,(function(err,entryFiles,allEntries){err||(files=files.concat(entryFiles)),all=all.concat(allEntries),next?next():reader.readEntries(ondone,onerror)}))})):callback(!1,files,all)}),onerror)}else _readEntryAsFiles(_getAsEntry(entry),callback);else{var err=new Error("invalid entry");(entry=new Object(entry)).error=err,callback(err.message,[],[entry])}}function isInputFile(el){return _rinput.test(el&&el.tagName)}function _getDataTransfer(evt){return(evt.originalEvent||evt||"").dataTransfer||{}}api.addInfoReader(/^image/,(function(file,callback){if(!file.__dimensions){var defer=file.__dimensions=api.defer();api.readAsImage(file,(function(evt){var img=evt.target;defer.resolve("load"!=evt.type&&"error",{width:img.width,height:img.height}),img.src=api.EMPTY_PNG,img=null}))}file.__dimensions.then(callback)})),api.event.dnd=function(el,onHover,onDrop){var _id,_type;onDrop||(onDrop=onHover,onHover=api.F),FileReader?(_on(el,"dragenter dragleave dragover",onHover.ff=onHover.ff||function(evt){for(var types=_getDataTransfer(evt).types,i=types&&types.length,debounceTrigger=!1;i--;)if(~types[i].indexOf("File")){evt.preventDefault(),_type!==evt.type&&("dragleave"!=(_type=evt.type)&&onHover.call(evt.currentTarget,!0,evt),debounceTrigger=!0);break}debounceTrigger&&(clearTimeout(_id),_id=setTimeout((function(){onHover.call(evt.currentTarget,"dragleave"!=_type,evt)}),50))}),_on(el,"drop",onDrop.ff=onDrop.ff||function(evt){evt.preventDefault(),_type=0,onHover.call(evt.currentTarget,!1,evt),api.getDropFiles(evt,(function(files,all){onDrop.call(evt.currentTarget,files,all,evt)}))})):api.log("Drag'n'Drop -- not supported")},api.event.dnd.off=function(el,onHover,onDrop){_off(el,"dragenter dragleave dragover",onHover.ff),_off(el,"drop",onDrop.ff)},jQuery&&!jQuery.fn.dnd&&(jQuery.fn.dnd=function(onHover,onDrop){return this.each((function(){api.event.dnd(this,onHover,onDrop)}))},jQuery.fn.offdnd=function(onHover,onDrop){return this.each((function(){api.event.dnd.off(this,onHover,onDrop)}))}),window.FileAPI=_extend(api,window.FileAPI),api.log("FileAPI: "+api.version),api.log("protocol: "+window.location.protocol),api.log("doctype: ["+doctype.name+"] "+doctype.publicId+" "+doctype.systemId),_each(document.getElementsByTagName("meta"),(function(meta){/x-ua-compatible/i.test(meta.getAttribute("http-equiv"))&&api.log("meta.http-equiv: "+meta.getAttribute("content"))}));try{_supportConsoleLog=!!console.log,_supportConsoleLogApply=!!console.log.apply}catch(err){}api.flashUrl||(api.flashUrl=api.staticPath+"FileAPI.flash.swf"),api.flashImageUrl||(api.flashImageUrl=api.staticPath+"FileAPI.flash.image.swf"),api.flashWebcamUrl||(api.flashWebcamUrl=api.staticPath+"FileAPI.flash.camera.swf")}(window),function(api,document,undef){"use strict";var min=Math.min,round=Math.round,getCanvas=function(){return document.createElement("canvas")},support=!1,exifOrientation={8:270,3:180,6:90,7:270,4:180,5:90};try{support=getCanvas().toDataURL("image/png").indexOf("data:image/png")>-1}catch(e){}function Image(file){if(file instanceof Image){var img=new Image(file.file);return api.extend(img.matrix,file.matrix),img}if(!(this instanceof Image))return new Image(file);this.file=file,this.size=file.size||100,this.matrix={sx:0,sy:0,sw:0,sh:0,dx:0,dy:0,dw:0,dh:0,resize:0,deg:0,quality:1,filter:0}}Image.prototype={image:!0,constructor:Image,set:function(attrs){return api.extend(this.matrix,attrs),this},crop:function(x,y,w,h){return undefined===w&&(w=x,h=y,x=y=0),this.set({sx:x,sy:y,sw:w,sh:h||w})},resize:function(w,h,strategy){return/min|max|height|width/.test(h)&&(strategy=h,h=w),this.set({dw:w,dh:h||w,resize:strategy})},preview:function(w,h){return this.resize(w,h||w,"preview")},rotate:function(deg){return this.set({deg})},filter:function(filter){return this.set({filter})},overlay:function(images){return this.set({overlay:images})},clone:function(){return new Image(this)},_load:function(image,fn){var self=this;/img|video/i.test(image.nodeName)?fn.call(self,null,image):api.readAsImage(image,(function(evt){fn.call(self,"load"!=evt.type,evt.result)}))},_apply:function(image,fn){var copy,canvas=getCanvas(),m=this.getMatrix(image),ctx=canvas.getContext("2d"),width=image.videoWidth||image.width,height=image.videoHeight||image.height,deg=m.deg,dw=m.dw,dh=m.dh,w=width,h=height,filter=m.filter,buffer=image,overlay=m.overlay,queue=api.queue((function(){image.src=api.EMPTY_PNG,fn(!1,canvas)})),renderImageToCanvas=api.renderImageToCanvas;for(deg-=360*Math.floor(deg/360),image._type=this.file.type;m.multipass&&min(w/dw,h/dh)>2;)w=w/2+.5|0,h=h/2+.5|0,(copy=getCanvas()).width=w,copy.height=h,buffer!==image?(renderImageToCanvas(copy,buffer,0,0,buffer.width,buffer.height,0,0,w,h),buffer=copy):(renderImageToCanvas(buffer=copy,image,m.sx,m.sy,m.sw,m.sh,0,0,w,h),m.sx=m.sy=m.sw=m.sh=0);canvas.width=deg%180?dh:dw,canvas.height=deg%180?dw:dh,canvas.type=m.type,canvas.quality=m.quality,ctx.rotate(deg*Math.PI/180),renderImageToCanvas(ctx.canvas,buffer,m.sx,m.sy,m.sw||buffer.width,m.sh||buffer.height,180==deg||270==deg?-dw:0,90==deg||180==deg?-dh:0,dw,dh),dw=canvas.width,dh=canvas.height,overlay&&api.each([].concat(overlay),(function(over){queue.inc();var img=new window.Image,fn=function(){var x=0|over.x,y=0|over.y,w=over.w||img.width,h=over.h||img.height,rel=over.rel;x=1==rel||4==rel||7==rel?(dw-w+x)/2:2==rel||5==rel||8==rel?dw-(w+x):x,y=3==rel||4==rel||5==rel?(dh-h+y)/2:rel>=6?dh-(h+y):y,api.event.off(img,"error load abort",fn);try{ctx.globalAlpha=over.opacity||1,ctx.drawImage(img,x,y,w,h)}catch(er){}queue.next()};api.event.on(img,"error load abort",fn),img.src=over.src,img.complete&&fn()})),filter&&(queue.inc(),Image.applyFilter(canvas,filter,queue.next)),queue.check()},getMatrix:function(image){var w,h,m=api.extend({},this.matrix),sw=m.sw=m.sw||image.videoWidth||image.naturalWidth||image.width,sh=m.sh=m.sh||image.videoHeight||image.naturalHeight||image.height,dw=m.dw=m.dw||sw,dh=m.dh=m.dh||sh,sf=sw/sh,df=dw/dh,strategy=m.resize;"preview"==strategy?dw==sw&&dh==sh||(df>=sf?h=(w=sw)/df:w=(h=sh)*df,w==sw&&h==sh||(m.sx=~~((sw-w)/2),m.sy=~~((sh-h)/2),sw=w,sh=h)):"height"==strategy?dw=dh*sf:"width"==strategy?dh=dw/sf:strategy&&(sw>dw||sh>dh?"min"==strategy?(dw=round(sf=df?min(sw,dw):dh*sf),dh=round(sf>=df?dw/sf:min(sh,dh))):(dw=sw,dh=sh));return m.sw=sw,m.sh=sh,m.dw=dw,m.dh=dh,m.multipass=api.multiPassResize,m},_trans:function(fn){this._load(this.file,(function(err,image){if(err)fn(err);else try{this._apply(image,fn)}catch(err){api.log("[err] FileAPI.Image.fn._apply:",err),fn(err)}}))},get:function(fn){if(api.support.transform){var _this=this,matrix=_this.matrix;"auto"==matrix.deg?api.getInfo(_this.file,(function(err,info){matrix.deg=exifOrientation[info&&info.exif&&info.exif.Orientation]||0,_this._trans(fn)})):_this._trans(fn)}else fn("not_support_transform");return this},toData:function(fn){return this.get(fn)}},Image.exifOrientation=exifOrientation,Image.transform=function(file,transform,autoOrientation,fn){function _transform(err,img){var images={},queue=api.queue((function(err){fn(err,images)}));err?queue.fail():api.each(transform,(function(params,name){if(!queue.isFail()){var ImgTrans=new Image(img.nodeType?img:file),isFn="function"==typeof params;if(isFn?params(img,ImgTrans):params.width?ImgTrans[params.preview?"preview":"resize"](params.width,params.height,params.strategy):params.maxWidth&&(img.width>params.maxWidth||img.height>params.maxHeight)&&ImgTrans.resize(params.maxWidth,params.maxHeight,"max"),params.crop){var crop=params.crop;ImgTrans.crop(0|crop.x,0|crop.y,crop.w||crop.width,crop.h||crop.height)}undefined===params.rotate&&autoOrientation&&(params.rotate="auto"),ImgTrans.set({type:ImgTrans.matrix.type||params.type||file.type||"image/png"}),isFn||ImgTrans.set({deg:params.rotate,overlay:params.overlay,filter:params.filter,quality:params.quality||1}),queue.inc(),ImgTrans.toData((function(err,image){err?queue.fail():(images[name]=image,queue.next())}))}}))}file.width?_transform(!1,file):api.getInfo(file,_transform)},api.each(["TOP","CENTER","BOTTOM"],(function(x,i){api.each(["LEFT","CENTER","RIGHT"],(function(y,j){Image[x+"_"+y]=3*i+j,Image[y+"_"+x]=3*i+j}))})),Image.toCanvas=function(el){var canvas=document.createElement("canvas");return canvas.width=el.videoWidth||el.width,canvas.height=el.videoHeight||el.height,canvas.getContext("2d").drawImage(el,0,0),canvas},Image.fromDataURL=function(dataURL,size,callback){var img=api.newImage(dataURL);api.extend(img,size),callback(img)},Image.applyFilter=function(canvas,filter,doneFn){"function"==typeof filter?filter(canvas,doneFn):window.Caman&&window.Caman("IMG"==canvas.tagName?Image.toCanvas(canvas):canvas,(function(){"string"==typeof filter?this[filter]():api.each(filter,(function(val,method){this[method](val)}),this),this.render(doneFn)}))},api.renderImageToCanvas=function(canvas,img,sx,sy,sw,sh,dx,dy,dw,dh){try{return canvas.getContext("2d").drawImage(img,sx,sy,sw,sh,dx,dy,dw,dh)}catch(ex){throw api.log("renderImageToCanvas failed"),ex}},api.support.canvas=api.support.transform=support,api.Image=Image}(FileAPI,document),function(factory){"use strict";!function(loadImage){if(!window.navigator||!window.navigator.platform||!/iP(hone|od|ad)/.test(window.navigator.platform))return;var originalRenderMethod=loadImage.renderImageToCanvas;loadImage.detectSubsampling=function(img){var canvas,context;return img.width*img.height>1048576&&((canvas=document.createElement("canvas")).width=canvas.height=1,(context=canvas.getContext("2d")).drawImage(img,1-img.width,0),0===context.getImageData(0,0,1,1).data[3])},loadImage.detectVerticalSquash=function(img,subsampled){var data,sy,ey,py,naturalHeight=img.naturalHeight||img.height,canvas=document.createElement("canvas"),context=canvas.getContext("2d");for(subsampled&&(naturalHeight/=2),canvas.width=1,canvas.height=naturalHeight,context.drawImage(img,0,0),data=context.getImageData(0,0,1,naturalHeight).data,sy=0,ey=naturalHeight,py=naturalHeight;py>sy;)0===data[4*(py-1)+3]?ey=py:sy=py,py=ey+sy>>1;return py/naturalHeight||1},loadImage.renderImageToCanvas=function(canvas,img,sourceX,sourceY,sourceWidth,sourceHeight,destX,destY,destWidth,destHeight){if("image/jpeg"===img._type){var subsampled,vertSquashRatio,tileX,tileY,context=canvas.getContext("2d"),tmpCanvas=document.createElement("canvas"),tileSize=1024,tmpContext=tmpCanvas.getContext("2d");if(tmpCanvas.width=tileSize,tmpCanvas.height=tileSize,context.save(),(subsampled=loadImage.detectSubsampling(img))&&(sourceX/=2,sourceY/=2,sourceWidth/=2,sourceHeight/=2),vertSquashRatio=loadImage.detectVerticalSquash(img,subsampled),subsampled||1!==vertSquashRatio){for(sourceY*=vertSquashRatio,destWidth=Math.ceil(tileSize*destWidth/sourceWidth),destHeight=Math.ceil(tileSize*destHeight/sourceHeight/vertSquashRatio),destY=0,tileY=0;tileY0&&1==api.filter(this.items,(function(item){return item.file})).length,api.support.html5?api.formData&&!this.multipart&&FormData?options._chunked?(api.log("FileAPI.Form.toPlainData"),this.toPlainData(fn)):(api.log("FileAPI.Form.toFormData"),this.toFormData(fn)):(api.log("FileAPI.Form.toMultipartData"),this.toMultipartData(fn)):(api.log("FileAPI.Form.toHtmlData"),this.toHtmlData(fn))},_to:function(data,complete,next,arg){var queue=api.queue((function(){complete(data)}));this.each((function(file){try{next(file,data,queue,arg)}catch(err){api.log("FileAPI.Form._to: "+err.message),complete(err)}})),queue.check()},toHtmlData:function(fn){this._to(document.createDocumentFragment(),fn,(function(file,data){var hidden,blob=file.blob;file.file?(api.reset(blob,!0),blob.name=file.name,blob.disabled=!1,data.appendChild(blob)):((hidden=document.createElement("input")).name=file.name,hidden.type="hidden",hidden.value=blob,data.appendChild(hidden))}))},toPlainData:function(fn){this._to({},fn,(function(file,data,queue){file.file&&(data.type=file.file),file.blob.toBlob?(queue.inc(),_convertFile(file,(function(file,blob){data.name=file.name,data.file=blob,data.size=blob.length,data.type=file.type,queue.next()}))):file.file?(data.name=file.blob.name,data.file=file.blob,data.size=file.blob.size,data.type=file.type):(data.params||(data.params=[]),data.params.push(encodeURIComponent(file.name)+"="+encodeURIComponent(file.blob))),data.start=-1,data.end=data.file&&data.file.FileAPIReadPosition||-1,data.retry=0}))},toFormData:function(fn){this._to(new FormData,fn,(function(file,data,queue){file.blob&&file.blob.toBlob?(queue.inc(),_convertFile(file,(function(file,blob){data.append(file.name,blob,file.file),queue.next()}))):file.file?data.append(file.name,file.blob,file.file):data.append(file.name,file.blob),file.file&&data.append("_"+file.name,file.file)}))},toMultipartData:function(fn){this._to([],fn,(function(file,data,queue,boundary){queue.inc(),_convertFile(file,(function(file,blob){data.push("--_"+boundary+'\r\nContent-Disposition: form-data; name="'+file.name+'"'+(file.file?'; filename="'+encodeURIComponent(file.file)+'"':"")+(file.file?"\r\nContent-Type: "+(file.type||"application/octet-stream"):"")+"\r\n\r\n"+(file.file?blob:encodeURIComponent(blob))+"\r\n"),queue.next()}),!0)}),api.expando)}},api.Form=Form}(FileAPI,window),function(window,api){"use strict";var noop=function(){},document=window.document,XHR=function(options){this.uid=api.uid(),this.xhr={abort:noop,getResponseHeader:noop,getAllResponseHeaders:noop},this.options=options},_xhrResponsePostfix={"":1,XML:1,Text:1,Body:1};XHR.prototype={status:0,statusText:"",constructor:XHR,getResponseHeader:function(name){return this.xhr.getResponseHeader(name)},getAllResponseHeaders:function(){return this.xhr.getAllResponseHeaders()||{}},end:function(status,statusText){var _this=this,options=_this.options;_this.end=_this.abort=noop,_this.status=status,statusText&&(_this.statusText=statusText),api.log("xhr.end:",status,statusText),options.complete(200!=status&&201!=status&&(_this.statusText||"unknown"),_this),_this.xhr&&_this.xhr.node&&setTimeout((function(){var node=_this.xhr.node;try{node.parentNode.removeChild(node)}catch(e){}try{delete window[_this.uid]}catch(e){}window[_this.uid]=_this.xhr.node=null}),9)},abort:function(){this.end(0,"abort"),this.xhr&&(this.xhr.aborted=!0,this.xhr.abort())},send:function(FormData){var _this=this,options=this.options;FormData.toData((function(data){data instanceof Error?_this.end(0,data.message):(options.upload(options,_this),_this._send.call(_this,options,data))}),options)},_send:function(options,data){var xhr,_this=this,uid=_this.uid,onLoadFnName=_this.uid+"Load",url=options.url;if(api.log("XHR._send:",data),options.cache||(url+=(~url.indexOf("?")?"&":"?")+api.uid()),data.nodeName){var jsonp=options.jsonp;url=url.replace(/([a-z]+)=(\?)/i,"$1="+uid),options.upload(options,_this);var onPostMessage=function(evt){if(~url.indexOf(evt.origin))try{var result=api.parseJSON(evt.data);result.id==uid&&complete(result.status,result.statusText,result.response)}catch(err){complete(0,err.message)}},complete=window[uid]=function(status,statusText,response){_this.readyState=4,_this.responseText=response,_this.end(status,statusText),api.event.off(window,"message",onPostMessage),window[uid]=xhr=transport=window[onLoadFnName]=null};_this.xhr.abort=function(){try{transport.stop?transport.stop():transport.contentWindow.stop?transport.contentWindow.stop():transport.contentWindow.document.execCommand("Stop")}catch(er){}complete(0,"abort")},api.event.on(window,"message",onPostMessage),window[onLoadFnName]=function(){try{var win=transport.contentWindow,doc=win.document,result=win.result||api.parseJSON(doc.body.innerHTML);complete(result.status,result.statusText,result.response)}catch(e){api.log("[transport.onload]",e)}},(xhr=document.createElement("div")).innerHTML='
'+(jsonp&&options.url.indexOf("=?")<0?'':"")+"
";var form=xhr.getElementsByTagName("form")[0],transport=xhr.getElementsByTagName("iframe")[0];form.appendChild(data),api.log(form.parentNode.innerHTML),document.body.appendChild(xhr),_this.xhr.node=xhr,_this.readyState=2;try{form.submit()}catch(err){api.log("iframe.error: "+err)}form=null}else{if(url=url.replace(/([a-z]+)=(\?)&?/i,""),this.xhr&&this.xhr.aborted)return void api.log("Error: already aborted");if(xhr=_this.xhr=api.getXHR(),data.params&&(url+=(url.indexOf("?")<0?"?":"&")+data.params.join("&")),xhr.open("POST",url,!0),api.withCredentials&&(xhr.withCredentials="true"),options.headers&&options.headers["X-Requested-With"]||xhr.setRequestHeader("X-Requested-With","XMLHttpRequest"),api.each(options.headers,(function(val,key){xhr.setRequestHeader(key,val)})),options._chunked){xhr.upload&&xhr.upload.addEventListener("progress",api.throttle((function(evt){data.retry||options.progress({type:evt.type,total:data.size,loaded:data.start+evt.loaded,totalSize:data.size},_this,options)}),100),!1),xhr.onreadystatechange=function(){var lkb=parseInt(xhr.getResponseHeader("X-Last-Known-Byte"),10);if(_this.status=xhr.status,_this.statusText=xhr.statusText,_this.readyState=xhr.readyState,4==xhr.readyState){for(var k in _xhrResponsePostfix)_this["response"+k]=xhr["response"+k];if(xhr.onreadystatechange=null,!xhr.status||xhr.status-201>0)if(api.log("Error: "+xhr.status),(!xhr.status&&!xhr.aborted||500==xhr.status||416==xhr.status)&&++data.retry<=options.chunkUploadRetry){var delay=xhr.status?0:api.chunkNetworkDownRetryTimeout;options.pause(data.file,options),api.log("X-Last-Known-Byte: "+lkb),lkb?data.end=lkb:(data.end=data.start-1,416==xhr.status&&(data.end=data.end-options.chunkSize)),setTimeout((function(){_this._send(options,data)}),delay)}else _this.end(xhr.status);else data.retry=0,data.end==data.size-1?_this.end(xhr.status):(api.log("X-Last-Known-Byte: "+lkb),lkb&&(data.end=lkb),data.file.FileAPIReadPosition=data.end,setTimeout((function(){_this._send(options,data)}),0));xhr=null}},data.start=data.end+1,data.end=Math.max(Math.min(data.start+options.chunkSize,data.size)-1,data.start);var file=data.file,slice=(file.slice||file.mozSlice||file.webkitSlice).call(file,data.start,data.end+1);data.size&&!slice.size?setTimeout((function(){_this.end(-1)})):(xhr.setRequestHeader("Content-Range","bytes "+data.start+"-"+data.end+"/"+data.size),xhr.setRequestHeader("Content-Disposition","attachment; filename="+encodeURIComponent(data.name)),xhr.setRequestHeader("Content-Type",data.type||"application/octet-stream"),xhr.send(slice)),file=slice=null}else if(xhr.upload&&xhr.upload.addEventListener("progress",api.throttle((function(evt){options.progress(evt,_this,options)}),100),!1),xhr.onreadystatechange=function(){if(_this.status=xhr.status,_this.statusText=xhr.statusText,_this.readyState=xhr.readyState,4==xhr.readyState){for(var k in _xhrResponsePostfix)_this["response"+k]=xhr["response"+k];if(xhr.onreadystatechange=null,!xhr.status||xhr.status>201)if(api.log("Error: "+xhr.status),(!xhr.status&&!xhr.aborted||500==xhr.status)&&(options.retry||0)=0?val+"px":val}Camera.Shot=Shot,api.Camera=Camera}(window,FileAPI),function(window,jQuery,api){"use strict";var document=window.document,location=window.location,navigator=window.navigator,_each=api.each;api.support.flash=function(){var mime=navigator.mimeTypes,has=!1;if(navigator.plugins&&"object"==typeof navigator.plugins["Shockwave Flash"])has=navigator.plugins["Shockwave Flash"].description&&!(mime&&mime["application/x-shockwave-flash"]&&!mime["application/x-shockwave-flash"].enabledPlugin);else try{has=!(!window.ActiveXObject||!new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))}catch(er){api.log("Flash -- does not supported.")}return has&&/^file:/i.test(location)&&api.log("[warn] Flash does not work on `file:` protocol."),has}(),api.support.flash&&(!api.html5||!api.support.html5||api.cors&&!api.support.cors||api.media&&!api.support.media)&&function(){var _attr=api.uid(),_retry=0,_files={},_rhttp=/^https?:/i,flash={_fn:{},init:function(){var child=document.body&&document.body.firstChild;if(child)do{if(1==child.nodeType){api.log("FlashAPI.state: awaiting");var dummy=document.createElement("div");return dummy.id="_"+_attr,_css(dummy,{top:1,right:1,width:5,height:5,position:"absolute",zIndex:"2147483647"}),child.parentNode.insertBefore(dummy,child),void flash.publish(dummy,_attr)}}while(child=child.nextSibling);_retry<10&&setTimeout(flash.init,50*++_retry)},publish:function(el,id,opts){opts=opts||{},el.innerHTML=_makeFlashHTML({id,src:_getUrl(api.flashUrl,"r="+api.version),wmode:opts.camera?"":"transparent",flashvars:"callback="+(opts.onEvent||"FileAPI.Flash.onEvent")+"&flashId="+id+"&storeKey="+navigator.userAgent.match(/\d/gi).join("")+"_"+api.version+(flash.isReady||(api.pingUrl?"&ping="+api.pingUrl:""))+"&timeout="+api.flashAbortTimeout+(opts.camera?"&useCamera="+_getUrl(api.flashWebcamUrl):"")+"&debug="+(api.debug?"1":"")})},ready:function(){api.log("FlashAPI.state: ready"),flash.ready=api.F,flash.isReady=!0,flash.patch(),flash.patchCamera&&flash.patchCamera(),api.event.on(document,"mouseover",flash.mouseover),api.event.on(document,"click",(function(evt){flash.mouseover(evt)&&(evt.preventDefault?evt.preventDefault():evt.returnValue=!0)}))},getEl:function(){return document.getElementById("_"+_attr)},getWrapper:function(node){do{if(/js-fileapi-wrapper/.test(node.className))return node}while((node=node.parentNode)&&node!==document.body)},mouseover:function(evt){var target=api.event.fix(evt).target;if(/input/i.test(target.nodeName)&&"file"==target.type&&!target.disabled){var state=target.getAttribute(_attr),wrapper=flash.getWrapper(target);if(api.multiFlash){if("i"==state||"r"==state)return!1;if("p"!=state){target.setAttribute(_attr,"i");var dummy=document.createElement("div");if(!wrapper)return void api.log("[err] FlashAPI.mouseover: js-fileapi-wrapper not found");_css(dummy,{top:0,left:0,width:target.offsetWidth,height:target.offsetHeight,zIndex:"2147483647",position:"absolute"}),wrapper.appendChild(dummy),flash.publish(dummy,api.uid()),target.setAttribute(_attr,"p")}return!0}if(wrapper){var box=function(el){var box=el.getBoundingClientRect(),body=document.body,docEl=(el&&el.ownerDocument).documentElement;return{top:box.top+(window.pageYOffset||docEl.scrollTop)-(docEl.clientTop||body.clientTop||0),left:box.left+(window.pageXOffset||docEl.scrollLeft)-(docEl.clientLeft||body.clientLeft||0),width:box.right-box.left,height:box.bottom-box.top}}(wrapper);_css(flash.getEl(),box),flash.curInp=target}}else/object|embed/i.test(target.nodeName)||_css(flash.getEl(),{top:1,left:1,width:5,height:5})},onEvent:function(evt){var type=evt.type;if("ready"==type){try{flash.getInput(evt.flashId).setAttribute(_attr,"r")}catch(e){}return flash.ready(),setTimeout((function(){flash.mouseenter(evt)}),50),!0}"ping"===type?api.log("(flash -> js).ping:",[evt.status,evt.savedStatus],evt.error):"log"===type?api.log("(flash -> js).log:",evt.target):type in flash&&setTimeout((function(){api.log("FlashAPI.event."+evt.type+":",evt),flash[type](evt)}),1)},mouseenter:function(evt){var node=flash.getInput(evt.flashId);if(node){flash.cmd(evt,"multiple",null!=node.getAttribute("multiple"));var accept=[],exts={};_each((node.getAttribute("accept")||"").split(/,\s*/),(function(mime){api.accept[mime]&&_each(api.accept[mime].split(" "),(function(ext){exts[ext]=1}))})),_each(exts,(function(i,ext){accept.push(ext)})),flash.cmd(evt,"accept",accept.length?accept.join(",")+","+accept.join(",").toUpperCase():"*")}},get:function(id){return document[id]||window[id]||document.embeds[id]},getInput:function(id){if(!api.multiFlash)return flash.curInp;try{var node=flash.getWrapper(flash.get(id));if(node)return node.getElementsByTagName("input")[0]}catch(e){api.log('[err] Can not find "input" by flashId:',id,e)}},select:function(evt){var event,inp=flash.getInput(evt.flashId),uid=api.uid(inp),files=evt.target.files;_each(files,(function(file){api.checkFileObj(file)})),_files[uid]=files,document.createEvent?((event=document.createEvent("Event")).files=files,event.initEvent("change",!0,!0),inp.dispatchEvent(event)):jQuery?jQuery(inp).trigger({type:"change",files}):((event=document.createEventObject()).files=files,inp.fireEvent("onchange",event))},cmd:function(id,name,data,last){try{return api.log("(js -> flash)."+name+":",data),flash.get(id.flashId||id).cmd(name,data)}catch(err){api.log("(js -> flash).onError:",err.toString()),last||setTimeout((function(){flash.cmd(id,name,data,!0)}),50)}},patch:function(){api.flashEngine=!0,_inherit(api,{getFiles:function(input,filter,callback){if(callback)return api.filterFiles(api.getFiles(input),filter,callback),null;var files=api.isArray(input)?input:_files[api.uid(input.target||input.srcElement||input)];return files?(filter&&(filter=api.getFilesFilter(filter),files=api.filter(files,(function(file){return filter.test(file.name)}))),files):this.parent.apply(this,arguments)},getInfo:function(file,fn){if(_isHtmlFile(file))this.parent.apply(this,arguments);else if(file.isShot)fn(null,file.info={width:file.width,height:file.height});else{if(!file.__info){var defer=file.__info=api.defer();flash.cmd(file,"getFileInfo",{id:file.id,callback:_wrap((function _(err,info){_unwrap(_),defer.resolve(err,file.info=info)}))})}file.__info.then(fn)}}}),api.support.transform=!0,api.Image&&_inherit(api.Image.prototype,{get:function(fn,scaleMode){return this.set({scaleMode:scaleMode||"noScale"}),this.parent(fn)},_load:function(file,fn){if(api.log("FlashAPI.Image._load:",file),_isHtmlFile(file))this.parent.apply(this,arguments);else{var _this=this;api.getInfo(file,(function(err){fn.call(_this,err,file)}))}},_apply:function(file,fn){if(api.log("FlashAPI.Image._apply:",file),_isHtmlFile(file))this.parent.apply(this,arguments);else{var m=this.getMatrix(file.info),doneFn=fn;flash.cmd(file,"imageTransform",{id:file.id,matrix:m,callback:_wrap((function _(err,base64){api.log("FlashAPI.Image._apply.callback:",err),_unwrap(_),err?doneFn(err):api.support.html5||api.support.dataURI&&!(base64.length>3e4)?(m.filter&&(doneFn=function(err,img){err?fn(err):api.Image.applyFilter(img,m.filter,(function(){fn(err,this.canvas)}))}),api.newImage("data:"+file.type+";base64,"+base64,doneFn)):_makeFlashImage({width:m.deg%180?m.dh:m.dw,height:m.deg%180?m.dw:m.dh,scale:m.scaleMode},base64,doneFn)}))})}},toData:function(fn){var file=this.file,info=file.info,matrix=this.getMatrix(info);api.log("FlashAPI.Image.toData"),_isHtmlFile(file)?this.parent.apply(this,arguments):("auto"==matrix.deg&&(matrix.deg=api.Image.exifOrientation[info&&info.exif&&info.exif.Orientation]||0),fn.call(this,!file.info,{id:file.id,flashId:file.flashId,name:file.name,type:file.type,matrix}))}}),api.Image&&_inherit(api.Image,{fromDataURL:function(dataURL,size,callback){!api.support.dataURI||dataURL.length>3e4?_makeFlashImage(api.extend({scale:"exactFit"},size),dataURL.replace(/^data:[^,]+,/,""),(function(err,el){callback(el)})):this.parent(dataURL,size,callback)}}),_inherit(api.Form.prototype,{toData:function(fn){for(var items=this.items,i=items.length;i--;)if(items[i].file&&_isHtmlFile(items[i].blob))return this.parent.apply(this,arguments);api.log("FlashAPI.Form.toData"),fn(items)}}),_inherit(api.XHR.prototype,{_send:function(options,formData){if(formData.nodeName||formData.append&&api.support.html5||api.isArray(formData)&&"string"==typeof formData[0])return this.parent.apply(this,arguments);var flashId,fileId,data={},files={},_this=this;if(_each(formData,(function(item){var file;item.file?(files[item.name]=item={id:(file=item.blob).id,name:file.name,matrix:file.matrix,flashId:file.flashId},fileId=item.id,flashId=item.flashId):data[item.name]=item.blob})),fileId||(flashId=_attr),!flashId)return api.log("[err] FlashAPI._send: flashId -- undefined"),this.parent.apply(this,arguments);api.log("FlashAPI.XHR._send: "+flashId+" -> "+fileId),_this.xhr={headers:{},abort:function(){flash.cmd(flashId,"abort",{id:fileId})},getResponseHeader:function(name){return this.headers[name]},getAllResponseHeaders:function(){return this.headers}};var queue=api.queue((function(){flash.cmd(flashId,"upload",{url:_getUrl(options.url.replace(/([a-z]+)=(\?)&?/i,"")),data,files:fileId?files:null,headers:options.headers||{},callback:_wrap((function upload(evt){var type=evt.type,result=evt.result;api.log("FlashAPI.upload."+type),"progress"==type?(evt.loaded=Math.min(evt.loaded,evt.total),evt.lengthComputable=!0,options.progress(evt)):"complete"==type?(_unwrap(upload),"string"==typeof result&&(_this.responseText=result.replace(/%22/g,'"').replace(/%5c/g,"\\").replace(/%26/g,"&").replace(/%25/g,"%")),_this.end(evt.status||200)):"abort"!=type&&"error"!=type||(_this.end(evt.status||0,evt.message),_unwrap(upload))}))})}));_each(files,(function(file){queue.inc(),api.getInfo(file,queue.next)})),queue.check()}})}};function _makeFlashHTML(opts){return('').replace(/#(\w+)#/gi,(function(a,name){return opts[name]}))}function _css(el,css){var key,val;if(el&&el.style)for(key in css){"number"==typeof(val=css[key])&&(val+="px");try{el.style[key]=val}catch(e){}}}function _inherit(obj,methods){_each(methods,(function(fn,name){var prev=obj[name];obj[name]=function(){return this.parent=prev,fn.apply(this,arguments)}}))}function _isHtmlFile(file){return file&&!file.flashId}function _wrap(fn){var id=fn.wid=api.uid();return flash._fn[id]=fn,"FileAPI.Flash._fn."+id}function _unwrap(fn){try{flash._fn[fn.wid]=null,delete flash._fn[fn.wid]}catch(e){}}function _getUrl(url,params){if(!_rhttp.test(url)){if(/^\.\//.test(url)||"/"!=url.charAt(0)){var path=location.pathname;url=((path=path.substr(0,path.lastIndexOf("/")))+"/"+url).replace("/./","/")}"//"!=url.substr(0,2)&&(url="//"+location.host+url),_rhttp.test(url)||(url=location.protocol+url)}return params&&(url+=(/\?/.test(url)?"&":"?")+params),url}function _makeFlashImage(opts,base64,fn){var key,flashId=api.uid(),el=document.createElement("div"),attempts=10;for(key in opts)el.setAttribute(key,opts[key]),el[key]=opts[key];_css(el,opts),opts.width="100%",opts.height="100%",el.innerHTML=_makeFlashHTML(api.extend({id:flashId,src:_getUrl(api.flashImageUrl,"r="+api.uid()),wmode:"opaque",flashvars:"scale="+opts.scale+"&callback="+_wrap((function _(){return _unwrap(_),--attempts>0&&function(){try{flash.get(flashId).setImage(base64)}catch(e){api.log('[err] FlashAPI.Preview.setImage -- can not set "base64":',e)}}(),!0}))},opts)),fn(!1,el),el=null}api.Flash=flash,api.newImage("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",(function(err,img){api.support.dataURI=!(1!=img.width||1!=img.height),flash.init()}))}()}(window,window.jQuery,FileAPI),function(window,jQuery,api){"use strict";var _each=api.each,_cameraQueue=[];!api.support.flash||!api.media||api.support.media&&api.html5||function(){function _wrap(fn){var id=fn.wid=api.uid();return api.Flash._fn[id]=fn,"FileAPI.Flash._fn."+id}function _unwrap(fn){try{api.Flash._fn[fn.wid]=null,delete api.Flash._fn[fn.wid]}catch(e){}}var flash=api.Flash;api.extend(api.Flash,{patchCamera:function(){api.Camera.fallback=function(el,options,callback){var camId=api.uid();api.log("FlashAPI.Camera.publish: "+camId),flash.publish(el,camId,api.extend(options,{camera:!0,onEvent:_wrap((function _(evt){"camera"===evt.type&&(_unwrap(_),evt.error?(api.log("FlashAPI.Camera.publish.error: "+evt.error),callback(evt.error)):(api.log("FlashAPI.Camera.publish.success: "+camId),callback(null)))}))}))},_each(_cameraQueue,(function(args){api.Camera.fallback.apply(api.Camera,args)})),_cameraQueue=[],api.extend(api.Camera.prototype,{_id:function(){return this.video.id},start:function(callback){var _this=this;flash.cmd(this._id(),"camera.on",{callback:_wrap((function _(evt){_unwrap(_),evt.error?(api.log("FlashAPI.camera.on.error: "+evt.error),callback(evt.error,_this)):(api.log("FlashAPI.camera.on.success: "+_this._id()),_this._active=!0,callback(null,_this))}))})},stop:function(){this._active=!1,flash.cmd(this._id(),"camera.off")},shot:function(){api.log("FlashAPI.Camera.shot:",this._id());var shot=api.Flash.cmd(this._id(),"shot",{});return shot.type="image/png",shot.flashId=this._id(),shot.isShot=!0,new api.Camera.Shot(shot)}})}}),api.Camera.fallback=function(){_cameraQueue.push(arguments)}}()}(window,window.jQuery,FileAPI),"function"==typeof define&&define.amd&&define("FileAPI",[],(function(){return FileAPI})),function(){var maxFileSize=parseInt(MODx.config.upload_maxsize,10),permittedFileTypes=MODx.config.upload_files.toLowerCase().split(",");FileAPI.debug=!1,FileAPI.staticPath=MODx.config.manager_url+"assets/fileapi/";var api_humanFileSize=function(bytes,si){var thresh=si?1e3:1024;if(bytes=thresh);return bytes.toFixed(1)+" "+units[u]},api_getFileExtension=function(filename){var result="",parts=filename.split(".");return parts.length>1&&(result=parts.pop()),result},api_isFileSizePermitted=function(size){return size<=maxFileSize};Ext.namespace("MODx.util.MultiUploadDialog"),MODx.util.MultiUploadDialog.BrowseButton=Ext.extend(Ext.Button,{input_name:"file",input_file:null,original_handler:null,original_scope:null,initComponent:function(){MODx.util.MultiUploadDialog.BrowseButton.superclass.initComponent.call(this),this.original_handler=this.handler||null,this.original_scope=this.scope||window,this.handler=null,this.scope=null},onRender:function(ct,position){MODx.util.MultiUploadDialog.BrowseButton.superclass.onRender.call(this,ct,position),this.createInputFile()},createInputFile:function(){var button_container=this.el.child("button").wrap();this.input_file=button_container.createChild({tag:"input",type:"file",size:1,name:this.input_name||Ext.id(this.el),style:"cursor: pointer; display: inline-block; opacity: 0; position: absolute; top: 0; left: 0; width: 100%; height: 100%;",multiple:!0}),this.handleMouseEvents&&(this.input_file.on("mouseover",this.onMouseOver,this),this.input_file.on("mousedown",this.onMouseDown,this)),this.tooltip&&("object"==typeof this.tooltip?Ext.QuickTips.register(Ext.apply({target:this.input_file},this.tooltip)):this.input_file.dom[this.tooltipType]=this.tooltip),this.input_file.on("change",this.onInputFileChange,this),this.input_file.on("click",(function(e){e.stopPropagation()}))},detachInputFile:function(no_create){var result=this.input_file;return"object"==typeof this.tooltip?Ext.QuickTips.unregister(this.input_file):this.input_file.dom[this.tooltipType]=null,this.input_file.removeAllListeners(),this.input_file=null,result},getInputFile:function(){return this.input_file},disable:function(){MODx.util.MultiUploadDialog.BrowseButton.superclass.disable.call(this),this.input_file.dom.disabled=!0},enable:function(){MODx.util.MultiUploadDialog.BrowseButton.superclass.enable.call(this),this.input_file.dom.disabled=!1},destroy:function(){var input_file=this.detachInputFile(!0);input_file.remove(),input_file=null,MODx.util.MultiUploadDialog.BrowseButton.superclass.destroy.call(this)},reset:function(){var form=new Ext.Element(document.createElement("form")),buttonParent=this.input_file.parent();form.appendChild(this.input_file),form.dom.reset(),buttonParent.appendChild(this.input_file)},onInputFileChange:function(ev){this.original_handler&&this.original_handler.call(this.original_scope,this,ev),this.fireEvent("click",this,ev)}}),Ext.reg("multiupload-browse-btn",MODx.util.MultiUploadDialog.BrowseButton),MODx.util.MultiUploadDialog.FilesGrid=function(config){config=config||{},Ext.applyIf(config,{height:300,autoScroll:!0,border:!1,fields:["name","size","file","permitted","message","uploaded"],paging:!1,remoteSort:!1,viewConfig:{forceFit:!0,getRowClass:function(record,index,rowParams){return record.get("permitted")?record.get("uploaded")?"upload-success":void 0:"upload-error"}},sortInfo:{field:"name",direction:"ASC"},deferRowRender:!0,anchor:"100%",autoExpandColumn:"state",columns:[{header:_("upload.columns.file"),dataIndex:"name",sortable:!0,width:200,renderer:function(value,meta,record){var id=Ext.id();return FileAPI.Image(record.get("file")).resize(100,50,"max").get((function(err,img){err||(img=new Ext.Element(img).addClass("upload-thumb"),Ext.get(id).insertFirst(img))})),'

'+Ext.util.Format.htmlEncode(value)+"

"}},{header:_("upload.columns.state"),id:"state",width:100,renderer:function(value,meta,record){if(!record.get("permitted")||record.get("uploaded"))return'

'+record.get("message")+"

";var id=Ext.id();return function(){record.progressbar=new Ext.ProgressBar({renderTo:id,value:0,text:"0 / "+record.get("size")})}.defer(25),'
'}}],getMenu:function(){return[{text:_("upload.contextmenu.remove_entry"),handler:this.removeFile}]}}),MODx.util.MultiUploadDialog.FilesGrid.superclass.constructor.call(this,config)},Ext.extend(MODx.util.MultiUploadDialog.FilesGrid,MODx.grid.LocalGrid,{removeFile:function(){var selected=this.getSelectionModel().getSelections();this.getStore().remove(selected)}}),Ext.reg("multiupload-grid-files",MODx.util.MultiUploadDialog.FilesGrid),MODx.util.MultiUploadDialog.Dialog=function(config){this.filesGridId=Ext.id(),config=config||{},Ext.applyIf(config,{permitted_extensions:permittedFileTypes,autoHeight:!0,width:600,closeAction:"hide",layout:"anchor",listeners:{show:{fn:this.onShow},hide:{fn:this.onHide}},items:[{xtype:"multiupload-grid-files",id:this.filesGridId,anchor:"100%"}],buttons:[{xtype:"multiupload-browse-btn",text:_("upload.buttons.choose"),cls:"primary-button",listeners:{click:{scope:this,fn:function(btn,ev){var files=FileAPI.getFiles(ev);this.addFiles(files),btn.reset()}}}},{xtype:"splitbutton",text:_("upload.buttons.clear"),listeners:{click:{scope:this,fn:this.clearStore}},menu:new Ext.menu.Menu({items:[{text:_("upload.clear_list.all"),listeners:{click:{scope:this,fn:this.clearStore}}},{text:_("upload.clear_list.notpermitted"),listeners:{click:{scope:this,fn:this.clearNotPermittedItems}}}]})},{xtype:"button",text:_("upload.buttons.upload"),cls:"primary-button",listeners:{click:{scope:this,fn:this.startUpload}}},{xtype:"button",text:_("upload.buttons.close"),listeners:{click:{scope:this,fn:this.hideDialog}}}]}),MODx.util.MultiUploadDialog.Dialog.superclass.constructor.call(this,config)};var originalWindowOnShow=Ext.Window.prototype.onShow,originalWindowOnHide=Ext.Window.prototype.onHide;Ext.extend(MODx.util.MultiUploadDialog.Dialog,Ext.Window,{addFiles:function(files){var store=Ext.getCmp(this.filesGridId).getStore(),dialog=this;FileAPI.each(files,(function(file){var permitted=!0,message="";api_isFileSizePermitted(file.size)||(message=_("upload.notpermitted.filesize",{size:api_humanFileSize(file.size),max:api_humanFileSize(maxFileSize)}),permitted=!1),dialog.isFileTypePermitted(file.name)||(message=_("upload.notpermitted.extension",{ext:api_getFileExtension(file.name)}),permitted=!1);var data={name:file.name,size:api_humanFileSize(file.size),file,permitted,message,uploaded:!1},p=new store.recordType(data);store.insert(0,p)}))},startUpload:function(){var dialog=this,files=[],params=Ext.apply(this.base_params,{HTTP_MODAUTH:MODx.siteId});Ext.getCmp(this.filesGridId).getStore().each((function(){var file=this.get("file");this.get("permitted")&&!this.get("uploaded")&&(file.record=this,files.push(file))}));FileAPI.upload({url:this.url,data:params,files:{file:files},fileprogress:function(evt,file){file.record.progressbar.updateProgress(evt.loaded/evt.total,_("upload.upload_progress",{loaded:api_humanFileSize(evt.loaded),total:file.record.get("size")}),!0)},filecomplete:function(err,xhr,file,options){if(err)401!==xhr.status&&MODx.msg.alert(_("upload.msg.title.error"),err);else{var resp=Ext.util.JSON.decode(xhr.response);resp.success?(file.record.set("uploaded",!0),file.record.set("message",_("upload.upload.success"))):(file.record.set("permitted",!1),file.record.set("message",resp.message))}},complete:function(err,xhr){dialog.fireEvent("uploadsuccess")}})},removeEntry:function(record){Ext.getCmp(this.filesGridId).getStore().remove(record)},clearStore:function(){Ext.getCmp(this.filesGridId).getStore().removeAll()},clearNotPermittedItems:function(){var store=Ext.getCmp(this.filesGridId).getStore(),notPermitted=store.query("permitted",!1);store.remove(notPermitted.getRange())},hideDialog:function(){this.hide()},onDDrag:function(ev){ev&&ev.preventDefault()},onDDrop:function(ev){ev&&ev.preventDefault();var dialog=this;FileAPI.getDropFiles(ev.browserEvent,(function(files){files.length&&dialog.addFiles(files)}))},onShow:function(){var ret=originalWindowOnShow.apply(this,arguments);return Ext.getCmp(this.filesGridId).getStore().removeAll(),this.isDDSet||(this.el.on("dragenter",this.onDDrag,this),this.el.on("dragover",this.onDDrag,this),this.el.on("dragleave",this.onDDrag,this),this.el.on("drop",this.onDDrop,this),this.isDDSet=!0),ret},onHide:function(){var ret=originalWindowOnHide.apply(this,arguments);return this.el.un("dragenter",this.onDDrag,this),this.el.un("dragover",this.onDDrag,this),this.el.un("dragleave",this.onDDrag,this),this.el.un("drop",this.onDDrop,this),this.isDDSet=!1,ret},setBaseParams:function(params){this.base_params=params,this.setTitle(_("upload.title.destination_path",{path:this.base_params.path}))},isFileTypePermitted:function(filename){var ext=api_getFileExtension(filename);return this.permitted_extensions.indexOf(ext.toLowerCase())>-1}}),Ext.reg("multiupload-window-dialog",MODx.util.MultiUploadDialog.Dialog)}(),Ext.namespace("MODx.tree"),MODx.tree.Tree=function(config){var tl,root;if(config=config||{},Ext.applyIf(config,{baseParams:{},action:"getNodes",loaderConfig:{}}),config.action&&(config.baseParams.action=config.action),config.loaderConfig.dataUrl=config.url,config.loaderConfig.baseParams=config.baseParams,Ext.applyIf(config.loaderConfig,{preloadChildren:!0,clearOnLoad:!0}),this.config=config,this.config.url?((tl=new MODx.tree.TreeLoader(config.loaderConfig)).on("beforeload",(function(l,node){tl.dataUrl=this.config.url+"?action="+this.config.action+"&id="+node.attributes.id,node.attributes.type&&(tl.dataUrl+="&type="+node.attributes.type)}),this),tl.on("load",this.onLoad,this),root={nodeType:"async",text:config.root_name||config.rootName||"",qtip:config.root_qtip||config.rootQtip||"",draggable:!1,id:config.root_id||config.rootId||"root",pseudoroot:!0,attributes:{pseudoroot:!0},cls:"tree-pseudoroot-node",iconCls:config.root_iconCls||config.rootIconCls||""}):(tl=new Ext.tree.TreeLoader({preloadChildren:!0,baseAttrs:{uiProvider:MODx.tree.CheckboxNodeUI}}),root=new Ext.tree.TreeNode({text:this.config.rootName||"",draggable:!1,id:this.config.rootId||"root",children:this.config.data||[],pseudoroot:!0})),Ext.applyIf(config,{useArrows:!0,autoScroll:!0,animate:!0,enableDD:!0,enableDrop:!0,ddAppendOnly:!1,containerScroll:!0,collapsible:!0,border:!1,autoHeight:!0,rootVisible:!0,loader:tl,header:!1,hideBorders:!0,bodyBorder:!1,cls:"modx-tree",root,preventRender:!1,stateful:!0,menuConfig:{defaultAlign:"tl-b?",enableScrolling:!1,listeners:{show:function(){var node=this.activeNode;node&&node.ui.addClass("x-tree-selected")},hide:function(){var node=this.activeNode;node&&(node.isSelected()||node.ui&&node.ui.removeClass("x-tree-selected"))}}}}),!0!==config.remoteToolbar||void 0!==config.tbar&&null!==config.tbar){var tb=this.getToolbar();if(config.tbar&&config.useDefaultToolbar)for(var i=0;i150&&(w=this.config.width),el.setWidth(w),this.doLayout()}},setup:function(config){config.listeners=config.listeners||{},config.listeners.render={fn:function(){!1===config.autoExpandRoot&&config.hasOwnProperty("autoExpandRoot")||this.root.expand();var tl=this.getLoader();Ext.apply(tl,{fullMask:new Ext.LoadMask(this.getEl())}),tl.fullMask.removeMask=!1,tl.on({load:function(){this.fullMask.hide()},loadexception:function(){this.fullMask.hide()},beforeload:function(){this.fullMask.show()},scope:tl})},scope:this},MODx.tree.Tree.superclass.constructor.call(this,config),this.addEvents("afterSort","beforeSort"),this.cm=new Ext.menu.Menu(config.menuConfig),this.on("contextmenu",this._showContextMenu,this),this.on("beforenodedrop",this._handleDrop,this),this.on("nodedragover",this._handleDrop,this),this.on("nodedrop",this._handleDrag,this),this.on("click",this._saveState,this),this.on("contextmenu",this._saveState,this),this.on("click",this._handleClick,this),this.treestate_id=this.config.id||Ext.id(),this.on("load",this._initExpand,this,{single:!0}),this.on("expandnode",this._saveState,this),this.on("collapsenode",this._saveState,this),this.on("expandnode",(function(){var cnt=Ext.getCmp("modx-content");cnt&&cnt.doLayout()}),this)},_initExpand:function(){var treeState=Ext.state.Manager.get(this.treestate_id);if(Ext.isEmpty(treeState)&&this.root)this.root.expand(),this.root.firstChild&&this.config.expandFirst&&this.root.firstChild.expand();else for(var i=0;i"+node.attributes.text+"",target:this}),node,handler:function(btn,evt){evt.stopPropagation(evt),node.getOwnerTree().handleDirectCreateClick(node)},iconCls:"icon-plus-square",renderTo:elId,listeners:{mouseover:function(button,e){button.tooltip.onTargetOver(e)},mouseout:function(button,e){button.tooltip.onTargetOut(e)}}})}},_showContextMenu:function(node,e){var m;this.cm.activeNode=node,this.cm.removeAll();var handled=!1;if(!Ext.isEmpty(node.attributes.treeHandler)||node.isRoot&&!Ext.isEmpty(node.childNodes[0].attributes.treeHandler)){var h=Ext.getCmp(node.isRoot?node.childNodes[0].attributes.treeHandler:node.attributes.treeHandler);h&&(node.isRoot&&(node.attributes.type="root"),m=h.getMenu(this,node,e),handled=!0)}handled||(this.getMenu?m=this.getMenu(node,e):node.attributes.menu&&node.attributes.menu.items&&(m=node.attributes.menu.items)),m&&m.length>0&&(this.addContextMenuItem(m),this.cm.showAt(e.xy)),e.preventDefault(),e.stopEvent()},hasNode:function(t,n){return t.findChild("id",n.id)||!0===t.leaf&&t.parentNode.findChild("id",n.id)},refresh:function(func,scope,args){var treeState=Ext.state.Manager.get(this.treestate_id);return this.root.reload(),void 0===treeState?this.root.expand():Ext.isArray(treeState)&&Ext.each(treeState,(function(path,idx){this.expandPath(path)}),this),func&&(scope=scope||this,args=args||[],this.root.on("load",(function(){Ext.callback(func,scope,args)}),scope)),!0},removeChildren:function(node){for(;node.firstChild;){var c=node.firstChild;node.removeChild(c),c.destroy()}},loadRemoteData:function(data){for(var c in this.removeChildren(this.getRootNode()),data)"object"==typeof data[c]&&this.getRootNode().appendChild(data[c])},reloadNode:function(n){this.getLoader().load(n),n.expand()},remove:function(text,substr,split){if(this.destroying)return MODx.tree.Tree.superclass.remove.apply(this,arguments);var node=this.cm.activeNode,id=this._extractId(node.id,substr,split),p={action:this.config.removeAction||"remove"};p[this.config.primaryKey||"id"]=id,MODx.msg.confirm({title:this.config.removeTitle||_("warning"),text:_(text),url:this.config.url,params:p,listeners:{success:{fn:this.refresh,scope:this}}})},_extractId:function(id,substr,split){return split=split||!1,!1!==(substr=substr||!1)&&(id=node.id.substr(substr)),!1!==split&&(id=(id=node.id.split("_"))[split]),id},expandNodes:function(){this.root&&(this.root.expand(),this.root.expandChildNodes(!0))},collapseNodes:function(){this.root&&(this.root.collapseChildNodes(!0),this.root.collapse())},_saveState:function(n){if(!this.stateful)return!0;var i,s=Ext.state.Manager.get(this.treestate_id),p=n.getPath();if(s=Ext.isObject(s)||Ext.isArray(s)?s.slice():[s],!Ext.isEmpty(p)&&null!=p){if(n.expanded){if(Ext.isString(p)&&-1===s.indexOf(p)){var sr,f=!1;for(i=0;is[i].length&&(f=!0):s.splice(i,1);f||s.push(p)}}else for(s=s.remove(p),i=0;i',id:"modx-iprops-container"}]}],modps:[]}),MODx.window.InsertElement.superclass.constructor.call(this,config),this.on("show",(function(){this.center(),this.mask=new Ext.LoadMask(Ext.get("modx-iprops-container"),{msg:_("loading")}),this.mask.show()}),this)},Ext.extend(MODx.window.InsertElement,MODx.Window,{changePropertySet:function(cb){var fp=Ext.getCmp("modx-iprops-fp");fp&&fp.destroy();var resourceCmp=Ext.get("modx-resource-id"),resourceId=null!==resourceCmp?resourceCmp.getValue():0;Ext.getCmp("modx-dise-proplist").getUpdater().update({url:MODx.config.connector_url,params:{action:"element/getinsertproperties",classKey:this.config.record.classKey,pk:this.config.record.pk,resourceId,propertySet:cb.getValue()},scripts:!0,callback:this.onPropFormLoad,scope:this}),this.modps=[],this.mask.show()},createStore:function(data){return new Ext.data.SimpleStore({fields:["v","d"],data})},onPropFormLoad:function(el,s,r){this.mask.hide();var vs=Ext.decode(r.responseText);if(!vs||vs.length<=0)return!1;for(var i=0;i]+)>)/gi,"")))}},_handleDrop:function(e){var dropNode=e.dropNode,targetParent=e.target;if(null!==targetParent.findChild("id",dropNode.attributes.id))return!1;if("modContext"==dropNode.attributes.type&&(targetParent.getDepth()>1||targetParent.attributes.id==targetParent.attributes.pk+"_0"&&"append"==e.point))return!1;if("modContext"!==dropNode.attributes.type&&targetParent.getDepth()<=1&&"append"!==e.point)return!1;if(null==MODx.config.resource_classes_drop[targetParent.attributes.classKey]){if(targetParent.attributes.hide_children_in_tree)return!1}else if(0==MODx.config.resource_classes_drop[targetParent.attributes.classKey])return!1;return"root"!=dropNode.attributes.text&&""!==dropNode.attributes.text&&"root"!=targetParent.attributes.text&&""!==targetParent.attributes.text},getContextSettingForNode:function(node,ctx,setting,dv){var val=dv||null;if("modContext"!=node.attributes.type){var cn=node.getOwnerTree().getRootNode().findChild("ctx",ctx,!1);cn&&(val=cn.attributes.settings[setting])}else val=node.attributes.settings[setting];return val},quickCreate:function(itm,e,cls,ctx,p){var r={class_key:cls=cls||"modDocument",context_key:ctx||"web",parent:p||0,template:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"default_template",MODx.config.default_template)),richtext:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"richtext_default",MODx.config.richtext_default)),hidemenu:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"hidemenu_default",MODx.config.hidemenu_default)),searchable:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"search_default",MODx.config.search_default)),cacheable:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"cache_default",MODx.config.cache_default)),published:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"publish_default",MODx.config.publish_default)),content_type:parseInt(this.getContextSettingForNode(this.cm.activeNode,ctx,"default_content_type",MODx.config.default_content_type))};if("modContext"!=this.cm.activeNode.attributes.type){var cn=this.cm.activeNode.getOwnerTree().getRootNode().findChild("ctx",ctx,!1);cn&&(r.template=cn.attributes.settings.default_template)}else r.template=this.cm.activeNode.attributes.settings.default_template;var w=MODx.load({xtype:"modx-window-quick-create-modResource",record:r,listeners:{success:{fn:function(){this.refreshNode(this.cm.activeNode.id,this.cm.activeNode.childNodes.length>0)},scope:this},hide:{fn:function(){this.destroy()}},show:{fn:function(){this.center()}}}});w.setValues(r),w.show(e.target,(function(){Ext.isSafari?w.setPosition(null,30):w.center()}),this)},quickUpdate:function(itm,e,cls){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"resource/get",id:this.cm.activeNode.attributes.pk,skipFormatDates:!0},listeners:{success:{fn:function(r){var pr=r.object;pr.class_key=cls;var w=MODx.load({xtype:"modx-window-quick-update-modResource",record:pr,listeners:{success:{fn:function(r){this.refreshNode(this.cm.activeNode.id);var newTitle=''+r.f.findField("pagetitle").getValue()+" ("+w.record.id+")";w.setTitle(w.title.replace(//,newTitle))},scope:this},hide:{fn:function(){this.destroy()}}}});w.title+=': '+Ext.util.Format.htmlEncode(w.record.pagetitle)+" ("+w.record.id+")",w.setValues(r.object),w.show(e.target,(function(){Ext.isSafari?w.setPosition(null,30):w.center()}),this)},scope:this}}})},_getModContextMenu:function(n){var a=n.attributes,ui=n.getUI(),m=[];return m.push({text:""+a.text+"",handler:function(){return!1},header:!0}),m.push("-"),ui.hasClass("pedit")&&m.push({text:_("edit_context"),handler:function(){var at=this.cm.activeNode.attributes;this.loadAction("a=context/update&key="+at.pk)}}),m.push({text:_("context_refresh"),handler:function(){this.refreshNode(this.cm.activeNode.id,!0)}}),ui.hasClass("pnewdoc")&&(m.push("-"),this._getCreateMenus(m,"0",ui)),ui.hasClass("pnew")&&m.push({text:_("context_duplicate"),handler:this.duplicateContext}),ui.hasClass("pdelete")&&(m.push("-"),m.push({text:_("context_remove"),handler:this.removeContext})),ui.hasClass("x-tree-node-leaf")||(m.push("-"),m.push(this._getSortMenu())),m},overviewResource:function(){this.loadAction("a=resource/data")},quickUpdateResource:function(itm,e){this.quickUpdate(itm,e,itm.classKey)},editResource:function(){this.loadAction("a=resource/update")},_getModResourceMenu:function(n){var a=n.attributes,ui=n.getUI(),m=[];return m.push({text:""+a.text+"",handler:function(){return!1},header:!0}),m.push("-"),ui.hasClass("pview")&&m.push({text:_("resource_overview"),handler:this.overviewResource}),ui.hasClass("pedit")&&m.push({text:_("resource_edit"),handler:this.editResource}),ui.hasClass("pqupdate")&&m.push({text:_("quick_update_resource"),classKey:a.classKey,handler:this.quickUpdateResource}),ui.hasClass("pduplicate")&&m.push({text:_("resource_duplicate"),handler:this.duplicateResource}),m.push({text:_("resource_refresh"),handler:this.refreshResource,scope:this}),ui.hasClass("pnew")&&(m.push("-"),this._getCreateMenus(m,null,ui)),ui.hasClass("psave")&&(m.push("-"),ui.hasClass("ppublish")&&ui.hasClass("unpublished")?m.push({text:_("resource_publish"),handler:this.publishDocument}):ui.hasClass("punpublish")&&m.push({text:_("resource_unpublish"),handler:this.unpublishDocument}),ui.hasClass("pundelete")&&ui.hasClass("deleted")?m.push({text:_("resource_undelete"),handler:this.undeleteDocument}):ui.hasClass("pdelete")&&!ui.hasClass("deleted")&&m.push({text:_("resource_delete"),handler:this.deleteDocument})),ui.hasClass("x-tree-node-leaf")||(m.push("-"),m.push(this._getSortMenu())),ui.hasClass("pview")&&""!=a.preview_url&&(m.push("-"),m.push({text:_("resource_view"),handler:this.preview})),m},refreshResource:function(){this.refreshNode(this.cm.activeNode.id)},createResourceHere:function(itm){var at=this.cm.activeNode.attributes,p=itm.usePk?itm.usePk:at.pk;this.loadAction("a=resource/create&class_key="+itm.classKey+"&parent="+p+(at.ctx?"&context_key="+at.ctx:""))},createResource:function(itm,e){var at=this.cm.activeNode.attributes,p=itm.usePk?itm.usePk:at.pk;this.quickCreate(itm,e,itm.classKey,at.ctx,p)},_getCreateMenus:function(m,pk,ui){var types=MODx.config.resource_classes,o=this.fireEvent("loadCreateMenus",types);Ext.isObject(o)&&Ext.apply(types,o);var coreTypes=["modDocument","modWebLink","modSymLink","modStaticResource"],ct=[],qct=[];for(var k in types)(-1==coreTypes.indexOf(k)||ui.hasClass("pnew_"+k))&&(ct.push({text:types[k].text_create_here,classKey:k,usePk:pk||!1,handler:this.createResourceHere,scope:this}),ui&&ui.hasClass("pqcreate")&&qct.push({text:types[k].text_create,classKey:k,handler:this.createResource,scope:this}));return m.push({text:_("create"),handler:function(){return!1},menu:{items:ct}}),ui&&ui.hasClass("pqcreate")&&m.push({text:_("quick_create"),handler:function(){return!1},menu:{items:qct}}),m},_handleDrag:function(dropEvent){var encNodes=Ext.encode(function simplifyNodes(node){for(var resultNode={},kids=node.childNodes,len=kids.length,i=0;i*',description:"[[*pagetitle]]
"+_("resource_pagetitle_help"),anchor:"100%",allowBlank:!1},{xtype:"textfield",name:"longtitle",id:"modx-"+this.ident+"-longtitle",fieldLabel:_("resource_longtitle"),description:"[[*longtitle]]
"+_("resource_longtitle_help"),anchor:"100%"},{xtype:"textarea",name:"description",id:"modx-"+this.ident+"-description",fieldLabel:_("resource_description"),description:"[[*description]]
"+_("resource_description_help"),anchor:"100%",grow:!1,height:50},{xtype:"textarea",name:"introtext",id:"modx-"+this.ident+"-introtext",fieldLabel:_("resource_summary"),description:"[[*introtext]]
"+_("resource_summary_help"),anchor:"100%",height:50}]},{columnWidth:.4,border:!1,layout:"form",items:[{xtype:"modx-combo-template",name:"template",id:"modx-"+this.ident+"-template",fieldLabel:_("resource_template"),description:"[[*template]]
"+_("resource_template_help"),editable:!1,anchor:"100%",baseParams:{action:"element/template/getList",combo:"1",limit:0},value:MODx.config.default_template},{xtype:"textfield",name:"alias",id:"modx-"+this.ident+"-alias",fieldLabel:_("resource_alias"),description:"[[*alias]]
"+_("resource_alias_help"),anchor:"100%"},{xtype:"textfield",name:"menutitle",id:"modx-"+this.ident+"-menutitle",fieldLabel:_("resource_menutitle"),description:"[[*menutitle]]
"+_("resource_menutitle_help"),anchor:"100%"},{xtype:"textfield",fieldLabel:_("resource_link_attributes"),description:"[[*link_attributes]]
"+_("resource_link_attributes_help"),name:"link_attributes",id:"modx-"+this.ident+"-attributes",maxLength:255,anchor:"100%"},{xtype:"xcheckbox",boxLabel:_("resource_hide_from_menus"),description:"[[*hidemenu]]
"+_("resource_hide_from_menus_help"),hideLabel:!0,name:"hidemenu",id:"modx-"+this.ident+"-hidemenu",inputValue:1,checked:"1"==MODx.config.hidemenu_default?1:0},{xtype:"xcheckbox",name:"published",id:"modx-"+this.ident+"-published",boxLabel:_("resource_published"),description:"[[*published]]
"+_("resource_published_help"),hideLabel:!0,inputValue:1,checked:"1"==MODx.config.publish_default?1:0}]}]},MODx.getQRContentField(this.ident,config.record.class_key)]},{id:"modx-"+this.ident+"-settings",title:_("settings"),layout:"form",cls:"modx-panel",autoHeight:!0,forceLayout:!0,labelWidth:100,defaults:{autoHeight:!0,border:!1},items:MODx.getQRSettings(this.ident,config.record)}]}],keys:[{key:Ext.EventObject.ENTER,shift:!0,fn:this.submit,scope:this}]}),MODx.window.QuickCreateResource.superclass.constructor.call(this,config)},Ext.extend(MODx.window.QuickCreateResource,MODx.Window),Ext.reg("modx-window-quick-create-modResource",MODx.window.QuickCreateResource),MODx.window.QuickUpdateResource=function(config){config=config||{},this.ident=config.ident||"qur"+Ext.id(),Ext.applyIf(config,{title:_("quick_update_resource"),id:this.ident,action:"resource/update",buttons:[{text:config.cancelBtnText||_("cancel"),scope:this,handler:function(){this.hide()}},{text:config.saveBtnText||_("save"),scope:this,handler:function(){this.submit(!1)}},{text:config.saveBtnText||_("save_and_close"),cls:"primary-button",scope:this,handler:this.submit}]}),MODx.window.QuickUpdateResource.superclass.constructor.call(this,config)},Ext.extend(MODx.window.QuickUpdateResource,MODx.window.QuickCreateResource),Ext.reg("modx-window-quick-update-modResource",MODx.window.QuickUpdateResource),MODx.getQRContentField=function(id,cls){id=id||"qur",cls=cls||"modDocument";Ext.getBody().getViewSize();var o={};switch(cls){case"modSymLink":o={xtype:"textfield",fieldLabel:_("symlink"),name:"content",id:"modx-"+id+"-content",anchor:"100%",maxLength:255};break;case"modWebLink":o={xtype:"textfield",fieldLabel:_("weblink"),name:"content",id:"modx-"+id+"-content",anchor:"100%",maxLength:255,value:"http://"};break;case"modStaticResource":o={xtype:"modx-combo-browser",browserEl:"modx-browser",prependPath:!1,prependUrl:!1,fieldLabel:_("static_resource"),name:"content",id:"modx-"+id+"-content",anchor:"100%",maxLength:255,value:"",listeners:{select:{fn:function(data){"/"==data.url.substring(0,1)&&Ext.getCmp("modx-"+id+"-content").setValue(data.url.substring(1))},scope:this}}};break;default:o={xtype:"textarea",name:"content",id:"modx-"+id+"-content",fieldLabel:_("content"),labelSeparator:"",anchor:"100%",style:"min-height: 200px",grow:!0}}return o},MODx.getQRSettings=function(id,va){return[{layout:"column",border:!1,anchor:"100%",defaults:{labelSeparator:"",labelAlign:"top",border:!1,layout:"form"},items:[{columnWidth:.5,items:[{xtype:"hidden",name:"parent",id:"modx-"+(id=id||"qur")+"-parent",value:va.parent},{xtype:"hidden",name:"context_key",id:"modx-"+id+"-context_key",value:va.context_key},{xtype:"hidden",name:"class_key",id:"modx-"+id+"-class_key",value:va.class_key},{xtype:"hidden",name:"publishedon",id:"modx-"+id+"-publishedon",value:va.publishedon},{xtype:"modx-field-parent-change",fieldLabel:_("resource_parent"),description:"[[*parent]]
"+_("resource_parent_help"),name:"parent-cmb",id:"modx-"+id+"-parent-change",value:va.parent||0,anchor:"100%",parentcmp:"modx-"+id+"-parent",contextcmp:"modx-"+id+"-context_key",currentid:va.id},{xtype:"modx-combo-class-derivatives",fieldLabel:_("resource_type"),description:"[[*class_key]]
",name:"class_key",hiddenName:"class_key",id:"modx-"+id+"-class-key",anchor:"100%",value:null!=va.class_key?va.class_key:"modDocument"},{xtype:"modx-combo-content-type",fieldLabel:_("resource_content_type"),description:"[[*content_type]]
"+_("resource_content_type_help"),name:"content_type",hiddenName:"content_type",id:"modx-"+id+"-type",anchor:"100%",value:null!=va.content_type?va.content_type:MODx.config.default_content_type||1},{xtype:"modx-combo-content-disposition",fieldLabel:_("resource_contentdispo"),description:"[[*content_dispo]]
"+_("resource_contentdispo_help"),name:"content_dispo",hiddenName:"content_dispo",id:"modx-"+id+"-dispo",anchor:"100%",value:null!=va.content_dispo?va.content_dispo:0},{xtype:"numberfield",fieldLabel:_("resource_menuindex"),description:"[[*menuindex]]
"+_("resource_menuindex_help"),name:"menuindex",id:"modx-"+id+"-menuindex",width:75,value:va.menuindex||0}]},{columnWidth:.5,items:[{xtype:"xdatetime",fieldLabel:_("resource_publishedon"),description:"[[*publishedon]]
"+_("resource_publishedon_help"),name:"publishedon",id:"modx-"+id+"-publishedon",allowBlank:!0,dateFormat:MODx.config.manager_date_format,timeFormat:MODx.config.manager_time_format,startDay:parseInt(MODx.config.manager_week_start),dateWidth:153,timeWidth:153,offset_time:MODx.config.server_offset_time,value:va.publishedon},{xtype:va.canpublish?"xdatetime":"hidden",fieldLabel:_("resource_publishdate"),description:"[[*pub_date]]
"+_("resource_publishdate_help"),name:"pub_date",id:"modx-"+id+"-pub-date",allowBlank:!0,dateFormat:MODx.config.manager_date_format,timeFormat:MODx.config.manager_time_format,startDay:parseInt(MODx.config.manager_week_start),dateWidth:153,timeWidth:153,offset_time:MODx.config.server_offset_time,value:va.pub_date},{xtype:va.canpublish?"xdatetime":"hidden",fieldLabel:_("resource_unpublishdate"),description:"[[*unpub_date]]
"+_("resource_unpublishdate_help"),name:"unpub_date",id:"modx-"+id+"-unpub-date",allowBlank:!0,dateFormat:MODx.config.manager_date_format,timeFormat:MODx.config.manager_time_format,startDay:parseInt(MODx.config.manager_week_start),dateWidth:153,timeWidth:153,offset_time:MODx.config.server_offset_time,value:va.unpub_date},{xtype:"xcheckbox",boxLabel:_("resource_folder"),description:_("resource_folder_help"),hideLabel:!0,name:"isfolder",id:"modx-"+id+"-isfolder",inputValue:1,checked:null!=va.isfolder&&va.isfolder},{xtype:"xcheckbox",boxLabel:_("resource_richtext"),description:_("resource_richtext_help"),hideLabel:!0,name:"richtext",id:"modx-"+id+"-richtext",inputValue:1,checked:void 0!==va.richtext?va.richtext?1:0:"1"==MODx.config.richtext_default?1:0},{xtype:"xcheckbox",boxLabel:_("resource_searchable"),description:_("resource_searchable_help"),hideLabel:!0,name:"searchable",id:"modx-"+id+"-searchable",inputValue:1,checked:null!=va.searchable?va.searchable:"1"==MODx.config.search_default?1:0,listeners:{check:{fn:MODx.handleQUCB}}},{xtype:"xcheckbox",boxLabel:_("resource_cacheable"),description:_("resource_cacheable_help"),hideLabel:!0,name:"cacheable",id:"modx-"+id+"-cacheable",inputValue:1,checked:null!=va.cacheable?va.cacheable:"1"==MODx.config.cache_default?1:0},{xtype:"xcheckbox",name:"clearCache",id:"modx-"+id+"-clearcache",boxLabel:_("clear_cache_on_save"),description:_("clear_cache_on_save_msg"),hideLabel:!0,inputValue:1,checked:!0},{xtype:"xcheckbox",boxLabel:_("deleted"),description:_("resource_delete"),hideLabel:!0,name:"deleted",id:"modx-"+id+"-deleted",inputValue:1,checked:null!=va.deleted?va.deleted:0},{xtype:"xcheckbox",boxLabel:_("resource_alias_visible"),description:_("resource_alias_visible_help"),hideLabel:!0,name:"alias_visible",id:"modx-"+id+"-alias-visible",inputValue:1,checked:null!=va.alias_visible?va.alias_visible:1},{xtype:"xcheckbox",boxLabel:_("resource_uri_override"),description:_("resource_uri_override_help"),hideLabel:!0,name:"uri_override",id:"modx-"+id+"-uri-override",value:1,checked:!!parseInt(va.uri_override),listeners:{check:{fn:MODx.handleFreezeUri}}},{xtype:"textfield",fieldLabel:_("resource_uri"),description:"[[*uri]]
"+_("resource_uri_help"),name:"uri",id:"modx-"+id+"-uri",maxLength:255,anchor:"100%",value:va.uri||"",hidden:!va.uri_override}]}]}]},MODx.handleQUCB=function(cb){var h=Ext.getCmp(cb.id+"-hd");cb.checked&&h?(cb.setValue(1),h.setValue(1)):h&&(cb.setValue(0),h.setValue(0))},MODx.handleFreezeUri=function(cb){var uri=Ext.getCmp(cb.id.replace("-override",""));if(!uri)return!1;cb.checked?uri.show():uri.hide()},Ext.override(Ext.tree.AsyncTreeNode,{listeners:{click:{fn:function(){return console.log("Clicked me!",arguments),!1},scope:this}}}),MODx.tree.Element=function(config){config=config||{},Ext.applyIf(config,{rootVisible:!1,enableDD:!Ext.isEmpty(MODx.config.enable_dragdrop),ddGroup:"modx-treedrop-elements-dd",title:"",url:MODx.config.connector_url,action:"element/getnodes",sortAction:"element/sort",useDefaultToolbar:!1,baseParams:{currentElement:MODx.request.id||0,currentAction:MODx.request.a||0},tbar:[{cls:"tree-new-template",tooltip:{text:_("new")+" "+_("template")},handler:function(){this.redirect("?a=element/template/create")},scope:this,hidden:!MODx.perm.new_template},{cls:"tree-new-tv",tooltip:{text:_("new")+" "+_("tv")},handler:function(){this.redirect("?a=element/tv/create")},scope:this,hidden:!MODx.perm.new_tv},{cls:"tree-new-chunk",tooltip:{text:_("new")+" "+_("chunk")},handler:function(){this.redirect("?a=element/chunk/create")},scope:this,hidden:!MODx.perm.new_chunk},{cls:"tree-new-snippet",tooltip:{text:_("new")+" "+_("snippet")},handler:function(){this.redirect("?a=element/snippet/create")},scope:this,hidden:!MODx.perm.new_snippet},{cls:"tree-new-plugin",tooltip:{text:_("new")+" "+_("plugin")},handler:function(){this.redirect("?a=element/plugin/create")},scope:this,hidden:!MODx.perm.new_plugin},{cls:"tree-new-category",tooltip:{text:_("new_category")},handler:function(){this.createCategory(null,{target:this.getEl()})},scope:this,hidden:!MODx.perm.new_category}]}),MODx.tree.Element.superclass.constructor.call(this,config),this.on("afterSort",this.afterSort)},Ext.extend(MODx.tree.Element,MODx.tree.Tree,{forms:{},windows:{},stores:{},createCategory:function(n,e){var r={};this.cm.activeNode&&this.cm.activeNode.attributes.data&&(r.parent=this.cm.activeNode.attributes.data.id),MODx.load({xtype:"modx-window-category-create",record:r,listeners:{success:{fn:function(){var node=this.cm.activeNode?this.cm.activeNode.id:"n_category",self=-1!==node.indexOf("_category_");this.refreshNode(node,self)},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},renameCategory:function(itm,e){var r=this.cm.activeNode.attributes.data,w=MODx.load({xtype:"modx-window-category-rename",record:r,listeners:{success:{fn:function(r){var c=r.a.result.object,n=this.cm.activeNode;n.setText(c.category+" ("+c.id+")"),Ext.get(n.getUI().getEl()).frame(),n.attributes.data.id=c.id,n.attributes.data.category=c.category},scope:this},hide:{fn:function(){this.destroy()}}}});w.show(e.target)},removeCategory:function(itm,e){var id=this.cm.activeNode.attributes.data.id;MODx.msg.confirm({title:_("warning"),text:_("category_confirm_delete"),url:MODx.config.connector_url,params:{action:"element/category/remove",id},listeners:{success:{fn:function(){this.cm.activeNode.remove()},scope:this}}})},duplicateElement:function(itm,e,id,type){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"element/"+type+"/get",id},listeners:{success:{fn:function(results){var r={id,type,name:_("duplicate_of",{name:this.cm.activeNode.attributes.name}),caption:_("duplicate_of",{name:this.cm.activeNode.attributes.caption}),category:results.object.category,source:results.object.source,static:results.object.static,static_file:results.object.static_file};MODx.load({xtype:"modx-window-element-duplicate",record:r,listeners:{success:{fn:function(){this.refreshNode(this.cm.activeNode.id)},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},scope:this}}})},extractElementIdentifiersFromActiveNode:function(activeNode){let startIndex;const extractedData={};switch(!0){case 0===activeNode.id.indexOf("n_type_"):startIndex=7;break;case 0===activeNode.id.indexOf("n_c_"):startIndex=4;break;default:startIndex=2}const identifiers=activeNode.id.substr(startIndex).split("_");switch([extractedData.type]=identifiers,identifiers.length){case 4:return{...extractedData,elementId:parseInt(identifiers[2],10),categoryId:parseInt(identifiers[3],10)};case 3:return{...extractedData,categoryId:parseInt(identifiers[2],10)};case 1:return extractedData}return!1},removeElement:function(itm,e){const elementIdentifiers=this.extractElementIdentifiersFromActiveNode(this.cm.activeNode);MODx.msg.confirm({title:_("warning"),text:_("remove_this_confirm",{type:_(elementIdentifiers.type),name:this.cm.activeNode.attributes.name}),url:MODx.config.connector_url,params:{action:`element/${elementIdentifiers.type}/remove`,id:elementIdentifiers.elementId},listeners:{success:{fn:function(){this.cm.activeNode.remove(),MODx.request.a===`element/${elementIdentifiers.type}/update`&&parseInt(MODx.request.id,10)===elementIdentifiers.elementId&&MODx.loadPage("welcome")},scope:this}}})},activatePlugin:function(itm,e){const elementIdentifiers=this.extractElementIdentifiersFromActiveNode(this.cm.activeNode);MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"element/plugin/activate",id:elementIdentifiers.elementId},listeners:{success:{fn:function(){this.refreshParentNode()},scope:this}}})},deactivatePlugin:function(itm,e){const elementIdentifiers=this.extractElementIdentifiersFromActiveNode(this.cm.activeNode);MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"element/plugin/deactivate",id:elementIdentifiers.elementId},listeners:{success:{fn:function(){this.refreshParentNode()},scope:this}}})},quickCreate:function(itm,e,type){var r={category:this.cm.activeNode.attributes.pk||""},w=MODx.load({xtype:"modx-window-quick-create-"+type,record:r,listeners:{success:{fn:function(){this.refreshNode(this.cm.activeNode.id,!0)},scope:this},hide:{fn:function(){this.destroy()}}}});w.setValues(r),w.show(e.target)},quickUpdate:function(itm,e,type){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"element/"+type+"/get",id:this.cm.activeNode.attributes.pk},listeners:{success:{fn:function(r){var nameField="template"==type?"templatename":"name",w=MODx.load({xtype:"modx-window-quick-update-"+type,record:r.object,listeners:{success:{fn:function(r){this.refreshNode(this.cm.activeNode.id);var newTitle=''+Ext.util.Format.htmlEncode(r.f.findField(nameField).getValue())+" ("+w.record.id+")";w.setTitle(w.title.replace(//,newTitle))},scope:this},hide:{fn:function(){this.destroy()}}}});w.title+=': '+Ext.util.Format.htmlEncode(w.record[nameField])+" ("+w.record.id+")",w.setValues(r.object),w.show(e.target)},scope:this}}})},_createElement:function(itm,e,t){const elementIdentifiers=this.extractElementIdentifiersFromActiveNode(this.cm.activeNode);return this.redirect(`?a=element/${elementIdentifiers.type}/create&category=${elementIdentifiers.categoryId}`),this.cm.hide(),!1},afterSort:function(o){var tn=o.event.target.attributes;if("category"==tn.type){var dn=o.event.dropNode.attributes;"n_category"!=tn.id&&"category"==dn.type?o.event.target.expand():(this.refreshNode(o.event.target.attributes.id,!0),this.refreshNode("n_type_"+o.event.dropNode.attributes.type,!0))}},_handleDrop:function(e){var target=e.target;return"above"!=e.point&&"below"!=e.point&&(("modCategory"==target.attributes.classKey||"root"==target.attributes.classKey)&&(!!this.isCorrectType(e.dropNode,target)&&("category"==target.attributes.type&&"append"==e.point||target.getDepth()>0)))},isCorrectType:function(dropNode,targetNode){var r=!1;return targetNode.attributes.type==dropNode.attributes.type&&(targetNode.parentNode&&("folder"==dropNode.attributes.cls&&"folder"==targetNode.attributes.cls&&dropNode.parentNode.id==targetNode.parentNode.id||"file"==targetNode.attributes.cls)||(r=!0)),r},_showContextMenu:function(n,e){if(this.cm.activeNode=n,this.cm.removeAll(),n.attributes.menu&&n.attributes.menu.items)this.addContextMenuItem(n.attributes.menu.items),this.cm.show(n.getUI().getEl(),"t?");else{var m=[];switch(n.attributes.classKey){case"root":m=this._getRootMenu(n);break;case"modCategory":m=this._getCategoryMenu(n);break;default:m=this._getElementMenu(n)}this.addContextMenuItem(m),this.cm.showAt(e.xy)}e.stopEvent()},_getQuickCreateMenu:function(n,m){for(var t,ui=n.getUI(),mn=[],types=["template","tv","chunk","snippet","plugin"],i=0;i"+a.text+"",handler:function(){return!1},header:!0}),m.push("-"),ui.hasClass("pedit")&&(m.push({text:_("edit_"+a.type),type:a.type,pk:a.pk,handler:function(itm,e){MODx.loadPage("element/"+itm.type+"/update","id="+itm.pk)}}),m.push({text:_("quick_update_"+a.type),type:a.type,handler:function(itm,e){this.quickUpdate(itm,e,itm.type)}}),"modPlugin"==a.classKey&&(a.active?m.push({text:_("plugin_deactivate"),type:a.type,handler:this.deactivatePlugin}):m.push({text:_("plugin_activate"),type:a.type,handler:this.activatePlugin}))),ui.hasClass("pnew")&&m.push({text:_("duplicate_"+a.type),pk:a.pk,type:a.type,handler:function(itm,e){this.duplicateElement(itm,e,itm.pk,itm.type)}}),ui.hasClass("pdelete")&&m.push({text:_("remove_"+a.type),handler:this.removeElement}),m.push("-"),ui.hasClass("pnew")&&m.push({text:_("add_to_category_"+a.type),handler:this._createElement}),ui.hasClass("pnewcat")&&m.push({text:_("new_category"),handler:this.createCategory}),m},_getCategoryMenu:function(n){var a=n.attributes,ui=n.getUI(),m=[];return m.push({text:""+a.text+"",handler:function(){return!1},header:!0}),m.push("-"),ui.hasClass("pnewcat")&&m.push({text:_("category_create"),handler:this.createCategory}),ui.hasClass("peditcat")&&m.push({text:_("category_rename"),handler:this.renameCategory}),m.length>2&&m.push("-"),a.elementType&&m.push({text:_("add_to_category_"+a.type),handler:this._createElement}),this._getQuickCreateMenu(n,m),ui.hasClass("pdelcat")&&(m.push("-"),m.push({text:_("category_remove"),handler:this.removeCategory})),m},_getRootMenu:function(n){var a=n.attributes,ui=n.getUI(),m=[];return ui.hasClass("pnew")&&(m.push({text:_("new_"+a.type),handler:this._createElement}),m.push({text:_("quick_create_"+a.type),type:a.type,handler:function(itm,e){this.quickCreate(itm,e,itm.type)}})),ui.hasClass("pnewcat")&&(ui.hasClass("pnew")&&m.push("-"),m.push({text:_("new_category"),handler:this.createCategory})),m},handleCreateClick:function(node){this.cm.activeNode=node,"category"!=this.cm.activeNode.id.substr(2).split("_")[0]?this._createElement(null,null,null):this.createCategory(null,{target:this})}}),Ext.reg("modx-tree-element",MODx.tree.Element),MODx.tree.Directory=function(config){(config=config||{}).id=config.id||Ext.id(),Ext.applyIf(config,{rootVisible:!0,rootName:"Filesystem",rootId:"/",title:_("files"),ddAppendOnly:!0,ddGroup:"modx-treedrop-sources-dd",url:MODx.config.connector_url,hideSourceCombo:!1,baseParams:{hideFiles:config.hideFiles||!1,hideTooltips:config.hideTooltips||!1,wctx:MODx.ctx||"web",currentAction:MODx.request.a||0,currentFile:MODx.request.file||"",source:config.source||0},action:"browser/directory/getList",primaryKey:"dir",useDefaultToolbar:!0,autoExpandRoot:!1,tbar:[{cls:"x-btn-icon icon-folder",tooltip:{text:_("file_folder_create")},handler:this.createDirectory,scope:this,hidden:!MODx.perm.directory_create},{cls:"x-btn-icon icon-page_white",tooltip:{text:_("file_create")},handler:this.createFile,scope:this,hidden:!MODx.perm.file_create},{cls:"x-btn-icon icon-file_upload",tooltip:{text:_("upload_files")},handler:this.uploadFiles,scope:this,hidden:!MODx.perm.file_upload},"->",{cls:"x-btn-icon icon-file_manager",tooltip:{text:_("modx_browser")},handler:this.loadFileManager,scope:this,hidden:!(MODx.perm.file_manager&&!MODx.browserOpen)}],tbarCfg:{id:config.id+"-tbar"}}),MODx.tree.Directory.superclass.constructor.call(this,config),this.addEvents({beforeUpload:!0,afterUpload:!0,afterQuickCreate:!0,afterRename:!0,afterRemove:!0,fileBrowserSelect:!0,changeSource:!0,afterSort:!0}),this.on("click",(function(n,e){n.select(),this.cm.activeNode=n}),this),this.on("render",(function(){var el=Ext.get(this.config.id);el.createChild({tag:"div",id:this.config.id+"_tb"}),el.createChild({tag:"div",id:this.config.id+"_filter"}),this.addSourceToolbar()}),this),this.on("show",(function(){if(!this.config.hideSourceCombo)try{this.sourceCombo.show()}catch(e){}}),this),this._init(),this.on("afterrender",this.showRefresh,this),this.on("afterSort",this._handleAfterDrop,this)},Ext.extend(MODx.tree.Directory,MODx.tree.Tree,{windows:{},getRootMenu:function(node){var menu=[];return MODx.perm.directory_create&&menu.push({text:_("file_folder_create"),handler:this.createDirectory,scope:this}),MODx.perm.file_create&&menu.push({text:_("file_create"),handler:this.createFile,scope:this}),MODx.perm.file_upload&&menu.push({text:_("upload_files"),handler:this.uploadFiles,scope:this}),node.ownerTree.el.hasClass("pupdate")&&menu.push(["-",{text:_("edit_media_source"),handler:function(){MODx.loadPage("source/update","id="+node.ownerTree.source)}}]),menu},_showContextMenu:function(node,e){var m;this.cm.activeNode=node,this.cm.removeAll(),node.isRoot?m=this.getRootMenu(node):node.attributes.menu&&node.attributes.menu.items&&(m=node.attributes.menu.items),m&&m.length>0&&(this.addContextMenuItem(m),this.cm.showAt(e.xy)),e.preventDefault(),e.stopEvent()},showRefresh:function(){var node=this.getRootNode(),inlineButtonsLang=this.getInlineButtonsLang(node),elId=node.ui.elNode.id+"_tools",el=document.createElement("div");el.id=elId,el.className="modx-tree-node-tool-ct",node.ui.elNode.appendChild(el),MODx.load({xtype:"modx-button",text:"",scope:this,tooltip:new Ext.ToolTip({title:inlineButtonsLang.refresh,target:this}),node,handler:function(btn,evt){evt.stopPropagation(evt),node.reload()},iconCls:"icon-refresh",renderTo:elId,listeners:{mouseover:function(button,e){button.tooltip.onTargetOver(e)},mouseout:function(button,e){button.tooltip.onTargetOut(e)}}})},addSourceToolbar:function(){if(this.sourceCombo=new MODx.combo.MediaSource({value:this.config.source||MODx.config.default_media_source,listWidth:236,listeners:{select:{fn:this.changeSource,scope:this},loaded:{fn:function(combo){var rec=combo.store.getById(this.config.source),rn=this.getRootNode();rn&&rec&&rn.setText(rec.data.name)},scope:this}}}),this.searchBar=new Ext.Toolbar({renderTo:this.tbar,id:this.config.id+"-sourcebar",items:[this.sourceCombo]}),this.on("resize",(function(){this.sourceCombo.setWidth(this.getWidth()-12)}),this),this.config.hideSourceCombo)try{this.sourceCombo.hide()}catch(e){}},changeSource:function(sel){this.cm.activeNode="";var s=sel.getValue(),rn=this.getRootNode();rn&&rn.setText(sel.getRawValue()),this.config.baseParams.source=s,this.fireEvent("changeSource",s),this.refresh()},_init:function(){var treeState=Ext.state.Manager.get(this.treestate_id);this.root.getPath("text")!==treeState&&this.root.expand()},_initExpand:function(){var treeState=Ext.state.Manager.get(this.treestate_id);Ext.isEmpty(this.config.openTo)?this.expandPath(treeState,"text"):this.selectPath("/"+_("files")+"/"+this.config.openTo,"text")},_saveState:function(n){n.expanded||n.isRoot||(n=n.parentNode),n.id==this.config.openTo&&n.select();var p=n.getPath("text");Ext.state.Manager.set(this.treestate_id,p)},_handleAfterDrop:function(o,r){var targetNode=o.event.target,dropNode=o.event.dropNode;if("append"==o.event.point&&targetNode){var ui=targetNode.getUI();ui.addClass("haschildren"),ui.removeClass("icon-resource")}if(MODx.request.a==MODx.action["resource/update"]&&dropNode.attributes.pk==MODx.request.id){var parentFieldCmb=Ext.getCmp("modx-resource-parent"),parentFieldHidden=Ext.getCmp("modx-resource-parent-hidden");parentFieldCmb&&parentFieldHidden&&(parentFieldHidden.setValue(dropNode.parentNode.attributes.pk),parentFieldCmb.setValue(dropNode.parentNode.attributes.text.replace(/(<([^>]+)>)/gi,"")))}targetNode.reload(!0)},_handleDrag:function(dropEvent){var from=dropEvent.dropNode.attributes.id,to=dropEvent.target.attributes.id;MODx.Ajax.request({url:this.config.url,params:{source:this.config.baseParams.source,from,to,action:this.config.sortAction||"browser/directory/sort",point:dropEvent.point},listeners:{success:{fn:function(r){var el=dropEvent.dropNode.getUI().getTextEl();el&&Ext.get(el).frame(),this.fireEvent("afterSort",{event:dropEvent,result:r})},scope:this},failure:{fn:function(r){return MODx.form.Handler.errorJSON(r),this.refresh(),!1},scope:this}}})},getPath:function(node){var path,p,a;if(node!==this.root){for(p=node.parentNode,a=[node.text];p&&p!==this.root;)a.unshift(p.text),p=p.parentNode;a.unshift(this.root.attributes.path||""),path=a.join(this.pathSeparator)}else path=node.attributes.path||"";return(path=path.replace(/^[\/\.]*/,""))+"/"},editFile:function(itm,e){MODx.loadPage("system/file/edit","file="+this.cm.activeNode.attributes.id+"&source="+this.config.source)},quickUpdateFile:function(itm,e){var node=this.cm.activeNode;MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/get",file:node.attributes.id,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:function(response){var r={file:node.attributes.id,name:node.text,path:node.attributes.pathRelative,source:this.getSource(),content:response.object.content};MODx.load({xtype:"modx-window-file-quick-update",record:r,listeners:{hide:{fn:function(){this.destroy()}}}}).show(e.target)},scope:this}}})},createFile:function(itm,e){var active=this.cm.activeNode,dir=active&&active.attributes&&(active.isRoot||"dir"==active.attributes.type)?active.attributes.id:"";MODx.loadPage("system/file/create","directory="+dir+"&source="+this.getSource())},quickCreateFile:function(itm,e){var r={directory:this.cm.activeNode.attributes.id,source:this.getSource()};MODx.load({xtype:"modx-window-file-quick-create",record:r,listeners:{success:{fn:function(r){this.fireEvent("afterQuickCreate"),this.refreshActiveNode()},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},browser:null,loadFileManager:function(btn,e){var refresh=!1;null===this.browser?this.browser=MODx.load({xtype:"modx-browser",hideFiles:MODx.config.modx_browser_tree_hide_files,rootId:"/",wctx:MODx.ctx,source:this.config.baseParams.source,listeners:{select:{fn:function(data){this.fireEvent("fileBrowserSelect",data)},scope:this}}}):refresh=!0,this.browser&&(this.browser.setSource(this.config.baseParams.source),refresh&&this.browser.win.tree.refresh(),this.browser.show())},renameNode:function(field,nv,ov){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/rename",new_name:nv,old_name:ov,file:this.treeEditor.editNode.id,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:function(r){this.fireEvent("afterRename"),this.refreshActiveNode()},scope:this}}})},renameDirectory:function(item,e){var node=this.cm.activeNode,r={old_name:node.text,name:node.text,path:node.attributes.pathRelative,source:this.getSource()};MODx.load({xtype:"modx-window-directory-rename",record:r,listeners:{success:{fn:this.refreshParentNode,scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},renameFile:function(item,e){var node=this.cm.activeNode,r={old_name:node.text,name:node.text,path:node.attributes.pathRelative,source:this.getSource()};MODx.load({xtype:"modx-window-file-rename",record:r,listeners:{success:{fn:function(r){this.fireEvent("afterRename"),this.refreshParentNode()},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},createDirectory:function(item,e){var node=!(!this.cm||!this.cm.activeNode)&&this.cm.activeNode,r={parent:node&&"dir"==node.attributes.type?node.attributes.pathRelative:"/",source:this.getSource()};MODx.load({xtype:"modx-window-directory-create",record:r,listeners:{success:{fn:function(){var parent=Ext.getCmp("folder-parent").getValue();this.cm.activeNode&&"constructor"===this.cm.activeNode.constructor.name||""===parent||"/"===parent?this.refresh():this.refreshActiveNode()},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e?e.target:Ext.getBody())},chmodDirectory:function(item,e){var node=this.cm.activeNode,r={dir:node.attributes.path,mode:node.attributes.perms,source:this.getSource()};MODx.load({xtype:"modx-window-directory-chmod",record:r,listeners:{success:{fn:this.refreshActiveNode,scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},removeDirectory:function(item,e){var node=this.cm.activeNode;MODx.msg.confirm({text:_("file_folder_remove_confirm"),url:MODx.config.connector_url,params:{action:"browser/directory/remove",dir:node.attributes.path,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:this._afterRemove,scope:this}}})},removeFile:function(item,e){var node=this.cm.activeNode;MODx.msg.confirm({text:_("file_confirm_remove"),url:MODx.config.connector_url,params:{action:"browser/file/remove",file:node.attributes.pathRelative,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:this._afterRemove,scope:this}}})},_afterRemove:function(){this.fireEvent("afterRemove"),this.refreshParentNode(),this.cm.activeNode=null},unpackFile:function(item,e){var node=this.cm.activeNode;MODx.msg.confirm({text:_("file_download_unzip")+" "+node.attributes.id,url:MODx.config.connectors_url,params:{action:"browser/file/unpack",file:node.attributes.id,wctx:MODx.ctx||"",source:this.getSource(),path:node.attributes.directory},listeners:{success:{fn:this.refreshParentNode,scope:this}}})},downloadFile:function(item,e){var node=this.cm.activeNode;MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/download",file:node.attributes.pathRelative,wctx:MODx.ctx||"",source:this.getSource()},listeners:{success:{fn:function(r){Ext.isEmpty(r.object.url)||(location.href=MODx.config.connector_url+"?action=browser/file/download&download=1&file="+node.attributes.id+"&HTTP_MODAUTH="+MODx.siteId+"&source="+this.getSource()+"&wctx="+MODx.ctx)},scope:this}}})},copyRelativePath:function(item,e){var node=this.cm.activeNode,dummyRelativePathInput=document.createElement("input");document.body.appendChild(dummyRelativePathInput),dummyRelativePathInput.setAttribute("value",node.attributes.pathRelative),dummyRelativePathInput.select(),document.execCommand("copy"),document.body.removeChild(dummyRelativePathInput)},getSource:function(){return this.config.baseParams.source},uploadFiles:function(btn,e){this.uploader||(this.uploader=new MODx.util.MultiUploadDialog.Dialog({url:MODx.config.connector_url,base_params:{action:"browser/file/upload",wctx:MODx.ctx||"",source:this.getSource()},cls:"ext-ux-uploaddialog-dialog modx-upload-window"}),this.uploader.on("show",this.beforeUpload,this),this.uploader.on("uploadsuccess",this.uploadSuccess,this),this.uploader.on("uploaderror",this.uploadError,this),this.uploader.on("uploadfailed",this.uploadFailed,this)),this.uploader.base_params.source=this.getSource(),this.uploader.show(btn)},uploadError:function(dlg,file,data,rec){},uploadFailed:function(dlg,file,rec){},uploadSuccess:function(){if(this.cm.activeNode){var node=this.cm.activeNode;if(node.isLeaf){var pn=node.isLeaf()?node.parentNode:node;pn?pn.reload():this.refreshActiveNode(),this.fireEvent("afterUpload",node)}else this.refreshActiveNode()}else this.refresh(),this.fireEvent("afterUpload")},beforeUpload:function(){var path=this.config.openTo||this.config.rootId||"/";this.cm.activeNode&&(path=this.getPath(this.cm.activeNode),this.cm.activeNode.isLeaf()&&(path=this.getPath(this.cm.activeNode.parentNode))),this.uploader.setBaseParams({action:"browser/file/upload",path,wctx:MODx.ctx||"",source:this.getSource()}),this.fireEvent("beforeUpload",this.cm.activeNode)}}),Ext.reg("modx-tree-directory",MODx.tree.Directory),MODx.window.CreateDirectory=function(config){config=config||{},Ext.applyIf(config,{title:_("file_folder_create"),url:MODx.config.connector_url,action:"browser/directory/create",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{fieldLabel:_("name"),name:"name",xtype:"textfield",anchor:"100%",allowBlank:!1},{fieldLabel:_("file_folder_parent"),id:"folder-parent",name:"parent",xtype:"textfield",anchor:"100%"}]}),MODx.window.CreateDirectory.superclass.constructor.call(this,config)},Ext.extend(MODx.window.CreateDirectory,MODx.Window),Ext.reg("modx-window-directory-create",MODx.window.CreateDirectory),MODx.window.ChmodDirectory=function(config){config=config||{},Ext.applyIf(config,{title:_("file_folder_chmod"),url:MODx.config.connector_url,action:"browser/directory/chmod",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{name:"dir",fieldLabel:_("name"),xtype:"statictextfield",anchor:"100%",submitValue:!0},{fieldLabel:_("mode"),name:"mode",xtype:"textfield",anchor:"100%",allowBlank:!1}]}),MODx.window.ChmodDirectory.superclass.constructor.call(this,config)},Ext.extend(MODx.window.ChmodDirectory,MODx.Window),Ext.reg("modx-window-directory-chmod",MODx.window.ChmodDirectory),MODx.window.RenameDirectory=function(config){config=config||{},Ext.applyIf(config,{title:_("rename"),url:MODx.config.connector_url,action:"browser/directory/rename",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{fieldLabel:_("path"),name:"path",xtype:"statictextfield",submitValue:!0,anchor:"100%"},{fieldLabel:_("old_name"),name:"old_name",xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("new_name"),name:"name",xtype:"textfield",anchor:"100%",allowBlank:!1}]}),MODx.window.RenameDirectory.superclass.constructor.call(this,config)},Ext.extend(MODx.window.RenameDirectory,MODx.Window),Ext.reg("modx-window-directory-rename",MODx.window.RenameDirectory),MODx.window.RenameFile=function(config){config=config||{},Ext.applyIf(config,{title:_("rename"),url:MODx.config.connector_url,action:"browser/file/rename",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{fieldLabel:_("path"),name:"path",xtype:"statictextfield",submitValue:!0,anchor:"100%"},{fieldLabel:_("old_name"),name:"old_name",xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("new_name"),name:"name",xtype:"textfield",anchor:"100%",allowBlank:!1},{name:"dir",xtype:"hidden"}]}),MODx.window.RenameFile.superclass.constructor.call(this,config)},Ext.extend(MODx.window.RenameFile,MODx.Window),Ext.reg("modx-window-file-rename",MODx.window.RenameFile),MODx.window.QuickUpdateFile=function(config){config=config||{},Ext.applyIf(config,{title:_("file_quick_update"),width:600,layout:"anchor",url:MODx.config.connector_url,action:"browser/file/update",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{xtype:"hidden",name:"file"},{fieldLabel:_("name"),name:"name",xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("path"),name:"path",xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("content"),xtype:"textarea",name:"content",anchor:"100%",height:200}],keys:[{key:Ext.EventObject.ENTER,shift:!0,fn:this.submit,scope:this}],buttons:[{text:config.cancelBtnText||_("cancel"),scope:this,handler:function(){this.hide()}},{text:config.saveBtnText||_("save"),scope:this,handler:function(){this.submit(!1)}},{text:config.saveBtnText||_("save_and_close"),cls:"primary-button",scope:this,handler:this.submit}]}),MODx.window.QuickUpdateFile.superclass.constructor.call(this,config)},Ext.extend(MODx.window.QuickUpdateFile,MODx.Window),Ext.reg("modx-window-file-quick-update",MODx.window.QuickUpdateFile),MODx.window.QuickCreateFile=function(config){config=config||{},Ext.applyIf(config,{title:_("file_quick_create"),width:600,layout:"anchor",url:MODx.config.connector_url,action:"browser/file/create",fields:[{xtype:"hidden",name:"wctx",value:MODx.ctx||""},{xtype:"hidden",name:"source"},{fieldLabel:_("directory"),name:"directory",submitValue:!0,xtype:"statictextfield",anchor:"100%"},{fieldLabel:_("name"),name:"name",xtype:"textfield",anchor:"100%",allowBlank:!1},{fieldLabel:_("content"),xtype:"textarea",name:"content",anchor:"100%",height:200}],keys:[{key:Ext.EventObject.ENTER,shift:!0,fn:this.submit,scope:this}]}),MODx.window.QuickCreateFile.superclass.constructor.call(this,config)},Ext.extend(MODx.window.QuickCreateFile,MODx.Window),Ext.reg("modx-window-file-quick-create",MODx.window.QuickCreateFile),MODx.panel.FileTree=function(config){config=config||{},Ext.applyIf(config,{_treePrefix:"source-tree-",autoHeight:!0,defaults:{autoHeight:!0,border:!1}}),MODx.panel.FileTree.superclass.constructor.call(this,config),this.on("render",this.getSourceList,this)},Ext.extend(MODx.panel.FileTree,Ext.Container,{getSourceList:function(){MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"source/getList",limit:0},listeners:{success:{fn:function(data){this.onSourceListReceived(data.results)},scope:this},failure:{fn:function(data){return data.total>0&&null!=data.results&&this.onSourceListReceived(data.results),!1},scope:this}}})},onSourceListReceived:function(sources){for(var k=0;k=0&&rect.left>=0&&rect.top<=height&&(image.src=image.getAttribute("data-src"),delete this.thumbnails[i])}}},refresh:function(){MODx.DataView.prototype.refresh.call(this),this.thumbnails=Array.prototype.slice.call(document.querySelectorAll("img[data-src]")),this.lazyLoad()},listeners:{selectionchange:{fn:this.showDetails,scope:this,buffer:100},dblclick:config.onSelect||{fn:Ext.emptyFn,scope:this},render:{fn:this.sortStore,scope:this},afterrender:{fn:function(){this.getEl().parent().on("scroll",(function(){this.lazyLoad()}),this)},scope:this}},prepareData:this.formatData.createDelegate(this)}),MODx.browser.View.superclass.constructor.call(this,config)},Ext.extend(MODx.browser.View,MODx.DataView,{templates:{},run:function(p){(p=p||{}).dir&&(this.dir=p.dir),Ext.applyIf(p,{action:"browser/directory/getFiles",dir:this.dir,source:this.config.source||MODx.config.default_media_source}),this.mask=new Ext.LoadMask(Ext.getBody(),{msg:_("loading")}),this.mask.show(),this.store.load({params:p,callback:function(){this.mask.hide(),this.refresh(),Ext.getCmp(this.ident+"-filepath").setValue(""),this.select(0)},scope:this})},editFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id];MODx.loadPage("system/file/edit","file="+encodeURIComponent(data.pathRelative)+"&source="+this.config.source)},quickUpdateFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id];MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/get",file:data.pathRelative,wctx:MODx.ctx||"",source:this.config.source},listeners:{success:{fn:function(response){var r={file:data.pathRelative,name:data.name,path:data.pathRelative,source:this.config.source,content:response.object.content};MODx.load({xtype:"modx-window-file-quick-update",record:r,listeners:{hide:{fn:function(){this.destroy()}}}}).show(e.target)},scope:this}}})},renameFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id],r={old_name:data.name,name:data.name,path:data.pathRelative,source:this.config.source};MODx.load({xtype:"modx-window-file-rename",record:r,listeners:{success:{fn:function(r){this.config.tree.refreshParentNode(),this.run()},scope:this},hide:{fn:function(){this.destroy()}}}}).show(e.target)},downloadFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id];MODx.Ajax.request({url:MODx.config.connector_url,params:{action:"browser/file/download",file:data.pathRelative,wctx:MODx.ctx||"",source:this.config.source},listeners:{success:{fn:function(r){Ext.isEmpty(r.object.url)||(location.href=MODx.config.connector_url+"?action=browser/file/download&download=1&file="+data.pathRelative+"&HTTP_MODAUTH="+MODx.siteId+"&source="+this.config.source+"&wctx="+MODx.ctx)},scope:this}}})},copyRelativePath:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id],dummyRelativePathInput=document.createElement("input");document.body.appendChild(dummyRelativePathInput),dummyRelativePathInput.setAttribute("value",data.pathRelative),dummyRelativePathInput.select(),document.execCommand("copy"),document.body.removeChild(dummyRelativePathInput)},removeFile:function(item,e){var node=this.cm.activeNode,data=this.lookup[node.id];MODx.msg.confirm({text:_("file_remove_confirm"),url:MODx.config.connector_url,params:{action:"browser/file/remove",file:data.pathRelative,source:this.config.source,wctx:this.config.wctx||"web"},listeners:{success:{fn:function(r){this.config.tree.refreshParentNode(),this.run()},scope:this}}})},setTemplate:function(tpl){"list"===tpl?(this.tpl=this.templates.list,this.itemSelector="div.modx-browser-list-item"):(this.tpl=this.templates.thumb,this.itemSelector="div.modx-browser-thumb-wrap"),this.refresh(),this.select(0)},sortStore:function(){var v=MODx.config.modx_browser_default_sort||"name";this.store.sort(v,"name"==v?"ASC":"DESC"),this.select(0)},showDetails:function(){var node=this.getSelectedNodes(),detailPanel=Ext.getCmp(this.config.ident+"-img-detail-panel").body,okBtn=Ext.getCmp(this.ident+"-ok-btn");if(node&&node.length>0){node=node[0],okBtn&&okBtn.enable();var data=this.lookup[node.id];this.config.tree.getNodeById(data.pathRelative)&&(this.config.tree.cm.activeNode=this.config.tree.getNodeById(data.pathRelative),this.config.tree.getSelectionModel().select(this.config.tree.getNodeById(data.pathRelative))),Ext.getCmp(this.ident+"-filepath").setValue((-1===data.fullRelativeUrl.indexOf("http")?"/":"")+data.fullRelativeUrl),detailPanel.hide(),this.templates.details.overwrite(detailPanel,data),detailPanel.slideIn("l",{stopFx:!0,duration:".2"})}else okBtn&&okBtn.disable(),detailPanel.update("")},showFullView:function(name,ident){var data=this.lookup[name];if(data){this.fvWin||(this.fvWin=new Ext.Window({layout:"fit",width:600,height:450,bodyStyle:"padding: 0;",closeAction:"hide",plain:!0,items:[{id:this.ident+"modx-view-item-full",cls:"modx-browser-fullview",html:""}],buttons:[{text:_("close"),cls:"primary-button",handler:function(){this.fvWin.hide()},scope:this}]})),this.fvWin.show();var ratio=data.image_width>800?800/data.image_width:1,w=data.image_width<250?250:data.image_width>800?800:data.image_width,hfit=data.image_height*ratio+this.fvWin.footer.dom.clientHeight+1+this.fvWin.header.dom.clientHeight+1,h=data.image_height<200?200:data.image_height>600?hfit>600?600:hfit:data.image_height;this.fvWin.setSize(w,h),this.fvWin.center(),this.fvWin.setTitle(data.name),Ext.get(this.ident+"modx-view-item-full").update(''+data.name+'")}},formatData:function(data){var size;return data.shortName=Ext.util.Format.ellipsis(data.name,18),data.sizeString=0!=data.size?(size=data.size)<1024?size+" bytes":Math.round(10*size/1024)/10+" KB":0,data.imageSizeString=0!=data.preview?data.image_width+"x"+data.image_height+"px":0,data.imageSizeString="xpx"===data.imageSizeString?0:data.imageSizeString,data.dateString=Ext.isEmpty(data.lastmod)?0:new Date(data.lastmod).format(MODx.config.manager_date_format+" "+MODx.config.manager_time_format),this.lookup[data.name]=data,data},_initTemplates:function(){this.templates.thumb=new Ext.XTemplate('','
','
',' {name:htmlEncode}',"
"," {shortName:htmlEncode}","
","
"),this.templates.thumb.compile(),this.templates.list=new Ext.XTemplate('','
',' ',' {name:htmlEncode}',' ',' {sizeString}'," ",' ',' {imageSizeString}'," "," ","
","
"),this.templates.list.compile(),this.templates.details=new Ext.XTemplate('
',' ',' ','
",' {name:htmlEncode}',"
","
",' ','
',' ',"
","
",'
'," "+_("file_name")+":"," {name:htmlEncode}",' '," "+_("file_size")+":"," {sizeString}"," ",' '," "+_("image_size")+":"," {imageSizeString}"," ",' '," "+_("last_modified")+":"," {dateString}"," ","
","
","
"),this.templates.details.compile()}}),Ext.reg("modx-browser-view",MODx.browser.View),MODx.browser.Window=function(config){config=config||{},this.ident=Ext.id(),MODx.browserOpen=!0,this.tree=MODx.load({xtype:"modx-tree-directory",onUpload:function(){this.view.run()},scope:this,source:config.source||MODx.config.default_media_source,hideFiles:config.hideFiles||MODx.config.modx_browser_tree_hide_files,hideTooltips:config.hideTooltips||MODx.config.modx_browser_tree_hide_tooltips||!0,openTo:config.openTo||"",ident:this.ident,rootId:config.rootId||"/",rootName:_("files"),rootVisible:null==config.rootVisible||!Ext.isEmpty(config.rootId),id:this.ident+"-tree",hideSourceCombo:config.hideSourceCombo||!1,useDefaultToolbar:!1,listeners:{afterUpload:{fn:function(){this.view.run()},scope:this},afterQuickCreate:{fn:function(){this.view.run()},scope:this},afterRename:{fn:function(){this.view.run()},scope:this},afterRemove:{fn:function(){this.view.run()},scope:this},changeSource:{fn:function(s){this.config.source=s,this.view.config.source=s,this.view.baseParams.source=s,this.view.dir="/",this.view.run()},scope:this},afterrender:{fn:function(tree){tree.root.expand()},scope:this},beforeclick:{fn:function(node,e){if(node.leaf)return this.view.select(this.view.store.indexOfId("/"+node.attributes.url)),this.view.dir!==node.parentNode.id&&this.load(node.parentNode.id),!1;this.load(node.id)},scope:this}}}),this.view=MODx.load({xtype:"modx-browser-view",onSelect:{fn:this.onSelect,scope:this},source:config.source||MODx.config.default_media_source,allowedFileTypes:config.allowedFileTypes||"",wctx:config.wctx||"web",openTo:config.openTo||"",ident:this.ident,id:this.ident+"-view",tree:this.tree}),Ext.applyIf(config,{title:_("modx_browser")+" ("+(MODx.ctx?MODx.ctx:"web")+")",cls:"modx-browser modx-browser-window",layout:"border",minWidth:500,minHeight:300,width:"90%",height:.9*Ext.getBody().getViewSize().height,modal:!1,closeAction:"hide",border:!1,items:[{id:this.ident+"-browser-tree",cls:"modx-browser-tree",region:"west",width:250,height:"100%",items:this.tree,autoScroll:!0,split:!0,border:!1},{id:this.ident+"-browser-view",cls:"modx-browser-view-ct",region:"center",autoScroll:!0,border:!1,items:this.view,tbar:this.getToolbar(),bbar:this.getPathbar()},{id:this.ident+"-img-detail-panel",cls:"modx-browser-details-ct",region:"east",split:!0,border:!1,width:250}],buttons:[{id:this.ident+"-cancel-btn",text:_("cancel"),handler:this.close,scope:this},{id:this.ident+"-ok-btn",text:_("ok"),cls:"primary-button",handler:this.onSelect,scope:this}],keys:{key:27,handler:this.hide,scope:this}}),MODx.browser.Window.superclass.constructor.call(this,config),this.config=config,this.addEvents({select:!0})},Ext.extend(MODx.browser.Window,Ext.Window,{returnEl:null,filter:function(){var filter=Ext.getCmp(this.ident+"filter");this.view.store.filter("name",filter.getValue(),!0),this.view.select(0)},load:function(dir){dir=dir||(Ext.isEmpty(this.config.openTo)?"":this.config.openTo),this.view.run({dir,source:this.config.source,allowedFileTypes:this.config.allowedFileTypes||"",wctx:this.config.wctx||"web"}),this.sortStore()},sortStore:function(){var v=Ext.getCmp(this.ident+"sortSelect").getValue();this.view.store.sort(v,"name"==v?"ASC":"DESC"),this.view.select(0)},changeViewmode:function(){var v=Ext.getCmp(this.ident+"viewSelect").getValue();this.view.setTemplate(v),this.view.select(0)},reset:function(){this.rendered&&(Ext.getCmp(this.ident+"filter").reset(),this.view.getEl().dom.scrollTop=0),this.view.store.clearFilter(),this.view.select(0)},getToolbar:function(){return[{text:_("filter")+":",xtype:"label"},{xtype:"textfield",id:this.ident+"filter",selectOnFocus:!0,width:200,listeners:{render:{fn:function(){Ext.getCmp(this.ident+"filter").getEl().on("keyup",(function(){this.filter()}),this,{buffer:500})},scope:this}}},{text:_("sort_by")+":",xtype:"label"},{id:this.ident+"sortSelect",xtype:"combo",typeAhead:!0,triggerAction:"all",width:130,editable:!1,mode:"local",displayField:"desc",valueField:"name",lazyInit:!1,value:MODx.config.modx_browser_default_sort||"name",store:new Ext.data.SimpleStore({fields:["name","desc"],data:[["name",_("name")],["size",_("file_size")],["lastmod",_("last_modified")]]}),listeners:{select:{fn:this.sortStore,scope:this}}},"-",{text:_("files_viewmode")+":",xtype:"label"},"-",{id:this.ident+"viewSelect",xtype:"combo",typeAhead:!1,triggerAction:"all",width:100,editable:!1,mode:"local",displayField:"desc",valueField:"type",lazyInit:!1,value:MODx.config.modx_browser_default_viewmode||"grid",store:new Ext.data.SimpleStore({fields:["type","desc"],data:[["grid",_("files_viewmode_grid")],["list",_("files_viewmode_list")]]}),listeners:{select:{fn:this.changeViewmode,scope:this}}}]},getPathbar:function(){return{cls:"modx-browser-pathbbar",items:[{xtype:"textfield",id:this.ident+"-filepath",cls:"modx-browser-filepath",listeners:{focus:{fn:function(el){setTimeout((function(){var field=el.getEl().dom;if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(!0),selRange.moveStart("character",0),selRange.moveEnd("character",field.value.length),selRange.select()}else field.setSelectionRange?field.setSelectionRange(0,field.value.length):field.selectionStart&&(field.selectionStart=0,field.selectionEnd=field.value.length)}),50)},scope:this}}}]}},setReturn:function(el){this.returnEl=el},onSelect:function(data){var selNode=this.view.getSelectedNodes()[0],callback=this.config.onSelect||this.onSelectHandler,lookup=this.view.lookup,scope=this.config.scope;this.hide(this.config.animEl||null,(function(){if(selNode&&callback){var data=lookup[selNode.id];Ext.callback(callback,scope||this,[data]),this.fireEvent("select",data)}}),scope)},onSelectHandler:function(data){Ext.get(this.returnEl).dom.value=unescape(data.url)}}),Ext.reg("modx-browser-window",MODx.browser.Window),MODx.Media=function(config){config=config||{},this.ident=config.ident||Ext.id(),MODx.browserOpen=!0,this.tree=MODx.load({xtype:"modx-tree-directory",onUpload:function(){this.view.run()},scope:this,source:config.source||MODx.config.default_media_source,hideFiles:config.hideFiles||MODx.config.modx_browser_tree_hide_files,hideTooltips:config.hideTooltips||MODx.config.modx_browser_tree_hide_tooltips||!0,openTo:config.openTo||"",ident:this.ident,rootId:config.rootId||"/",rootName:_("files"),rootVisible:null==config.rootVisible||!Ext.isEmpty(config.rootId),id:this.ident+"-tree",hideSourceCombo:config.hideSourceCombo||!1,useDefaultToolbar:!1,listeners:{afterUpload:{fn:function(){this.view.run()},scope:this},afterQuickCreate:{fn:function(){this.view.run()},scope:this},afterRename:{fn:function(){this.view.run()},scope:this},afterRemove:{fn:function(){this.view.run()},scope:this},changeSource:{fn:function(s){this.config.source=s,this.view.config.source=s,this.view.baseParams.source=s,this.view.dir="/",this.view.run()},scope:this},afterrender:{fn:function(tree){tree.root.expand()},scope:this},beforeclick:{fn:function(node,e){if(node.leaf)return this.view.select(this.view.store.indexOfId("/"+node.attributes.url)),this.view.dir!==node.parentNode.id&&this.load(node.parentNode.id),!1;this.load(node.id)},scope:this}}}),this.view=MODx.load({xtype:"modx-browser-view",onSelect:{fn:this.onSelect,scope:this},source:config.source||MODx.config.default_media_source,allowedFileTypes:config.allowedFileTypes||"",wctx:config.wctx||"web",openTo:config.openTo||"",ident:this.ident,id:this.ident+"-view",tree:this.tree}),Ext.applyIf(config,{cls:"modx-browser modx-browser-panel container",layout:"border",width:"98%",height:"95%",items:[{region:"west",width:250,items:this.tree,id:this.ident+"-browser-tree",cls:"modx-browser-tree",autoScroll:!0,split:!0},{region:"center",layout:"fit",items:this.view,id:this.ident+"-browser-view",cls:"modx-browser-view-ct",autoScroll:!0,border:!1,tbar:this.getToolbar(),bbar:this.getPathbar()},{region:"east",width:250,id:this.ident+"-img-detail-panel",cls:"modx-browser-details-ct",split:!0}]}),MODx.Media.superclass.constructor.call(this,config),this.config=config},Ext.extend(MODx.Media,Ext.Container,{returnEl:null,filter:function(){var filter=Ext.getCmp(this.ident+"filter");this.view.store.filter("name",filter.getValue(),!0),this.view.select(0)},load:function(dir){dir=dir||(Ext.isEmpty(this.config.openTo)?"":this.config.openTo),this.view.run({dir,source:this.config.source,allowedFileTypes:this.config.allowedFileTypes||"",wctx:this.config.wctx||"web"}),this.sortStore()},sortStore:function(){var v=Ext.getCmp(this.ident+"sortSelect").getValue();this.view.store.sort(v,"name"==v?"ASC":"DESC"),this.view.select(0)},changeViewmode:function(){var v=Ext.getCmp(this.ident+"viewSelect").getValue();this.view.setTemplate(v),this.view.select(0)},reset:function(){this.rendered&&(Ext.getCmp(this.ident+"filter").reset(),this.view.getEl().dom.scrollTop=0),this.view.store.clearFilter(),this.view.select(0)},getToolbar:function(){return[{text:_("filter")+":",xtype:"label"},{xtype:"textfield",id:this.ident+"filter",selectOnFocus:!0,width:200,listeners:{render:{fn:function(){Ext.getCmp(this.ident+"filter").getEl().on("keyup",(function(){this.filter()}),this,{buffer:500})},scope:this}}},{text:_("sort_by")+":",xtype:"label"},{id:this.ident+"sortSelect",xtype:"combo",typeAhead:!0,triggerAction:"all",width:130,editable:!1,mode:"local",displayField:"desc",valueField:"name",lazyInit:!1,value:MODx.config.modx_browser_default_sort||"name",store:new Ext.data.SimpleStore({fields:["name","desc"],data:[["name",_("name")],["size",_("file_size")],["lastmod",_("last_modified")]]}),listeners:{select:{fn:this.sortStore,scope:this}}},"-",{text:_("files_viewmode")+":",xtype:"label"},"-",{id:this.ident+"viewSelect",xtype:"combo",typeAhead:!1,triggerAction:"all",width:100,editable:!1,mode:"local",displayField:"desc",valueField:"type",lazyInit:!1,value:MODx.config.modx_browser_default_viewmode||"grid",store:new Ext.data.SimpleStore({fields:["type","desc"],data:[["grid",_("files_viewmode_grid")],["list",_("files_viewmode_list")]]}),listeners:{select:{fn:this.changeViewmode,scope:this}}}]},getPathbar:function(){return{cls:"modx-browser-pathbbar",items:[{xtype:"textfield",id:this.ident+"-filepath",cls:"modx-browser-filepath",listeners:{focus:{fn:function(el){setTimeout((function(){var field=el.getEl().dom;if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(!0),selRange.moveStart("character",0),selRange.moveEnd("character",field.value.length),selRange.select()}else field.setSelectionRange?field.setSelectionRange(0,field.value.length):field.selectionStart&&(field.selectionStart=0,field.selectionEnd=field.value.length)}),50)},scope:this}}}]}},setReturn:function(el){this.returnEl=el},onSelect:function(data){},onSelectHandler:function(data){Ext.get(this.returnEl).dom.value=unescape(data.url)}}),Ext.reg("modx-media-view",MODx.Media),MODx.browser.RTE=function(config){config=config||{},this.ident=config.ident||Ext.id(),MODx.browserOpen=!0,Ext.Ajax.defaultHeaders={modAuth:config.auth},Ext.Ajax.extraParams={HTTP_MODAUTH:config.auth},this.tree=MODx.load({xtype:"modx-tree-directory",onUpload:function(){this.view.run()},scope:this,source:config.source||MODx.config.default_media_source,hideFiles:config.hideFiles||MODx.config.modx_browser_tree_hide_files,hideTooltips:config.hideTooltips||MODx.config.modx_browser_tree_hide_tooltips||!0,openTo:config.openTo||"",ident:this.ident,rootId:config.rootId||"/",rootName:_("files"),rootVisible:null==config.rootVisible||!Ext.isEmpty(config.rootId),id:this.ident+"-tree",hideSourceCombo:config.hideSourceCombo||!1,useDefaultToolbar:!1,listeners:{afterUpload:{fn:function(){this.view.run()},scope:this},afterQuickCreate:{fn:function(){this.view.run()},scope:this},afterRename:{fn:function(){this.view.run()},scope:this},afterRemove:{fn:function(){this.view.run()},scope:this},changeSource:{fn:function(s){this.config.source=s,this.view.config.source=s,this.view.baseParams.source=s,this.view.dir="/",this.view.run()},scope:this},afterrender:{fn:function(tree){tree.root.expand()},scope:this},beforeclick:{fn:function(node,e){if(node.leaf)return this.view.select(this.view.store.indexOfId("/"+node.attributes.url)),this.view.dir!==node.parentNode.id&&this.load(node.parentNode.id),!1;this.load(node.id)},scope:this}}}),this.view=MODx.load({xtype:"modx-browser-view",onSelect:{fn:this.onSelect,scope:this},source:config.source||MODx.config.default_media_source,allowedFileTypes:config.allowedFileTypes||"",wctx:config.wctx||"web",openTo:config.openTo||"",ident:this.ident,id:this.ident+"-view",tree:this.tree}),Ext.applyIf(config,{title:_("modx_browser"),cls:"modx-browser modx-browser-rte",layout:"border",renderTo:document.body,id:this.ident+"-viewport",onSelect:MODx.onBrowserReturn||function(data){},items:[{id:this.ident+"-browser-tree",cls:"modx-browser-tree",region:"west",width:250,height:"100%",split:!0,items:this.tree,autoScroll:!0},{id:this.ident+"-browser-view",cls:"modx-browser-view-ct",region:"center",autoScroll:!0,width:450,items:this.view,tbar:this.getToolbar(),bbar:this.getPathbar()},{id:this.ident+"-img-detail-panel",cls:"modx-browser-details-ct",region:"east",split:!0,width:200,minWidth:200,maxWidth:300},{id:this.ident+"-south",cls:"modx-browser-rte-buttons",region:"south",split:!1,bbar:["->",{xtype:"button",id:this.ident+"-cancel-btn",text:_("cancel"),minWidth:75,handler:this.onCancel,scope:this},{xtype:"button",id:this.ident+"-ok-btn",text:_("ok"),cls:"primary-button",minWidth:75,handler:this.onSelect,scope:this}]}]}),MODx.browser.RTE.superclass.constructor.call(this,config),this.config=config},Ext.extend(MODx.browser.RTE,Ext.Viewport,{returnEl:null,filter:function(){var filter=Ext.getCmp(this.ident+"filter");this.view.store.filter("name",filter.getValue(),!0),this.view.select(0)},load:function(dir){dir=dir||(Ext.isEmpty(this.config.openTo)?"":this.config.openTo),this.view.run({dir,source:this.config.source,allowedFileTypes:this.config.allowedFileTypes||"",wctx:this.config.wctx||"web"}),this.sortStore()},sortStore:function(){var v=Ext.getCmp(this.ident+"sortSelect").getValue();this.view.store.sort(v,"name"==v?"ASC":"DESC"),this.view.select(0)},changeViewmode:function(){var v=Ext.getCmp(this.ident+"viewSelect").getValue();this.view.setTemplate(v),this.view.select(0)},reset:function(){this.rendered&&(Ext.getCmp(this.ident+"filter").reset(),this.view.getEl().dom.scrollTop=0),this.view.store.clearFilter(),this.view.select(0)},getToolbar:function(){return[{text:_("filter")+":",xtype:"label"},{xtype:"textfield",id:this.ident+"filter",selectOnFocus:!0,width:200,listeners:{render:{fn:function(){Ext.getCmp(this.ident+"filter").getEl().on("keyup",(function(){this.filter()}),this,{buffer:500})},scope:this}}},{text:_("sort_by")+":",xtype:"label"},{id:this.ident+"sortSelect",xtype:"combo",typeAhead:!0,triggerAction:"all",width:130,editable:!1,mode:"local",displayField:"desc",valueField:"name",lazyInit:!1,value:MODx.config.modx_browser_default_sort||"name",store:new Ext.data.SimpleStore({fields:["name","desc"],data:[["name",_("name")],["size",_("file_size")],["lastmod",_("last_modified")]]}),listeners:{select:{fn:this.sortStore,scope:this}}},"-",{text:_("files_viewmode")+":",xtype:"label"},"-",{id:this.ident+"viewSelect",xtype:"combo",typeAhead:!1,triggerAction:"all",width:100,editable:!1,mode:"local",displayField:"desc",valueField:"type",lazyInit:!1,value:MODx.config.modx_browser_default_viewmode||"grid",store:new Ext.data.SimpleStore({fields:["type","desc"],data:[["grid",_("files_viewmode_grid")],["list",_("files_viewmode_list")]]}),listeners:{select:{fn:this.changeViewmode,scope:this}}}]},getPathbar:function(){return{cls:"modx-browser-pathbbar",items:[{xtype:"textfield",id:this.ident+"-filepath",cls:"modx-browser-filepath",listeners:{focus:{fn:function(el){setTimeout((function(){var field=el.getEl().dom;if(field.createTextRange){var selRange=field.createTextRange();selRange.collapse(!0),selRange.moveStart("character",0),selRange.moveEnd("character",field.value.length),selRange.select()}else field.setSelectionRange?field.setSelectionRange(0,field.value.length):field.selectionStart&&(field.selectionStart=0,field.selectionEnd=field.value.length)}),50)},scope:this}}}]}},setReturn:function(el){this.returnEl=el},onSelect:function(data){var selNode=this.view.getSelectedNodes()[0],callback=this.config.onSelect||this.onSelectHandler,lookup=this.view.lookup,scope=this.config.scope;callback&&(data=selNode?lookup[selNode.id]:null,Ext.callback(callback,scope||this,[data]),this.fireEvent("select",data),window.top.opener&&(window.top.close(),window.top.opener.focus()))},onCancel:function(){var callback=this.config.onSelect||this.onSelectHandler,scope=this.config.scope;Ext.callback(callback,scope||this,[null]),this.fireEvent("select",null),window.top.opener&&(window.top.close(),window.top.opener.focus())},onSelectHandler:function(data){Ext.get(this.returnEl).dom.value=unescape(data.url)}}),Ext.reg("modx-browser-rte",MODx.browser.RTE),Ext.apply(Ext,{isFirebug:window.console&&window.console.firebug}),MODx.Layout=function(config){config=config||{},Ext.BLANK_IMAGE_URL=MODx.config.manager_url+"assets/ext3/resources/images/default/s.gif",Ext.Ajax.defaultHeaders={modAuth:config.auth},Ext.Ajax.extraParams={HTTP_MODAUTH:config.auth},MODx.siteId=config.auth,MODx.expandHelp=!!+MODx.config.inline_help;var sp=new MODx.HttpProvider;Ext.state.Manager.setProvider(sp),sp.initState(MODx.defaultState),config.showTree=!1,Ext.applyIf(config,{layout:"border",id:"modx-layout",stateSave:!0,items:this.buildLayout(config)}),MODx.Layout.superclass.constructor.call(this,config),this.config=config,this.addEvents({afterLayout:!0,loadKeyMap:!0,loadTabs:!0}),this.loadKeys(),config.showTree||(Ext.getCmp("modx-leftbar-tabs").collapse(!1),Ext.get("modx-leftbar").hide(),Ext.get("modx-leftbar-tabs-xcollapsed").setStyle("display","none")),this.fireEvent("afterLayout")},Ext.extend(MODx.Layout,Ext.Viewport,{buildLayout:function(config){var items=[],north=this.getNorth(config),west=this.getWest(config),center=this.getCenter(config),south=this.getSouth(config),east=this.getEast(config);return north&&Ext.isObject(north)&&items.push(north),west&&Ext.isObject(west)&&items.push(west),center&&Ext.isObject(center)&&items.push(center),south&&Ext.isObject(south)&&items.push(south),east&&Ext.isObject(east)&&items.push(east),items},getNorth:function(config){return{xtype:"box",region:"north",applyTo:"modx-header"}},getWest:function(config){var tabs=[];MODx.perm.resource_tree&&(tabs.push({title:_("resources"),xtype:"modx-tree-resource",id:"modx-resource-tree"}),config.showTree=!0),MODx.perm.element_tree&&(tabs.push({title:_("elements"),xtype:"modx-tree-element",id:"modx-tree-element"}),config.showTree=!0),MODx.perm.file_tree&&(tabs.push({title:_("files"),xtype:"modx-panel-filetree",id:"modx-file-tree"}),config.showTree=!0);return{region:"west",applyTo:"modx-leftbar",id:"modx-leftbar-tabs",split:!0,width:310,minSize:288,autoScroll:!0,unstyled:!0,collapseMode:"mini",useSplitTips:!0,monitorResize:!0,layout:"anchor",items:[{xtype:"modx-tabs",plain:!0,defaults:{autoScroll:!0,fitToFrame:!0},id:"modx-leftbar-tabpanel",border:!1,anchor:"100%",activeTab:0,stateful:!0,stateEvents:["tabchange"],getState:function(){return{activeTab:this.items.indexOf(this.getActiveTab())}},items:tabs}],getState:function(){return{collapsed:this.collapsed,width:this.width}},listeners:{beforestatesave:this.onBeforeSaveState,scope:this}}},getCenter:function(config){return{region:"center",applyTo:"modx-content",padding:"0 1px 0 0",bodyStyle:"background-color:transparent;",id:"modx-content",border:!1,autoScroll:!0}},getSouth:function(config){},getEast:function(config){},getLeftBar:function(){var nav=Ext.getCmp("modx-leftbar-tabpanel");return nav||null},addToLeftBar:function(items){var nav=this.getLeftBar();nav&&items&&(nav.add(items),this.onAfterLeftBarAdded(nav,items))},onAfterLeftBarAdded:function(nav,items){},loadKeys:function(){Ext.KeyMap.prototype.stopEvent=!0;var k=new Ext.KeyMap(Ext.get(document));k.addBinding({key:Ext.EventObject.H,ctrl:!0,shift:!0,fn:this.toggleLeftbar,scope:this,stopEvent:!0}),k.addBinding({key:Ext.EventObject.N,ctrl:!0,shift:!0,fn:function(){var t=Ext.getCmp("modx-resource-tree");t&&t.quickCreate(document,{},"modDocument","web",0)},stopEvent:!0}),k.addBinding({key:Ext.EventObject.U,ctrl:!0,shift:!0,alt:!1,fn:MODx.clearCache,scope:this,stopEvent:!0}),this.fireEvent("loadKeyMap",{keymap:k})},refreshTrees:function(){var t;(t=Ext.getCmp("modx-resource-tree"))&&t.rendered&&t.refresh(),(t=Ext.getCmp("modx-tree-element"))&&t.rendered&&t.refresh(),(t=Ext.getCmp("modx-file-tree"))&&t.rendered&&t.items.each((function(tree,idx){tree.refresh()}))},leftbarVisible:!0,toggleLeftbar:function(){this.leftbarVisible?this.hideLeftbar(!0):this.showLeftbar(!0),this.leftbarVisible=!this.leftbarVisible},hideLeftbar:function(anim,state){Ext.getCmp("modx-leftbar-tabs").collapse(anim),Ext.isBoolean(state)&&(this.stateSave=state)},showLeftbar:function(anim){Ext.getCmp("modx-leftbar-tabs").expand(anim)},onBeforeSaveState:function(component,state){var collapsed=state.collapsed;if(collapsed&&!this.stateSave)return this.stateSave=!0,!1;if(!collapsed){var wrap=Ext.get("modx-leftbar").down("div");wrap.isVisible()||(wrap.setVisible(!0),Ext.getCmp("modx-leftbar-tabpanel").expand(!0))}}}),MODx.LayoutMgr=function(){var _activeMenu="menu0";return{loadPage:function(action,parameters){var parts=[];action&&(!isNaN(parseInt(action))||"?"!=action.substr(0,1)&&"index.php?"!=action.substr(0,10)?parts.push("?a="+action):parts.push(action)),parameters&&parts.push(parameters);var url=parts.join("&");if(MODx.fireEvent("beforeLoadPage",url)){var e=window.event,middleMouseButtonClick=e&&(4===e.button||2===e.which),keyboardKeyPressed=e&&(1===e.button||!0===e.ctrlKey||!0===e.metaKey||!0===e.shiftKey);if(middleMouseButtonClick||keyboardKeyPressed)return window.open(url);location.href=url}return!1},changeMenu:function(a,sm){if(sm===_activeMenu)return!1;Ext.get(sm).addClass("active");var om=Ext.get(_activeMenu);return om&&om.removeClass("active"),_activeMenu=sm,!1}}}(),MODx.loadPage=MODx.LayoutMgr.loadPage,MODx.showDashboard=MODx.LayoutMgr.showDashboard,MODx.hideDashboard=MODx.LayoutMgr.hideDashboard,MODx.changeMenu=MODx.LayoutMgr.changeMenu; \ No newline at end of file diff --git a/manager/assets/modext/widgets/element/modx.tree.element.js b/manager/assets/modext/widgets/element/modx.tree.element.js index 7ac1bf024c4..7020e66e21d 100755 --- a/manager/assets/modext/widgets/element/modx.tree.element.js +++ b/manager/assets/modext/widgets/element/modx.tree.element.js @@ -179,62 +179,123 @@ Ext.extend(MODx.tree.Element,MODx.tree.Tree,{ }); } - ,removeElement: function(itm,e) { - var id = this.cm.activeNode.id.substr(2); - var oar = id.split('_'); + /** + * @property {Function} extractElementIdentifiersFromActiveNode Gets an Element's type, id, and category id from an active Node's id + * + * @param {Ext.tree.Node} activeNode The Node currently being acted upon + * @return {Object} An object containing relevant identifiers of the Element this Node represents + */ + ,extractElementIdentifiersFromActiveNode: function(activeNode) { + let startIndex; + const extractedData = {}; + + switch (true) { + // When creating Elements in the root of their tree + case activeNode.id.indexOf('n_type_') === 0: + startIndex = 7; + break; + // When altering or removing an Element from within the Categories tree + case activeNode.id.indexOf('n_c_') === 0: + startIndex = 4; + break; + default: + startIndex = 2; + } + const identifiers = activeNode.id.substr(startIndex).split('_'); + + /* + Expected array items: + - When working in the Categories tree: [element type, node type ('element'), element id, element's category id] + - When working in any of the five Element trees: [element type, node type ('category'), element's category id] + - When creating and Element in the root of it's type's tree: [element type] + */ + + [extractedData.type] = identifiers; + + switch (identifiers.length) { + case 4: + return { + ...extractedData, + elementId: parseInt(identifiers[2], 10), + categoryId: parseInt(identifiers[3], 10) + }; + case 3: + return { + ...extractedData, + categoryId: parseInt(identifiers[2], 10) + }; + case 1: + return extractedData; + // no default + } + return false; + } + + ,removeElement: function(itm, e) { + const elementIdentifiers = this.extractElementIdentifiersFromActiveNode(this.cm.activeNode); MODx.msg.confirm({ - title: _('warning') - ,text: _('remove_this_confirm',{ - type: _(oar[0]) - ,name: this.cm.activeNode.attributes.name - }) - ,url: MODx.config.connector_url - ,params: { - action: 'element/'+oar[0]+'/remove' - ,id: oar[2] - } - ,listeners: { - 'success': {fn:function() { + title: _('warning'), + text: _('remove_this_confirm', { + type: _(elementIdentifiers.type), + name: this.cm.activeNode.attributes.name + }), + url: MODx.config.connector_url, + params: { + action: `element/${elementIdentifiers.type}/remove`, + id: elementIdentifiers.elementId + }, + listeners: { + success: { + fn: function() { this.cm.activeNode.remove(); /* if editing the element being removed */ - if (MODx.request.a == 'element/'+oar[0]+'/update' && MODx.request.id == oar[2]) { + if ( + MODx.request.a === `element/${elementIdentifiers.type}/update` + && parseInt(MODx.request.id, 10) === elementIdentifiers.elementId + ) { MODx.loadPage('welcome'); } - },scope:this} + }, + scope: this + } } }); } - ,activatePlugin: function(itm,e) { - var id = this.cm.activeNode.id.substr(2); - var oar = id.split('_'); + ,activatePlugin: function(itm, e) { + const elementIdentifiers = this.extractElementIdentifiersFromActiveNode(this.cm.activeNode); MODx.Ajax.request({ - url: MODx.config.connector_url - ,params: { - action: 'element/plugin/activate' - ,id: oar[2] - } - ,listeners: { - 'success': {fn:function() { + url: MODx.config.connector_url, + params: { + action: 'element/plugin/activate', + id: elementIdentifiers.elementId + }, + listeners: { + success: { + fn: function() { this.refreshParentNode(); - },scope:this} + }, + scope: this + } } }); } - ,deactivatePlugin: function(itm,e) { - var id = this.cm.activeNode.id.substr(2); - var oar = id.split('_'); + ,deactivatePlugin: function(itm, e) { + const elementIdentifiers = this.extractElementIdentifiersFromActiveNode(this.cm.activeNode); MODx.Ajax.request({ - url: MODx.config.connector_url - ,params: { - action: 'element/plugin/deactivate' - ,id: oar[2] - } - ,listeners: { - 'success': {fn:function() { + url: MODx.config.connector_url, + params: { + action: 'element/plugin/deactivate', + id: elementIdentifiers.elementId + }, + listeners: { + success: { + fn: function() { this.refreshParentNode(); - },scope:this} + }, + scope: this + } } }); } @@ -294,13 +355,9 @@ Ext.extend(MODx.tree.Element,MODx.tree.Tree,{ }); } - ,_createElement: function(itm,e,t) { - var id = this.cm.activeNode.id.substr(2); - var oar = id.split('_'); - var type = oar[0] == 'type' ? oar[1] : oar[0]; - var cat_id = oar[0] == 'type' ? 0 : (oar[1] == 'category' ? oar[2] : oar[3]); - var a = 'element/'+type+'/create'; - this.redirect('?a='+a+'&category='+cat_id); + ,_createElement: function(itm, e, t) { + const elementIdentifiers = this.extractElementIdentifiersFromActiveNode(this.cm.activeNode); + this.redirect(`?a=element/${elementIdentifiers.type}/create&category=${elementIdentifiers.categoryId}`) this.cm.hide(); return false; } @@ -565,4 +622,4 @@ Ext.extend(MODx.tree.Element,MODx.tree.Tree,{ } } }); -Ext.reg('modx-tree-element',MODx.tree.Element); +Ext.reg('modx-tree-element',MODx.tree.Element); \ No newline at end of file