/********************************************
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("" + label + " ");
}
//创建工具栏区
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("link ");
addButtonCtx("img ");
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 = ' ';
} else if (picture_mode == 2) {
//插入图片链接
html = ' ';
}
} 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(' ','');
}
else
{
editorAdd(' ','');
}
$(((this.parentNode).parentNode).parentNode).remove();
}
else
{
alert(editorInsertImageError);
}
}