replaceDocBullets : function(doc)
{
// this is a bit odd - but it appears some indents use ql-indent-1
+ //Roo.log(doc.innerHTML);
- var listpara = doc.getElementsByClassName('ql-indent-1');
+ var listpara = doc.getElementsByClassName('MsoListParagraphCxSpFirst');
+ for( var i = 0; i < listpara.length; i ++) {
+ listpara.item(i).className = "MsoListParagraph";
+ }
+ // this is a bit hacky - we had one word document where h2 had a miso-list attribute.
+ var htwo = doc.getElementsByTagName('h2');
+ for( var i = 0; i < htwo.length; i ++) {
+ if (htwo.item(i).getAttribute('style').match(/mso-list:/)) {
+ htwo.item(i).className = "MsoListParagraph";
+ }
+ }
+
+ listpara = doc.getElementsByClassName('ql-indent-1');
while(listpara.length) {
this.replaceDocBullet(listpara.item(0));
}
-
- var listpara = doc.getElementsByClassName('MsoListParagraph');
+ listpara = doc.getElementsByClassName('MsoListParagraph');
while(listpara.length) {
+
this.replaceDocBullet(listpara.item(0));
}
+
},
+
+
replaceDocBullet : function(p)
{
// gather all the siblings.
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);
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...
}
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...
+ if (!last_li) {
+ last_li = doc.createElement('li');
+ stack[lvl].appendChild(last_li);
+ }
last_li.appendChild(nul);
stack[nlvl] = nul;
//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);
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);
store : {
xtype : 'SimpleStore',
data : [
- ['50%'],
+ ['100%'],
['80%'],
- ['100%']
+ ['50%'],
+ ['20%'],
+ ['10%']
],
fields : [ 'val'],
xns : Roo.data
this.colspan = 1;
for(var r = cd.row; r < cd.row + cd.rowspan; r++) {
-
-
+
for(var c = cd.col; c < cd.col + cd.colspan; c++) {
if (r == cd.row && c == cd.col) {