/******************************************** Magike Project copyright (c) Magike Group This software must be only used in Magike Systeam. http://www.magike.net modify by Hanny: http://www.imhan.com ********************************************/ var start = 0; var end = 0; var hasPrepare = false; var magikeTextareaScrolltop = 0; var range = null; var magikeTextarea; var editorDraftChange = false; var magikeToolbar; var magikeEditor; var insertImageToEditor; var insertLinkToEditor; function addButtonCtx(button_ctx) { $(button_ctx).appendTo(magikeToolbar); } function addButton(label ,left_tag, right_tag, accesskey) { addButtonCtx(""); } //创建工具栏区 function createToolbar() { $("

").prependTo(magikeTextarea.parentNode); $("
").prependTo(magikeTextarea.parentNode); magikeToolbar = magikeTextarea.parentNode.firstChild; } function createDefaultButtons() { addButton('B', '', '', 'b'); addButton('I', '', '', 'i'); addButton('del', '', '', 'd'); addButton('quote', '
', '
', 'q'); addButton('code', '', '', 'c'); addButtonCtx(""); addButtonCtx(""); addButton('more', '', '', 'm'); } /* insmode 说明 BIT: 0:是否安装附件管理器 0: 未安装附件管理器 1: 已安装附件管理器 2~1:图片插入的方式 0: 默认的图片插入方式 1: 仅插入图片 2: 插入图片+链接 3: 保留(默认的插入方式) */ function initEditorInterface(elid, insmode) { /* //已经安装附件管理器插件 Typecho.insertFileToEditor = function (title, url, is_img) { //get_attach_id(url); var lst = $("#file-list").children("li"); var index = 0; while (index < lst.length) { if (lst[index].dataset['url'] == url) { break; } index++; } if (index >= 8) { return; } //Typecho.insertFileToEditor(t.text(), p.data('url'), p.data('image')); var textarea = $('#text'), sel = textarea.getSelection(), html = '' + lst[index].dataset['cid'] + ''; offset = (sel ? sel.start : 0) + html.length; textarea.replaceSelection(html); textarea.setSelection(offset, offset); }; */ Typecho.insertFileToEditor = function (title, url, is_img) { var textarea = $('#text'), sel = textarea.getSelection(); var html = ''; if (is_img) { //插入图片 picture_mode = (insmode >> 1) & 0x3; if (picture_mode == 1) { //仅插入图片 html = '' + title + ''; } else if (picture_mode == 2) { //插入图片链接 html = '' + title + ''; } } else { attach_mode = insmode & 0x1; if (attach_mode) { //已经安装附件管理器插件 var lst = $("#file-list").children("li"); var index = 0; while (index < lst.length) { if (lst[index].children[1].text == title) { break; } index++; } if (index >= 8) { return; } html = '' + lst[index].children[0].value + ''; } else { html = '' + title + ''; } } var offset = (sel ? sel.start : 0) + html.length; textarea.replaceSelection(html); textarea.setSelection(offset, offset); }; } function initEditor(elid, insmode) { magikeTextarea = document.getElementById(elid); initEditorInterface('#'+elid, insmode); createToolbar(); createDefaultButtons(); } function editPrepare() { magikeTextareaScrolltop = magikeTextarea.scrollTop; if(typeof(magikeTextarea.selectionStart) == "number") { magikeTextarea.focus(); start = magikeTextarea.selectionStart; end = magikeTextarea.selectionEnd; } else if(document.selection) { magikeTextarea.focus(); range = document.selection.createRange(); } hasPrepare = true; } function editorAdd(flg1,flg2) { if(!hasPrepare) { editPrepare(); } editorDraftChange = true; if(typeof(magikeTextarea.selectionStart) == "number") { pre = magikeTextarea.value.substr(0, start); post = magikeTextarea.value.substr(end); center = magikeTextarea.value.substr(start,end-start); magikeTextarea.value = pre + flg1 +center+ flg2+ post; magikeTextarea.setSelectionRange(start+flg1.length,start+flg1.length); } else if(document.selection) { if(range.text.length > 0) { range.text = flg1 + range.text + flg2; } else { range.text = flg1 + flg2; } } setTimeout('magikeTextarea.scrollTop = magikeTextareaScrolltop',0); magikeTextarea.focus(); hasPrepare = false; return true; } var editorInsertLinkError; function editorInsertLink(popupTitle,urlWord,titleWord,openType,okText,cancelText,errorWord) { editPrepare(); div = $(document.createElement("div")); editorInsertLinkError = errorWord; p = $(document.createElement("p")); span = $(document.createElement("span")); span.text(urlWord); input = $(document.createElement("input")); input.addClass("text"); input.attr("type","text"); input.attr("name","url"); input.attr("value","http://"); p.append(span); p.append(input); div.append(p); p = $(document.createElement("p")); span = $(document.createElement("span")); span.text(titleWord); input = $(document.createElement("input")); input.addClass("text"); input.attr("type","text"); input.attr("name","title"); p.append(span); p.append(input); div.append(p); p = $(document.createElement("p")); span = $(document.createElement("span")); span.text(openType); select = magikeCreateSelect({none:"",_blank:"_blank"}); select.attr("name","link"); p.append(span); p.append(select); div.append(p); magikeUI.createPopup({title: popupTitle,center: true,width: 400,height: 175,text:div,ok:okText,cancel:cancelText,handle:editorInsertLinkHandle}); } function editorInsertLinkHandle() { var url = $("input[name=url]",$((this.parentNode).parentNode)).val(); var ititle = $("input[name=title]",$((this.parentNode).parentNode)).val(); var link = $("select[name=link]",$((this.parentNode).parentNode)).val(); if(url && url != "http://") { editorAdd('',''); $(((this.parentNode).parentNode).parentNode).remove(); } else { alert(editorInsertLinkError); } } var editorInsertImageError; function editorInsertImage(popupTitle,urlWord,titleWord,alignType,okText,cancelText,errorWord) { editPrepare(); div = $(document.createElement("div")); editorInsertImageError = errorWord; p = $(document.createElement("p")); span = $(document.createElement("span")); span.text(urlWord); input = $(document.createElement("input")); input.addClass("text"); input.attr("type","text"); input.attr("name","img_url"); input.attr("value","http://"); p.append(span); p.append(input); div.append(p); p = $(document.createElement("p")); span = $(document.createElement("span")); span.text(titleWord); input = $(document.createElement("input")); input.addClass("text"); input.attr("type","text"); input.attr("name","img_title"); p.append(span); p.append(input); div.append(p); p = $(document.createElement("p")); span = $(document.createElement("span")); span.text(alignType); select = magikeCreateSelect({无:"",左:"left",中:"center",右:"right"}); select.attr("name","img_align"); p.append(span); p.append(select); div.append(p); magikeUI.createPopup({title: popupTitle,center: true,width: 400,height: 175,text:div,ok:okText,cancel:cancelText,handle:editorInsertImageHandle}); } var editorInsertImageIsImage = true; function editorInsertImageHandle() { var url = $("input[name=img_url]",$((this.parentNode).parentNode)).val(); var ititle = $("input[name=img_title]",$((this.parentNode).parentNode)).val(); var align = $("select[name=img_align]",$((this.parentNode).parentNode)).val(); if(url && url != "http://") { if(editorInsertImageIsImage) { editorAdd('' + ititle + '',''); } else { editorAdd('',''); } $(((this.parentNode).parentNode).parentNode).remove(); } else { alert(editorInsertImageError); } }