edit.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. var editormd;
  2. var json_table_data='|参数名|类型|说明|\n'+
  3. '|:-------|:-------|:-------|\n';
  4. $(function() {
  5. /*加载目录*/
  6. secondCatList();
  7. function secondCatList() {
  8. var default_second_cat_id = $("#default_second_cat_id").val();
  9. var item_id = $("#item_id").val();
  10. $.get(
  11. "./", {
  12. "item_id": item_id,
  13. "s": "home/catalog/secondCatList",
  14. },
  15. function(data) {
  16. $("#cat_id").html('<OPTION value="0">无</OPTION>');
  17. if (data.error_code == 0) {
  18. json = data.data;
  19. console.log(json);
  20. for (var i = 0; i < json.length; i++) {
  21. cat_html = '<OPTION value="' + json[i].cat_id + '" ';
  22. if (default_second_cat_id == json[i].cat_id) {
  23. cat_html += ' selected ';
  24. }
  25. cat_html += ' ">' + json[i].cat_name + '</OPTION>';
  26. $("#cat_id").append(cat_html);
  27. getChildCatList();
  28. };
  29. };
  30. },
  31. "json"
  32. );
  33. }
  34. function getChildCatList() {
  35. var cat_id = $("#cat_id").val();
  36. var default_child_cat_id = $("#default_child_cat_id").val();
  37. $.get(
  38. "./", {
  39. "cat_id": cat_id,
  40. "s": "home/catalog/childCatList",
  41. },
  42. function(data) {
  43. $("#parent_cat_id").html('<OPTION value="0">无</OPTION>');
  44. if (data.error_code == 0) {
  45. json = data.data;
  46. console.log(json);
  47. for (var i = 0; i < json.length; i++) {
  48. cat_html = '<OPTION value="' + json[i].cat_id + '" ';
  49. if (default_child_cat_id == json[i].cat_id) {
  50. cat_html += ' selected ';
  51. }
  52. cat_html += ' ">' + json[i].cat_name + '</OPTION>';
  53. $("#parent_cat_id").append(cat_html);
  54. $("#li_parent_cat").show();
  55. };
  56. }else{
  57. $("#li_parent_cat").hide();
  58. }
  59. },
  60. "json"
  61. );
  62. }
  63. //监听是否选择了目录。如果选择了,则跟后台判断是否还子目录
  64. $("#cat_id").change(function(){
  65. getChildCatList();
  66. });
  67. var keyMap = {
  68. // 保存
  69. "Ctrl-S": function() {
  70. $("#save").click();
  71. }
  72. };
  73. initEditorOutsideKeys();
  74. function initEditorOutsideKeys() {
  75. if (!editormd) return;
  76. var $doc = $(document);
  77. $.each(keyMap, function(key, fn) {
  78. $doc.on('keydown', null, key.replace('-', '+'), function(e) {
  79. e.preventDefault();
  80. fn();
  81. });
  82. });
  83. }
  84. // 如果是新增页面,则光标为标题文本框
  85. if (location.href.indexOf('type=new') !== -1) {
  86. setTimeout(function() {
  87. $('#page_title').focus();
  88. }, 1000);
  89. }
  90. /*初始化编辑器*/
  91. editormd = editormd("editormd", {
  92. width: "90%",
  93. height: 1000,
  94. syncScrolling: "single",
  95. path: DocConfig.pubile + "/editor.md/lib/",
  96. placeholder: "本编辑器支持Markdown编辑,左边编写,右边预览",
  97. imageUpload: true,
  98. imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp", "JPG", "JPEG", "GIF", "PNG", "BMP", "WEBP"],
  99. imageUploadURL: "?s=home/page/uploadImg",
  100. onload: function() {
  101. this.addKeyMap(keyMap);
  102. }
  103. });
  104. /*插入API接口模板*/
  105. $("#api-doc").click(function() {
  106. var tmpl = $("#api-doc-templ").html();
  107. editormd.insertValue(tmpl);
  108. });
  109. /*插入数据字典模板*/
  110. $("#database-doc").click(function() {
  111. var tmpl = $("#database-doc-templ").html();
  112. editormd.insertValue(tmpl);
  113. });
  114. /*插入JSON*/
  115. $("#jsons").click(function() {
  116. $("#json-templ").show();
  117. });
  118. $("#json-templ .editormd-enter-btn").click(function(){
  119. var datas=$("#json-templ .jsons").val();
  120. try{
  121. Change($.parseJSON(datas));
  122. }
  123. catch(e){
  124. alert("json导入失败" + e);
  125. }
  126. //datas=processJSONImport(datas);
  127. //alert(datas);
  128. /*var datas='|键|值|类型|空|注释|\n'+
  129. '|:-------|:-------|:-------|:-------|:-------|\n'+
  130. '|uid|int(10)|否|||\n'+
  131. '|username|varchar(20)|否||用户名|';*/
  132. //alert(json_table_data);return;
  133. editormd.insertValue(json_table_data);
  134. json_table_data='|键|类型|说明|\n'+
  135. '|:-------|:-------|:-------|\n';
  136. $("#json-templ .jsons").val("");
  137. $("#json-templ").hide();
  138. });
  139. //{"dgfgdfg":"gdfgdfg"}
  140. /*保存*/
  141. var saving = false;
  142. $("#save").click(function() {
  143. if (saving) return false;
  144. var page_id = $("#page_id").val();
  145. var item_id = $("#item_id").val();
  146. var page_title = $("#page_title").val();
  147. var page_content = $("#page_content").val();
  148. var item_id = $("#item_id").val();
  149. var s_number = $("#s_number").val();
  150. var cat_id = $("#cat_id").val();
  151. var parent_cat_id = $("#parent_cat_id").val();
  152. if (parent_cat_id > 0 ) {
  153. cat_id = parent_cat_id ;
  154. };
  155. saving = true;
  156. $.post(
  157. "?s=home/page/save", {
  158. "page_id": page_id,
  159. "cat_id": cat_id,
  160. "s_number": s_number,
  161. "page_content": page_content,
  162. "page_title": page_title,
  163. "item_id": item_id
  164. },
  165. function(data) {
  166. if (data.error_code == 0) {
  167. $.bootstrapGrowl("保存成功!");
  168. window.location.href = "?s=home/item/show&page_id=" + data.data.page_id + "&item_id=" + item_id;
  169. } else {
  170. $.bootstrapGrowl("保存失败!");
  171. }
  172. saving = false;
  173. },
  174. 'json'
  175. )
  176. });
  177. $(".editormd-preview-container").bind('DOMNodeInserted', function(e){
  178. $(".editormd-preview-container table thead tr").css({"background-color":"#08c","color":"#fff"});
  179. $(".editormd-preview-container table tr").eq(0).css({"background-color":"#08c","color":"#fff"});
  180. $(".editormd-preview-container table tr").each(function(){
  181. if($(this).find("td").eq(1).html()=="object")
  182. {
  183. $(this).css({"background-color":"#99CC99","color":"#000"});
  184. }
  185. });
  186. });
  187. });
  188. function closeDiv(target)
  189. {
  190. $(target).hide();
  191. }
  192. function Change(data)
  193. {
  194. var level_str="- ";
  195. if(arguments.length>1)
  196. {
  197. var level;
  198. arguments[1]>0?level=arguments[1]:level=1;
  199. for(var i=0;i<level;i++)
  200. {
  201. level_str+="- ";
  202. }
  203. }
  204. for(var key in data)
  205. {
  206. var value = data[key];
  207. var type = typeof(value);
  208. if(type == "object")
  209. {
  210. json_table_data+='| '+level_str+key+' |'+type+' | 无 |\n';
  211. if(value instanceof Array)
  212. {
  213. var j=level+1;
  214. Change(value[0],j);
  215. continue;
  216. }
  217. //else
  218. //{
  219. Change(value,level);
  220. //}
  221. }
  222. else
  223. {
  224. json_table_data+='| '+key+' | '+type+'| 无 |\n';
  225. }
  226. }
  227. }
  228. //{"Result":[{"name":"test1","list":{"pros":"prosfsf","ppps":{"images":[{"22":"22"}]}}}]}