141 lines
3.3 KiB
JavaScript
141 lines
3.3 KiB
JavaScript
//>>built
|
|
define("dijit/_TemplatedMixin",["dojo/_base/lang","dojo/touch","./_WidgetBase","dojo/string","dojo/cache","dojo/_base/array","dojo/_base/declare","dojo/dom-construct","dojo/_base/sniff","dojo/_base/unload","dojo/_base/window"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b){
|
|
var _c=_7("dijit._TemplatedMixin",null,{templateString:null,templatePath:null,_skipNodeCache:false,_earlyTemplatedStartup:false,constructor:function(){
|
|
this._attachPoints=[];
|
|
this._attachEvents=[];
|
|
},_stringRepl:function(_d){
|
|
var _e=this.declaredClass,_f=this;
|
|
return _4.substitute(_d,this,function(_10,key){
|
|
if(key.charAt(0)=="!"){
|
|
_10=_1.getObject(key.substr(1),false,_f);
|
|
}
|
|
if(typeof _10=="undefined"){
|
|
throw new Error(_e+" template:"+key);
|
|
}
|
|
if(_10==null){
|
|
return "";
|
|
}
|
|
return key.charAt(0)=="!"?_10:_10.toString().replace(/"/g,""");
|
|
},this);
|
|
},buildRendering:function(){
|
|
if(!this.templateString){
|
|
this.templateString=_5(this.templatePath,{sanitize:true});
|
|
}
|
|
var _11=_c.getCachedTemplate(this.templateString,this._skipNodeCache);
|
|
var _12;
|
|
if(_1.isString(_11)){
|
|
_12=_8.toDom(this._stringRepl(_11));
|
|
if(_12.nodeType!=1){
|
|
throw new Error("Invalid template: "+_11);
|
|
}
|
|
}else{
|
|
_12=_11.cloneNode(true);
|
|
}
|
|
this.domNode=_12;
|
|
this.inherited(arguments);
|
|
this._attachTemplateNodes(_12,function(n,p){
|
|
return n.getAttribute(p);
|
|
});
|
|
this._beforeFillContent();
|
|
this._fillContent(this.srcNodeRef);
|
|
},_beforeFillContent:function(){
|
|
},_fillContent:function(_13){
|
|
var _14=this.containerNode;
|
|
if(_13&&_14){
|
|
while(_13.hasChildNodes()){
|
|
_14.appendChild(_13.firstChild);
|
|
}
|
|
}
|
|
},_attachTemplateNodes:function(_15,_16){
|
|
var _17=_1.isArray(_15)?_15:(_15.all||_15.getElementsByTagName("*"));
|
|
var x=_1.isArray(_15)?0:-1;
|
|
for(;x<_17.length;x++){
|
|
var _18=(x==-1)?_15:_17[x];
|
|
if(this.widgetsInTemplate&&(_16(_18,"dojoType")||_16(_18,"data-dojo-type"))){
|
|
continue;
|
|
}
|
|
var _19=_16(_18,"dojoAttachPoint")||_16(_18,"data-dojo-attach-point");
|
|
if(_19){
|
|
var _1a,_1b=_19.split(/\s*,\s*/);
|
|
while((_1a=_1b.shift())){
|
|
if(_1.isArray(this[_1a])){
|
|
this[_1a].push(_18);
|
|
}else{
|
|
this[_1a]=_18;
|
|
}
|
|
this._attachPoints.push(_1a);
|
|
}
|
|
}
|
|
var _1c=_16(_18,"dojoAttachEvent")||_16(_18,"data-dojo-attach-event");
|
|
if(_1c){
|
|
var _1d,_1e=_1c.split(/\s*,\s*/);
|
|
var _1f=_1.trim;
|
|
while((_1d=_1e.shift())){
|
|
if(_1d){
|
|
var _20=null;
|
|
if(_1d.indexOf(":")!=-1){
|
|
var _21=_1d.split(":");
|
|
_1d=_1f(_21[0]);
|
|
_20=_1f(_21[1]);
|
|
}else{
|
|
_1d=_1f(_1d);
|
|
}
|
|
if(!_20){
|
|
_20=_1d;
|
|
}
|
|
this._attachEvents.push(this.connect(_18,_2[_1d]||_1d,_20));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},destroyRendering:function(){
|
|
_6.forEach(this._attachPoints,function(_22){
|
|
delete this[_22];
|
|
},this);
|
|
this._attachPoints=[];
|
|
_6.forEach(this._attachEvents,this.disconnect,this);
|
|
this._attachEvents=[];
|
|
this.inherited(arguments);
|
|
}});
|
|
_c._templateCache={};
|
|
_c.getCachedTemplate=function(_23,_24){
|
|
var _25=_c._templateCache;
|
|
var key=_23;
|
|
var _26=_25[key];
|
|
if(_26){
|
|
try{
|
|
if(!_26.ownerDocument||_26.ownerDocument==_b.doc){
|
|
return _26;
|
|
}
|
|
}
|
|
catch(e){
|
|
}
|
|
_8.destroy(_26);
|
|
}
|
|
_23=_4.trim(_23);
|
|
if(_24||_23.match(/\$\{([^\}]+)\}/g)){
|
|
return (_25[key]=_23);
|
|
}else{
|
|
var _27=_8.toDom(_23);
|
|
if(_27.nodeType!=1){
|
|
throw new Error("Invalid template: "+_23);
|
|
}
|
|
return (_25[key]=_27);
|
|
}
|
|
};
|
|
if(_9("ie")){
|
|
_a.addOnWindowUnload(function(){
|
|
var _28=_c._templateCache;
|
|
for(var key in _28){
|
|
var _29=_28[key];
|
|
if(typeof _29=="object"){
|
|
_8.destroy(_29);
|
|
}
|
|
delete _28[key];
|
|
}
|
|
});
|
|
}
|
|
_1.extend(_3,{dojoAttachEvent:"",dojoAttachPoint:""});
|
|
return _c;
|
|
});
|