X-Git-Url: http://git.roojs.org/?p=roojs1;a=blobdiff_plain;f=Roo%2Fhtmleditor%2FFilterWord.js;h=d3d6cc411dfae1b25d996a515d94650bab631b52;hp=27544a7f6b95a0383419ea6d3505c47a06c400df;hb=87d988c0018c959d115760bb9dae9b7948b74fb8;hpb=8f5eb4c4c8c1b9d0a7198e29efe26ac2d9e0bff8 diff --git a/Roo/htmleditor/FilterWord.js b/Roo/htmleditor/FilterWord.js index 27544a7f6b..d3d6cc411d 100644 --- a/Roo/htmleditor/FilterWord.js +++ b/Roo/htmleditor/FilterWord.js @@ -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);