summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/dtl/_DomTemplated.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/dtl/_DomTemplated.js')
-rw-r--r--js/dojo/dojox/dtl/_DomTemplated.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/js/dojo/dojox/dtl/_DomTemplated.js b/js/dojo/dojox/dtl/_DomTemplated.js
new file mode 100644
index 0000000..0c952f9
--- /dev/null
+++ b/js/dojo/dojox/dtl/_DomTemplated.js
@@ -0,0 +1,100 @@
+//>>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;
+});
+