📄 editor_template.js
字号:
tinyMCE.switchClass(editor_id + '_image', 'mceButtonSelected');
}
break;
}
} while ((node = node.parentNode) != null);
},
// Private theme internal functions
// This function auto imports CSS classes into the class selection droplist
_setupCSSClasses : function(editor_id) {
var i, selectElm;
if (!TinyMCE_CommunityServerTheme._autoImportCSSClasses)
return;
selectElm = document.getElementById(editor_id + '_styleSelect');
if (selectElm && selectElm.getAttribute('cssImported') != 'true') {
var csses = tinyMCE.getCSSClasses(editor_id);
if (csses && selectElm) {
for (i=0; i<csses.length; i++)
selectElm.options[selectElm.options.length] = new Option(csses[i], csses[i]);
}
// Only do this once
if (csses != null && csses.length > 0)
selectElm.setAttribute('cssImported', 'true');
}
},
_setCookie : function(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + escape(path) : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
document.cookie = curCookie;
},
_getCookie : function(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0)
return null;
} else
begin += 2;
var end = document.cookie.indexOf(";", begin);
if (end == -1)
end = dc.length;
return unescape(dc.substring(begin + prefix.length, end));
},
_resizeTo : function(inst, w, h, set_w) {
var editorContainer = document.getElementById(inst.editorId + '_parent');
var tableElm = editorContainer.firstChild;
var iframe = inst.iframeElement;
if (w == null || w == "null") {
set_w = false;
w = 0;
}
if (h == null || h == "null")
return;
w = parseInt(w);
h = parseInt(h);
if (tinyMCE.isGecko) {
w += 2;
h += 2;
}
var dx = w - tableElm.clientWidth;
var dy = h - tableElm.clientHeight;
w = w < 1 ? 30 : w;
h = h < 1 ? 30 : h;
if (set_w)
tableElm.style.width = w + "px";
tableElm.style.height = h + "px";
iw = iframe.clientWidth + dx;
ih = iframe.clientHeight + dy;
iw = iw < 1 ? 30 : iw;
ih = ih < 1 ? 30 : ih;
if (tinyMCE.isGecko) {
iw -= 2;
ih -= 2;
}
if (set_w)
iframe.style.width = iw + "px";
iframe.style.height = ih + "px";
// Is it to small, make it bigger again
if (set_w) {
var tableBodyElm = tableElm.firstChild;
var minIframeWidth = tableBodyElm.scrollWidth;
if (inst.iframeElement.clientWidth < minIframeWidth) {
dx = minIframeWidth - inst.iframeElement.clientWidth;
inst.iframeElement.style.width = (iw + dx) + "px";
}
}
},
/**
* Handles resizing events.
*/
_resizeEventHandler : function(e) {
var resizer = TinyMCE_CommunityServerTheme._resizer;
// Do nothing
if (!resizer.resizing)
return;
e = typeof(e) == "undefined" ? window.event : e;
var dx = e.screenX - resizer.downX;
var dy = e.screenY - resizer.downY;
var resizeBox = resizer.resizeBox;
var editorId = resizer.editorId;
switch (e.type) {
case "mousemove":
var w, h;
w = resizer.width + dx;
h = resizer.height + dy;
w = w < 1 ? 1 : w;
h = h < 1 ? 1 : h;
if (resizer.horizontal)
resizeBox.style.width = w + "px";
resizeBox.style.height = h + "px";
break;
case "mouseup":
TinyMCE_CommunityServerTheme._setResizing(e, editorId, false);
TinyMCE_CommunityServerTheme._resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal);
// Expire in a month
if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {
var expires = new Date();
expires.setTime(expires.getTime() + 3600000 * 24 * 30);
// Set the cookies
TinyMCE_CommunityServerTheme._setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires);
TinyMCE_CommunityServerTheme._setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires);
}
break;
}
},
/**
* Starts/stops the editor resizing.
*/
_setResizing : function(e, editor_id, state) {
e = typeof(e) == "undefined" ? window.event : e;
var resizer = TinyMCE_CommunityServerTheme._resizer;
var editorContainer = document.getElementById(editor_id + '_parent');
var editorArea = document.getElementById(editor_id + '_parent').firstChild;
var resizeBox = document.getElementById(editor_id + '_resize_box');
var inst = tinyMCE.getInstanceById(editor_id);
if (state) {
// Place box over editor area
var width = editorArea.clientWidth;
var height = editorArea.clientHeight;
resizeBox.style.width = width + "px";
resizeBox.style.height = height + "px";
resizer.iframeWidth = inst.iframeElement.clientWidth;
resizer.iframeHeight = inst.iframeElement.clientHeight;
// Hide editor and show resize box
editorArea.style.display = "none";
resizeBox.style.display = "block";
// Add event handlers, only once
if (!resizer.eventHandlers) {
if (tinyMCE.isMSIE)
tinyMCE.addEvent(document, "mousemove", TinyMCE_CommunityServerTheme._resizeEventHandler);
else
tinyMCE.addEvent(window, "mousemove", TinyMCE_CommunityServerTheme._resizeEventHandler);
tinyMCE.addEvent(document, "mouseup", TinyMCE_CommunityServerTheme._resizeEventHandler);
resizer.eventHandlers = true;
}
resizer.resizing = true;
resizer.downX = e.screenX;
resizer.downY = e.screenY;
resizer.width = parseInt(resizeBox.style.width);
resizer.height = parseInt(resizeBox.style.height);
resizer.editorId = editor_id;
resizer.resizeBox = resizeBox;
resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true);
} else {
resizer.resizing = false;
resizeBox.style.display = "none";
editorArea.style.display = tinyMCE.isMSIE && !tinyMCE.isOpera ? "block" : "table";
tinyMCE.execCommand('mceResetDesignMode');
}
},
_insertImage : function(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) {
tinyMCE.execCommand('mceBeginUndoLevel');
if (src == "")
return;
if (!tinyMCE.imgElement && tinyMCE.isSafari) {
var html = "";
html += '<img src="' + src + '" alt="' + alt + '"';
html += ' border="' + border + '" hspace="' + hspace + '"';
html += ' vspace="' + vspace + '" width="' + width + '"';
html += ' height="' + height + '" align="' + align + '" title="' + title + '" onmouseover="' + onmouseover + '" onmouseout="' + onmouseout + '" />';
tinyMCE.execCommand("mceInsertContent", false, html);
} else {
if (!tinyMCE.imgElement && tinyMCE.selectedInstance) {
if (tinyMCE.isSafari)
tinyMCE.execCommand("mceInsertContent", false, '<img src="' + tinyMCE.uniqueURL + '" />');
else
tinyMCE.selectedInstance.contentDocument.execCommand("insertimage", false, tinyMCE.uniqueURL);
tinyMCE.imgElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "img", "src", tinyMCE.uniqueURL);
}
}
if (tinyMCE.imgElement) {
var needsRepaint = false;
var msrc = src;
src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, tinyMCE.imgElement);");
if (tinyMCE.getParam('convert_urls'))
msrc = src;
if (onmouseover && onmouseover != "")
onmouseover = "this.src='" + eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, tinyMCE.imgElement);") + "';";
if (onmouseout && onmouseout != "")
onmouseout = "this.src='" + eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, tinyMCE.imgElement);") + "';";
// Use alt as title if it's undefined
if (typeof(title) == "undefined")
title = alt;
if (width != tinyMCE.imgElement.getAttribute("width") || height != tinyMCE.imgElement.getAttribute("height") || align != tinyMCE.imgElement.getAttribute("align"))
needsRepaint = true;
tinyMCE.setAttrib(tinyMCE.imgElement, 'src', src);
tinyMCE.setAttrib(tinyMCE.imgElement, 'mce_src', msrc);
tinyMCE.setAttrib(tinyMCE.imgElement, 'alt', alt);
tinyMCE.setAttrib(tinyMCE.imgElement, 'title', title);
tinyMCE.setAttrib(tinyMCE.imgElement, 'align', align);
tinyMCE.setAttrib(tinyMCE.imgElement, 'border', border, true);
tinyMCE.setAttrib(tinyMCE.imgElement, 'hspace', hspace, true);
tinyMCE.setAttrib(tinyMCE.imgElement, 'vspace', vspace, true);
tinyMCE.setAttrib(tinyMCE.imgElement, 'width', width, true);
tinyMCE.setAttrib(tinyMCE.imgElement, 'height', height, true);
tinyMCE.setAttrib(tinyMCE.imgElement, 'onmouseover', onmouseover);
tinyMCE.setAttrib(tinyMCE.imgElement, 'onmouseout', onmouseout);
// Fix for bug #989846 - Image resize bug
if (width && width != "")
tinyMCE.imgElement.style.pixelWidth = width;
if (height && height != "")
tinyMCE.imgElement.style.pixelHeight = height;
if (needsRepaint)
tinyMCE.selectedInstance.repaint();
}
tinyMCE.execCommand('mceEndUndoLevel');
},
_insertLink : function(href, target, title, onclick, style_class) {
tinyMCE.execCommand('mceBeginUndoLevel');
if (tinyMCE.selectedInstance && tinyMCE.selectedElement && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {
var doc = tinyMCE.selectedInstance.getDoc();
var linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
var newLink = false;
if (!linkElement) {
linkElement = doc.createElement("a");
newLink = true;
}
var mhref = href;
var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);");
mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
tinyMCE.setAttrib(linkElement, 'href', thref);
tinyMCE.setAttrib(linkElement, 'mce_href', mhref);
tinyMCE.setAttrib(linkElement, 'target', target);
tinyMCE.setAttrib(linkElement, 'title', title);
tinyMCE.setAttrib(linkElement, 'onclick', onclick);
tinyMCE.setAttrib(linkElement, 'class', style_class);
if (newLink) {
linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));
tinyMCE.selectedElement.parentNode.replaceChild(linkElement, tinyMCE.selectedElement);
}
return;
}
if (!tinyMCE.linkElement && tinyMCE.selectedInstance) {
if (tinyMCE.isSafari) {
tinyMCE.execCommand("mceInsertContent", false, '<a href="' + tinyMCE.uniqueURL + '">' + tinyMCE.selectedInstance.selection.getSelectedHTML() + '</a>');
} else
tinyMCE.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL);
tinyMCE.linkElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);
var elementArray = tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);
for (var i=0; i<elementArray.length; i++) {
var mhref = href;
var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, elementArray[i]);");
mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
tinyMCE.setAttrib(elementArray[i], 'href', thref);
tinyMCE.setAttrib(elementArray[i], 'mce_href', mhref);
tinyMCE.setAttrib(elementArray[i], 'target', target);
tinyMCE.setAttrib(elementArray[i], 'title', title);
tinyMCE.setAttrib(elementArray[i], 'onclick', onclick);
tinyMCE.setAttrib(elementArray[i], 'class', style_class);
}
tinyMCE.linkElement = elementArray[0];
}
if (tinyMCE.linkElement) {
var mhref = href;
href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement);");
mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
tinyMCE.setAttrib(tinyMCE.linkElement, 'href', href);
tinyMCE.setAttrib(tinyMCE.linkElement, 'mce_href', mhref);
tinyMCE.setAttrib(tinyMCE.linkElement, 'target', target);
tinyMCE.setAttrib(tinyMCE.linkElement, 'title', title);
tinyMCE.setAttrib(tinyMCE.linkElement, 'onclick', onclick);
tinyMCE.setAttrib(tinyMCE.linkElement, 'class', style_class);
}
tinyMCE.execCommand('mceEndUndoLevel');
}
};
tinyMCE.addTheme("CommunityServer", TinyMCE_CommunityServerTheme);
// Add default buttons maps for advanced theme and all internal plugins
tinyMCE.addButtonMap(TinyMCE_CommunityServerTheme._buttonMap);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -