fix html editor sync - allow attributes for youtube embed
authorAlan <alan@roojs.com>
Wed, 14 Sep 2022 02:11:19 +0000 (10:11 +0800)
committerAlan <alan@roojs.com>
Wed, 14 Sep 2022 02:11:19 +0000 (10:11 +0800)
docs/src/Roo_HtmlEditorCore.js.html
roojs-bootstrap-debug.js
roojs-bootstrap.js

index 594a0c0..ca2459e 100644 (file)
 
                 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterAttributes</span><span class="jsdoc-syntax">({
                     </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">div</span><span class="jsdoc-syntax">,
-                    </span><span class="jsdoc-var">attrib_white </span><span class="jsdoc-syntax">: [</span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'src'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'align'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'colspan'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'rowspan'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'data-display'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'data-width'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'start' </span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">],
+                    </span><span class="jsdoc-var">attrib_white </span><span class="jsdoc-syntax">: [
+                            </span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'src'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'align'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'colspan'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'rowspan'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'data-display'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'data-width'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'start' </span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-comment">// youtube embed.
+                            </span><span class="jsdoc-string">'class'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'allowfullscreen'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'frameborder'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'width'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'height'</span><span class="jsdoc-syntax">,
+                            </span><span class="jsdoc-string">'alt'
+                            </span><span class="jsdoc-syntax">],
                     </span><span class="jsdoc-var">attrib_clean </span><span class="jsdoc-syntax">: [</span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'src' </span><span class="jsdoc-syntax">]
                 });
 
index 3d12455..79f932e 100644 (file)
@@ -29320,7 +29320,25 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                 
                 new Roo.htmleditor.FilterAttributes({
                     node : div,
-                    attrib_white : ['href', 'src', 'name', 'align', 'colspan', 'rowspan', 'data-display', 'data-width', 'start' , 'style'],
+                    attrib_white : [
+                            'href',
+                            'src',
+                            'name',
+                            'align',
+                            'colspan',
+                            'rowspan',
+                            'data-display',
+                            'data-width',
+                            'start' ,
+                            'style',
+                            // youtube embed.
+                            'class',
+                            'allowfullscreen',
+                            'frameborder',
+                            'width',
+                            'height',
+                            'alt'
+                            ],
                     attrib_clean : ['href', 'src' ] 
                 });
                 
index 24eb3bc..18a1453 100644 (file)
@@ -1267,8 +1267,8 @@ this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var C={run:
 }}},toggleSourceEdit:function(A){this.sourceEditMode=A===true;if(this.sourceEditMode){Roo.get(this.iframe).addClass(['x-hidden','hide','d-none']);}else{Roo.get(this.iframe).removeClass(['x-hidden','hide','d-none']);this.deferFocus();}},cleanHtml:function(A){A=String(A);
 if(A.length>5){if(Roo.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,'');}}if(A=='&nbsp;'){A='';}return A;},syncValue:function(){if(this.initialized){if(this.undoManager){this.undoManager.addEvent();}var bd=(this.doc.body||this.doc.documentElement);
 var A=this.win.getSelection();var B=document.createElement('div');B.innerHTML=bd.innerHTML;var C=B.getElementsByClassName('gtx-trans-icon');if(C.length>0){var rm=C.item(0).parentNode;rm.parentNode.removeChild(rm);}if(this.enableBlocks){new Roo.htmleditor.FilterBlock({node:B}
-);}var D=B.innerHTML;if(this.autoClean){new Roo.htmleditor.FilterAttributes({node:B,attrib_white:['href','src','name','align','colspan','rowspan','data-display','data-width','start','style'],attrib_clean:['href','src']});var E=new Roo.htmleditor.TidySerializer({inner:true}
-);D=E.serialize(B);}if(Roo.isSafari){var bs=bd.getAttribute('style');var m=bs?bs.match(/text-align:(.*?);/i):false;if(m&&m[1]){D='<div style="'+m[0]+'">'+D+'</div>';}}D=this.cleanHtml(D);D=D.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g,function(F){var cc=F.charCodeAt();
+);}var D=B.innerHTML;if(this.autoClean){new Roo.htmleditor.FilterAttributes({node:B,attrib_white:['href','src','name','align','colspan','rowspan','data-display','data-width','start','style','class','allowfullscreen','frameborder','width','height','alt'],attrib_clean:['href','src']}
+);var E=new Roo.htmleditor.TidySerializer({inner:true});D=E.serialize(B);}if(Roo.isSafari){var bs=bd.getAttribute('style');var m=bs?bs.match(/text-align:(.*?);/i):false;if(m&&m[1]){D='<div style="'+m[0]+'">'+D+'</div>';}}D=this.cleanHtml(D);D=D.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g,function(F){var cc=F.charCodeAt();
 if(F.length==2){var G=F.charCodeAt(0)-0xD800;var H=F.charCodeAt(1)-0xDC00;cc=(G*0x400)+H+0x10000;}else if((cc>=0x4E00&&cc<0xA000)||(cc>=0x3400&&cc<0x4E00)||(cc>=0xf900&&cc<0xfb00)){return F;}return "&#"+cc+";";});if(this.owner.fireEvent('beforesync',this,D)!==false){this.el.dom.value=D;
 this.owner.fireEvent('sync',this,D);}}},pushValue:function(){if(this.initialized){var v=this.el.dom.value.trim();if(this.owner.fireEvent('beforepush',this,v)!==false){var d=(this.doc.body||this.doc.documentElement);d.innerHTML=v;this.el.dom.value=d.innerHTML;
 this.owner.fireEvent('push',this,v);}if(this.autoClean){new Roo.htmleditor.FilterParagraph({node:this.doc.body});new Roo.htmleditor.FilterSpan({node:this.doc.body});}if(this.enableBlocks){Roo.htmleditor.Block.initAll(this.doc.body);}this.updateLanguage();