📄 editor.js
字号:
}
}
function showTable(cmdID) {
if (editor._editMode == "textmode") return false;
editor._pos = editor.getpos();
var menu_editor = getObj("menu_editor");
menu_editor.innerHTML = '<table width="280" cellspacing="0" cellpadding="5"><tbody><tr><th class="h" colspan="2"><div class="fr" style="cursor:pointer;" onclick="closep();" title="close"><img src='+imgpath+'/close.png></div>'+I18N['inserttable']+'</th></tr><tr><td width="40%" align="center">'+I18N['tablerows']+'</td><td><input class="input" type="text" name="rows" id="f_rows" size="5" value="2" /></td> </tr><tr><td align="center">'+I18N['tablecols']+'</td><td><input class="input" type="text" name="cols" id="f_cols" size="5" value="4" /></td></tr><tr><td align="center">'+I18N['tablewidth']+'</td><td><input class="input" type="text" name="width" id="f_width" size="5" value="100" /></td></tr><tr><td class="tac">'+I18N['tableunit']+'</td><td><input type="radio" name="unit" id="f_unit1" value="%" checked> Percen<input type="radio" name="unit" id="f_unit1" value="px"> Pixels</td></tr></tbody></table><ul><li style="text-align:center;padding:5px 0;"><input class="btn" type="button" onclick="return insertTable();" value="'+I18N['submit']+'" /></li></ul>';
read.open('menu_editor','wy_inserttable','2');
}
function insertTable() {
editor.setpos();
var sel = editor._getSelection();
var range = editor._createRange(sel);
var fields = ["f_rows", "f_cols", "f_width"];
var param = new Object();
for (var i in fields) {
var id = fields[i];
param[id] = getObj(id).value;
}
param['f_unit'] = getObj("f_unit1").checked == true ? '%' : 'px';
var doc = editor._doc;
var table = doc.createElement("table");
table.style.width = param['f_width'] + param["f_unit"];
table.className = 't';
var tbody = doc.createElement("tbody");
table.appendChild(tbody);
for (var i = 0; i < param["f_rows"]; ++i) {
var tr = doc.createElement("tr");
tbody.appendChild(tr);
for (var j = 0; j < param["f_cols"]; ++j) {
var td = doc.createElement("td");
tr.appendChild(td);
(is_gecko) && td.appendChild(doc.createElement("br"));
}
}
if (is_ie) {
range.pasteHTML(table.outerHTML);
} else {
editor.insertNodeAtSelection(table);
}
closep();
}
function showcolor(cmdID) {
var menu_editor = getObj("menu_editor");
var colors = [
'000000','660000','663300','666600','669900','66CC00','66FF00','666666','660066','663366','666666',
'669966','66CC66','66FF66','CCCCCC','6600CC','6633CC','6666CC','6699CC','66CCCC','66FFCC','FF0000',
'FF0000','FF3300','FF6600','FF9900','FFCC00','FFFF00','0000FF','FF0066','FF3366','FF6666','FF9966',
'FFCC66','FFFF66','00FFFF','FF00CC','FF33CC','FF66CC','FF99CC','FFCCCC','FFFFCC'
];
var html = '<div id="colorbox">';
for (i in colors) {
html += "<div unselectable=\"on\" style=\"background:#" + colors[i] + "\" onClick=\"SetC('" + colors[i] + "','" + cmdID + "')\"></div>";
}
html += '</div>';
menu_editor.innerHTML = html;
read.open('menu_editor','wy_' + cmdID);
}
function SetC(color,cmdID) {
editor.focusEditor();
if (editor._editMode=='textmode') {
text = editor.getsel();
var ctype = cmdID == 'forecolor' ? 'color' : 'backcolor';
AddText("[" + ctype + "=#" + color + "]" + text + "[/" + ctype + "]",text);
} else {
if (cmdID == 'hilitecolor' && is_ie) cmdID = "backcolor";
editor._doc.execCommand(cmdID, false, "#" + color);
}
closep();
}
function ShowSelect(cmdID) {
var menu_editor = getObj("menu_editor");
var wh = {'fontname' : '110','fontsize' : '40','formatblock' : '80'};
var html = '<ul style="width:'+wh[cmdID]+'px;">';
var options = editor.config[cmdID];
for (var i in options) {
if (i != 'default') {
html += "<li"+(cmdID=='fontname' ? ' style="font-family:'+options[i]+';"' : '')+"><a unselectable=\"on\" href=\"#\" style=\"padding:.2em .4em\" onclick=\"return editor.GetSelectedValue('"+cmdID+"','"+options[i]+"');\">"+i+"</a></li>";
}
}
html += '</ul>';
menu_editor.innerHTML = html;
read.open('menu_editor','wy_' + cmdID);
}
function rming(cmdID) {
editor._pos = editor.getpos();
var menu_editor = getObj("menu_editor");
menu_editor.innerHTML = '<table width="340" cellspacing="0" cellpadding="5"><tbody><tr><th class="h" colspan="2"><div class="fr" style="cursor:pointer;" onclick="closep();" title="close"><img src='+imgpath+'/close.png></div>'+I18N['insertmedia']+'</th></tr><tr><td class="tac" width="25%">'+I18N['mediaurl']+'</td><td><input class="input" type="text" id="mediaurl" size="32" /></td></tr><tr><td class="tac">'+I18N['mediatype']+'</td><td> <input type="radio" name="mediatype" id="mediatype1" value="1" checked>自动识别</td></tr></tbody></table><ul><li style="text-align:center;padding:5px 0;"><input class="btn" type="button" onclick="return insertmedia();" value="'+I18N['submit']+'" /></li></ul>';
read.open('menu_editor','wy_media','2');
}
function insertmedia() {
editor.setpos();
var url = getObj("mediaurl").value;
AddCode('[vid]' + url + '[/vid]','');
closep();
}
function code(cmdID) {
editor.focusEditor();
text = editor.getsel();
sm = '['+cmdID+']'+text+'[/'+cmdID+']';
AddCode(sm,text);
}
function quoteme() {
editor.focusEditor();
text = editor.getsel();
if (editor._editMode=='wysiwyg') {
text = htmltocode(text);
alert(text);
sm = "[quote]"+text+"[/quote]";
sm = codetohtml(sm);
} else {
sm = "[quote]"+text+"[/quote]";
}
AddCode(sm,text);
}
function br() {
editor.focusEditor();
if (editor._editMode == "textmode") {
return false;
} else {
sm="<br />";
editor.insertHTML(sm);
}
}
function showcreatelink(cmdID){
text = editor.getsel();
text = text.replace(/</ig,'<');
text = text.replace(/>/ig,'>');
text = text.replace(/\"/ig,'"');
editor._pos = editor.getpos();
var menu_editor = getObj("menu_editor");
menu_editor.innerHTML = '<table width="380" cellspacing="0" cellpadding="0"><tbody id="linkmode" style="display:none;"><tr><td style="padding-left:8px;"><input class="input" id="linkdiscrip" size="20" value="" /></td><td><input class="input" id="linkaddress" value="http://" size="35" /></td></tr></tbody><tr><th class="h" colspan="2"><div class="fr" style="cursor:pointer;" onclick="closep();" title="close"><img src='+imgpath+'/close.png></div>'+I18N['showcreatelink']+'</th></tr><tr><td width="40%" class="tal" style="padding-left:8px;">'+I18N['linkdiscrip']+'</td><td width="60%" class="tal"><a class="fr" style="cursor:pointer;color:blue;" onclick="addlink();">'+I18N['addlink']+'</a><span style="line-height:28px;">'+I18N['linkaddress']+'</span></td></tr><tr><td style="padding-left:8px;"><input class="input" id="linkdiscrip1" size="20" value="'+text+'" /></td><td><input class="input" id="linkaddress1" value="http://" size="35" /></td></tr><tbody id="linkbody"></tbody></table><ul><li style="text-align:center;padding:5px 0;"><input class="btn" type="button" onclick="return insertlink();" value="'+I18N['submit']+'" /></li></ul>';
read.open('menu_editor','wy_createlink','2');
}
function addlink(){
var s = getObj('linkmode').firstChild.cloneNode(true);
var linknum = ++editor._linknum;
var tags = s.getElementsByTagName('input');
for (var i=0;i<tags.length;i++) {
if (tags[i].id == 'linkdiscrip') {
tags[i].id = 'linkdiscrip' + linknum;
}
if (tags[i].id == 'linkaddress') {
tags[i].id = 'linkaddress' + linknum;
}
}
getObj('linkbody').appendChild(s);
}
function insertlink(){
text = editor.getsel();
editor.setpos();
var AddTxt = '';
var downadd = '';
var linknum = editor._linknum;
for (var i=1;i<=linknum;i++) {
if (getObj('linkdiscrip'+i).value.length == 0 && getObj("linkaddress"+i).value == 'http://') continue;
if (getObj('linkdiscrip'+i).value){
AddTxt += "[url=" + encodeURI(getObj("linkaddress"+i).value) + downadd +"]" + getObj("linkdiscrip"+i).value + "[/url]";
} else {
AddTxt += "[url=" + encodeURI(getObj("linkaddress"+i).value) + downadd +"]" + getObj("linkaddress"+i).value + "[/url]";
}
}
if (editor._editMode=='wysiwyg') {
AddTxt = codetohtml(AddTxt);
}
AddCode(AddTxt,'');
editor._linknum = 1;
closep();
}
function windcode(code) {
text = editor.getsel();
switch(code) {
case "htmlmode": editor.setMode(); return false;
case "windcode": return false;
case "bold": AddTxt = "[b]" + text + "[/b]";break;
case "italic": AddTxt = "[i]" + text + "[/i]";break;
case "underline": AddTxt = "[u]" + text + "[/u]";break;
case "strikethrough": AddTxt = "[strike]" + text + "[/strike]";break;
case "subscript": AddTxt = "[sub]" + text + "[/sub]";break;
case "superscript": AddTxt = "[sup]" + text + "[/sup]";break;
case "justifyleft": AddTxt = "[align=left]" + text + "[/align]";break;
case "justifycenter": AddTxt = "[align=center]" + text + "[/align]";break;
case "justifyright": AddTxt = "[align=right]" + text + "[/align]";break;
case "justifyfull": AddTxt = "[align=justify]" + text + "[/align]";break;
case "inserthorizontalrule": text='';AddTxt="[hr]";break;
case "indent": AddTxt = "[blockquote]" + text + "[/blockquote]";break;
case "createlink":
if (text) {
AddTxt = "[url=" + text + "]" + text + "[/url]";
} else {
txt = prompt('URL:',"http://");
if (txt) {
AddTxt = "[url=" + txt + "]" + txt + "[/url]";
} else {
AddTxt = "[url][/url]";
}
}
break;
case "insertorderedlist":
if (text) {
AddTxt = "[list=a][li]" + text + "[/li][/list]";
} else {
txt=prompt('a,A,1',"a");
while (txt!="A" && txt!="a" && txt!="1" && txt!=null) {
txt=prompt('a,A,1',"a");
}
if (txt!=null) {
if (txt=="1") {
AddTxt="[list=1]";
} else if (txt=="a") {
AddTxt="[list=a]";
} else if (txt=="A") {
AddTxt="[list=A]";
}
ltxt="1";
while (ltxt!="" && ltxt!=null) {
ltxt=prompt(I18N['listitem'],"");
if (ltxt!="") {
AddTxt+="[li]"+ltxt+"[/li]";
}
}
AddTxt+="[/list]";
}
}
break;
case "insertunorderedlist":
if (text) {
AddTxt = "[list][li]" + text + "[/li][/list]";
} else {
AddTxt="[list]";
txt="1";
while (txt!="" && txt!=null) {
txt=prompt(I18N['listitem'],"");
if (txt!="") {
AddTxt+="[li]"+txt+"[/li]";
}
}
AddTxt+="[/list]";
}
break;
default : return false;
}
AddText(AddTxt,text);
}
function windselect(cmdID,value) {
text = editor.getsel();
switch(cmdID) {
case "fontname": AddTxt = "[font=" + value + "]" + text + "[/font]";break;
case "fontsize": AddTxt = "[size=" + value + "]" + text + "[/size]";break;
case "formatblock":
if (value == 'p'){
AddTxt = "";
}else{
value = value.replace(/h(\d)/,'$1');
value = 7 - value;
if(text == ''){
text= ' ';
}
AddTxt = value ? "[size=" + value + "][b]" + text + "[/b][/size]" : "";
}
break;
default : AddTxt = "";
}
AddText(AddTxt,text);
}
function AddText(code,text) {
var startpos = text == '' ? code.indexOf(']') + 1 : code.indexOf(text);
if (document.selection) {
var sel = document.selection.createRange();
sel.text = code.replace(/\r?\n/g, '\r\n');
sel.moveStart('character',-code.replace(/\r/g,'').length + startpos);
sel.moveEnd('character', -code.length + text.length + startpos);
sel.select();
} else if (typeof editor._textArea.selectionStart != 'undefined') {
var prepos = editor._textArea.selectionStart;
editor._textArea.value = editor._textArea.value.substr(0,prepos) + code + editor._textArea.value.substr(editor._textArea.selectionEnd);
editor._textArea.selectionStart = prepos + startpos;
editor._textArea.selectionEnd = prepos + startpos + text.length;
} else {
document.FORM.atc_content.value += code;
}
}
function AddCode(code,text) {
if (editor._editMode=='textmode') {
AddText(code,text);
} else {
editor.insertHTML(code);
}
}
function htmltocode(str) {
str = str.replace(/<img[^>]*smile=\"(\d+)\"[^>]*>/ig,'[em$1]');
str = str.replace(/<img[^>]*type=\"(attachment|upload)\_(\d+)\"[^>]*>/ig,'[$1=$2]');
if (IsChecked('atc_html')) {
return str;
}
code_htm = new Array();
code_num = 0;
str = str.replace(/(\r\n|\n|\r)/ig, '');
str = str.replace(/<p[^>\/]*\/>/ig,'\n');
str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});
str = str.replace(/\son[\w]{3,16}\s?=\s*([\'\"]).+?\1/ig,'');
if (IsChecked('atc_convert')) {
str = str.replace(/<hr[^>]*>/ig,'[hr]');
str = str.replace(/<(sub|sup|u|strike|b|i|pre)>/ig,'[$1]');
str = str.replace(/<\/(sub|sup|u|strike|b|i|pre)>/ig,'[/$1]');
str = str.replace(/<(\/)?strong>/ig,'[$1b]');
str = str.replace(/<(\/)?em>/ig,'[$1i]');
str = str.replace(/<(\/)?blockquote([^>]*)>/ig,'[$1blockquote]');
str = str.replace(/<img[^>]*src=[\'\"\s]*([^\s\'\"]+)[^>]*>/ig,'[img]'+'$1'+'[/img]');
str = str.replace(/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig,'[url=$1]'+'$2'+'[/url]');
str = str.replace(/<h([1-6]+)([^>]*)>(.*?)<\/h\1>/ig,function($1,$2,$3,$4) {return h($3,$4,$2);});
str = searchtag('table',str,'table',1);
str = searchtag('font',str,'Font',1);
str = searchtag('div',str,'ds',1);
str = searchtag('p',str,'p',1);
str = searchtag('span',str,'ds',1);
str = searchtag('ol',str,'list',1);
str = searchtag('ul',str,'list',1);
}
for (i in code_htm) {
str = str.replace("[\twind_phpcode_" + i + "\t]", code_htm[i]);
}
str = str.replace(/ /ig,' ');
str = str.replace(/<br[^>]*>/ig,'\n');
str = str.replace(/<[^>]*?>/ig, '');
str = str.replace(/&/ig, '&');
str = str.replace(/"/ig,'"');
str = str.replace(/</ig, '<');
str = str.replace(/>/ig, '>');
return str;
}
function searchtag(tagname,str,action,type) {
if (type == 2) {
var tag = ['[',']'];
} else {
var tag = ['<','>'];
}
var head = tag[0] + tagname;
var head_len = head.length;
var foot = tag[0] + '/' + tagname + tag[1];
var foot_len = foot.length;
var strpos = 0;
do{
var strlower = str.toLowerCase();
var begin = strlower.indexOf(head,strpos);
if (begin == -1) {
break;
}
var strlen = str.length;
for (var i = begin + head_len; i < strlen; i++) {
if (str.charAt(i)==tag[1]) break;
}
if (i>=strlen) break;
var firsttag = i;
var style = str.substr(begin + head_len, firsttag - begin - head_len);
var end = strlower.indexOf(foot,firsttag);
if (end == -1) break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -