Roo.namespace("Roo", "Roo.util", "Roo.grid", "Roo.dd", "Roo.tree", "Roo.data",
"Roo.form", "Roo.menu", "Roo.state", "Roo.lib", "Roo.layout",
- "Roo.app", "Roo.ux",
- "Roo.bootstrap",
- "Roo.bootstrap.dash");
+ "Roo.app", "Roo.ux"
+ );
var updateNode = function(from, to)
{
// should we handle non-standard elements?
-
+ Roo.log(["UpdateNode" , from, to]);
if (from.nodeType != to.nodeType) {
+ Roo.log(["ReplaceChild - mismatch notType" , to, from ]);
from.parentNode.replaceChild(to, from);
}
// assume 'to' doesnt have '1/3 nodetypes!
if (from.nodeType !=1 || from.tagName != to.tagName) {
+ Roo.log(["ReplaceChild" , from, to ]);
from.parentNode.replaceChild(to, from);
return;
}
if (to.hasAttribute(ar[i].name)) {
continue;
}
+ if (ar[i].name == 'id') { // always keep ids?
+ continue;
+ }
from.removeAttribute(ar[i].name);
}
ar = to.attributes;
var tar = Array.from(to.childNodes);
// if the lengths are different.. then it's probably a editable content change, rather than
// a change of the block definition..
- if (from.innerHTML == to.innerHTML) {
+
+ // this did notwork , as our rebuilt nodes did not include ID's so did not match at all.
+ /*if (from.innerHTML == to.innerHTML) {
return;
}
if (far.length != tar.length) {
from.innerHTML = to.innerHTML;
return;
}
+ */
- for(var i = 0; i < far.length; i++) {
- updateNode(far[i], tar[i]);
+ for(var i = 0; i < Math.max(tar.length, far.length); i++) {
+ if (i >= far.length) {
+ from.appendChild(tar[i]);
+ Roo.log(["add", tar[i]]);
+
+ } else if ( i >= tar.length) {
+ from.removeChild(far[i]);
+ Roo.log(["remove", far[i]]);
+ } else {
+
+ updateNode(far[i], tar[i]);
+ }
}
+
+
};
// the blocks are synced occasionaly - since we currently dont add listeners on the blocks
// this has to update attributes that get duped.. like alt and caption..
- Roo.each(Roo.get(this.doc.body).query('*[data-block]'), function(e) {
- Roo.htmleditor.Block.factory(e);
- },this);
+
+ //Roo.each(Roo.get(this.doc.body).query('*[data-block]'), function(e) {
+ // Roo.htmleditor.Block.factory(e);
+ //},this);
var div = document.createElement('div');
// remove content editable. (blocks)
-
new Roo.htmleditor.FilterAttributes({node : div, attrib_black: [ 'contenteditable' ] });
//?? tidy?
var html = div.innerHTML;
*/
updateToolbar: function(editor ,ev, sel)
{
-
+
+ if (ev) {
+ ev.stopEvent(); // se if we can stop this looping with mutiple events.
+ }
+
//Roo.log(ev);
// capture mouse up - this is handy for selecting images..
// perhaps should go somewhere else...
this.editor.onFirstFocus();
return;
}
-
+ Roo.log(ev ? ev.target : 'NOTARGET');
// http://developer.yahoo.com/yui/docs/simple-editor.js.html
if (ev &&
(ev.type == 'mouseup' || ev.type == 'click' ) &&
- ev.target && ev.target.tagName == 'IMG') {
+ ev.target && ev.target != 'BODY' ) { // && ev.target.tagName == 'IMG') {
// they have click on an image...
// let's see if we can change the selection...
sel = ev.target;
-
- this.editorcore.selectNode(sel);
+ // this triggers looping?
+ //this.editorcore.selectNode(sel);
}
// ok see if we are editing a block?
var sel_el = Roo.get(sel);
-
- var db = sel_el.attr('data-block') == undefined ? sel_el.findParent('[data-block]') : sel;
- var cepar = Roo.get(sel).findParent('[contenteditable=true]');
- if (db && cepar && cepar.tagName != 'BODY') {
- db = false; // we are inside an editable block.. = not sure how we are going to handle nested blocks!?
+ var db = false;
+ // you are not actually selecting the block.
+ if (sel && sel.hasAttribute('data-block')) {
+ db = sel;
+ } else if (sel && !sel.hasAttribute('contenteditable')) {
+ db = sel_el.findParent('[data-block]');
+ var cepar = sel_el.findParent('[contenteditable=true]');
+ if (db && cepar && cepar.tagName != 'BODY') {
+ db = false; // we are inside an editable block.. = not sure how we are going to handle nested blocks!?
+ }
}
+
+
var block = false;
- if (db && !sel.hasAttribute('contenteditable') && sel.getAttribute('contenteditable') != 'true' ) {
+ //if (db && !sel.hasAttribute('contenteditable') && sel.getAttribute('contenteditable') != 'true' ) {
+ if (db) {
block = Roo.htmleditor.Block.factory(db);
if (block) {
tn = 'BLOCK.' + db.getAttribute('data-block');
- this.tb.selectedNode = db;
- this.editorcore.selectNode(db);
+
+ //this.editorcore.selectNode(db);
if (typeof(this.toolbars[tn]) == 'undefined') {
- this.toolbars[tn] = this.buildToolbar( block.context || block.contextMenu(this) ,tn ,block.friendly_name);
+ this.toolbars[tn] = this.buildToolbar( false ,tn ,block.friendly_name, block);
}
+ this.toolbars[tn].selectedNode = db;
left_label = block.friendly_name;
ans = this.editorcore.getAllAncestors();
}
if (block) {
this.tb.fields.each(function(e) {
- e.setValue(block[e.attrname]);
+ e.setValue(block[e.name]);
});
item.enable();
});
},
- buildToolbar: function(tlist, nm, friendly_name)
+ buildToolbar: function(tlist, nm, friendly_name, block)
{
var editor = this.editor;
var editorcore = this.editorcore;
var tb = new Roo.Toolbar(wdiv);
+ this.tb = tb;
+ if (tlist === false && block) {
+ tlist = block.contextMenu(this);
+ }
+
tb.hasStyles = false;
tb.name = nm;
// newer versions will use xtype cfg to create menus.
if (typeof(tlist[i].xtype) != 'undefined') {
- tb.add(Roo.factory(tlist[i]));
+
+ tb[typeof(tlist[i].name)== 'undefined' ? 'add' : 'addField'](Roo.factory(tlist[i]));
+
+
continue;
}
var id = Roo.get(node).id;
if (typeof(Roo.htmleditor.Block.cache[id]) != 'undefined') {
+ Roo.htmleditor.Block.cache[id].readElement();
return Roo.htmleditor.Block.cache[id];
}
Roo.htmleditor.Block.prototype = {
+ node : false,
+
// used by context menu
friendly_name : 'Image with caption',
*/
updateElement : function(node)
{
- Roo.DomHelper.update(node, this.toObject());
+ Roo.DomHelper.update(node === undefined ? this.node : node, this.toObject());
},
/**
* convert to plain HTML for calling insertAtCursor..
rows : false,
no_col : 1,
no_row : 1,
- editing : false,
+
width: '100%',
{
var block = function() {
- return Roo.htmleditor.Block.factory(toolbar.selectedNode);
+ return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
};
+
var rooui = typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
var syncValue = toolbar.editorcore.syncValue;
typeAhead : true,
valueField : 'val',
width : 100,
+ name : 'width',
listeners : {
- select : function (combo, record, index)
+ select : function (combo, r, index)
{
var b = block();
b.width = r.get('val');
- b.updateElement(toolbar.selectedNode);
+ b.updateElement();
syncValue();
}
text: 'Reset Column Widths',
listeners : {
- toggle : function (_self, e)
- {
- block().toggleEdit(this.toggle);
- this.setText("Stop Editing Cells");
- }
- },
- xns : rooui.Toolbar
- },
-
- {
- xtype : 'Button',
- text: 'Edit / Join Cells',
- listeners : {
-
- toggle : function (_self, e)
- {
- block().toggleEdit(this.toggle);
- this.setText("Stop Editing Cells");
- }
- },
- xns : rooui.Toolbar
- },
- {
- xtype : 'Button',
- text: 'Delete Row or Column',
- listeners : {
-
- toggle : function (_self, e)
- {
- block().deleteColumnOrRow();
- syncValue();
- }
- },
- xns : rooui.Toolbar
- },
- {
- xtype : 'Button',
- text: 'Join Selected Cells',
- listeners : {
-
- toggle : function (_self, e)
- {
- block().joinSelectedCells();
- syncValue();
- }
- },
- xns : rooui.Toolbar
- },
- {
- xtype : 'Button',
- text: 'Unjoin Selected Cells',
- listeners : {
-
- toggle : function (_self, e)
- {
- block().unjoinSelectedCells();
- syncValue();
- }
- },
- xns : rooui.Toolbar
- },
-
- {
- xtype : 'TextItem',
- text : "Column Width: ",
- xns : rooui.Toolbar //Boostrap?
- },
- {
- xtype : 'Button',
- text: '-',
- listeners : {
- click : function (_self, e)
- {
- block().widthLess();
- syncValue();
- }
- },
- xns : rooui.Toolbar
- },
- {
- xtype : 'Button',
- text: '+',
- listeners : {
click : function (_self, e)
{
- block().widthMore();
- syncValue();
+ block().resetWidths();
}
},
xns : rooui.Toolbar
- },
+ }
+
- // align... << fixme
];
var ret = {
tag : 'table',
- // contenteditable : 'false', // ?? not sure if this is needed?
+ contenteditable : 'false', // this stops cell selection from picking the table.
'data-block' : 'Table',
style : {
width: this.width,
border : 'solid 1px #000', // ??? hard coded?
'border-collapse' : 'collapse',
},
- cn : []
+ cn : [
+ { tag : 'tbody' , cn : [] }
+ ]
};
- if (this.editing) {
- var head = {
- tag: 'tr',
- style : {
- margin: '6px',
- border : 'solid 1px #000',
- textAlign : 'left',
- },
- cls : 'roo-html-editor-el', // flag is at to be deleted...
- cn : []
- };
- cn.push(head)
- }
// do we have a head = not really
var ncols = 0;
border : 'solid 1px #000',
textAlign : 'left',
},
- cn : [
-
- ]
+ cn : [ ]
};
- if (this.edting) {
- tr.cn.push({
- tag : 'td',
- cls : 'roo-html-editor-el',
- html : 'Row:',
- });
- }
- ret.cn.push(tr);
+
+ ret.cn[0].cn.push(tr);
// does the row have any properties? ?? height?
var nc = 0;
Roo.each(row, function( cell ) {
+
var td = {
tag : 'td',
- contenteditable : this.editing ? 'false' : 'true',
+ contenteditable : 'true',
+ 'data-block' : 'Td',
html : cell.html
};
if (cell.colspan > 1) {
// add the header row..
ncols++;
- if (this.editing) {
- for (var i = 0; i< ncols; i++ ) {
- head.push({
- tag : 'td',
- cls : 'roo-html-editor-el',
- html : i > 0 ? 'Col:' : ''
- });
- }
- }
+
return ret;
readElement : function(node)
{
-
+ node = node ? node : this.node ;
this.width = this.getVal(node, true, 'style', 'width');
this.rows = [];
type: 'col',
col : this.no_col-1
});
+ this.updateElement();
},
this.rows.forEach(function(row) {
row.push(this.emptyCell());
- }, this)
+ }, this);
+ this.updateElement();
},
deleteRow : function(sel)
var rows = this.normalizeRows();
- rows[sel.row].forEach(function(row) {
- var col = cols[sel.row];
+ rows[sel.row].forEach(function(col) {
if (col.rowspan > 1) {
col.rowspan--;
} else {
this.no_row--;
+ this.updateElement();
},
removeRow : function()
{
- this.deleteColumn({
- type: 'col',
- col : this.no_row-1
+ this.deleteRow({
+ type: 'row',
+ row : this.no_row-1
});
+
},
}
this.rows.push(row);
+ this.updateElement();
},
grid[s][col].html = html;
grid[s][col].colspan = (e-s)+1; //???
+ this.updateElement();
+
},
joinRow: function(row, s, e)
{
}
grid[r[0]][c].html = html;
grid[r[0]][c].rowspan = (e-s)+1; //???
-
+ this.updateElement();
},
this.row[r] = nrow;
}
+ this.updateElement();
},
}
this.row[row] = nrow.concat(right);
-
+ this.updateElement();
},
// the default cell object... at present...
+Roo.bootstrap.namespace
Roo.bootstrap.version
Roo.bootstrap.menu.namespace
Roo.bootstrap.MessageBar
Roo.bootstrap.Graph
+Roo.bootstrap.dash.namespace
+
Roo.bootstrap.dash.NumberBox
Roo.bootstrap.dash.TabBox
Roo.bootstrap.dash.TabPane
"Roo.Toolbar.Separator",
"Roo.Toolbar.Spacer",
"Roo.Toolbar.TextItem",
+ "Roo.Toolbar.Button",
+ "Roo.Toolbar.SplitButton",
"Roo.form.Field",
"Roo.form.Checkbox",
"Roo.form.ComboBox",
{
"name" : "hide",
"type" : "function",
- "desc" : "Hides this item.",
+ "desc" : "Hides this button",
"sig" : "()\n{\n\n}",
"static" : false,
- "memberOf" : "Roo.Toolbar.Item",
+ "memberOf" : "",
"isStatic" : false,
"isConstructor" : false,
"isPrivate" : false,
{
"name" : "show",
"type" : "function",
- "desc" : "Shows this item.",
+ "desc" : "Shows this button",
"sig" : "()\n{\n\n}",
"static" : false,
- "memberOf" : "Roo.Toolbar.Item",
+ "memberOf" : "",
"isStatic" : false,
"isConstructor" : false,
"isPrivate" : false,
"Roo.menu.DateMenu"
],
"tree_children" : [
- "Roo.menu.CheckItem",
- "Roo.menu.ColorItem",
- "Roo.menu.DateItem",
"Roo.menu.Item",
+ "Roo.menu.CheckItem",
"Roo.menu.Separator",
"Roo.menu.TextItem"
],
</span><span class="jsdoc-var">Roo.namespace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"Roo"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.util"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.grid"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.dd"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.tree"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.data"</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-string">"Roo.form"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.menu"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.state"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.lib"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.layout"</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-string">"Roo.app"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.ux"</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-string">"Roo.bootstrap"</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-string">"Roo.bootstrap.dash"</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-string">"Roo.app"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Roo.ux"
+ </span><span class="jsdoc-syntax">);
</span></code></body></html>
\ No newline at end of file
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">updateNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">)
{
</span><span class="jsdoc-comment">// should we handle non-standard elements?
-
+ </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">"UpdateNode" </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">]);
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.nodeType </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">to.nodeType</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">"ReplaceChild - mismatch notType" </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from </span><span class="jsdoc-syntax">]);
</span><span class="jsdoc-var">from.parentNode.replaceChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">);
}
</span><span class="jsdoc-comment">// assume 'to' doesnt have '1/3 nodetypes!
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.nodeType </span><span class="jsdoc-syntax">!=1 || </span><span class="jsdoc-var">from.tagName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">to.tagName</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">"ReplaceChild" </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to </span><span class="jsdoc-syntax">]);
</span><span class="jsdoc-var">from.parentNode.replaceChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
}
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">to.hasAttribute</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">.name</span><span class="jsdoc-syntax">)) {
</span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
}
+ </span><span class="jsdoc-keyword">if </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">.name </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'id'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// always keep ids?
+ </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+ }
</span><span class="jsdoc-var">from.removeAttribute</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">.name</span><span class="jsdoc-syntax">);
}
</span><span class="jsdoc-var">ar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">to.attributes</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">to.childNodes</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-comment">// if the lengths are different.. then it's probably a editable content change, rather than
// a change of the block definition..
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.innerHTML </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">to.innerHTML</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+
+ // this did notwork , as our rebuilt nodes did not include ID's so did not match at all.
+ /*if (from.innerHTML == to.innerHTML) {
+ return;
}
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far.length </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">tar.length</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">from.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">to.innerHTML</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+ if (far.length != tar.length) {
+ from.innerHTML = to.innerHTML;
+ return;
}
+ */
- </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">far.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
- </span><span class="jsdoc-var">updateNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">tar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</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">Math.max</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tar.length</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">far.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">i </span><span class="jsdoc-syntax">>= </span><span class="jsdoc-var">far.length</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">from.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+ </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">"add"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]]);
+
+ } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">>= </span><span class="jsdoc-var">tar.length</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">from.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+ </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">"remove"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]]);
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+
+ </span><span class="jsdoc-var">updateNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">tar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+ }
}
+
+
};
// the blocks are synced occasionaly - since we currently dont add listeners on the blocks
// this has to update attributes that get duped.. like alt and caption..
- </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.query</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'*[data-block]'</span><span class="jsdoc-syntax">), </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">Roo.htmleditor.Block.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
- },</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+
+ //Roo.each(Roo.get(this.doc.body).query('*[data-block]'), function(e) {
+ // Roo.htmleditor.Block.factory(e);
+ //},this);
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-comment">// remove content editable. (blocks)
-
</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_black</span><span class="jsdoc-syntax">: [ </span><span class="jsdoc-string">'contenteditable' </span><span class="jsdoc-syntax">] });
</span><span class="jsdoc-comment">//?? tidy?
</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">;
/**
* @class Roo.Toolbar
- * @children Roo.Toolbar.Item Roo.form.Field
+ * @children Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field
* Basic Toolbar class.
* @constructor
* Creates a new Toolbar
</span><span class="jsdoc-var">enable</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-var">disable</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">focus</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">Roo.emptyFn
-</span><span class="jsdoc-syntax">});
+ </span><span class="jsdoc-var">focus</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-comment">/**
+ * Shows this button
+ */
+ </span><span class="jsdoc-var">show</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+ </span><span class="jsdoc-var">this.hidden </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">this.el.style.display </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">""</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Hides this button
+ */
+ </span><span class="jsdoc-var">hide</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+ </span><span class="jsdoc-var">this.hidden </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">this.el.style.display </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"none"</span><span class="jsdoc-syntax">;
+ }
+
+});
</span><span class="jsdoc-comment">/**
* @class Roo.Toolbar.Button
*
* Note you can force an update by calling on('editorevent', scope, false)
*/
- </span><span class="jsdoc-var">updateToolbar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">editor </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">){
+ </span><span class="jsdoc-var">updateToolbar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">editor </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">)
+ {
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">ev.stopEvent</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">// se if we can stop this looping with mutiple events.
+ </span><span class="jsdoc-syntax">}
</span><span class="jsdoc-comment">//Roo.log(ev);
// capture mouse up - this is handy for selecting images..
</span><span class="jsdoc-var">this.editor.onFirstFocus</span><span class="jsdoc-syntax">();
</span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
}
-
+ </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">ev.target </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'NOTARGET'</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-comment">// http://developer.yahoo.com/yui/docs/simple-editor.js.html
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev </span><span class="jsdoc-syntax">&&
(</span><span class="jsdoc-var">ev.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'mouseup' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">ev.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'click' </span><span class="jsdoc-syntax">) &&
- </span><span class="jsdoc-var">ev.target </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">ev.target.tagName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'IMG'</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-comment">// they have click on an image...
+ </span><span class="jsdoc-var">ev.target </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">ev.target </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'BODY' </span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// && ev.target.tagName == 'IMG') {
+ // they have click on an image...
// let's see if we can change the selection...
</span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ev.target</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-comment">// this triggers looping?
+ //this.editorcore.selectNode(sel);
- </span><span class="jsdoc-var">this.editorcore.selectNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">);
-
- }
+ </span><span class="jsdoc-syntax">}
</span><span class="jsdoc-comment">//var updateFooter = sel ? false : true;
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">left_label </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-comment">// ok see if we are editing a block?
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sel_el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-comment">// you are not actually selecting the block.
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">sel.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'data-block'</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">;
+ } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">sel.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'contenteditable'</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel_el.findParent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'[data-block]'</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cepar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel_el.findParent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'[contenteditable=true]'</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">cepar </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">cepar.tagName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// we are inside an editable block.. = not sure how we are going to handle nested blocks!?
+ </span><span class="jsdoc-syntax">}
+ }
+
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.findParent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'[data-block]'</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cepar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.findParent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'[contenteditable=true]'</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">cepar </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">cepar.tagName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// we are inside an editable block.. = not sure how we are going to handle nested blocks!?
- </span><span class="jsdoc-syntax">}
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">block </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">sel.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'contenteditable'</span><span class="jsdoc-syntax">) && </span><span class="jsdoc-var">sel.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'contenteditable'</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'true' </span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-comment">//if (db && !sel.hasAttribute('contenteditable') && sel.getAttribute('contenteditable') != 'true' ) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">) {
</span><span class="jsdoc-var">block </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.htmleditor.Block.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">) {
</span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'BLOCK.' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">db.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'data-block'</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.tb.selectedNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-var">this.editorcore.selectNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-comment">//this.editorcore.selectNode(db);
</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">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">]) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">this.buildToolbar</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">block.context </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">block.contextMenu</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">) ,</span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">block.friendly_name</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">this.buildToolbar</span><span class="jsdoc-syntax">( </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">block.friendly_name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">);
}
+ </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.selectedNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-var">left_label </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block.friendly_name</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-var">ans </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore.getAllAncestors</span><span class="jsdoc-syntax">();
}
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">) {
</span><span class="jsdoc-var">this.tb.fields.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">e.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e.attrname</span><span class="jsdoc-syntax">]);
+ </span><span class="jsdoc-var">e.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e.name</span><span class="jsdoc-syntax">]);
});
</span><span class="jsdoc-var">item.enable</span><span class="jsdoc-syntax">();
});
},
- </span><span class="jsdoc-var">buildToolbar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nm</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">friendly_name</span><span class="jsdoc-syntax">)
+ </span><span class="jsdoc-var">buildToolbar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nm</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">friendly_name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">)
{
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">editor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editor</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">editorcore </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tb </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Toolbar</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">wdiv</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.tb </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tb</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">tlist </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block.contextMenu</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+ }
+
</span><span class="jsdoc-var">tb.hasStyles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-var">tb.name </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nm</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-comment">// newer versions will use xtype cfg to create menus.
</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">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.xtype</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">tb.addField</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.xtype</span><span class="jsdoc-syntax">));
+
+ </span><span class="jsdoc-var">tb</span><span class="jsdoc-syntax">[</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</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">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'add' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'addField'</span><span class="jsdoc-syntax">](</span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]));
+
+
</span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
}
},
+ </span><span class="jsdoc-comment">// when the footer contect changes
</span><span class="jsdoc-var">onContextClick </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">dom</span><span class="jsdoc-syntax">)
{
</span><span class="jsdoc-var">ev.preventDefault</span><span class="jsdoc-syntax">();
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">;
</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">Roo.htmleditor.Block.cache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">]) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">Roo.htmleditor.Block.cache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.readElement</span><span class="jsdoc-syntax">();
</span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.htmleditor.Block.cache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
}
</span><span class="jsdoc-var">Roo.htmleditor.Block.prototype </span><span class="jsdoc-syntax">= {
+ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
</span><span class="jsdoc-comment">// used by context menu
</span><span class="jsdoc-var">friendly_name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Image with caption'</span><span class="jsdoc-syntax">,
*/
</span><span class="jsdoc-var">updateElement </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">Roo.DomHelper.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.toObject</span><span class="jsdoc-syntax">());
+ </span><span class="jsdoc-var">Roo.DomHelper.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.toObject</span><span class="jsdoc-syntax">());
},
</span><span class="jsdoc-comment">/**
* convert to plain HTML for calling insertAtCursor..
/**
* @class Roo.menu.Menu
* @extends Roo.util.Observable
- * @children Roo.menu.BaseItem
+ * @children Roo.menu.Item Roo.menu.Separator Roo.menu.TextItem
* A menu object. This is the container to which you add all other menu items. Menu can also serve a as a base class
* when you want a specialzed menu based off of another component (like {@link Roo.menu.DateMenu} for example).
* @constructor
],
"methods" : [
{
- "name" : "disable",
+ "name" : "hide",
"type" : "function",
- "desc" : "Disables this item.",
+ "desc" : "Hides this button",
"sig" : "()\n{\n\n}",
"static" : false,
- "memberOf" : "Roo.Toolbar.Item",
+ "memberOf" : "",
"isStatic" : false,
"isConstructor" : false,
"isPrivate" : false,
"returns" : []
},
{
- "name" : "hide",
+ "name" : "show",
"type" : "function",
- "desc" : "Hides this item.",
+ "desc" : "Shows this button",
"sig" : "()\n{\n\n}",
"static" : false,
- "memberOf" : "Roo.Toolbar.Item",
+ "memberOf" : "",
"isStatic" : false,
"isConstructor" : false,
"isPrivate" : false,
"returns" : []
},
{
- "name" : "focus",
+ "name" : "disable",
"type" : "function",
- "desc" : "Try to focus this item.",
+ "desc" : "Disables this item.",
"sig" : "()\n{\n\n}",
"static" : false,
"memberOf" : "Roo.Toolbar.Item",
"returns" : []
},
{
- "name" : "show",
+ "name" : "focus",
"type" : "function",
- "desc" : "Shows this item.",
+ "desc" : "Try to focus this item.",
"sig" : "()\n{\n\n}",
"static" : false,
"memberOf" : "Roo.Toolbar.Item",
"Roo.Toolbar.Separator",
"Roo.Toolbar.Spacer",
"Roo.Toolbar.TextItem",
+ "Roo.Toolbar.Button",
+ "Roo.Toolbar.SplitButton",
"Roo.form.Field",
"Roo.form.Checkbox",
"Roo.form.ComboBox",
]
},
"tree_children" : [
- "Roo.menu.CheckItem",
- "Roo.menu.ColorItem",
- "Roo.menu.DateItem",
"Roo.menu.Item",
+ "Roo.menu.CheckItem",
"Roo.menu.Separator",
"Roo.menu.TextItem"
],
<script type="text/javascript" src="../../roojs-debug.js"></script>
<!-- testing new code.. -->
+ <script type="text/javascript" src="../../Roo/DomHelper.js"></script>
<script type="text/javascript" src="../../Roo/HtmlEditorCore.js"></script>
<script type="text/javascript" src="../../Roo/form/HtmlEditor.js"></script>
<script type="text/javascript" src="../../Roo/form/HtmlEditor/ToolbarStandard.js"></script>
<script type="text/javascript" src="../../Roo/htmleditor/Block.js"></script>
- <script type="text/javascript" src="../../Roo/htmleditor/BlockTable.js"></script>
+ <script type="text/javascript" src="../../Roo/htmleditor/BlockTable.js"></script>
+ <script type="text/javascript" src="../../Roo/htmleditor/BlockTd.js"></script>
<script type="text/javascript" src="../../Roo/form/HtmlEditor/ToolbarContext.js"></script>
<script type="text/javascript" src="../../Roo/menu/Item.js"></script>
Roo.namespace("Roo", "Roo.util", "Roo.grid", "Roo.dd", "Roo.tree", "Roo.data",
"Roo.form", "Roo.menu", "Roo.state", "Roo.lib", "Roo.layout",
- "Roo.app", "Roo.ux",
- "Roo.bootstrap",
- "Roo.bootstrap.dash");
+ "Roo.app", "Roo.ux"
+ );
/*
* Based on:
* Ext JS Library 1.1.1
},destroy:function(){for(var i=0,a=arguments,S=a.length;i<S;i++){var as=a[i];if(as){if(as.dom){as.removeAllListeners();as.remove();continue;}if(typeof as.purgeListeners=='function'){as.purgeListeners();}if(typeof as.destroy=='function'){as.destroy();}}}},type:function(o){if(o===undefined||o===null){return false;
}if(o.htmlElement){return 'element';}var t=typeof o;if(t=='object'&&o.nodeName){switch(o.nodeType){case 1:return 'element';case 3:return (/\S/).test(o.nodeValue)?'textnode':'whitespace';}}if(t=='object'||t=='function'){switch(o.constructor){case Array:return 'array';
case RegExp:return 'regexp';}if(typeof o.length=='number'&&typeof o.item=='function'){return 'nodelist';}}return t;},isEmpty:function(v,S){return v===null||v===undefined||(!S?v==='':false);},isOpera:C,isSafari:D,isFirefox:E,isIE:F,isIE7:G,isIE11:H,isEdge:I,isGecko:J,isBorderBox:K,isWindows:L,isLinux:N,isMac:M,isIOS:P,isAndroid:Q,isTouch:R,useShims:((F&&!G)||(J&&M)),selectNode:function(S,T){var U=Roo.DomQuery.selectNode(S,T);
-return U?Roo.get(U):new Roo.Element(false);},getGridSize:function(){var w=Roo.lib.Dom.getViewWidth();switch(true){case w>1200:return 'xl';case w>992:return 'lg';case w>768:return 'md';case w>576:return 'sm';default:return 'xs'}}});})();Roo.namespace("Roo","Roo.util","Roo.grid","Roo.dd","Roo.tree","Roo.data","Roo.form","Roo.menu","Roo.state","Roo.lib","Roo.layout","Roo.app","Roo.ux","Roo.bootstrap","Roo.bootstrap.dash");
+return U?Roo.get(U):new Roo.Element(false);},getGridSize:function(){var w=Roo.lib.Dom.getViewWidth();switch(true){case w>1200:return 'xl';case w>992:return 'lg';case w>768:return 'md';case w>576:return 'sm';default:return 'xs'}}});})();Roo.namespace("Roo","Roo.util","Roo.grid","Roo.dd","Roo.tree","Roo.data","Roo.form","Roo.menu","Roo.state","Roo.lib","Roo.layout","Roo.app","Roo.ux");
// Function.js
(function(){if(Roo.isIE){function fnCleanUp(){var p=Function.prototype;delete p.createSequence;delete p.defer;delete p.createDelegate;delete p.createCallback;delete p.createInterceptor;window.detachEvent("onunload",fnCleanUp);}window.attachEvent("onunload",fnCleanUp);