101 lines
2.6 KiB
JavaScript
101 lines
2.6 KiB
JavaScript
//>>built
|
|
define("dojox/dtl/_DomTemplated", [
|
|
"dojo/dom-construct",
|
|
".",
|
|
"./contrib/dijit",
|
|
"./render/dom",
|
|
"dojo/cache",
|
|
"dijit/_TemplatedMixin"
|
|
], function(domConstruct,dtl,ddcd,ddrd,cache,TemplatedMixin){
|
|
/*=====
|
|
dtl = dojox.dtl;
|
|
cache = dojo.cache;
|
|
TemplatedMixin = dijit._TemplatedMixin
|
|
=====*/
|
|
dtl._DomTemplated = function(){};
|
|
dtl._DomTemplated.prototype = {
|
|
_dijitTemplateCompat: false,
|
|
buildRendering: function(){
|
|
// summary:
|
|
// Construct the UI for this widget, setting this.domNode.
|
|
|
|
//render needs a domNode to work with
|
|
this.domNode = this.srcNodeRef;
|
|
|
|
if(!this._render){
|
|
var old = ddcd.widgetsInTemplate;
|
|
ddcd.widgetsInTemplate = this.widgetsInTemplate;
|
|
this.template = this.template || this._getCachedTemplate(this.templatePath, this.templateString);
|
|
this._render = new ddrd.Render(this.domNode, this.template);
|
|
ddcd.widgetsInTemplate = old;
|
|
}
|
|
|
|
var context = this._getContext();
|
|
if(!this._created){
|
|
delete context._getter;
|
|
}
|
|
this.render(context);
|
|
|
|
this.domNode = this.template.getRootNode();
|
|
if(this.srcNodeRef && this.srcNodeRef.parentNode){
|
|
domConstruct.destroy(this.srcNodeRef);
|
|
delete this.srcNodeRef;
|
|
}
|
|
},
|
|
setTemplate: function(/*String|dojo._Url*/ template, /*dojox.dtl.Context?*/ context){
|
|
// summary:
|
|
// Quickly switch between templated by location
|
|
// template: The new template.
|
|
// context:
|
|
// The runtime context.
|
|
if(dojox.dtl.text._isTemplate(template)){
|
|
this.template = this._getCachedTemplate(null, template);
|
|
}else{
|
|
this.template = this._getCachedTemplate(template);
|
|
}
|
|
this.render(context);
|
|
},
|
|
render: function(/*dojox.dtl.Context?*/ context, /*dojox.dtl.DomTemplate?*/ tpl){
|
|
// summary:
|
|
// Renders this template.
|
|
// context:
|
|
// The runtime context.
|
|
// tpl:
|
|
// The template to render. Optional.
|
|
if(tpl){
|
|
this.template = tpl;
|
|
}
|
|
this._render.render(this._getContext(context), this.template);
|
|
},
|
|
_getContext: function(context){
|
|
if(!(context instanceof dojox.dtl.Context)){
|
|
context = false;
|
|
}
|
|
context = context || new dojox.dtl.Context(this);
|
|
context.setThis(this);
|
|
return context;
|
|
},
|
|
_getCachedTemplate: function(templatePath, templateString){
|
|
if(!this._templates){
|
|
this._templates = {};
|
|
}
|
|
if(!templateString){
|
|
templateString = cache(templatePath, {sanitize: true});
|
|
}
|
|
var key = templateString;
|
|
var tmplts = this._templates;
|
|
if(tmplts[key]){
|
|
return tmplts[key];
|
|
}
|
|
return (tmplts[key] = new dojox.dtl.DomTemplate(
|
|
TemplatedMixin.getCachedTemplate(
|
|
templateString,
|
|
true
|
|
)
|
|
));
|
|
}
|
|
};
|
|
return dojox.dtl._DomTemplated;
|
|
});
|
|
|