markdown格式wiki文档

index.bak.php 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <html lang="zh-cn">
  2. <head>
  3. <link rel="stylesheet" href="/static/css/bootstrap.min.css">
  4. <link rel="stylesheet" href="/static/css/index.css">
  5. <script src="/static/js/jquery.min.js"></script>
  6. <script src="/static/js/bootstrap.min.js"></script>
  7. <script src="/static/js/axios.min.js"></script>
  8. <!-- <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script> -->
  9. <!-- <link href="/static/css/markdown.css" rel="stylesheet" /> -->
  10. <script src="/static/ace/ace.js"></script>
  11. <script src="/static/ace/mode-markdown.js"></script>
  12. <script src="/static/ace/theme-chrome.js"></script>
  13. <!-- <script src="/static/js/marked.js"></script> -->
  14. <!-- <script src="/static/js/showPanel.js"></script> -->
  15. <!-- <link rel="stylesheet" href="/static/codemirror-5.31.0/lib/codemirror.css"/> -->
  16. <!-- <script src="/static/codemirror-5.31.0/lib/codemirror.js"></script> -->
  17. <!--引入css文件,用以支持主题-->
  18. <!-- <link rel="stylesheet" href="/static/codemirror-5.31.0/theme/solarized.css"/> -->
  19. <!-- <script src="/static/codemirror-5.31.0/mode/markdown/markdown.js"></script> -->
  20. <link rel="stylesheet" href="/static/highlight/styles/solarized-light.css">
  21. <script src="/static/highlight/highlight.pack.js"></script>
  22. <title>MarkDown-Wiki:
  23. <?php echo $doc;?>
  24. </title>
  25. </head>
  26. <body>
  27. <header>
  28. <span class="logo">
  29. <a href="/index">HUWIKI</a>
  30. </span>
  31. <!-- Button trigger modal -->
  32. <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" onclick="edit()">
  33. <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> 编辑
  34. </button>
  35. <span>
  36. <!-- <img src="../static/img/header_color.png" alt="调色板" data-status="0" onclick="changeColor(this);"> -->
  37. </span>
  38. <span>
  39. <ul class="select_header_color" style="display: none;">
  40. <li style="background-color: aquamarine;"><a href="javascript: doChange('aquamarine');">aquamarine</a></li>
  41. <li style="background-color: azure;"><a href="javascript: doChange('azure');">azure</a></li>
  42. <li style="background-color: beige;"><a href="javascript: doChange('beige');">beige</a></li>
  43. <li style="background-color: cyan;"><a href="javascript: doChange('cyan');">cyan</a></li>
  44. <li style="background-color: floralwhite;"><a href="javascript: doChange('floralwhite');">floralwhite</a></li>
  45. <li style="background-color: gainsboro;"><a href="javascript: doChange('gainsboro');">gainsboro</a></li>
  46. <li style="background-color: gold;"><a href="javascript: doChange('gold');">gold</a></li>
  47. <li style="background-color: greenyellow;"><a href="javascript: doChange('greenyellow');">greenyellow</a></li>
  48. <li style="background-color: hotpink;"><a href="javascript: doChange('hotpink');">hotpink</a></li>
  49. <li style="background-color: ivory;"><a href="javascript: doChange('ivory');">ivory</a></li>
  50. <li style="background-color: khaki;"><a href="javascript: doChange('khaki');">khaki</a></li>
  51. <li style="background-color: lightgrey;"><a href="javascript: doChange('lightgrey');">lightgrey</a></li>
  52. <li style="background-color: lime;"><a href="javascript: doChange('lime');">lime</a></li>
  53. <li style="background-color: linen;"><a href="javascript: doChange('linen');">linen</a></li>
  54. <li style="background-color: mistyrose;"><a href="javascript: doChange('mistyrose');">mistyrose</a></li>
  55. <li style="background-color: navajowhite;"><a href="javascript: doChange('navajowhite');">navajowhite</a></li>
  56. <li style="background-color: oldlace;"><a href="javascript: doChange('oldlace');">oldlace</a></li>
  57. <li style="background-color: orangered;"><a href="javascript: doChange('orangered');">orangered</a></li>
  58. <li style="background-color: orchid;"><a href="javascript: doChange('orchid');">orchid</a></li>
  59. <li style="background-color: palegreen;"><a href="javascript: doChange('palegreen');">palegreen</a></li>
  60. <li style="background-color: papayawhip;"><a href="javascript: doChange('papayawhip');">papayawhip</a></li>
  61. <li style="background-color: peachpuff;"><a href="javascript: doChange('peachpuff');">peachpuff</a></li>
  62. <li style="background-color: thistle;"><a href="javascript: doChange('thistle');">thistle</a></li>
  63. <li style="background-color: wheat;"><a href="javascript: doChange('wheat');">wheat</a></li>
  64. <li style="background-color: white;"><a href="javascript: doChange('white');">white</a></li>
  65. </ul>
  66. </span>
  67. </header>
  68. <aside>
  69. <div class="nav" style="z-index: 99;">
  70. <span>位置: <a href="/index">index</a></span>
  71. <?php
  72. $dir_name = pathinfo($doc, PATHINFO_DIRNAME);
  73. $nav = explode('/',$dir_name);
  74. $temp = "/index/";
  75. foreach ($nav as $val) {
  76. if ($val=='.' || $val == '..') {
  77. continue;
  78. } else {
  79. ?>
  80. <span> / <a href="<?php echo $temp.$val.'/index.md';?>">
  81. <?php echo $val;?>
  82. </a></span>
  83. <?php
  84. }
  85. $temp .= $val ."/";
  86. }
  87. ?>
  88. </div>
  89. <div class="toc">
  90. <?php echo $toc;?>
  91. </div>
  92. </aside>
  93. <!--article标签中就是我们编写的文本内容-->
  94. <article>
  95. <div class="top">
  96. </div>
  97. <div class="content">
  98. <?php
  99. if ($is_file_exists) {
  100. echo $content;
  101. } else {
  102. ?>
  103. <div class="is_file_exists">
  104. <span>文档不存在, 点击<a href='javascript:void(0213123);' onclick='edit()'>新建文档</a></span>
  105. </div>
  106. <?php
  107. }
  108. ?>
  109. </div>
  110. </article>
  111. <!-- 编辑 Modal -->
  112. <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  113. <div class="modal-dialog" role="document">
  114. <div class="modal-content modal-edit">
  115. <div class="modal-header">
  116. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
  117. aria-hidden="true">&times;</span></button>
  118. <h4 class="modal-title" id="myModalLabel">编辑</h4>
  119. </div>
  120. <div class="modal-body">
  121. <div class="editor-content" id="mdeditor" style="height: 70%;"><?php echo $text;?></div>
  122. <!-- <textarea class="form-control" rows="20" style="resize:vertical" id="mdeditor" name="mdeditor"><?php echo $text;?></textarea> -->
  123. <!-- begin code -->
  124. <!-- <textarea class="form-control" id="mdeditor" name="mdeditor"><?php echo $text;?></textarea> -->
  125. <!-- end code-->
  126. </div>
  127. <div class="modal-footer">
  128. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  129. <button type="button" class="btn btn-primary" onclick="save('<?php echo $doc;?>')">Save
  130. changes</button>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. <!-- 登录 Modal -->
  136. <div class="modal fade" id="loginModal" tabindex="-1" role="dialog" aria-labelledby="loginModalLabel">
  137. <div class="modal-dialog" role="document" style="margin-top: 200px;">
  138. <div class="modal-content modal-login">
  139. <div class="modal-header">
  140. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
  141. aria-hidden="true">&times;</span></button>
  142. <h4 class="modal-title" id="loginModalLabel">登录</h4>
  143. </div>
  144. <div class="modal-body">
  145. <div class="form-group">
  146. <label for="username">用户名</label>
  147. <input type="text" class="form-control" id="username" placeholder="请输入用户名">
  148. </div>
  149. <div class="form-group">
  150. <label for="password">密码</label>
  151. <input type="password" class="form-control" id="password" placeholder="请输入密码">
  152. </div>
  153. </div>
  154. <div class="modal-footer">
  155. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  156. <button type="button" class="btn btn-primary" onclick="login()">LOGIN</button>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. <script>
  162. $(document).ready(function () {
  163. // 表格加上边框
  164. $("table").addClass('table table-bordered');
  165. if (storage.getItem("headerColor")) {
  166. var color = storage.getItem("headerColor");
  167. $("header").css('background-color', color);
  168. }
  169. });
  170. //修改header background-color
  171. function changeColor(obj) {
  172. // console.log($(obj).data("status"));
  173. var status = $(obj).data("status");
  174. if (status == 0) {
  175. $(".select_header_color").css("display", "block");
  176. $(obj).data("status", 1);
  177. } else {
  178. $(".select_header_color").css("display", "none");
  179. $(obj).data("status", 0);
  180. }
  181. }
  182. function doChange(color) {
  183. // console.log(color);
  184. // var color = $(obj).val();
  185. storage.setItem("headerColor", color);
  186. $("header").css("background-color", color);
  187. }
  188. // 代码高亮
  189. document.addEventListener('DOMContentLoaded', (event) => {
  190. document.querySelectorAll('pre code').forEach((block) => {
  191. hljs.highlightBlock(block);
  192. });
  193. });
  194. // ace 编辑器
  195. var editor = ace.edit('mdeditor');//左侧编辑框
  196. editor.setTheme('ace/theme/chrome');
  197. editor.getSession().setMode('ace/mode/markdown');
  198. editor.renderer.setShowPrintMargin(false);
  199. var imgUrl = '';//上传图片返回的url
  200. // codemirror
  201. // var editor = CodeMirror.fromTextArea(document.getElementById("mdeditor"), {
  202. // theme: "solarized", //设置主题
  203. // mode: "markdown", //实现groovy代码高亮
  204. // // mode: "text/x-java", //实现Java代码高亮
  205. // lineNumbers: true, //显示行号
  206. // // lineWrapping: true, //代码折叠
  207. // // foldGutter: true,
  208. // // gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
  209. // // matchBrackets: true, //括号匹配
  210. // //readOnly: true, //只读
  211. // });
  212. // textarea
  213. // editor = {
  214. // getValue() {
  215. // return $("#mdeditor").val();
  216. // }
  217. // };
  218. var storage = window.sessionStorage
  219. function edit() {
  220. if (storage == 'undefined') {
  221. alert("浏览暂不支持sessionStorage, 无法启用编辑")
  222. } else {
  223. if (storage.getItem("token")) {
  224. $("#myModal").modal('show');
  225. } else {
  226. $("#loginModal").modal('show');
  227. }
  228. }
  229. // console.log(editor.getValue());
  230. // window.location.href="/editor";
  231. }
  232. function login() {
  233. let username = document.querySelector('#username').value;
  234. let password = document.querySelector('#password').value;
  235. var params = new URLSearchParams();
  236. params.append('username', username);
  237. params.append('password', password);
  238. axios.post(
  239. '/login',
  240. params
  241. ).then((res) => {
  242. if (res.data.code === 0) {
  243. // 本地存储token
  244. storage.setItem('token', res.data.token);
  245. $("#loginModal").modal('hide');
  246. // 弹出编辑框
  247. $("#myModal").modal('show');
  248. } else {
  249. console.log(res.data.msg);
  250. }
  251. }).catch(function (error) {
  252. console.log(error);
  253. });
  254. }
  255. function save(doc) {
  256. var text = editor.getValue();
  257. // console.log(editor.getValue());
  258. // return false;
  259. params = {
  260. 'doc': doc,
  261. 'content': text
  262. };
  263. axios({
  264. method: "POST",
  265. url: `/save`,
  266. data: JSON.stringify(params),
  267. headers: {
  268. 'token': storage.getItem("token"),
  269. 'Content-Type': 'application/json'
  270. }
  271. }).then(function (res) {
  272. if (res.data.code == 0) {
  273. // acen_edit.destroy();
  274. // acen_edit.container.remove();
  275. console.log(res.data.msg);
  276. alert("保存成功");
  277. $("#myModal").modal('hide');
  278. setTimeout(window.location.reload(), 1500);
  279. } else {
  280. alert(res.data.msg);
  281. }
  282. }).catch(function (error) {
  283. console.log(error);
  284. });
  285. }
  286. </script>
  287. </body>
  288. </html>