X-Git-Url: http://git.roojs.org/?p=roojs1;a=blobdiff_plain;f=roojs-debug.js;h=52f214f20efbaf3c75731aa21f1053face96f0fa;hp=aa4a181345b8477e166965ee0e900f657725fdf2;hb=456d56f8dd548af35fe42dd47d66423d1b98805b;hpb=d8d46460033881e248c734f400fc135d5b5c8ce6 diff --git a/roojs-debug.js b/roojs-debug.js index aa4a181345..52f214f20e 100644 --- a/roojs-debug.js +++ b/roojs-debug.js @@ -25886,14 +25886,16 @@ Roo.extend(Roo.data.DataProxy, Roo.util.Observable); */ /** * @class Roo.data.MemoryProxy + * @extends Roo.data.DataProxy * An implementation of Roo.data.DataProxy that simply passes the data specified in its constructor * to the Reader when its load method is called. * @constructor - * @param {Object} data The data object which the Reader uses to construct a block of Roo.data.Records. + * @param {Object} config A config object containing the objects needed for the Store to access data, */ -Roo.data.MemoryProxy = function(data){ - if (data.data) { - data = data.data; +Roo.data.MemoryProxy = function(config){ + var data = config; + if (typeof(config) != 'undefined' && typeof(config.data) != 'undefined') { + data = config.data; } Roo.data.MemoryProxy.superclass.constructor.call(this); this.data = data; @@ -25901,6 +25903,9 @@ Roo.data.MemoryProxy = function(data){ Roo.extend(Roo.data.MemoryProxy, Roo.data.DataProxy, { + /** + * @cfg {Object} data The data object which the Reader uses to construct a block of Roo.data.Records. + */ /** * Load data from the requested source (in this case an in-memory * data object passed to the constructor), read the data object into @@ -45392,7 +45397,7 @@ Roo.rtf.Parser.prototype = { this.hexStore.push(cmd); }, cmderror : function(cmd) { - throw new Exception (cmd.value); + throw cmd.value; }, /* @@ -45522,7 +45527,8 @@ Roo.rtf.Parser.prototype = { { this.emitText(); if (this.controlWord === '') { - this.emitError('empty control word'); + // do we want to track this - it seems just to cause problems. + //this.emitError('empty control word'); } else { this.push({ type: 'controlword', @@ -45646,6 +45652,8 @@ Roo.htmleditor.Filter.prototype = { return; case this.tag === true: // everything + case e.tagName.indexOf(":") > -1 && typeof(this.tag) == 'object' && this.tag.indexOf(":") > -1: + case e.tagName.indexOf(":") > -1 && typeof(this.tag) == 'string' && this.tag == ":": case typeof(this.tag) == 'object' && this.tag.indexOf(e.tagName) > -1: // array and it matches. case typeof(this.tag) == 'string' && this.tag == e.tagName: // array and it matches. if (this.replaceTag && false === this.replaceTag(e)) { @@ -46071,7 +46079,12 @@ Roo.extend(Roo.htmleditor.FilterTableWidth, Roo.htmleditor.Filter, Roo.htmleditor.FilterWord = function(cfg) { // no need to apply config. - this.walk(cfg.node); + this.replaceDocBullets(cfg.node); + + // this is disabled as the removal is done by other filters; + // this.walk(cfg.node); + + } Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter, @@ -46121,7 +46134,10 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter, node.removeChild(cn); node.parentNode.insertBefore(cn, node); // move node to parent - and clean it.. - this.replaceTag(cn); + if (cn.nodeType == 1) { + this.replaceTag(cn); + } + } node.parentNode.removeChild(node); /// no need to iterate chidlren = it's got none.. @@ -46173,7 +46189,136 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter, + }, + + styleToObject: function(node) + { + var styles = (node.getAttribute("style") || '').split(";"); + var ret = {}; + Roo.each(styles, function(s) { + if (!s.match(/:/)) { + return; + } + var kv = s.split(":"); + + // what ever is left... we allow. + ret[kv[0].trim()] = kv[1]; + }); + return ret; + }, + + + replaceDocBullets : function(doc) + { + // this is a bit odd - but it appears some indents use ql-indent-1 + + var listpara = doc.getElementsByClassName('ql-indent-1'); + while(listpara.length) { + this.replaceDocBullet(listpara.item(0)); + } + + var listpara = doc.getElementsByClassName('MsoListParagraph'); + while(listpara.length) { + this.replaceDocBullet(listpara.item(0)); + } + }, + + replaceDocBullet : function(p) + { + // gather all the siblings. + var ns = p, + parent = p.parentNode, + doc = parent.ownerDocument, + items = []; + + + while (ns) { + if (ns.nodeType != 1) { + ns = ns.nextSibling; + continue; + } + if (!ns.className.match(/(MsoListParagraph|ql-indent-1)/i)) { + break; + } + items.push(ns); + ns = ns.nextSibling; + } + + + var ul = parent.ownerDocument.createElement('ul'); // what about number lists... + parent.insertBefore(ul, p); + var lvl = 0; + 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... + } + + + + var style = {}; + for(var i = 0; i < spans.length; i++) { + + style = this.styleToObject(spans[i]); + if (typeof(style['mso-list']) == 'undefined') { + continue; + } + + spans[i].parentNode.removeChild(spans[i]); // remove the fake bullet. + break; + } + //Roo.log("NOW GOT innertHMLT=" + n.innerHTML); + 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... + last_li.appendChild(nul); + stack[nlvl] = nul; + + } + lvl = nlvl; + + var nli = stack[nlvl].appendChild(doc.createElement('li')); + last_li = nli; + nli.innerHTML = n.innerHTML; + //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); + + + + } + + + }); /** * @class Roo.htmleditor.FilterStyleToTag @@ -46661,12 +46806,14 @@ Roo.htmleditor.TidyWriter.prototype = { * @param {String} text String to write out. * @param {Boolean} raw Optional raw state if true the contents wont get encoded. */ - text: function(text, node) + text: function(in_text, node) { // if not in whitespace critical - if (text.length < 1) { + if (in_text.length < 1) { return; } + var text = new XMLSerializer().serializeToString(document.createTextNode(in_text)); // escape it properly? + if (this.in_pre) { this.html[this.html.length] = text; return; @@ -47664,7 +47811,17 @@ Roo.htmleditor.KeyEnter.prototype = { var pc = range.closest([ 'ol', 'ul']); var pli = range.closest('li'); if (!pc || e.ctrlKey) { - sel.insertNode('br', 'after'); + // on it list, or ctrl pressed. + if (!e.ctrlKey) { + sel.insertNode('br', 'after'); + } else { + // only do this if we have ctrl key.. + var br = doc.createElement('br'); + br.className = 'clear'; + br.setAttribute('style', 'clear: both'); + sel.insertNode(br, 'after'); + } + this.core.undoManager.addEvent(); this.core.fireEditorEvent(e); @@ -48028,10 +48185,11 @@ Roo.extend(Roo.htmleditor.BlockFigure, Roo.htmleditor.Block, { store : { xtype : 'SimpleStore', data : [ - ['auto'], - ['50%'], + ['100%'], ['80%'], - ['100%'] + ['50%'], + ['20%'], + ['10%'] ], fields : [ 'val'], xns : Roo.data @@ -48172,7 +48330,7 @@ Roo.extend(Roo.htmleditor.BlockFigure, Roo.htmleditor.Block, { var ret = { tag: 'figure', 'data-block' : 'Figure', - + 'data-width' : this.width, contenteditable : 'false', style : { @@ -48199,9 +48357,9 @@ Roo.extend(Roo.htmleditor.BlockFigure, Roo.htmleditor.Block, { fontSize : '16px', lineHeight : '24px', display : this.caption_display, - maxWidth : this.width + ' !important', + maxWidth : (this.align == 'center' ? this.width : '100%' ) + ' !important', margin: m, - width: this.width + width: this.align == 'center' ? this.width : '100%' }, @@ -48246,11 +48404,14 @@ Roo.extend(Roo.htmleditor.BlockFigure, Roo.htmleditor.Block, { this.align = this.getVal(node, 'figure', 'align'); var figcaption = this.getVal(node, 'figcaption', false); - this.caption = this.getVal(figcaption, 'i', 'html'); + if (figcaption !== '') { + this.caption = this.getVal(figcaption, 'i', 'html'); + } + this.caption_display = this.getVal(node, 'figcaption', 'data-display'); //this.text_align = this.getVal(node, 'figcaption', 'style','text-align'); - this.width = this.getVal(node, 'figcaption', 'style', 'width'); + this.width = this.getVal(node, true, 'data-width'); //this.margin = this.getVal(node, 'figure', 'style', 'margin'); }, @@ -49863,7 +50024,9 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { //Roo.log("HtmlEditorCore:syncValue (EDITOR->TEXT)"); if(this.initialized){ - this.undoManager.addEvent(); + if (this.undoManager) { + this.undoManager.addEvent(); + } var bd = (this.doc.body || this.doc.documentElement); @@ -50094,7 +50257,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { var parser = new Roo.rtf.Parser(cd.getData('text/rtf')); images = parser.doc ? parser.doc.getElementsByType('pict') : []; } - Roo.log(images); + //Roo.log(images); //Roo.log(imgs); // fixme.. images = images.filter(function(g) { return !g.path.match(/^rtf\/(head|pgdsctbl|listtable|footerf)/); }) // ignore headers/footers etc. @@ -50125,18 +50288,23 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { }); } if (this.autoClean) { + new Roo.htmleditor.FilterWord({ node : d }); + new Roo.htmleditor.FilterStyleToTag({ node : d }); new Roo.htmleditor.FilterAttributes({ node : d, - attrib_white : ['href', 'src', 'name', 'align', 'colspan', 'rowspan', 'data-display'], + attrib_white : ['href', 'src', 'name', 'align', 'colspan', 'rowspan', 'data-display', 'data-width'], attrib_clean : ['href', 'src' ] }); new Roo.htmleditor.FilterBlack({ node : d, tag : this.black}); // should be fonts.. - new Roo.htmleditor.FilterKeepChildren({node : d, tag : [ 'FONT', 'O:P' ]} ); + new Roo.htmleditor.FilterKeepChildren({node : d, tag : [ 'FONT', ':' ]} ); new Roo.htmleditor.FilterParagraph({ node : d }); new Roo.htmleditor.FilterSpan({ node : d }); new Roo.htmleditor.FilterLongBr({ node : d }); + new Roo.htmleditor.FilterComment({ node : d }); + + } if (this.enableBlocks) { @@ -50157,7 +50325,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { if (this.enableBlocks) { Roo.htmleditor.Block.initAll(this.doc.body); } - + e.preventDefault(); return false; @@ -50820,6 +50988,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component, { cleanWord : function(node) { new Roo.htmleditor.FilterWord({ node : node ? node : this.doc.body }); + new Roo.htmleditor.FilterKeepChildren({node : node ? node : this.doc.body, tag : [ 'FONT', ':' ]} ); }, @@ -55148,7 +55317,7 @@ Roo.extend(Roo.form.Layout, Roo.Component, { * a function which returns such a specification. */ /** - * @cfg {String} labelAlign + * @cfg {String} labelAlign (left|top|right) * Valid values are "left," "top" and "right" (defaults to "left") */ /** @@ -55268,6 +55437,7 @@ Roo.extend(Roo.form.Layout, Roo.Component, { } }); + /** * @class Roo.form.Column * @extends Roo.form.Layout @@ -55302,7 +55472,6 @@ Roo.extend(Roo.form.Column, Roo.form.Layout, { } }); - /** * @class Roo.form.Row * @extends Roo.form.Layout