📄 editor_plugin_src.js
字号:
html += " </td>";
}
html += "</tr>";
}
html += "</table>";
inst.execCommand('mceInsertContent', false, html);
}
return true;
case "mceTableInsertRowBefore":
case "mceTableInsertRowAfter":
case "mceTableDeleteRow":
case "mceTableInsertColBefore":
case "mceTableInsertColAfter":
case "mceTableDeleteCol":
var trElement = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
var tdElement = tinyMCE.getParentElement(inst.getFocusElement(), "td");
var tableElement = tinyMCE.getParentElement(inst.getFocusElement(), "table");
// No table just return (invalid command)
if (!tableElement)
return true;
var doc = inst.contentWindow.document;
var tableBorder = tableElement.getAttribute("border");
var visualAidStyle = inst.visualAid ? tinyMCE.settings['visual_table_style'] : "";
// Table has a tbody use that reference
if (tableElement.firstChild && tableElement.firstChild.nodeName.toLowerCase() == "tbody")
tableElement = tableElement.firstChild;
if (tableElement && trElement) {
switch (command) {
case "mceTableInsertRowBefore":
var numcells = trElement.cells.length;
var rowCount = 0;
var tmpTR = trElement;
// Count rows
while (tmpTR) {
if (tmpTR.nodeName.toLowerCase() == "tr")
rowCount++;
tmpTR = tmpTR.previousSibling;
}
var r = tableElement.insertRow(rowCount == 0 ? 1 : rowCount-1);
for (var i=0; i<numcells; i++) {
var newTD = doc.createElement("td");
newTD.innerHTML = " ";
if (tableBorder == 0)
newTD.style.cssText = visualAidStyle;
var c = r.appendChild(newTD);
if (tdElement.parentNode.childNodes[i].colSpan)
c.colSpan = tdElement.parentNode.childNodes[i].colSpan;
}
break;
case "mceTableInsertRowAfter":
var numcells = trElement.cells.length;
var rowCount = 0;
var tmpTR = trElement;
var doc = inst.contentWindow.document;
// Count rows
while (tmpTR) {
if (tmpTR.nodeName.toLowerCase() == "tr")
rowCount++;
tmpTR = tmpTR.previousSibling;
}
var r = tableElement.insertRow(rowCount == 0 ? 1 : rowCount);
for (var i=0; i<numcells; i++) {
var newTD = doc.createElement("td");
newTD.innerHTML = " ";
if (tableBorder == 0)
newTD.style.cssText = visualAidStyle;
var c = r.appendChild(newTD);
if (tdElement.parentNode.childNodes[i].colSpan)
c.colSpan = tdElement.parentNode.childNodes[i].colSpan;
}
break;
case "mceTableDeleteRow":
// Remove whole table
if (tableElement.rows.length <= 1) {
tableElement.parentNode.removeChild(tableElement);
tinyMCE.triggerNodeChange();
return true;
}
var selElm = inst.contentWindow.document.body;
if (trElement.previousSibling)
selElm = trElement.previousSibling.cells[0];
// Delete row
trElement.parentNode.removeChild(trElement);
if (tinyMCE.isGecko)
inst.selectNode(selElm);
break;
case "mceTableInsertColBefore":
var cellCount = tdElement.cellIndex;
// Add columns
for (var y=0; y<tableElement.rows.length; y++) {
var cell = tableElement.rows[y].cells[cellCount];
// Can't add cell after cell that doesn't exist
if (!cell)
break;
var newTD = doc.createElement("td");
newTD.innerHTML = " ";
if (tableBorder == 0)
newTD.style.cssText = visualAidStyle;
cell.parentNode.insertBefore(newTD, cell);
}
break;
case "mceTableInsertColAfter":
var cellCount = tdElement.cellIndex;
// Add columns
for (var y=0; y<tableElement.rows.length; y++) {
var append = false;
var cell = tableElement.rows[y].cells[cellCount];
if (cellCount == tableElement.rows[y].cells.length-1)
append = true;
else
cell = tableElement.rows[y].cells[cellCount+1];
var newTD = doc.createElement("td");
newTD.innerHTML = " ";
if (tableBorder == 0)
newTD.style.cssText = visualAidStyle;
if (append)
cell.parentNode.appendChild(newTD);
else
cell.parentNode.insertBefore(newTD, cell);
}
break;
case "mceTableDeleteCol":
var index = tdElement.cellIndex;
var selElm = inst.contentWindow.document.body;
var numCols = 0;
for (var y=0; y<tableElement.rows.length; y++) {
if (tableElement.rows[y].cells.length > numCols)
numCols = tableElement.rows[y].cells.length;
}
// Remove whole table
if (numCols <= 1) {
if (tinyMCE.isGecko)
inst.selectNode(selElm);
tableElement.parentNode.removeChild(tableElement);
tinyMCE.triggerNodeChange();
return true;
}
// Remove columns
for (var y=0; y<tableElement.rows.length; y++) {
var cell = tableElement.rows[y].cells[index];
if (cell)
cell.parentNode.removeChild(cell);
}
if (index > 0)
selElm = tableElement.rows[0].cells[index-1];
if (tinyMCE.isGecko)
inst.selectNode(selElm);
break;
}
tinyMCE.triggerNodeChange();
}
return true;
}
// Pass to next handler in chain
return false;
}
function TinyMCE_table_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
// Reset table controls
tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_row_props', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_cell_props', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonDisabled', true);
// Within a tr element
if (tinyMCE.getParentElement(node, "tr"))
tinyMCE.switchClassSticky(editor_id + '_row_props', 'mceButtonSelected', false);
// Within a td element
if (tinyMCE.getParentElement(node, "td")) {
tinyMCE.switchClassSticky(editor_id + '_cell_props', 'mceButtonSelected', false);
tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonNormal', false);
}
// Within table
if (tinyMCE.getParentElement(node, "table"))
tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonSelected');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -