diff options
author | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
commit | 2f01fe57a8d37767827d6db42850aef86a767c53 (patch) | |
tree | 516a95ffce2fc2435aed8d9976e444dbcba7dce3 /lib/dijit/_Templated.js | |
parent | 951906dcecb1d3c7bcf751976a03e0c196ca6db0 (diff) |
add dijit/dojo stuff; initial ui mockup
Diffstat (limited to 'lib/dijit/_Templated.js')
-rw-r--r-- | lib/dijit/_Templated.js | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/lib/dijit/_Templated.js b/lib/dijit/_Templated.js new file mode 100644 index 000000000..65ca20bfa --- /dev/null +++ b/lib/dijit/_Templated.js @@ -0,0 +1,184 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dijit._Templated"]){ +dojo._hasResource["dijit._Templated"]=true; +dojo.provide("dijit._Templated"); +dojo.require("dijit._Widget"); +dojo.require("dojo.string"); +dojo.require("dojo.parser"); +dojo.require("dojo.cache"); +dojo.declare("dijit._Templated",null,{templateString:null,templatePath:null,widgetsInTemplate:false,_skipNodeCache:false,_earlyTemplatedStartup:false,constructor:function(){ +this._attachPoints=[]; +},_stringRepl:function(_1){ +var _2=this.declaredClass,_3=this; +return dojo.string.substitute(_1,this,function(_4,_5){ +if(_5.charAt(0)=="!"){ +_4=dojo.getObject(_5.substr(1),false,_3); +} +if(typeof _4=="undefined"){ +throw new Error(_2+" template:"+_5); +} +if(_4==null){ +return ""; +} +return _5.charAt(0)=="!"?_4:_4.toString().replace(/"/g,"""); +},this); +},buildRendering:function(){ +var _6=dijit._Templated.getCachedTemplate(this.templatePath,this.templateString,this._skipNodeCache); +var _7; +if(dojo.isString(_6)){ +_7=dojo._toDom(this._stringRepl(_6)); +if(_7.nodeType!=1){ +throw new Error("Invalid template: "+_6); +} +}else{ +_7=_6.cloneNode(true); +} +this.domNode=_7; +this._attachTemplateNodes(_7); +if(this.widgetsInTemplate){ +var _8=dojo.parser,_9,_a; +if(_8._query!="[dojoType]"){ +_9=_8._query; +_a=_8._attrName; +_8._query="[dojoType]"; +_8._attrName="dojoType"; +} +var cw=(this._startupWidgets=dojo.parser.parse(_7,{noStart:!this._earlyTemplatedStartup,inherited:{dir:this.dir,lang:this.lang}})); +if(_9){ +_8._query=_9; +_8._attrName=_a; +} +this._supportingWidgets=dijit.findWidgets(_7); +this._attachTemplateNodes(cw,function(n,p){ +return n[p]; +}); +} +this._fillContent(this.srcNodeRef); +},_fillContent:function(_b){ +var _c=this.containerNode; +if(_b&&_c){ +while(_b.hasChildNodes()){ +_c.appendChild(_b.firstChild); +} +} +},_attachTemplateNodes:function(_d,_e){ +_e=_e||function(n,p){ +return n.getAttribute(p); +}; +var _f=dojo.isArray(_d)?_d:(_d.all||_d.getElementsByTagName("*")); +var x=dojo.isArray(_d)?0:-1; +for(;x<_f.length;x++){ +var _10=(x==-1)?_d:_f[x]; +if(this.widgetsInTemplate&&_e(_10,"dojoType")){ +continue; +} +var _11=_e(_10,"dojoAttachPoint"); +if(_11){ +var _12,_13=_11.split(/\s*,\s*/); +while((_12=_13.shift())){ +if(dojo.isArray(this[_12])){ +this[_12].push(_10); +}else{ +this[_12]=_10; +} +this._attachPoints.push(_12); +} +} +var _14=_e(_10,"dojoAttachEvent"); +if(_14){ +var _15,_16=_14.split(/\s*,\s*/); +var _17=dojo.trim; +while((_15=_16.shift())){ +if(_15){ +var _18=null; +if(_15.indexOf(":")!=-1){ +var _19=_15.split(":"); +_15=_17(_19[0]); +_18=_17(_19[1]); +}else{ +_15=_17(_15); +} +if(!_18){ +_18=_15; +} +this.connect(_10,_15,_18); +} +} +} +var _1a=_e(_10,"waiRole"); +if(_1a){ +dijit.setWaiRole(_10,_1a); +} +var _1b=_e(_10,"waiState"); +if(_1b){ +dojo.forEach(_1b.split(/\s*,\s*/),function(_1c){ +if(_1c.indexOf("-")!=-1){ +var _1d=_1c.split("-"); +dijit.setWaiState(_10,_1d[0],_1d[1]); +} +}); +} +} +},startup:function(){ +dojo.forEach(this._startupWidgets,function(w){ +if(w&&!w._started&&w.startup){ +w.startup(); +} +}); +this.inherited(arguments); +},destroyRendering:function(){ +dojo.forEach(this._attachPoints,function(_1e){ +delete this[_1e]; +},this); +this._attachPoints=[]; +this.inherited(arguments); +}}); +dijit._Templated._templateCache={}; +dijit._Templated.getCachedTemplate=function(_1f,_20,_21){ +var _22=dijit._Templated._templateCache; +var key=_20||_1f; +var _23=_22[key]; +if(_23){ +try{ +if(!_23.ownerDocument||_23.ownerDocument==dojo.doc){ +return _23; +} +} +catch(e){ +} +dojo.destroy(_23); +} +if(!_20){ +_20=dojo.cache(_1f,{sanitize:true}); +} +_20=dojo.string.trim(_20); +if(_21||_20.match(/\$\{([^\}]+)\}/g)){ +return (_22[key]=_20); +}else{ +var _24=dojo._toDom(_20); +if(_24.nodeType!=1){ +throw new Error("Invalid template: "+_20); +} +return (_22[key]=_24); +} +}; +if(dojo.isIE){ +dojo.addOnWindowUnload(function(){ +var _25=dijit._Templated._templateCache; +for(var key in _25){ +var _26=_25[key]; +if(typeof _26=="object"){ +dojo.destroy(_26); +} +delete _25[key]; +} +}); +} +dojo.extend(dijit._Widget,{dojoAttachEvent:"",dojoAttachPoint:"",waiRole:"",waiState:""}); +} |