📄 editor_template_src.js
字号:
function getAttrib(elm, name) {
return elm.getAttribute(name) ? elm.getAttribute(name) : "";
};
// No node provided
if (node == null)
{
return;
}
// Update path
var pathElm = document.getElementById(editor_id + "_path");
var inst = tinyMCE.getInstanceById(editor_id);
var doc = inst.getDoc();
if (pathElm) {
// Get node path
var parentNode = node;
var path = new Array();
while (parentNode != null) {
if (parentNode.nodeName.toUpperCase() == "BODY") {
break;
}
// Only append element nodes to path
if (parentNode.nodeType == 1) {
path[path.length] = parentNode;
}
parentNode = parentNode.parentNode;
}
// Setup HTML
var html = "";
for (var i=path.length-1; i>=0; i--) {
var nodeName = path[i].nodeName.toLowerCase();
var nodeData = "";
if (nodeName == "b") {
nodeName = "strong";
}
if (nodeName == "i") {
nodeName = "em";
}
if (nodeName == "span") {
var cn = tinyMCE.getAttrib(path[i], "class");
if (cn != "" && cn.indexOf('mceItem') == -1)
nodeData += "class: " + cn + " ";
var st = tinyMCE.getAttrib(path[i], "style");
if (st != "") {
st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st));
nodeData += "style: " + st + " ";
}
}
if (nodeName == "font") {
if (tinyMCE.getParam("convert_fonts_to_spans"))
nodeName = "span";
var face = tinyMCE.getAttrib(path[i], "face");
if (face != "")
nodeData += "font: " + face + " ";
var size = tinyMCE.getAttrib(path[i], "size");
if (size != "")
nodeData += "size: " + size + " ";
var color = tinyMCE.getAttrib(path[i], "color");
if (color != "")
nodeData += "color: " + color + " ";
}
if (getAttrib(path[i], 'id') != "") {
nodeData += "id: " + path[i].getAttribute('id') + " ";
}
var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);
if (className != "" && className.indexOf('mceItem') == -1)
nodeData += "class: " + className + " ";
if (getAttrib(path[i], 'src') != "") {
var src = tinyMCE.getAttrib(path[i], "mce_src");
if (src == "")
src = tinyMCE.getAttrib(path[i], "src");
nodeData += "src: " + src + " ";
}
if (getAttrib(path[i], 'href') != "") {
var href = tinyMCE.getAttrib(path[i], "mce_href");
if (href == "")
href = tinyMCE.getAttrib(path[i], "href");
nodeData += "href: " + href + " ";
}
if (nodeName == "img" && tinyMCE.getAttrib(path[i], "class").indexOf('mceItemFlash') != -1) {
nodeName = "flash";
nodeData = "src: " + path[i].getAttribute('title');
}
if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") {
nodeName = "a";
nodeName += "#" + anchor;
nodeData = "";
}
if (getAttrib(path[i], 'name').indexOf("mce_") != 0) {
var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);
if (className != "" && className.indexOf('mceItem') == -1) {
nodeName += "." + className;
}
}
var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');';
html += '<a title="' + nodeData + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" target="_self" class="mcePathItem">' + nodeName + '</a>';
if (i > 0) {
html += " » ";
}
}
pathElm.innerHTML = '<a href="#" accesskey="x"></a>' + tinyMCE.getLang('lang_theme_path') + ": " + html + ' ';
}
// Reset old states
tinyMCE.switchClassSticky(editor_id + '_justifyleft', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_justifyright', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_justifyfull', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_sub', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_sup', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_link', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_unlink', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonNormal');
if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1)
tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonSelected');
// Get link
var anchorLink = tinyMCE.getParentElement(node, "a", "href");
if (anchorLink || any_selection)
{
tinyMCE.switchClassSticky(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal', false);
}
// Handle visual aid
tinyMCE.switchClassSticky(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal', false);
if (undo_levels != -1)
{
tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonDisabled', true);
}
// Within li, blockquote
if (tinyMCE.getParentElement(node, "li,blockquote"))
{
tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonNormal', false);
}
// Has redo levels
if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0))
{
tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonNormal', false);
}
// Has undo levels
if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))
{
tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonNormal', false);
}
// Select class in select box
var selectElm = document.getElementById(editor_id + "_styleSelect");
if (selectElm)
{
TinyMCE_advanced_setupCSSClasses(editor_id);
classNode = node;
breakOut = false;
var index = 0;
do
{
if (classNode && classNode.className)
{
for (var i=0; i<selectElm.options.length; i++)
{
if (selectElm.options[i].value == classNode.className)
{
index = i;
breakOut = true;
break;
}
}
}
} while (!breakOut && classNode != null && (classNode = classNode.parentNode) != null);
selectElm.selectedIndex = index;
}
// Select formatblock
var selectElm = document.getElementById(editor_id + "_formatSelect");
if (selectElm) {
var elm = tinyMCE.getParentElement(node, "p,div,h1,h2,h3,h4,h5,h6,pre,address");
if (elm)
selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() + ">");
else
selectByValue(selectElm, "");
}
// Select fontselect
var selectElm = document.getElementById(editor_id + "_fontNameSelect");
if (selectElm) {
if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) {
var face = inst.queryCommandValue('FontName');
face = face == null || face == "" ? "" : face;
selectByValue(selectElm, face, face != "");
} else {
var elm = tinyMCE.getParentElement(node, "font", "face");
if (elm) {
var family = tinyMCE.getAttrib(elm, "face");
if (family == '')
family = '' + elm.style.fontFamily;
if (!selectByValue(selectElm, family, family != ""))
selectByValue(selectElm, "");
} else
selectByValue(selectElm, "");
}
}
// Select fontsize
var selectElm = document.getElementById(editor_id + "_fontSizeSelect");
if (selectElm) {
if (!tinyMCE.isSafari && !tinyMCE.isOpera) {
var size = inst.queryCommandValue('FontSize');
selectByValue(selectElm, size == null || size == "" ? "0" : size);
} else {
var elm = tinyMCE.getParentElement(node, "font", "size");
if (elm) {
var size = tinyMCE.getAttrib(elm, "size");
if (size == '') {
var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px');
size = '' + elm.style.fontSize;
for (var i=0; i<sizes.length; i++) {
if (('' + sizes[i]) == size) {
size = i;
break;
}
}
}
if (!selectByValue(selectElm, size))
selectByValue(selectElm, "");
} else
selectByValue(selectElm, "0");
}
}
// Handle align attributes
alignNode = node;
breakOut = false;
do {
if (!alignNode.getAttribute || !alignNode.getAttribute('align')) {
continue;
}
switch (alignNode.getAttribute('align').toLowerCase()) {
case "left":
tinyMCE.switchClassSticky(editor_id + '_justifyleft', 'mceButtonSelected');
breakOut = true;
break;
case "right":
tinyMCE.switchClassSticky(editor_id + '_justifyright', 'mceButtonSelected');
breakOut = true;
break;
case "middle":
case "center":
tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonSelected');
breakOut = true;
break;
case "justify":
tinyMCE.switchClassSticky(editor_id + '_justifyfull', 'mceButtonSelected');
breakOut = true;
break;
}
} while (!breakOut && (alignNode = alignNode.parentNode) != null);
// Div justification
var div = tinyMCE.getParentElement(node, "div");
if (div && div.style.textAlign == "center")
tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonSelected');
// Do special text
if (!setup_content) {
// , "JustifyLeft", "_justifyleft", "JustifyCenter", "justifycenter", "JustifyRight", "justifyright", "JustifyFull", "justifyfull", "InsertUnorderedList", "bullist", "InsertOrderedList", "numlist", "InsertUnorderedList", "bullist", "Outdent", "outdent", "Indent", "indent", "subscript", "sub"
var ar = new Array("Bold", "_bold", "Italic", "_italic", "Strikethrough", "_strikethrough", "superscript", "_sup", "subscript", "_sub");
for (var i=0; i<ar.length; i+=2) {
if (inst.queryCommandState(ar[i]))
tinyMCE.switchClassSticky(editor_id + ar[i+1], 'mceButtonSelected');
}
if (inst.queryCommandState("Underline") && (node.parentNode == null || node.parentNode.nodeName != "A")) {
tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected');
}
}
// Handle elements
do {
switch (node.nodeName) {
/* case "B":
case "STRONG":
tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected');
break;
case "I":
case "EM":
tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonSelected');
break;
case "U":
tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected');
break;
case "STRIKE":
tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonSelected');
break;*/
case "UL":
tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonSelected');
break;
case "OL":
tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonSelected');
break;
case "HR":
tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonSelected');
break;
case "IMG":
if (getAttrib(node, 'name').indexOf('mce_') != 0) {
tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonSelected');
}
break;
}
} while ((node = node.parentNode) != null);
};
// This function auto imports CSS classes into the class selection droplist
function TinyMCE_advanced_setupCSSClasses(editor_id) {
if (!TinyMCE_advanced_autoImportCSSClasses) {
return;
}
var selectElm = document.getElementById(editor_id + '_styleSelect');
if (selectElm && selectElm.getAttribute('cssImported') != 'true') {
var csses = tinyMCE.getCSSClasses(editor_id);
if (csses && selectElm) {
for (var i=0; i<csses.length; i++) {
selectElm.options[selectElm.length] = new Option(csses[i], csses[i]);
}
}
// Only do this once
if (csses != null && csses.length > 0) {
selectElm.setAttribute('cssImported', 'true');
}
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -