supporting multiple bullet point styles
authorAlan <alan@roojs.com>
Wed, 8 Feb 2023 06:29:05 +0000 (14:29 +0800)
committerAlan <alan@roojs.com>
Wed, 8 Feb 2023 06:29:05 +0000 (14:29 +0800)
docs/src/Roo_htmleditor_FilterWord.js.html
roojs-all.js
roojs-debug.js
roojs-ui-debug.js
roojs-ui.js

index 2bb90c3..fa9c1e2 100644 (file)
                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">spans.length</span><span class="jsdoc-syntax">) {
                     </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
                 }
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ff </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">spans</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.style.fontFamily</span><span class="jsdoc-syntax">;
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">spans</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">) &amp;&amp; </span><span class="jsdoc-var">spans.length  </span><span class="jsdoc-syntax">&gt; 1 &amp;&amp; </span><span class="jsdoc-var">spans</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">)) {
-
-                    </span><span class="jsdoc-var">ff </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">spans</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.style.fontFamily</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ff </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">se </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">spans</span><span class="jsdoc-syntax">[0];
+                </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">spans.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+                    </span><span class="jsdoc-var">se </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">spans</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+                    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">se.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">)  &amp;&amp; </span><span class="jsdoc-var">se.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">) &amp;&amp; </span><span class="jsdoc-var">se.style.fontFamily </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">) {
+                        </span><span class="jsdoc-var">ff </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">se.style.fontFamily</span><span class="jsdoc-syntax">;
+                        </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+                    }
                 }
-                    </span><span class="jsdoc-comment">//var  style = this.styleToObject(spans[0]);
-                //Roo.log(&quot;got font family: &quot; + ff);
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ff</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">ff.match</span><span class="jsdoc-syntax">(/Symbol/)) {
+
+
+                </span><span class="jsdoc-comment">//Roo.log(&quot;got font family: &quot; + ff);
+                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ff</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">ff.match</span><span class="jsdoc-syntax">(/(Symbol|Wingdings)/) &amp;&amp; </span><span class="jsdoc-string">&quot;·o&quot;</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">se.innerText.trim</span><span class="jsdoc-syntax">()) &lt; 0) {
                     </span><span class="jsdoc-var">listtype </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'ol'</span><span class="jsdoc-syntax">;
                 }
 
index da9abdb..cb6dc46 100644 (file)
@@ -1939,14 +1939,14 @@ for(var i=0;i<B.length;i++){B[i].className="MsoListParagraph";}B=Array.from(A.ge
 i<B.length;i++){B[i].className="MsoListParagraph";}var C=Array.from(A.getElementsByTagName('h2'));for(var i=0;i<C.length;i++){if(C[i].hasAttribute('style')&&C[i].getAttribute('style').match(/mso-list:/)){C[i].className="MsoListParagraph";}}B=Array.from(A.getElementsByClassName('MsoNormal'));
 for(var i=0;i<B.length;i++){if(B[i].hasAttribute('style')&&B[i].getAttribute('style').match(/mso-list:/)){B[i].className="MsoListParagraph";}else{B[i].className="MsoNormalx";}}B=A.getElementsByClassName('MsoListParagraph');while(B.length){this.replaceDocBullet(B.item(0));
 }},replaceDocBullet:function(p){var ns=p,A=p.parentNode,B=A.ownerDocument,C=[];var D='ul';while(ns){if(ns.nodeType!=1){ns=ns.nextSibling;continue;}if(!ns.className.match(/(MsoListParagraph|ql-indent-1)/i)){break;}var E=ns.getElementsByTagName('span');if(ns.hasAttribute('style')&&ns.getAttribute('style').match(/mso-list/)){C.push(ns);
-ns=ns.nextSibling;F=true;if(!E.length){continue;}var ff=E[0].style.fontFamily;if(!E[0].hasAttribute('style')&&E.length>1&&E[1].hasAttribute('style')){ff=E[1].style.fontFamily;}if(typeof(ff)!='undefined'&&!ff.match(/Symbol/)){D='ol';}continue;}var E=ns.getElementsByTagName('span');
-if(!E.length){break;}var F=false;for(var i=0;i<E.length;i++){if(E[i].hasAttribute('style')&&E[i].getAttribute('style').match(/mso-list/)){F=true;break;}}if(!F){break;}C.push(ns);ns=ns.nextSibling;}if(!C.length){ns.className="";return;}var ul=A.ownerDocument.createElement(D);
-A.insertBefore(ul,p);var G=0;var H=[ul];var I=false;var J={};max_margins=-1;C.forEach(function(n,K){var L=n.getElementsByTagName('span');if(!L.length){A.removeChild(n);return;}var M=1;var N={};for(var i=0;i<L.length;i++){N=this.styleToObject(L[i]);if(typeof(N['mso-list'])=='undefined'){continue;
-}if(D=='ol'){M=L[i].innerText.replace(/[^0-9]+]/g,'')*1;}L[i].parentNode.removeChild(L[i]);break;}N=this.styleToObject(n);if(typeof(N['mso-list'])=='undefined'){A.removeChild(n);return;}var O=N['margin-left'];if(typeof(J[O])=='undefined'){max_margins++;J[O]=max_margins;
-}nlvl=J[O];if(nlvl>G){var P=B.createElement(D);if(!I){I=B.createElement('li');H[G].appendChild(I);}I.appendChild(P);H[nlvl]=P;}G=nlvl;if(!H[nlvl].hasAttribute("start")&&D=="ol"){H[nlvl].setAttribute("start",M);}var Q=H[nlvl].appendChild(B.createElement('li'));
-I=Q;Q.innerHTML=n.innerHTML;A.removeChild(n);},this);},replaceImageTable:function(A){var B=Array.from(A.getElementsByTagName('img'));Roo.each(B,function(C){var td=C.parentNode;if(td.nodeName!='TD'){return;}var tr=td.parentNode;if(tr.nodeName!='TR'){return;
-}var D=tr.parentNode;if(D.nodeName!='TBODY'){return;}var E=D.parentNode;if(E.nodeName!='TABLE'){return;}if(E.getElementsByTagName('tr').length!=2){return;}if(E.getElementsByTagName('td').length!=3){return;}if(E.innerText.trim()!=''){return;}var p=E.parentNode;
-C.parentNode.removeChild(C);p.insertBefore(C,E);p.removeChild(E);});}});
+ns=ns.nextSibling;F=true;if(!E.length){continue;}var ff='';var se=E[0];for(var i=0;i<E.length;i++){se=E[i];if(se.hasAttribute('style')&&se.hasAttribute('style')&&se.style.fontFamily!=''){ff=se.style.fontFamily;break;}}if(typeof(ff)!='undefined'&&!ff.match(/(Symbol|Wingdings)/)&&"·o".indexOf(se.innerText.trim())<0){D='ol';
+}continue;}var E=ns.getElementsByTagName('span');if(!E.length){break;}var F=false;for(var i=0;i<E.length;i++){if(E[i].hasAttribute('style')&&E[i].getAttribute('style').match(/mso-list/)){F=true;break;}}if(!F){break;}C.push(ns);ns=ns.nextSibling;}if(!C.length){ns.className="";
+return;}var ul=A.ownerDocument.createElement(D);A.insertBefore(ul,p);var G=0;var H=[ul];var I=false;var J={};max_margins=-1;C.forEach(function(n,K){var L=n.getElementsByTagName('span');if(!L.length){A.removeChild(n);return;}var M=1;var N={};for(var i=0;i<L.length;
+i++){N=this.styleToObject(L[i]);if(typeof(N['mso-list'])=='undefined'){continue;}if(D=='ol'){M=L[i].innerText.replace(/[^0-9]+]/g,'')*1;}L[i].parentNode.removeChild(L[i]);break;}N=this.styleToObject(n);if(typeof(N['mso-list'])=='undefined'){A.removeChild(n);
+return;}var O=N['margin-left'];if(typeof(J[O])=='undefined'){max_margins++;J[O]=max_margins;}nlvl=J[O];if(nlvl>G){var P=B.createElement(D);if(!I){I=B.createElement('li');H[G].appendChild(I);}I.appendChild(P);H[nlvl]=P;}G=nlvl;if(!H[nlvl].hasAttribute("start")&&D=="ol"){H[nlvl].setAttribute("start",M);
+}var Q=H[nlvl].appendChild(B.createElement('li'));I=Q;Q.innerHTML=n.innerHTML;A.removeChild(n);},this);},replaceImageTable:function(A){var B=Array.from(A.getElementsByTagName('img'));Roo.each(B,function(C){var td=C.parentNode;if(td.nodeName!='TD'){return;
+}var tr=td.parentNode;if(tr.nodeName!='TR'){return;}var D=tr.parentNode;if(D.nodeName!='TBODY'){return;}var E=D.parentNode;if(E.nodeName!='TABLE'){return;}if(E.getElementsByTagName('tr').length!=2){return;}if(E.getElementsByTagName('td').length!=3){return;
+}if(E.innerText.trim()!=''){return;}var p=E.parentNode;C.parentNode.removeChild(C);p.insertBefore(C,E);p.removeChild(E);});}});
 // Roo/htmleditor/FilterStyleToTag.js
 Roo.htmleditor.FilterStyleToTag=function(A){this.tags={B:['fontWeight','bold'],I:['fontStyle','italic'],SUP:['verticalAlign','super'],SUB:['verticalAlign','sub']};Roo.apply(this,A);this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterStyleToTag,Roo.htmleditor.Filter,{tag:true,tags:false,replaceTag:function(A){if(A.getAttribute("style")===null){return true;
 }var B=[];for(var k in this.tags){if(A.style[this.tags[k][0]]==this.tags[k][1]){B.push(k);A.style.removeProperty(this.tags[k][0]);}}if(!B.length){return true;}var cn=Array.from(A.childNodes);var nn=A;Roo.each(B,function(t){var nc=A.ownerDocument.createElement(t);
index 48099e5..b2be9ab 100644 (file)
@@ -46392,14 +46392,19 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
                 if (!spans.length) {
                     continue;
                 }
-                var ff = spans[0].style.fontFamily;
-                if (!spans[0].hasAttribute('style') && spans.length  > 1 && spans[1].hasAttribute('style')) {
-                    
-                    ff = spans[1].style.fontFamily;
+                var ff = '';
+                var se = spans[0];
+                for (var i = 0; i < spans.length;i++) {
+                    se = spans[i];
+                    if (se.hasAttribute('style')  && se.hasAttribute('style') && se.style.fontFamily != '') {
+                        ff = se.style.fontFamily;
+                        break;
+                    }
                 }
-                    //var  style = this.styleToObject(spans[0]);
+                 
+                    
                 //Roo.log("got font family: " + ff);
-                if (typeof(ff) != 'undefined' && !ff.match(/Symbol/)) {
+                if (typeof(ff) != 'undefined' && !ff.match(/(Symbol|Wingdings)/) && "·o".indexOf(se.innerText.trim()) < 0) {
                     listtype = 'ol';
                 }
                 
index 18d0407..2bf686e 100644 (file)
@@ -21890,14 +21890,19 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
                 if (!spans.length) {
                     continue;
                 }
-                var ff = spans[0].style.fontFamily;
-                if (!spans[0].hasAttribute('style') && spans.length  > 1 && spans[1].hasAttribute('style')) {
-                    
-                    ff = spans[1].style.fontFamily;
+                var ff = '';
+                var se = spans[0];
+                for (var i = 0; i < spans.length;i++) {
+                    se = spans[i];
+                    if (se.hasAttribute('style')  && se.hasAttribute('style') && se.style.fontFamily != '') {
+                        ff = se.style.fontFamily;
+                        break;
+                    }
                 }
-                    //var  style = this.styleToObject(spans[0]);
+                 
+                    
                 //Roo.log("got font family: " + ff);
-                if (typeof(ff) != 'undefined' && !ff.match(/Symbol/)) {
+                if (typeof(ff) != 'undefined' && !ff.match(/(Symbol|Wingdings)/) && "·o".indexOf(se.innerText.trim()) < 0) {
                     listtype = 'ol';
                 }
                 
index d80413f..687162b 100644 (file)
@@ -992,14 +992,14 @@ for(var i=0;i<B.length;i++){B[i].className="MsoListParagraph";}B=Array.from(A.ge
 i<B.length;i++){B[i].className="MsoListParagraph";}var C=Array.from(A.getElementsByTagName('h2'));for(var i=0;i<C.length;i++){if(C[i].hasAttribute('style')&&C[i].getAttribute('style').match(/mso-list:/)){C[i].className="MsoListParagraph";}}B=Array.from(A.getElementsByClassName('MsoNormal'));
 for(var i=0;i<B.length;i++){if(B[i].hasAttribute('style')&&B[i].getAttribute('style').match(/mso-list:/)){B[i].className="MsoListParagraph";}else{B[i].className="MsoNormalx";}}B=A.getElementsByClassName('MsoListParagraph');while(B.length){this.replaceDocBullet(B.item(0));
 }},replaceDocBullet:function(p){var ns=p,A=p.parentNode,B=A.ownerDocument,C=[];var D='ul';while(ns){if(ns.nodeType!=1){ns=ns.nextSibling;continue;}if(!ns.className.match(/(MsoListParagraph|ql-indent-1)/i)){break;}var E=ns.getElementsByTagName('span');if(ns.hasAttribute('style')&&ns.getAttribute('style').match(/mso-list/)){C.push(ns);
-ns=ns.nextSibling;F=true;if(!E.length){continue;}var ff=E[0].style.fontFamily;if(!E[0].hasAttribute('style')&&E.length>1&&E[1].hasAttribute('style')){ff=E[1].style.fontFamily;}if(typeof(ff)!='undefined'&&!ff.match(/Symbol/)){D='ol';}continue;}var E=ns.getElementsByTagName('span');
-if(!E.length){break;}var F=false;for(var i=0;i<E.length;i++){if(E[i].hasAttribute('style')&&E[i].getAttribute('style').match(/mso-list/)){F=true;break;}}if(!F){break;}C.push(ns);ns=ns.nextSibling;}if(!C.length){ns.className="";return;}var ul=A.ownerDocument.createElement(D);
-A.insertBefore(ul,p);var G=0;var H=[ul];var I=false;var J={};max_margins=-1;C.forEach(function(n,K){var L=n.getElementsByTagName('span');if(!L.length){A.removeChild(n);return;}var M=1;var N={};for(var i=0;i<L.length;i++){N=this.styleToObject(L[i]);if(typeof(N['mso-list'])=='undefined'){continue;
-}if(D=='ol'){M=L[i].innerText.replace(/[^0-9]+]/g,'')*1;}L[i].parentNode.removeChild(L[i]);break;}N=this.styleToObject(n);if(typeof(N['mso-list'])=='undefined'){A.removeChild(n);return;}var O=N['margin-left'];if(typeof(J[O])=='undefined'){max_margins++;J[O]=max_margins;
-}nlvl=J[O];if(nlvl>G){var P=B.createElement(D);if(!I){I=B.createElement('li');H[G].appendChild(I);}I.appendChild(P);H[nlvl]=P;}G=nlvl;if(!H[nlvl].hasAttribute("start")&&D=="ol"){H[nlvl].setAttribute("start",M);}var Q=H[nlvl].appendChild(B.createElement('li'));
-I=Q;Q.innerHTML=n.innerHTML;A.removeChild(n);},this);},replaceImageTable:function(A){var B=Array.from(A.getElementsByTagName('img'));Roo.each(B,function(C){var td=C.parentNode;if(td.nodeName!='TD'){return;}var tr=td.parentNode;if(tr.nodeName!='TR'){return;
-}var D=tr.parentNode;if(D.nodeName!='TBODY'){return;}var E=D.parentNode;if(E.nodeName!='TABLE'){return;}if(E.getElementsByTagName('tr').length!=2){return;}if(E.getElementsByTagName('td').length!=3){return;}if(E.innerText.trim()!=''){return;}var p=E.parentNode;
-C.parentNode.removeChild(C);p.insertBefore(C,E);p.removeChild(E);});}});
+ns=ns.nextSibling;F=true;if(!E.length){continue;}var ff='';var se=E[0];for(var i=0;i<E.length;i++){se=E[i];if(se.hasAttribute('style')&&se.hasAttribute('style')&&se.style.fontFamily!=''){ff=se.style.fontFamily;break;}}if(typeof(ff)!='undefined'&&!ff.match(/(Symbol|Wingdings)/)&&"·o".indexOf(se.innerText.trim())<0){D='ol';
+}continue;}var E=ns.getElementsByTagName('span');if(!E.length){break;}var F=false;for(var i=0;i<E.length;i++){if(E[i].hasAttribute('style')&&E[i].getAttribute('style').match(/mso-list/)){F=true;break;}}if(!F){break;}C.push(ns);ns=ns.nextSibling;}if(!C.length){ns.className="";
+return;}var ul=A.ownerDocument.createElement(D);A.insertBefore(ul,p);var G=0;var H=[ul];var I=false;var J={};max_margins=-1;C.forEach(function(n,K){var L=n.getElementsByTagName('span');if(!L.length){A.removeChild(n);return;}var M=1;var N={};for(var i=0;i<L.length;
+i++){N=this.styleToObject(L[i]);if(typeof(N['mso-list'])=='undefined'){continue;}if(D=='ol'){M=L[i].innerText.replace(/[^0-9]+]/g,'')*1;}L[i].parentNode.removeChild(L[i]);break;}N=this.styleToObject(n);if(typeof(N['mso-list'])=='undefined'){A.removeChild(n);
+return;}var O=N['margin-left'];if(typeof(J[O])=='undefined'){max_margins++;J[O]=max_margins;}nlvl=J[O];if(nlvl>G){var P=B.createElement(D);if(!I){I=B.createElement('li');H[G].appendChild(I);}I.appendChild(P);H[nlvl]=P;}G=nlvl;if(!H[nlvl].hasAttribute("start")&&D=="ol"){H[nlvl].setAttribute("start",M);
+}var Q=H[nlvl].appendChild(B.createElement('li'));I=Q;Q.innerHTML=n.innerHTML;A.removeChild(n);},this);},replaceImageTable:function(A){var B=Array.from(A.getElementsByTagName('img'));Roo.each(B,function(C){var td=C.parentNode;if(td.nodeName!='TD'){return;
+}var tr=td.parentNode;if(tr.nodeName!='TR'){return;}var D=tr.parentNode;if(D.nodeName!='TBODY'){return;}var E=D.parentNode;if(E.nodeName!='TABLE'){return;}if(E.getElementsByTagName('tr').length!=2){return;}if(E.getElementsByTagName('td').length!=3){return;
+}if(E.innerText.trim()!=''){return;}var p=E.parentNode;C.parentNode.removeChild(C);p.insertBefore(C,E);p.removeChild(E);});}});
 // Roo/htmleditor/FilterStyleToTag.js
 Roo.htmleditor.FilterStyleToTag=function(A){this.tags={B:['fontWeight','bold'],I:['fontStyle','italic'],SUP:['verticalAlign','super'],SUB:['verticalAlign','sub']};Roo.apply(this,A);this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterStyleToTag,Roo.htmleditor.Filter,{tag:true,tags:false,replaceTag:function(A){if(A.getAttribute("style")===null){return true;
 }var B=[];for(var k in this.tags){if(A.style[this.tags[k][0]]==this.tags[k][1]){B.push(k);A.style.removeProperty(this.tags[k][0]);}}if(!B.length){return true;}var cn=Array.from(A.childNodes);var nn=A;Roo.each(B,function(t){var nc=A.ownerDocument.createElement(t);