⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editor.js

📁 采用模块化设计,自由组合文章,软件,论坛等模块,安装方便快捷 模板支持Dreamweaver可视化编辑,创建风格更为容易,专业
💻 JS
📖 第 1 页 / 共 4 页
字号:
	}
}
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,'&lt;');
	text = text.replace(/>/ig,'&gt;');
	text = text.replace(/\"/ig,'&quot;');
	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(/&nbsp;/ig,' ');
	str = str.replace(/<br[^>]*>/ig,'\n');
	str = str.replace(/<[^>]*?>/ig, '');
	str = str.replace(/&amp;/ig, '&');
	str = str.replace(/&quot;/ig,'"');
	str = str.replace(/&lt;/ig, '<');
	str = str.replace(/&gt;/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 + -