edit.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. var editormd;
  2. var template_list ;
  3. var json_table_data='|'+lang["params"]+'|'+lang["type"]+'|'+lang["description"]+'|\n'+
  4. '|:-------|:-------|:-------|\n';
  5. $(function() {
  6. //给按钮文字加上颜色,点击后则去掉颜色
  7. if (is_showdoc_online()) {
  8. set_text_color( "runapi" , "red");
  9. };
  10. /*加载目录*/
  11. secondCatList();
  12. function secondCatList() {
  13. var default_second_cat_id = $("#default_second_cat_id").val();
  14. var item_id = $("#item_id").val();
  15. $.post(
  16. "?s=home/catalog/secondCatList",
  17. {
  18. "item_id": item_id,
  19. },
  20. function(data) {
  21. $("#cat_id").html('<OPTION value="0">'+lang["none"]+'</OPTION>');
  22. if (data.error_code == 0) {
  23. json = data.data;
  24. console.log(json);
  25. for (var i = 0; i < json.length; i++) {
  26. cat_html = '<OPTION value="' + json[i].cat_id + '" ';
  27. if (default_second_cat_id == json[i].cat_id) {
  28. cat_html += ' selected ';
  29. }
  30. cat_html += ' ">' + json[i].cat_name + '</OPTION>';
  31. $("#cat_id").append(cat_html);
  32. };
  33. getChildCatList();
  34. };
  35. },
  36. "json"
  37. );
  38. }
  39. function getChildCatList() {
  40. var cat_id = $("#cat_id").val();
  41. var default_child_cat_id = $("#default_child_cat_id").val();
  42. $.post(
  43. "?s=home/catalog/childCatList", {
  44. "cat_id": cat_id
  45. },
  46. function(data) {
  47. $("#parent_cat_id").html('<OPTION value="0">'+lang["none"]+'</OPTION>');
  48. if (data.error_code == 0) {
  49. json = data.data;
  50. console.log(json);
  51. for (var i = 0; i < json.length; i++) {
  52. cat_html = '<OPTION value="' + json[i].cat_id + '" ';
  53. if (default_child_cat_id == json[i].cat_id) {
  54. cat_html += ' selected ';
  55. }
  56. cat_html += ' ">' + json[i].cat_name + '</OPTION>';
  57. $("#parent_cat_id").append(cat_html);
  58. };
  59. }else{
  60. }
  61. },
  62. "json"
  63. );
  64. }
  65. //监听是否选择了目录。如果选择了,则跟后台判断是否还子目录
  66. $("#cat_id").change(function(){
  67. getChildCatList();
  68. });
  69. var keyMap = {
  70. // 保存
  71. "Ctrl-S": function() {
  72. $("#save").click();
  73. }
  74. };
  75. initEditorOutsideKeys();
  76. function initEditorOutsideKeys() {
  77. if (!editormd) return;
  78. var $doc = $(document);
  79. $.each(keyMap, function(key, fn) {
  80. $doc.on('keydown', null, key.replace('-', '+'), function(e) {
  81. e.preventDefault();
  82. fn();
  83. });
  84. });
  85. }
  86. // 如果是新增页面,则光标为标题文本框
  87. if (location.href.indexOf('type=new') !== -1) {
  88. setTimeout(function() {
  89. $('#page_title').focus();
  90. }, 1000);
  91. }
  92. /*初始化编辑器*/
  93. editormd = editormd("editormd", {
  94. width: "90%",
  95. height: 1000,
  96. syncScrolling: "single",
  97. path: DocConfig.pubile + "/editor.md/lib/",
  98. placeholder: lang["editormd_placeholder"] ,
  99. imageUpload: true,
  100. imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp", "JPG", "JPEG", "GIF", "PNG", "BMP", "WEBP"],
  101. imageUploadURL: "?s=home/page/uploadImg",
  102. onload: function() {
  103. this.addKeyMap(keyMap);
  104. }
  105. });
  106. /*插入API接口模板*/
  107. $("#api-doc").click(function() {
  108. var tmpl = $("#api-doc-templ").html();
  109. editormd.insertValue(tmpl);
  110. });
  111. /*插入数据字典模板*/
  112. $("#database-doc").click(function() {
  113. var tmpl = $("#database-doc-templ").html();
  114. editormd.insertValue(tmpl);
  115. });
  116. /*插入JSON*/
  117. $("#jsons").click(function() {
  118. $("#json-templ").show();
  119. });
  120. $("#json-templ .editormd-enter-btn").click(function(){
  121. var datas=$("#json-templ .jsons").val();
  122. try{
  123. Change($.parseJSON(datas));
  124. }
  125. catch(e){
  126. alert(lang["json_fail"] + e);
  127. }
  128. //datas=processJSONImport(datas);
  129. //alert(datas);
  130. /*var datas='|键|值|类型|空|注释|\n'+
  131. '|:-------|:-------|:-------|:-------|:-------|\n'+
  132. '|uid|int(10)|否|||\n'+
  133. '|username|varchar(20)|否||用户名|';*/
  134. //alert(json_table_data);return;
  135. editormd.insertValue(json_table_data);
  136. json_table_data='|'+lang["filed"]+'|'+lang["type"]+'|'+lang["description"]+'|\n'+
  137. '|:-------|:-------|:-------|\n';
  138. $("#json-templ .jsons").val("");
  139. $("#json-templ").hide();
  140. });
  141. //{"dgfgdfg":"gdfgdfg"}
  142. /*保存*/
  143. var saving = false;
  144. $("#save").click(function() {
  145. if (saving) return false;
  146. var page_id = $("#page_id").val();
  147. var item_id = $("#item_id").val();
  148. var page_title = $("#page_title").val();
  149. var page_comments = $("#page_comments").val();
  150. var page_content = $("#page_content").val();
  151. var item_id = $("#item_id").val();
  152. var s_number = $("#s_number").val();
  153. var cat_id = $("#cat_id").val();
  154. var parent_cat_id = $("#parent_cat_id").val();
  155. if (parent_cat_id > 0 ) {
  156. cat_id = parent_cat_id ;
  157. };
  158. saving = true;
  159. $.post(
  160. "?s=home/page/save", {
  161. "page_id": page_id,
  162. "cat_id": cat_id,
  163. "s_number": s_number,
  164. "page_content": page_content,
  165. "page_title": page_title,
  166. "page_comments": page_comments,
  167. "item_id": item_id
  168. },
  169. function(data) {
  170. if (data.error_code == 0) {
  171. $.bootstrapGrowl(lang["save_success"]);
  172. window.location.href = "?s=home/item/show&page_id=" + data.data.page_id + "&item_id=" + item_id;
  173. } else {
  174. $.bootstrapGrowl(lang["save_fail"]);
  175. }
  176. saving = false;
  177. },
  178. 'json'
  179. )
  180. });
  181. $(".editormd-preview-container").bind('DOMNodeInserted', function(e){
  182. $(".editormd-preview-container table thead tr").css({"background-color":"#08c","color":"#fff"});
  183. $(".editormd-preview-container table tr").eq(0).css({"background-color":"#08c","color":"#fff"});
  184. $(".editormd-preview-container table tr").each(function(){
  185. if($(this).find("td").eq(1).html()=="object")
  186. {
  187. $(this).css({"background-color":"#99CC99","color":"#000"});
  188. }
  189. });
  190. });
  191. });
  192. function closeDiv(target)
  193. {
  194. $(target).hide();
  195. }
  196. function Change(data)
  197. {
  198. var level_str="- ";
  199. if(arguments.length>1)
  200. {
  201. var level;
  202. arguments[1]>0?level=arguments[1]:level=1;
  203. for(var i=0;i<level;i++)
  204. {
  205. level_str+="- ";
  206. }
  207. }
  208. for(var key in data)
  209. {
  210. var value = data[key];
  211. var type = typeof(value);
  212. if(type == "object")
  213. {
  214. json_table_data+='| '+level_str+key+' |'+type+' | '+lang["none"]+' |\n';
  215. if(value instanceof Array)
  216. {
  217. var j=level+1;
  218. Change(value[0],j);
  219. continue;
  220. }
  221. //else
  222. //{
  223. Change(value,level);
  224. //}
  225. }
  226. else
  227. {
  228. json_table_data+='| '+key+' | '+type+'| '+lang["none"]+' |\n';
  229. }
  230. }
  231. }
  232. //{"Result":[{"name":"test1","list":{"pros":"prosfsf","ppps":{"images":[{"22":"22"}]}}}]}
  233. $("#save-to-templ").click(function(){
  234. var template_title =prompt(lang["save_templ_title"],"");
  235. if (template_title!=null && template_title!="")
  236. {
  237. var template_content = $("#page_content").val();
  238. $.post(
  239. "?s=home/template/save",
  240. {"template_title":template_title,"template_content":template_content},
  241. function(data){
  242. if (data.error_code == 0) {
  243. alert(lang["saved_templ_msg1"]+template_title+lang["saved_templ_msg2"]);
  244. } else {
  245. $.bootstrapGrowl(lang["save_fail"]);
  246. }
  247. },
  248. "json"
  249. );
  250. }
  251. $("#save-btn-group").removeClass("open");
  252. return false;
  253. });
  254. $("#more-templ").click(function(){
  255. $.post(
  256. "?s=home/template/getList",
  257. {},
  258. function(data){
  259. if (data.error_code == 0) {
  260. var html = '<TR><td>'+lang["save_time"]+'</td><td>'+lang["templ_title"]+'</td><td>'+lang["operation"]+'</td></TR>';
  261. template_list = data.data;
  262. json = data.data;
  263. for (var i = 0; i < json.length; i++) {
  264. html += '<TR><td>'+json[i]['addtime']+'</td>';
  265. html += '<td>'+json[i]['template_title']+'</td>';
  266. 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>';
  267. html +='</TR>';
  268. };
  269. $("#templ-table").html(html);
  270. } else {
  271. //$.bootstrapGrowl("获取模板列表失败");
  272. $("#templ-table").html(lang["no_templ_msg"]);
  273. }
  274. $("#more-templ-modal").modal();
  275. },
  276. "json"
  277. );
  278. });
  279. //使用模板
  280. function use_template(id){
  281. for (var i = 0; i < template_list.length; i++) {
  282. if (id > 0 && id == template_list[i]['id']) {
  283. editormd.insertValue(template_list[i]['template_content']);
  284. $("#more-templ-modal").modal("hide");
  285. };
  286. };
  287. }
  288. //删除模板
  289. function delete_template(id){
  290. $.post(
  291. "?s=home/template/delete",
  292. {"id":id},
  293. function(data){
  294. if (data.error_code == 0) {
  295. $("#more-templ").click();
  296. } else {
  297. $.bootstrapGrowl(lang["save_fail"]);
  298. }
  299. },
  300. "json"
  301. );
  302. }
  303. $("#add-page-comments").click(function(){
  304. var page_comments =prompt(lang["add_page_comments_msg"],"");
  305. if (page_comments!=null && page_comments!="")
  306. {
  307. $("#page_comments").val(page_comments);
  308. $("#save").click();
  309. }
  310. $("#save-btn-group").removeClass("open");
  311. return false;
  312. });