You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

525 lines
15 KiB

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"
);
}