st += '<style type="text/css">' +
'IMG { cursor: pointer } ' +
'</style>';
-
- var cls = 'roo-htmleditor-body';
+
+ st += '<meta name="google" content="notranslate">'
+
+ var cls = 'notranslate roo-htmleditor-body';
if(this.bodyCls.length){
cls += ' ' + this.bodyCls;
}
- return '<html><head>' + st +
+ return '<html class="notranslate" translate="no"><head>' + st +
//<style type="text/css">' +
//'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
//'</style>' +
* @param {String} html The HTML to be cleaned
* return {String} The cleaned HTML
*/
- cleanHtml : function(html){
+ cleanHtml : function(html)
+ {
html = String(html);
if(html.length > 5){
if(Roo.isSafari){ // strip safari nonsense
var div = document.createElement('div');
div.innerHTML = bd.innerHTML;
-
+
+
if (this.enableBlocks) {
new Roo.htmleditor.FilterBlock({ node : div });
}
//?? tidy?
+ var tidy = new Roo.htmleditor.TidySerializer({
+ inner: true
+ });
+ var html = tidy.serialize(div)
- var html = div.innerHTML;
if(Roo.isSafari){
var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element!
var m = bs ? bs.match(/text-align:(.*?);/i) : false;
//var ss = this.el.getStyles( 'background-image', 'background-repeat');
//ss['background-attachment'] = 'fixed'; // w3c
dbody.bgProperties = 'fixed'; // ie
+ dbody.setAttribute("translate", "no");
+
//Roo.DomHelper.applyStyles(dbody, ss);
Roo.EventManager.on(this.doc, {
+++ /dev/null
-
-/**
- * @class Roo.htmleditor.Tidy
- * Tidy HTML
- *
- * @constructor
- * Create a new Filter.
- * @param {Object} config Configuration options
- */
-
-
-Roo.htmleditor.Tidy = function(cfg) {
- Roo.apply(this, cfg);
-
- this.core.doc.body.innerHTML = this.tidy(this.core.doc.body, '');
-
-}
-
-Roo.htmleditor.Tidy.toString = function(node)
-{
- return Roo.htmleditor.Tidy.prototype.tidy(node, '');
-}
-
-Roo.htmleditor.Tidy.prototype = {
-
- /**
- *
- * @cfg {Roo.HtmlEditorCore} core the editor.
- */
- core : false,
-
-
-
- tidy : function(node, indent) {
- var ser = new Roo.htmleditor.TidySerializer({
- indent : 2,
- });
- return ser.serialize(node);
-
-
- }
-
-}
\ No newline at end of file
* @class Roo.htmleditor.TidyEntities
* @static
* https://github.com/thorn0/tinymce.html/blob/master/tinymce.html.js
+ *
+ * Not 100% sure this is actually used or needed.
*/
Roo.htmleditor.TidyEntities = {
* initialize data..
*/
init : function (){
-
-
-
- this.namedEntities = buildEntitiesLookup(this.namedEntitiesData.join(','), 32);
+
+ this.namedEntities = this.buildEntitiesLookup(this.namedEntitiesData, 32);
},
- buildEntitiesLookup: function(items, radix) {
+ buildEntitiesLookup: function(items, radix) {
var i, chr, entity, lookup = {};
- if (items) {
- items = items.split(',');
- radix = radix || 10;
- // Build entities lookup table
- for (i = 0; i < items.length; i += 2) {
- chr = String.fromCharCode(parseInt(items[i], radix));
- // Only add non base entities
- if (!baseEntities[chr]) {
- entity = '&' + items[i + 1] + ';';
- lookup[chr] = entity;
- lookup[entity] = chr;
- }
+ if (!items) {
+ return {};
+ }
+ items = typeof(items) == 'string' ? items.split(',') : items;
+ radix = radix || 10;
+ // Build entities lookup table
+ for (i = 0; i < items.length; i += 2) {
+ chr = String.fromCharCode(parseInt(items[i], radix));
+ // Only add non base entities
+ if (!this.baseEntities[chr]) {
+ entity = '&' + items[i + 1] + ';';
+ lookup[chr] = entity;
+ lookup[entity] = chr;
}
- return lookup;
}
- return {};
+ return lookup;
+
},
asciiMap : {
*
* Known issues?
* - not tested much with 'PRE' formated elements.
- * - long text inside of inline can be wrapped and clened?
+ *
*
*
*/
}
Roo.htmleditor.TidyWriter.prototype = {
-
-
- makeMap : function (items, delim, map) {
- var i;
- items = items || [];
- delim = delim || ',';
- if (typeof items == "string") {
- items = items.split(delim);
- }
- map = map || {};
- i = items.length;
- while (i--) {
- map[items[i]] = {};
- }
- return map;
- },
-
+
state : false,
indent : ' ',
if (text.length < 1) {
return;
}
- if (this.in_pre || this.in_inline) {
-
- if (this.in_inline) {
- text = text.replace(/\s/g,' ') // all line breaks to ' '
- .replace(/\s+/,' ') // all white space to single white space
+ if (this.in_pre) {
+ this.html[this.html.length] = text;
+ return;
+ }
+
+ if (this.in_inline) {
+ text = text.replace(/\s+/g,' ') // all white space inc line breaks to a slingle' '
+ if (text != ' ') {
+ text = text.replace(/\s+/,' ') // all white space to single white space
+
+
// if next tag is '<BR>', then we can trim right..
if (node.nextSibling &&
node.nextSibling.nodeType == 1 &&
{
text = this.indentstr + text.replace(/^\s+/g,'');
}
+ if (text.match(/\n/)) {
+ text = text.replace(
+ /(?![^\n]{1,64}$)([^\n]{1,64})\s/g, '$1\n' + this.indentstr
+ );
+ // remoeve the last whitespace / line break.
+ text = text.replace(/\n\s+$/,'');
+ }
// repace long lines
- text = this.indentstr + text.replace(
- /(?![^\n]{1,64}$)([^\n]{1,64})\s/g, '$1\n' + this.indentstr
- );
- // remoeve the last whitespace / line break.
- text = text.replace(/\s+$/,'');
-
-
}
+
this.html[this.html.length] = text;
return;
}
- // see if last element was a inline element.
+ // see if previous element was a inline element.
var indentstr = this.indentstr;
+
+ text = text.replace(/\s+/g," "); // all whitespace into single white space.
+
+ // should trim left?
if (node.previousSibling &&
node.previousSibling.nodeType == 1 &&
Roo.htmleditor.TidyWriter.inline_elements.indexOf(node.previousSibling.nodeName) > -1)
{
indentstr = '';
+
} else {
this.addLine();
+ text = text.replace(/^\s+/,''); // trim left
+
}
+ // should trim right?
+ if (node.nextSibling &&
+ node.nextSibling.nodeType == 1 &&
+ Roo.htmleditor.TidyWriter.inline_elements.indexOf(node.nextSibling.nodeName) > -1)
+ {
+ // noop
+ } else {
+ text = text.replace(/\s+$/,''); // trim right
+ }
+
+
- text = text.replace(/\s/g," ") // all line breaks to ' '
- .replace(/^\s+/,'') // leding white space
- .replace(/\s+$/,''); // clean trailing white space
if (text.length < 1) {
return;
Roo.htmleditor.FilterStyleToTag
Roo.htmleditor.FilterLongBr
Roo.htmleditor.FilterBlock
-Roo.htmleditor.Tidy
+Roo.htmleditor.TidySerializer
+Roo.htmleditor.TidyWriter
+Roo.htmleditor.TidyEntities
Roo.htmleditor.KeyEnter
Roo.htmleditor.Block
</span><span class="jsdoc-string">'IMG { cursor: pointer } ' </span><span class="jsdoc-syntax">+
</span><span class="jsdoc-string">'</style>'</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'roo-htmleditor-body'</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'<meta name="google" content="notranslate">'
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'notranslate roo-htmleditor-body'</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.bodyCls.length</span><span class="jsdoc-syntax">){
</span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.bodyCls</span><span class="jsdoc-syntax">;
}
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'<html><head>' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'<html class="notranslate" translate="no"><head>' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+
</span><span class="jsdoc-comment">//<style type="text/css">' +
//'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
//'</style>' +
* @param {String} html The HTML to be cleaned
* return {String} The cleaned HTML
*/
- </span><span class="jsdoc-var">cleanHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">){
+ </span><span class="jsdoc-var">cleanHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">)
+ {
</span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html.length </span><span class="jsdoc-syntax">> 5){
</span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// strip safari nonsense
</span><span class="jsdoc-var">div.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.innerHTML</span><span class="jsdoc-syntax">;
+
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.enableBlocks</span><span class="jsdoc-syntax">) {
</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterBlock</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-comment">//?? tidy?
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tidy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.TidySerializer</span><span class="jsdoc-syntax">({
+ </span><span class="jsdoc-var">inner</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
+ </span><span class="jsdoc-syntax">});
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tidy.serialize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">div</span><span class="jsdoc-syntax">)
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">div.innerHTML</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// Safari puts text-align styles on the body element!
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">m </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">bs.match</span><span class="jsdoc-syntax">(/text-align:(.*?);/i) : </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
//var ss = this.el.getStyles( 'background-image', 'background-repeat');
//ss['background-attachment'] = 'fixed'; // w3c
</span><span class="jsdoc-var">dbody.bgProperties </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'fixed'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// ie
- //Roo.DomHelper.applyStyles(dbody, ss);
+ </span><span class="jsdoc-var">dbody.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"translate"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"no"</span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-comment">//Roo.DomHelper.applyStyles(dbody, ss);
</span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, {
</span><span class="jsdoc-string">'mouseup'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'img'</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-var">contenteditable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'false'</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.image_src</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">alt </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d.innerText.replace</span><span class="jsdoc-syntax">(/\n/g, </span><span class="jsdoc-string">" "</span><span class="jsdoc-syntax">), </span><span class="jsdoc-comment">// removeHTML..
+ </span><span class="jsdoc-var">alt </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d.innerText.replace</span><span class="jsdoc-syntax">(/\n/g, </span><span class="jsdoc-string">" "</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\s+/g, </span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.trim</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-comment">// removeHTML and reduce spaces..
</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">: {
</span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'auto'</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-string">'max-width'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'100%'</span><span class="jsdoc-syntax">,
<span class="jsdoc-comment">/**
* @class Roo.htmleditor.Tidy
* Tidy HTML
- * @cfg {Roo.HtmlEditorCore} core the editor.
+ *
* @constructor
* Create a new Filter.
* @param {Object} config Configuration options
</span><span class="jsdoc-var">Roo.htmleditor.Tidy.prototype </span><span class="jsdoc-syntax">= {
+ </span><span class="jsdoc-comment">/**
+ *
+ * @cfg {Roo.HtmlEditorCore} core the editor.
+ */
+ </span><span class="jsdoc-var">core </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">wrap </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">s.replace</span><span class="jsdoc-syntax">(/\n/g, </span><span class="jsdoc-string">" "</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/(?![^\n]{1,80}$)([^\n]{1,80})\s/g, </span><span class="jsdoc-string">'$1\n'</span><span class="jsdoc-syntax">);
- },
</span><span class="jsdoc-var">tidy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ser </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.TidySerializer</span><span class="jsdoc-syntax">({
+ </span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">: 2,
+ });
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ser.serialize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeType </span><span class="jsdoc-syntax">== 3) {
- </span><span class="jsdoc-comment">// text.
-
-
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">node.nodeValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.wrap</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeValue.trim</span><span class="jsdoc-syntax">())</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"\n"</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"\n" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">);
-
-
- }
-
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeType </span><span class="jsdoc-syntax">!= 1) {
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
- }
-
-
-
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">) {
-
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.cn</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
- }
-
- </span><span class="jsdoc-comment">// Prints the node tagName, such as <A>, <IMG>, etc
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"<" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">node.tagName </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.attr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">) ;
-
- </span><span class="jsdoc-comment">// elements with no children..
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'IMG'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'BR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'HR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'INPUT'</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName</span><span class="jsdoc-syntax">) > -1) {
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'/>'</span><span class="jsdoc-syntax">;
- }
- </span><span class="jsdoc-var">ret </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">cindent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-comment">// tags where we will not pad the children.. (inline text tags etc..)
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'PRE'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TEXTAREA'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TD'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'A'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'SPAN'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'B'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'I'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'S'</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName</span><span class="jsdoc-syntax">) > -1) { </span><span class="jsdoc-comment">// or code?
- </span><span class="jsdoc-var">cindent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-
-
- }
-
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cn</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cindent </span><span class="jsdoc-syntax">);
-
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'</' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">node.tagName </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'>'</span><span class="jsdoc-syntax">;
-
- },
- </span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">)
- {
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= [];
-
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.childNodes</span><span class="jsdoc-syntax">);
- </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">< </span><span class="jsdoc-var">ar.length </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">indent </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-comment">// indent==false preservies everything
- </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">> 0
- && </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeType </span><span class="jsdoc-syntax">== 3
- && </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeValue.length </span><span class="jsdoc-syntax">> 0
- && </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeValue.match</span><span class="jsdoc-syntax">(/^\s+/)
- ) {
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ret.length </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">ret.length</span><span class="jsdoc-syntax">-1] == </span><span class="jsdoc-string">"\n" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">ret.pop</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">// remove line break from last?
- </span><span class="jsdoc-syntax">}
-
- </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">" "</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// add a space if i'm a text item with a space at the front, as tidy will strip spaces.
- </span><span class="jsdoc-syntax">}
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false
- </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeType </span><span class="jsdoc-syntax">== 1 </span><span class="jsdoc-comment">// element - and indent is not set...
- </span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"\n" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">);
- }
-
- </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tidy</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">));
- </span><span class="jsdoc-comment">// text + trailing indent
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">indent </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false
- </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeType </span><span class="jsdoc-syntax">== 3
- && </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeValue.length </span><span class="jsdoc-syntax">> 0
- && </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeValue.match</span><span class="jsdoc-syntax">(/\s+$/)
- ){
- </span><span class="jsdoc-var">ret.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"\n" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">indent</span><span class="jsdoc-syntax">);
- }
-
-
-
-
- }
- </span><span class="jsdoc-comment">// what if all text?
-
-
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
- },
-
-
-
- </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
- {
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">= [];
- </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">< </span><span class="jsdoc-var">node.attributes.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
-
- </span><span class="jsdoc-comment">// skip empty values?
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">node.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.value.length</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
- }
- </span><span class="jsdoc-var">attr.push</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">node.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'="' </span><span class="jsdoc-syntax">+
- </span><span class="jsdoc-var">Roo.util.Format.htmlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.value</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">'"'
- </span><span class="jsdoc-syntax">);
- }
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">attr.length </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">attr.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">) ) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
}
-
-
}</span></code></body></html>
\ No newline at end of file
<script type="text/javascript" src="../../Roo/htmleditor/BlockFigure.js"></script>
<script type="text/javascript" src="../../Roo/htmleditor/BlockTd.js"></script>
<script type="text/javascript" src="../../Roo/htmleditor/FilterBlock.js"></script>
- <script type="text/javascript" src="../../Roo/htmleditor/FilterStyleToTag.js"></script>
+ <script type="text/javascript" src="../../Roo/htmleditor/Tidy.js"></script>
+ <script type="text/javascript" src="../../Roo/htmleditor/TidyEntities.js"></script>
+ <script type="text/javascript" src="../../Roo/htmleditor/TidySerializer.js"></script>
+ <script type="text/javascript" src="../../Roo/htmleditor/TidyWriter.js"></script>
<script type="text/javascript" src="../../Roo/form/HtmlEditor/ToolbarContext.js"></script>
<script type="text/javascript" src="../../Roo/menu/Item.js"></script>