examples/grid/ArrayGrid.bjs
[roojs1] / roojs-ui-debug.js
index 5e6ab22..27ca272 100644 (file)
@@ -20900,7 +20900,7 @@ Roo.rtf.Parser.prototype = {
         this.hexStore.push(cmd);
     },
     cmderror : function(cmd) {
-        throw new Exception (cmd.value);
+        throw cmd.value;
     },
     
     /*
@@ -21030,7 +21030,8 @@ Roo.rtf.Parser.prototype = {
     {
         this.emitText();
         if (this.controlWord === '') {
-            this.emitError('empty control word');
+            // do we want to track this - it seems just to cause problems.
+            //this.emitError('empty control word');
         } else {
             this.push({
                   type: 'controlword',
@@ -21581,7 +21582,7 @@ Roo.htmleditor.FilterWord = function(cfg)
     // no need to apply config.
     this.replaceDocBullets(cfg.node);
     
-    this.walk(cfg.node);
+   // this.walk(cfg.node);
     
     
 }
@@ -21633,7 +21634,10 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
                 node.removeChild(cn);
                 node.parentNode.insertBefore(cn, node);
                 // move node to parent - and clean it..
-                this.replaceTag(cn);
+                if (cn.nodeType == 1) {
+                    this.replaceTag(cn);
+                }
+                
             }
             node.parentNode.removeChild(node);
             /// no need to iterate chidlren = it's got none..
@@ -21689,7 +21693,7 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
     
     styleToObject: function(node)
     {
-        var styles = node.getAttribute("style").split(";");
+        var styles = (node.getAttribute("style") || '').split(";");
         var ret = {};
         Roo.each(styles, function(s) {
             if (!s.match(/:/)) {
@@ -21701,15 +21705,21 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
             ret[kv[0]] = kv[1];
         });
         return ret;
-    }
+    },
     
     
     replaceDocBullets : function(doc)
     {
+        // this is a bit odd - but it appears some indents use ql-indent-1
+        
+        var listpara = doc.getElementsByClassName('ql-indent-1');
+        while(listpara.length) {
+            this.replaceDocBullet(listpara.item(0));
+        }
+        
         var listpara = doc.getElementsByClassName('MsoListParagraph');
         while(listpara.length) {
             this.replaceDocBullet(listpara.item(0));
-            //code
         }
     },
     
@@ -21718,9 +21728,14 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
         // gather all the siblings.
         var ns = p,
             parent = p.parentNode,
+            doc = parent.ownerDocument,
             items = []; 
         while (ns) {
-            if (!ns.className.match(/MsoListParagraph/)) {
+            if (ns.nodeType != 1) {
+                ns = ns.nextSibling;
+                continue;
+            }
+            if (!ns.className.match(/(MsoListParagraph|ql-indent-1)/i)) {
                 break;
             }
             items.push(ns);
@@ -21728,13 +21743,66 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
             
         }
         var ul = parent.ownerDocument.createElement('ul'); // what about number lists...
-        
+        parent.insertBefore(ul, p);
+        var lvl = 0;
+        var stack = [ ul ];
+        var last_li = false;
         items.forEach(function(n) {
-            parent.removeChild(n);
+            //Roo.log("got innertHMLT=" + n.innerHTML);
+            
             var spans = n.getElementsByTagName('span');
-            n.removeChild(spans.item(0)); // remove the fake bullet.
+            if (!spans.length) {
+                //Roo.log("No spans found");
+
+                parent.removeChild(n);
+                return; // skip it...
+            }
+           
+                
             
-        });
+            var style = {};
+            for(var i = 0; i < spans.length; i++) {
+            
+                style = this.styleToObject(spans[i]);
+                if (typeof(style['mso-list']) == 'undefined') {
+                    continue;
+                }
+                
+                spans[i].parentNode.removeChild(spans[i]); // remove the fake bullet.
+                break;
+            }
+            //Roo.log("NOW GOT innertHMLT=" + n.innerHTML);
+            style = this.styleToObject(n); // mo-list is from the parent node.
+            if (typeof(style['mso-list']) == 'undefined') {
+                //Roo.log("parent is missing level");
+                parent.removeChild(n);
+                return;
+            }
+            
+            var nlvl = (style['mso-list'].split(' ')[1].replace(/level/,'') *1) - 1;
+            if (nlvl > lvl) {
+                //new indent
+                var nul = doc.createElement('ul'); // what about number lists...
+                last_li.appendChild(nul);
+                stack[nlvl] = nul;
+            }
+            lvl = nlvl;
+            
+            var nli = stack[nlvl].appendChild(doc.createElement('li'));
+            last_li = nli;
+            nli.innerHTML = n.innerHTML;
+            //Roo.log("innerHTML = " + n.innerHTML);
+            parent.removeChild(n);
+            
+            // copy children of p into nli
+            /*while(n.firstChild) {
+                var fc = n.firstChild;
+                n.removeChild(fc);
+                nli.appendChild(fc);
+            }*/
+             
+            
+        },this);
         
         
         
@@ -22230,12 +22298,14 @@ Roo.htmleditor.TidyWriter.prototype = {
      * @param {String} text String to write out.
      * @param {Boolean} raw Optional raw state if true the contents wont get encoded.
      */
-    text: function(text, node)
+    text: function(in_text, node)
     {
         // if not in whitespace critical
-        if (text.length < 1) {
+        if (in_text.length < 1) {
             return;
         }
+        var text = new XMLSerializer().serializeToString(document.createTextNode(in_text)); // escape it properly?
+        
         if (this.in_pre) {
             this.html[this.html.length] =  text;
             return;   
@@ -25698,6 +25768,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             });
         }
         if (this.autoClean) {
+            new Roo.htmleditor.FilterWord({ node : d });
+            
             new Roo.htmleditor.FilterStyleToTag({ node : d });
             new Roo.htmleditor.FilterAttributes({
                 node : d,