📄 post.js
字号:
if(mode == wysiwyg || !allowswitcheditor) {
return;
}
if(!mode) {
var controlbar = $(editorid + '_controls');
var controls = new Array();
var buttons = controlbar.getElementsByTagName('a');
var buttonslength = buttons.length;
for(var i = 0; i < buttonslength; i++) {
if(buttons[i].id) {
controls[controls.length] = buttons[i].id;
}
}
var controlslength = controls.length;
for(var i = 0; i < controlslength; i++) {
var control = $(controls[i]);
if(control.id.indexOf(editorid + '_cmd_') != -1) {
control.className = control.id.indexOf(editorid + '_cmd_custom') == -1 ? '' : 'plugeditor';
control.state = false;
control.mode = 'normal';
} else if(control.id.indexOf(editorid + '_popup_') != -1) {
control.state = false;
}
}
}
cursor = -1;
stack = new Array();
var parsedtext = getEditorContents();
parsedtext = mode ? bbcode2html(parsedtext) : html2bbcode(parsedtext);
wysiwyg = mode;
$(editorid + '_mode').value = mode;
newEditor(mode, parsedtext);
editwin.focus();
setCaretAtEnd();
}
function insertNodeAtSelection(text) {
checkFocus();
var sel = editwin.getSelection();
var range = sel ? sel.getRangeAt(0) : editdoc.createRange();
sel.removeAllRanges();
range.deleteContents();
var node = range.startContainer;
var pos = range.startOffset;
switch(node.nodeType) {
case Node.ELEMENT_NODE:
if(text.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
selNode = text.firstChild;
} else {
selNode = text;
}
node.insertBefore(text, node.childNodes[pos]);
add_range(selNode);
break;
case Node.TEXT_NODE:
if(text.nodeType == Node.TEXT_NODE) {
var text_length = pos + text.length;
node.insertData(pos, text.data);
range = editdoc.createRange();
range.setEnd(node, text_length);
range.setStart(node, text_length);
sel.addRange(range);
} else {
node = node.splitText(pos);
var selNode;
if(text.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
selNode = text.firstChild;
} else {
selNode = text;
}
node.parentNode.insertBefore(text, node);
add_range(selNode);
}
break;
}
}
function add_range(node) {
checkFocus();
var sel = editwin.getSelection();
var range = editdoc.createRange();
range.selectNodeContents(node);
sel.removeAllRanges();
sel.addRange(range);
}
function readNodes(root, toptag) {
var html = "";
var moz_check = /_moz/i;
switch(root.nodeType) {
case Node.ELEMENT_NODE:
case Node.DOCUMENT_FRAGMENT_NODE:
var closed;
if(toptag) {
closed = !root.hasChildNodes();
html = '<' + root.tagName.toLowerCase();
var attr = root.attributes;
for(var i = 0; i < attr.length; ++i) {
var a = attr.item(i);
if(!a.specified || a.name.match(moz_check) || a.value.match(moz_check)) {
continue;
}
html += " " + a.name.toLowerCase() + '="' + a.value + '"';
}
html += closed ? " />" : ">";
}
for(var i = root.firstChild; i; i = i.nextSibling) {
html += readNodes(i, true);
}
if(toptag && !closed) {
html += "</" + root.tagName.toLowerCase() + ">";
}
break;
case Node.TEXT_NODE:
html = htmlspecialchars(root.data);
break;
}
return html;
}
function moveCursor(increment) {
var test = cursor + increment;
if(test >= 0 && stack[test] != null && !isUndefined(stack[test])) {
cursor += increment;
}
}
function addSnapshot(str) {
if(stack[cursor] == str) {
return;
} else {
cursor++;
stack[cursor] = str;
if(!isUndefined(stack[cursor + 1])) {
stack[cursor + 1] = null;
}
}
}
function getSnapshot() {
if(!isUndefined(stack[cursor]) && stack[cursor] != null) {
return stack[cursor];
} else {
return false;
}
}
function setmediacode(editorid) {
insertText('[media='+$(editorid + '_mediatype').value+
','+$(editorid + '_mediawidth').value+
','+$(editorid + '_mediaheight').value+']'+
$(editorid + '_mediaurl').value+'[/media]');
hideMenu();
}
function setmediatype(editorid) {
var ext = $(editorid + '_mediaurl').value.lastIndexOf('.') == -1 ? '' : $(editorid + '_mediaurl').value.substr($(editorid + '_mediaurl').value.lastIndexOf('.') + 1, $(editorid + '_mediaurl').value.length).toLowerCase();
if(ext == 'rmvb') {
ext = 'rm';
}
if($(editorid + '_mediatyperadio_' + ext)) {
$(editorid + '_mediatyperadio_' + ext).checked = true;
$(editorid + '_mediatype').value = ext;
}
}
function clearcontent() {
if(wysiwyg) {
editdoc.body.innerHTML = is_moz ? '<br />' : '';
} else {
textobj.value = '';
}
}
var aid = 1;
var attachexts = new Array();
var attachwh = new Array();
function delAttach(id) {
$('attachbody').removeChild($('localno_' + id).parentNode.parentNode);
$('attachbtn').removeChild($('attach_' + id).parentNode);
$('attachbody').innerHTML == '' && addAttach();
$('localimgpreview_' + id) ? document.body.removeChild($('localimgpreview_' + id)) : null;
}
function delSWFAttach(id) {
$('swfattach_' + id).style.display = 'none';
$('delswfattach_' + id).checked = true;
}
function delEditAttach(id) {
$('attach_' + id).style.display = 'none';
$('delattach_' + id).checked = true;
}
function addAttach() {
var id = aid;
var tags, newnode, i;
newnode = $('attachbtnhidden').firstChild.cloneNode(true);
tags = newnode.getElementsByTagName('input');
for(i in tags) {
if(tags[i].name == 'attach[]') {
tags[i].id = 'attach_' + id;
tags[i].onchange = function() {insertAttach(id)};
tags[i].unselectable = 'on';
}
}
$('attachbtn').appendChild(newnode);
newnode = $('attachbodyhidden').firstChild.cloneNode(true);
tags = newnode.getElementsByTagName('input');
for(i in tags) {
if(tags[i].name == 'localid[]') {
tags[i].value = id;
}
}
tags = newnode.getElementsByTagName('span');
for(i in tags) {
if(tags[i].id == 'localfile[]') {
tags[i].id = 'localfile_' + id;
} else if(tags[i].id == 'cpadd[]') {
tags[i].id = 'cpadd_' + id;
} else if(tags[i].id == 'cpdel[]') {
tags[i].id = 'cpdel_' + id;
} else if(tags[i].id == 'localno[]') {
tags[i].id = 'localno_' + id;
} else if(tags[i].id == 'deschidden[]') {
tags[i].id = 'deschidden_' + id;
}
}
aid++;
newnode.style.display = 'none';
$('attachbody').appendChild(newnode);
$('uploadlist').scrollTop = 10000;
}
function insertAttach(id) {
var localimgpreview = '';
var path = $('attach_' + id).value;
var extpos = path.lastIndexOf('.');
var ext = extpos == -1 ? '' : path.substr(extpos + 1, path.length).toLowerCase();
var re = new RegExp("(^|\\s|,)" + ext + "($|\\s|,)", "ig");
var localfile = $('attach_' + id).value.substr($('attach_' + id).value.replace(/\\/g, '/').lastIndexOf('/') + 1);
var filename = mb_cutstr(localfile, 30);
if(path == '') {
return;
}
if(extensions != '' && (re.exec(extensions) == null || ext == '')) {
alert('对不起,不支持上传此类扩展名的附件。');
return;
}
attachexts[id] = is_ie && is_ie < 8 && in_array(ext, ['gif', 'jpeg', 'jpg', 'png', 'bmp']) ? 2 : 1;
if(attachexts[id] == 2) {
$('img_hidden').alt = id;
$('img_hidden').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = 'image';
try {
$('img_hidden').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = $('attach_' + id).value;
} catch (e) {
alert('无效的图片文件。');
delAttach(id);
return;
}
var wh = {'w' : $('img_hidden').offsetWidth, 'h' : $('img_hidden').offsetHeight};
var aid = $('img_hidden').alt;
if(wh['w'] >= 180 || wh['h'] >= 150) {
wh = attachthumbImg(wh['w'], wh['h'], 180, 150);
}
attachwh[id] = wh;
$('img_hidden').style.width = wh['w']
$('img_hidden').style.height = wh['h'];
$('img_hidden').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = 'scale';
div = document.createElement('div');
div.id = 'localimgpreview_' + id;
div.style.display = 'none';
document.body.appendChild(div);
div.innerHTML = '<img style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=\'scale\',src=\'' + $('attach_' + id).value+'\');width:'+wh['w']+';height:'+wh['h']+'" src=\'images/common/none.gif\' border="0" aid="attach_'+ aid +'" alt="" />';
}
$('cpdel_' + id).innerHTML = '<a href="###" class="deloption" onclick="delAttach(' + id + ')">删除</a>';
$('cpadd_' + id).innerHTML = '<a href="###" title="点击这里将本附件插入帖子内容中当前光标的位置"' + (attachexts[id] == 2 ? 'onmouseover="showpreview(this, \'localimgpreview_' + id + '\')" ' : '') + 'onclick="insertAttachtext(' + id + ');return false;">插入</a>';
$('localfile_' + id).innerHTML = filename;
$('attach_' + id).style.display = 'none';
$('deschidden_' + id).style.display = '';
$('deschidden_' + id).title = localfile;
$('localno_' + id).parentNode.parentNode.style.display = '';
addAttach();
attachlist('open');
}
function attachlist(op) {
if(!op) {
op = textobj.className == 'autosave' ? 'close' : 'open';
}
if(op == 'open') {
textobj.className = 'autosave';
if(editbox) {
editbox.className = 'autosave';
}
$('attachlist').style.display = '';
if(Editorwin) {
if(wysiwyg) {
$('e_iframe').style.height = (parseInt($('floatwin_' + editoraction).style.height) - 329)+ 'px';
}
$('e_textarea').style.height = (parseInt($('floatwin_' + editoraction).style.height) - 329)+ 'px';
}
} else {
textobj.className = 'autosave max';
if(editbox) {
editbox.className = 'autosave max';
}
$('attachlist').style.display = 'none';
if(Editorwin) {
if(wysiwyg) {
$('e_iframe').style.height = (parseInt($('floatwin_' + editoraction).style.height) - 150)+ 'px';
}
$('e_textarea').style.height = (parseInt($('floatwin_' + editoraction).style.height) - 150)+ 'px';
}
}
}
lastshowpreview = null;
function showpreview(ctrlobj, showid) {
if(lastshowpreview) {
lastshowpreview.id = '';
}
ctrlobj.id = 'imgpreview';
lastshowpreview = ctrlobj;
$('imgpreview_menu').innerHTML = $(showid).innerHTML;
InFloat='floatlayout_' + editoraction;
showMenu('imgpreview', false, 2, 1, 0);
}
function attachpreview(obj, preview, width, height) {
if(is_ie) {
$(preview + '_hidden').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = 'image';
try {
$(preview + '_hidden').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = obj.value;
} catch (e) {
alert('无效的图片文件。');
return;
}
var wh = {'w' : $(preview + '_hidden').offsetWidth, 'h' : $(preview + '_hidden').offsetHeight};
var aid = $(preview + '_hidden').alt;
if(wh['w'] >= width || wh['h'] >= height) {
wh = attachthumbImg(wh['w'], wh['h'], width, height);
}
$(preview + '_hidden').style.width = wh['w']
$(preview + '_hidden').style.height = wh['h'];
$(preview + '_hidden').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = 'scale';
$(preview).style.width = 'auto';
$(preview).innerHTML = '<img style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=\'scale\',src=\'' + obj.value+'\');width:'+wh['w']+';height:'+wh['h']+'" src=\'images/common/none.gif\' border="0" alt="" />';
}
}
function insertAttachtext(id) {
if(!attachexts[id]) {
return;
}
if(attachexts[id] == 2) {
wysiwyg ? insertText($('localimgpreview_' + id).innerHTML, false) : AddText('[localimg=' + attachwh[id]['w'] + ',' + attachwh[id]['h'] + ']' + id + '[/localimg]');
} else {
wysiwyg ? insertText('[local]' + id + '[/local]', false) : AddText('[local]' + id + '[/local]');
}
}
function attachthumbImg(w, h, twidth, theight) {
twidth = !twidth ? thumbwidth : twidth;
theight = !theight ? thumbheight : theight;
var x_ratio = twidth / w;
var y_ratio = theight / h;
var wh = new Array();
if((x_ratio * h) < theight) {
wh['h'] = Math.ceil(x_ratio * h);
wh['w'] = twidth;
} else {
wh['w'] = Math.ceil(y_ratio * w);
wh['h'] = theight;
}
return wh;
}
function attachupdate(aid, ctrlobj) {
objupdate = $('attachupdate'+aid);
obj = $('attach'+aid);
if(!objupdate.innerHTML) {
obj.style.display = 'none';
objupdate.innerHTML = '<input type="file" name="attachupdate[paid' + aid + ']">';
ctrlobj.innerHTML = '取消';
} else {
obj.style.display = '';
objupdate.innerHTML = '';
ctrlobj.innerHTML = '更新';
}
}
function insertAttachTag(aid) {
if(wysiwyg) {
insertText('[attach]' + aid + '[/attach]', false);
} else {
AddText('[attach]' + aid + '[/attach]');
}
}
function insertAttachimgTag(aid) {
if(wysiwyg) {
eval('var attachimg = $(\'preview_' + aid + '\')');
insertText('<img src="' + attachimg.src + '" border="0" aid="attachimg_' + aid + '" width="180" alt="" />', false);
} else {
AddText('[attachimg]' + aid + '[/attachimg]');
}
}
openEditor();
if(allowpostattach) {
addAttach();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -