var editormd;
|
|
var template_list;
|
|
var json_table_data = '|' + lang["params"] + '|' + lang["type"] + '|' + lang["description"] + '|\n' +
|
|
'|:-------|:-------|:-------|\n';
|
|
|
|
$(function() {
|
|
|
|
//给按钮文字加上颜色,点击后则去掉颜色
|
|
if (is_showdoc_online()) {
|
|
set_text_color("runapi", "red");
|
|
};
|
|
|
|
/*加载目录*/
|
|
secondCatList();
|
|
|
|
function secondCatList() {
|
|
var default_second_cat_id = $("#default_second_cat_id").val();
|
|
var item_id = $("#item_id").val();
|
|
$.post(
|
|
DocConfig.server+"/api/catalog/secondCatList", {
|
|
"item_id": item_id,
|
|
},
|
|
function(data) {
|
|
$("#cat_id").html('<OPTION value="0">' + lang["none"] + '</OPTION>');
|
|
if (data.error_code == 0) {
|
|
json = data.data;
|
|
console.log(json);
|
|
for (var i = 0; i < json.length; i++) {
|
|
cat_html = '<OPTION value="' + json[i].cat_id + '" ';
|
|
if (default_second_cat_id == json[i].cat_id) {
|
|
cat_html += ' selected ';
|
|
}
|
|
|
|
cat_html += ' ">' + json[i].cat_name + '</OPTION>';
|
|
$("#cat_id").append(cat_html);
|
|
};
|
|
getChildCatList();
|
|
};
|
|
|
|
},
|
|
"json"
|
|
|
|
);
|
|
}
|
|
|
|
function getChildCatList() {
|
|
var cat_id = $("#cat_id").val();
|
|
var default_child_cat_id = $("#default_child_cat_id").val();
|
|
$.post(
|
|
DocConfig.server+"/api/catalog/childCatList", {
|
|
"cat_id": cat_id
|
|
},
|
|
function(data) {
|
|
$("#parent_cat_id").html('<OPTION value="0">' + lang["none"] + '</OPTION>');
|
|
if (data.error_code == 0) {
|
|
json = data.data;
|
|
console.log(json);
|
|
for (var i = 0; i < json.length; i++) {
|
|
cat_html = '<OPTION value="' + json[i].cat_id + '" ';
|
|
if (default_child_cat_id == json[i].cat_id) {
|
|
cat_html += ' selected ';
|
|
}
|
|
|
|
cat_html += ' ">' + json[i].cat_name + '</OPTION>';
|
|
$("#parent_cat_id").append(cat_html);
|
|
};
|
|
} else {}
|
|
|
|
},
|
|
"json"
|
|
|
|
);
|
|
}
|
|
//监听是否选择了目录。如果选择了,则跟后台判断是否还子目录
|
|
$("#cat_id").change(function() {
|
|
getChildCatList();
|
|
});
|
|
|
|
var keyMap = {
|
|
// 保存
|
|
"Ctrl-S": function() {
|
|
$("#save").click();
|
|
}
|
|
};
|
|
initEditorOutsideKeys();
|
|
|
|
function initEditorOutsideKeys() {
|
|
if (!editormd) return;
|
|
var $doc = $(document);
|
|
$.each(keyMap, function(key, fn) {
|
|
$doc.on('keydown', null, key.replace('-', '+'), function(e) {
|
|
e.preventDefault();
|
|
fn();
|
|
});
|
|
});
|
|
}
|
|
// 如果是新增页面,则光标为标题文本框
|
|
if (location.href.indexOf('type=new') !== -1) {
|
|
setTimeout(function() {
|
|
$('#page_title').focus();
|
|
}, 1000);
|
|
}
|
|
|
|
/*初始化编辑器*/
|
|
editormd = editormd("editormd", {
|
|
width: "90%",
|
|
height: 1000,
|
|
syncScrolling: "single",
|
|
path: DocConfig.pubile + "/editor.md/lib/",
|
|
placeholder: lang["editormd_placeholder"],
|
|
taskList: true,
|
|
tex: true, // 默认不解析
|
|
flowChart: true, // 默认不解析
|
|
sequenceDiagram: true, // 默认不解析
|
|
htmlDecode : "style,script,iframe|filterXSS",//解析html
|
|
imageUpload: true,
|
|
imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp", "JPG", "JPEG", "GIF", "PNG", "BMP", "WEBP"],
|
|
imageUploadURL: "?s=home/page/uploadImg",
|
|
onload: function() {
|
|
this.addKeyMap(keyMap);
|
|
}
|
|
});
|
|
|
|
/*插入API接口模板*/
|
|
$("#api-doc").click(function() {
|
|
var tmpl = $("#api-doc-templ").html();
|
|
editormd.insertValue(tmpl);
|
|
});
|
|
/*插入数据字典模板*/
|
|
$("#database-doc").click(function() {
|
|
var tmpl = $("#database-doc-templ").html();
|
|
editormd.insertValue(tmpl);
|
|
});
|
|
|
|
/*JSON转参数表格*/
|
|
$("#jsons").click(function() {
|
|
|
|
$("#json-templ").show();
|
|
|
|
});
|
|
|
|
/*JSON格式美化*/
|
|
$("#beautify-json").click(function() {
|
|
|
|
$("#beautify-json-dialog").show();
|
|
|
|
});
|
|
|
|
|
|
|
|
$("#json-templ .editormd-enter-btn").click(function() {
|
|
|
|
|
|
var datas = $("#json-templ .jsons").val();
|
|
|
|
try {
|
|
Change($.parseJSON(datas));
|
|
} catch (e) {
|
|
alert(lang["json_fail"] + e);
|
|
}
|
|
|
|
//datas=processJSONImport(datas);
|
|
//alert(datas);
|
|
/*var datas='|键|值|类型|空|注释|\n'+
|
|
'|:-------|:-------|:-------|:-------|:-------|\n'+
|
|
'|uid|int(10)|否|||\n'+
|
|
'|username|varchar(20)|否||用户名|';*/
|
|
|
|
//alert(json_table_data);return;
|
|
|
|
|
|
|
|
editormd.insertValue(json_table_data);
|
|
|
|
json_table_data = '|' + lang["filed"] + '|' + lang["type"] + '|' + lang["description"] + '|\n' +
|
|
'|:-------|:-------|:-------|\n';
|
|
|
|
|
|
$("#json-templ .jsons").val("");
|
|
$("#json-templ").hide();
|
|
|
|
});
|
|
|
|
|
|
$("#beautify-json-dialog .editormd-enter-btn").click(function() {
|
|
var data = $("#beautify-json-dialog .jsons").val();
|
|
try {
|
|
data = data.replace(/(^\s*)|(\s*$)/g, "");
|
|
op1 = data.substr(0, 1) == "[" ? "[" : "{";
|
|
op2 = (op1 == "[") ? "]" : "}";
|
|
var text = "\n ``` \n " + op1 + " \n" + dump(JSON.parse(data)) + " " + op2 + " \n\n ```\n\n"; //整体加个大括号
|
|
//$("#beautify-json-dialog .jsons").val(text);
|
|
$("#beautify-json-dialog .jsons").val("");
|
|
editormd.insertValue(text);
|
|
} catch (e) {
|
|
//非json数据直接显示
|
|
//$("#beautify-json-dialog .jsons").val(data);
|
|
$("#beautify-json-dialog .jsons").val("");
|
|
editormd.insertValue(data);
|
|
}
|
|
$("#beautify-json-dialog").hide();
|
|
|
|
});
|
|
//{"dgfgdfg":"gdfgdfg"}
|
|
|
|
//格式化json数据
|
|
function dump(arr, level) {
|
|
var dumped_text = "";
|
|
if (!level) level = 0;
|
|
|
|
//The padding given at the beginning of the line.
|
|
var level_padding = "";
|
|
for (var j = 0; j < level + 1; j++) level_padding += " ";
|
|
if (typeof(arr) == 'object') { //Array/Hashes/Objects
|
|
var i = 0;
|
|
for (var item in arr) {
|
|
var value = arr[item];
|
|
if (typeof(value) == 'object') { //If it is an array,
|
|
dumped_text += level_padding + "\"" + item + "\" : \{ \n";
|
|
dumped_text += dump(value, level + 1);
|
|
dumped_text += level_padding + "\}";
|
|
} else {
|
|
if (typeof(value) == "number") {
|
|
dumped_text += level_padding + "\"" + item + "\" : " + value ;
|
|
}else{
|
|
dumped_text += level_padding + "\"" + item + "\" : \"" + value + "\"";
|
|
}
|
|
}
|
|
if (i < Object.getOwnPropertyNames(arr).length - 1) {
|
|
dumped_text += ", \n";
|
|
} else {
|
|
dumped_text += " \n";
|
|
}
|
|
i++;
|
|
}
|
|
} else { //Stings/Chars/Numbers etc.
|
|
dumped_text = "===>" + arr + "<===(" + typeof(arr) + ")";
|
|
}
|
|
return dumped_text;
|
|
}
|
|
|
|
/*保存*/
|
|
$("#save").click(function() {
|
|
var page_id = $("#page_id").val();
|
|
var item_id = $("#item_id").val();
|
|
var page_title = $("#page_title").val();
|
|
var page_comments = $("#page_comments").val();
|
|
var page_content = $("#page_content").val();
|
|
var item_id = $("#item_id").val();
|
|
var s_number = $("#s_number").val();
|
|
var cat_id = $("#cat_id").val();
|
|
var parent_cat_id = $("#parent_cat_id").val();
|
|
if (parent_cat_id > 0) {
|
|
cat_id = parent_cat_id;
|
|
};
|
|
$("#save").html('保存中...').attr('disabled','disabled');
|
|
$.post(
|
|
DocConfig.server+"/api/page/save", {
|
|
"page_id": page_id,
|
|
"cat_id": cat_id,
|
|
"s_number": s_number,
|
|
"page_content": page_content,
|
|
"page_title": page_title,
|
|
"page_comments": page_comments,
|
|
"item_id": item_id
|
|
},
|
|
function(data) {
|
|
if (data.error_code == 0) {
|
|
localStorage.removeItem("page_content");
|
|
window.location.href = "?s=home/item/show&page_id=" + data.data.page_id + "&item_id=" + item_id;
|
|
} else {
|
|
$.alert(lang["save_fail"]);
|
|
$("#save").html('保存').removeAttr('disabled');
|
|
|
|
}
|
|
},
|
|
'json'
|
|
)
|
|
});
|
|
|
|
|
|
|
|
$(".editormd-preview-container").bind('DOMNodeInserted', function(e) {
|
|
|
|
$(".editormd-preview-container table thead tr").css({
|
|
"background-color": "#08c",
|
|
"color": "#fff"
|
|
});
|
|
$(".editormd-preview-container table tr").eq(0).css({
|
|
"background-color": "#08c",
|
|
"color": "#fff"
|
|
});
|
|
$(".editormd-preview-container table tr").each(function() {
|
|
if ($(this).find("td").eq(1).html() == "object" || $(this).find("td").eq(1).html() == "array[object]") {
|
|
$(this).css({
|
|
"background-color": "#99CC99",
|
|
"color": "#000"
|
|
});
|
|
}
|
|
|
|
});
|
|
});
|
|
|
|
function closeDiv(target) {
|
|
$(target).hide();
|
|
}
|
|
|
|
function Change(data) {
|
|
var level_str = "- ";
|
|
if (arguments.length > 1) {
|
|
var level;
|
|
arguments[1] > 0 ? level = arguments[1] : level = 1;
|
|
for (var i = 0; i < level; i++) {
|
|
level_str += "- ";
|
|
}
|
|
}
|
|
|
|
for (var key in data) {
|
|
var value = data[key];
|
|
var type = typeof(value);
|
|
if (type == "object") {
|
|
json_table_data += '| ' + level_str + key + ' |' + type + ' | ' + lang["none"] + ' |\n';
|
|
if (value instanceof Array) {
|
|
var j = level + 1;
|
|
Change(value[0], j);
|
|
continue;
|
|
}
|
|
//else
|
|
//{
|
|
Change(value, level);
|
|
//}
|
|
|
|
} else {
|
|
json_table_data += '| ' + key + ' | ' + type + '| ' + lang["none"] + ' |\n';
|
|
}
|
|
}
|
|
}
|
|
|
|
//{"Result":[{"name":"test1","list":{"pros":"prosfsf","ppps":{"images":[{"22":"22"}]}}}]}
|
|
|
|
$("#save-to-templ").click(function() {
|
|
$.prompt({
|
|
title: lang["save_templ_title"]
|
|
}, function(template_title, index) {
|
|
if (template_title != null && template_title != "") {
|
|
var template_content = $("#page_content").val();
|
|
$.post(
|
|
"?s=home/template/save", {
|
|
"template_title": template_title,
|
|
"template_content": template_content
|
|
},
|
|
function(data) {
|
|
if (data.error_code == 0) {
|
|
$.closeDialog(index);
|
|
$.alert(lang["saved_templ_msg1"] + template_title + lang["saved_templ_msg2"]);
|
|
} else {
|
|
$.alert(lang["save_fail"]);
|
|
|
|
}
|
|
},
|
|
"json"
|
|
);
|
|
}
|
|
$("#save-btn-group").removeClass("open");
|
|
return false;
|
|
});
|
|
});
|
|
|
|
$("#more-templ").click(function() {
|
|
$.post(
|
|
"?s=home/template/getList", {},
|
|
function(data) {
|
|
if (data.error_code == 0) {
|
|
var html = '<TR><td>' + lang["save_time"] + '</td><td>' + lang["templ_title"] + '</td><td>' + lang["operation"] + '</td></TR>';
|
|
template_list = data.data;
|
|
json = data.data;
|
|
for (var i = 0; i < json.length; i++) {
|
|
html += '<TR><td>' + json[i]['addtime'] + '</td>';
|
|
html += '<td>' + json[i]['template_title'] + '</td>';
|
|
html += '<td><a href="javascript:use_template(' + json[i]['id'] + ')">' + lang["use_this_template"] + '</a> | <a href="javascript:delete_template(' + json[i]['id'] + ')">' + lang["delete_this_template"] + '</a></td>';
|
|
html += '</TR>';
|
|
};
|
|
$("#templ-table").html(html);
|
|
$("#more-templ-modal").modal();
|
|
} else {
|
|
//$.alert("获取模板列表失败");
|
|
$("#more-templ-modal").modal("hide");
|
|
$.alert(lang["no_templ_msg"]);
|
|
|
|
}
|
|
},
|
|
"json"
|
|
);
|
|
|
|
});
|
|
|
|
$("#add-page-comments").click(function() {
|
|
var page_comments = prompt(lang["add_page_comments_msg"], "");
|
|
if (page_comments != null && page_comments != "") {
|
|
$("#page_comments").val(page_comments);
|
|
$("#save").click();
|
|
}
|
|
$("#save-btn-group").removeClass("open");
|
|
return false;
|
|
});
|
|
|
|
/** 粘贴上传图片 **/
|
|
document.getElementById("editormd").addEventListener('paste', function(e) {
|
|
var clipboard = e.clipboardData;
|
|
for (var i = 0, len = clipboard.items.length; i < len; i++) {
|
|
if (clipboard.items[i].kind == 'file' || clipboard.items[i].type.indexOf('image') > -1) {
|
|
var imageFile = clipboard.items[i].getAsFile();
|
|
var form = new FormData;
|
|
form.append('t', 'ajax-uploadpic');
|
|
form.append('editormd-image-file', imageFile);
|
|
var layer_index = {};
|
|
var callback = function(type, data) {
|
|
type = type || 'before';
|
|
var $the = $('#content');
|
|
switch (type) {
|
|
// 开始上传
|
|
case 'before':
|
|
layer_index = layer.load(1, {
|
|
shade: [0.1, '#fff'] //0.1透明度的白色背景
|
|
});
|
|
break;
|
|
// 服务器返回错误
|
|
case 'error':
|
|
$the.attr('disabled', false);
|
|
$.closeDialog(layer_index);
|
|
$.alert('图片上传失败');
|
|
break;
|
|
// 上传成功
|
|
case 'success':
|
|
$the.attr('disabled', false);
|
|
$.closeDialog(layer_index);
|
|
if (data.success == 1) {
|
|
var value = '![](' + data.url + ')';
|
|
editormd.insertValue(value);
|
|
} else {
|
|
$.alert(data.message);
|
|
}
|
|
|
|
break;
|
|
}
|
|
};
|
|
$.ajax({
|
|
url: "?s=home/page/uploadImg",
|
|
type: "POST",
|
|
dataType: "json",
|
|
data: form,
|
|
processData: false,
|
|
contentType: false,
|
|
beforeSend: function() {
|
|
callback('before');
|
|
},
|
|
error: function() {
|
|
callback('error');
|
|
},
|
|
success: function(data) {
|
|
callback('success', data);
|
|
}
|
|
})
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
});
|
|
|
|
//更改选择文件框的文件类型让它更快地弹出
|
|
$("#editormd").on("mouseover", '[name=editormd-image-file]', function(){
|
|
$(this).attr("accept","image/png,image/jpg,image/jpeg,imge/bmp,image/gif")
|
|
});
|
|
|
|
//定时保存文本内容到localStorage
|
|
setInterval(function(){
|
|
localStorage.page_content= $("#page_content").val() ;
|
|
}, 60000);
|
|
|
|
//检测是否有定时保存的内容
|
|
if (localStorage.page_content && localStorage.page_content.length > 0) {
|
|
$.confirm("检测到有上次编辑时自动保存的草稿。是否自动填充上次的草稿内容?",
|
|
{},
|
|
function(){
|
|
editormd.clear();
|
|
editormd.insertValue(localStorage.page_content);
|
|
$.closeAll();
|
|
localStorage.removeItem("page_content");
|
|
},
|
|
function(){
|
|
localStorage.removeItem("page_content");
|
|
}
|
|
|
|
)
|
|
};
|
|
|
|
|
|
});
|
|
|
|
//使用模板
|
|
function use_template(id) {
|
|
for (var i = 0; i < template_list.length; i++) {
|
|
if (id > 0 && id == template_list[i]['id']) {
|
|
editormd.insertValue(template_list[i]['template_content']);
|
|
$("#more-templ-modal").modal("hide");
|
|
};
|
|
|
|
};
|
|
}
|
|
|
|
//删除模板
|
|
function delete_template(id) {
|
|
$.post(
|
|
"?s=home/template/delete", {
|
|
"id": id
|
|
},
|
|
function(data) {
|
|
if (data.error_code == 0) {
|
|
$("#more-templ").click();
|
|
} else {
|
|
$.alert(lang["save_fail"]);
|
|
}
|
|
},
|
|
"json"
|
|
);
|
|
}
|