MsoParagraphList is sometimes used when there is no list.
authorAlan <alan@roojs.com>
Mon, 27 Jun 2022 06:48:29 +0000 (14:48 +0800)
committerAlan <alan@roojs.com>
Mon, 27 Jun 2022 06:48:29 +0000 (14:48 +0800)
Roo/htmleditor/BlockTd.js
Roo/htmleditor/FilterWord.js

index b6022ca..5ba13ab 100644 (file)
@@ -540,8 +540,7 @@ Roo.extend(Roo.htmleditor.BlockTd, Roo.htmleditor.Block, {
         this.colspan = 1;
         
         for(var r = cd.row; r < cd.row + cd.rowspan; r++) {
-            
-            
+             
             
             for(var c = cd.col; c < cd.col + cd.colspan; c++) {
                 if (r == cd.row && c == cd.col) {
index 27544a7..d3d6cc4 100644 (file)
@@ -144,7 +144,7 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
     replaceDocBullets : function(doc)
     {
         // this is a bit odd - but it appears some indents use ql-indent-1
-        //Roo.log(doc.innerHTML);
+         //Roo.log(doc.innerHTML);
         
         var listpara = doc.getElementsByClassName('MsoListParagraphCxSpFirst');
         for( var i = 0; i < listpara.length; i ++) {
@@ -164,11 +164,14 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
         }
         listpara = doc.getElementsByClassName('MsoListParagraph');
         while(listpara.length) {
+            
             this.replaceDocBullet(listpara.item(0));
         }
       
     },
     
+     
+    
     replaceDocBullet : function(p)
     {
         // gather all the siblings.
@@ -186,10 +189,29 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
             if (!ns.className.match(/(MsoListParagraph|ql-indent-1)/i)) {
                 break;
             }
+            var spans = ns.getElementsByTagName('span');
+            if (!spans.length) {
+                break;
+            }
+            var has_list  = false;
+            for(var i = 0; i < spans.length; i++) {
+                if (spans[i].getAttribute('style').match(/mso-list/)) {
+                    has_list = true;
+                    break;
+                }
+            }
+            if (!has_list) {
+                break;
+            }
+            
+            
             items.push(ns);
             ns = ns.nextSibling;
         }
-        
+        if (!items.length) {
+            ns.className = "";
+            return;
+        }
         
         var ul = parent.ownerDocument.createElement('ul'); // what about number lists...
         parent.insertBefore(ul, p);
@@ -197,14 +219,17 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
         var stack = [ ul ];
         var last_li = false;
         
+         
         items.forEach(function(n, ipos) {
             //Roo.log("got innertHMLT=" + n.innerHTML);
             
             var spans = n.getElementsByTagName('span');
             if (!spans.length) {
                 //Roo.log("No spans found");
-
+                 
                 parent.removeChild(n);
+                
+                
                 return; // skip it...
             }
            
@@ -225,14 +250,16 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
             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...
@@ -252,12 +279,7 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
             //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);