try and get ctrl-enter to add a clear all
[roojs1] / Roo / DomTemplate.js
index 3a0a9f9..3ffe060 100644 (file)
 </code></pre>
  *  The tpl tag:
 <pre><code>
-        &lt;div roo-for="a_variable or condition.."&gt;&lt;/tpl&gt;
-        &lt;tpl roo-if="a_variable or condition"&gt;&lt;/tpl&gt;
-        &lt;tpl roo-exec="some javascript"&gt;&lt;/tpl&gt;
-        &lt;tpl roo-name="named_template"&gt;&lt;/tpl&gt; 
+        &lt;div roo-for="a_variable or condition.."&gt;&lt;/div&gt;
+        &lt;div roo-if="a_variable or condition"&gt;&lt;/div&gt;
+        &lt;div roo-exec="some javascript"&gt;&lt;/div&gt;
+        &lt;div roo-name="named_template"&gt;&lt;/div&gt; 
   
 </code></pre>
  *      
@@ -38,9 +38,9 @@
 Roo.DomTemplate = function()
 {
      Roo.DomTemplate.superclass.constructor.apply(this, arguments);
-    if (this.html) {
+     if (this.html) {
         this.compile();
-    }
+     }
 };
 
 
@@ -71,8 +71,8 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
      *  x.t:(test,tesT) 
      * 
      */
-    re : /\{([\w-\.]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
-
+    re : /(\{|\%7B)([\w-\.]+)(?:\:([\w\.]*)(?:\(([^)]*?)?\))?)?(\}|\%7D)/g,
+    //re : /\{([\w-\.]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
     
     iterChild : function (node, method) {
         
@@ -99,9 +99,21 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
         var s = this.html;
         
         // covert the html into DOM...
+        var doc = false;
+        var div =false;
+        try {
+            doc = document.implementation.createHTMLDocument("");
+            doc.documentElement.innerHTML =   this.html  ;
+            div = doc.documentElement;
+        } catch (e) {
+            // old IE... - nasty -- it causes all sorts of issues.. with
+            // images getting pulled from server..
+            div = document.createElement('div');
+            div.innerHTML = this.html;
+        }
+        //doc.documentElement.innerHTML = htmlBody
+         
         
-        var div = document.createElement('div');
-        div.innerHTML =   this.html  ;
         
         this.tpls = [];
         var _t = this;
@@ -111,7 +123,7 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
         
         // create a top level template from the snippet..
         
-        Roo.log(div.innerHTML);
+        //Roo.log(div.innerHTML);
         
         var tpl = {
             uid : 'master',
@@ -184,7 +196,7 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
         
         if (!tpl.attr) {
             // just itterate children..
-            this.iterChild(node,this.compileNode)
+            this.iterChild(node,this.compileNode);
             return;
         }
         tpl.uid = this.id++;
@@ -194,16 +206,24 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
             var placeholder = document.createTextNode('{domtpl' + tpl.uid + '}');
             node.parentNode.replaceChild(placeholder,  node);
         } else {
-            node.parentNode.removeChild(node);
+            
+            var placeholder =  document.createElement('span');
+            placeholder.className = 'roo-tpl-' + tpl.value;
+            node.parentNode.replaceChild(placeholder,  node);
         }
         
         // parent now sees '{domtplXXXX}
-        this.iterChild(node,this.compileNode)
+        this.iterChild(node,this.compileNode);
         
         // we should now have node body...
         var div = document.createElement('div');
         div.appendChild(node);
         tpl.dom = node;
+        // this has the unfortunate side effect of converting tagged attributes
+        // eg. href="{...}" into %7C...%7D
+        // this has been fixed by searching for those combo's although it's a bit hacky..
+        
+        
         tpl.body = div.innerHTML;
         
         
@@ -238,8 +258,14 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
         
         
     },
+    
+    
+    
+    
     /**
      * Compile a segment of the template into a 'sub-template'
+     *
+     * 
      * 
      *
      */
@@ -247,19 +273,26 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
     {
         var fm = Roo.util.Format;
         var useF = this.disableFormats !== true;
+        
         var sep = Roo.isGecko ? "+\n" : ",\n";
+        
         var undef = function(str) {
-            Roo.log("Property not found :"  + str);
+            Roo.debug && Roo.log("Property not found :"  + str);
             return '';
         };
+          
+        //Roo.log(tpl.body);
+        
+        
         
-        var fn = function(m, name, format, args)
+        var fn = function(m, lbrace, name, format, args)
         {
+            //Roo.log("ARGS");
             //Roo.log(arguments);
             args = args ? args.replace(/\\'/g,"'") : args;
             //["{TEST:(a,b,c)}", "TEST", "", "a,b,c", 0, "{TEST:(a,b,c)}"]
             if (typeof(format) == 'undefined') {
-                format= 'htmlEncode';
+                format =  'htmlEncode'; 
             }
             if (format == 'raw' ) {
                 format = false;
@@ -300,7 +333,7 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
                 return "'"+ sep +   udef_st   +    format + name + args + "))"+sep+"'";
             }
              
-            if (args.length) {
+            if (args && args.length) {
                 // called with xxyx.yuu:(test,test)
                 // change to ()
                 return "'"+ sep + udef_st  + name + '(' +  args + "))"+sep+"'";
@@ -351,7 +384,7 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
         
         try { 
             if(t.ifCall && !t.ifCall.call(this, values, parent)){
-                Roo.log('if call on ' + t.value + ' return false')
+                Roo.debug && Roo.log('if call on ' + t.value + ' return false');
                 return '';
             }
         } catch(e) {
@@ -417,7 +450,7 @@ Roo.extend(Roo.DomTemplate, Roo.Template, {
 
  });
 
-Roo.XTemplate.from = function(el){
+Roo.DomTemplate.from = function(el){
     el = Roo.getDom(el);
-    return new Roo.XTemplate(el.value || el.innerHTML);
+    return new Roo.Domtemplate(el.value || el.innerHTML);
 };
\ No newline at end of file