edit.js 9.4 KB

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