publish.html 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>layui</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  9. <link rel="stylesheet" href="__PUBLIC__/layui/css/layui.css" media="all">
  10. <link rel="stylesheet" href="__PUBLIC__/font-awesome/css/font-awesome.min.css" media="all"/>
  11. <link rel="stylesheet" href="__CSS__/admin.css" media="all">
  12. <link rel="stylesheet" href="__PUBLIC__/codemirror/lib/codemirror.css">
  13. <link rel="stylesheet" href="__PUBLIC__/codemirror/addon/fold/foldgutter.css" />
  14. <script src="__PUBLIC__/codemirror/lib/codemirror.js"></script>
  15. <script src="__PUBLIC__/codemirror/addon/fold/foldcode.js"></script>
  16. <script src="__PUBLIC__/codemirror/addon/fold/foldgutter.js"></script>
  17. <script src="__PUBLIC__/codemirror/addon/fold/brace-fold.js"></script>
  18. <script src="__PUBLIC__/codemirror/addon/fold/xml-fold.js"></script>
  19. <script src="__PUBLIC__/codemirror/addon/fold/indent-fold.js"></script>
  20. <script src="__PUBLIC__/codemirror/addon/fold/comment-fold.js"></script>
  21. <script src="__PUBLIC__/codemirror/mode/javascript/javascript.js"></script>
  22. <script src="__PUBLIC__/codemirror/mode/xml/xml.js"></script>
  23. <script src="__PUBLIC__/codemirror/mode/css/css.js"></script>
  24. <script src="__PUBLIC__/codemirror/mode/htmlmixed/htmlmixed.js"></script>
  25. <link rel="stylesheet" href="__PUBLIC__/codemirror/addon/display/fullscreen.css">
  26. <script src="__PUBLIC__/codemirror/addon/display/fullscreen.js"></script>
  27. <link rel="stylesheet" href="__PUBLIC__/codemirror/addon/dialog/dialog.css">
  28. <script src="__PUBLIC__/codemirror/addon/dialog/dialog.js"></script>
  29. <script src="__PUBLIC__/codemirror/addon/search/searchcursor.js"></script>
  30. <script src="__PUBLIC__/codemirror/addon/search/search.js"></script>
  31. </head>
  32. <style>
  33. .CodeMirror {border-top: 1px solid #eee; border-bottom: 1px solid #eee; height: 500px}
  34. </style>
  35. <body style="padding:10px;">
  36. <div class="tplay-body-div">
  37. {empty name="$filename"}
  38. <div class="layui-tab">
  39. <ul class="layui-tab-title">
  40. <li class="a_menu"><a href="{:url('index')}">模板管理</a></li>
  41. <li class="layui-this">新增模板</li>
  42. </ul>
  43. </div>
  44. {/empty}
  45. <div style="margin-top: 20px;">
  46. </div>
  47. <form class="layui-form" id="publish" method="post">
  48. {empty name="$filename"}
  49. <div class="layui-form-item">
  50. <!--<label class="layui-form-label">模板名称</label>-->
  51. <div class="layui-input-inline" style="max-width:300px;">
  52. <input name="name" lay-verify="required" autocomplete="off" placeholder="请输入模板名称" class="layui-input"
  53. type="text" value="{$filename|default=''}">
  54. </div>
  55. <div class="layui-form-mid layui-word-aux">可使用字母、数字和下划线_命名</div>
  56. </div>
  57. {/empty}
  58. <div class="layui-form-item layui-form-text">
  59. <div class="layui-input-inline" style="width:100%;">
  60. <textarea id="code-html" placeholder="请输入内容" class="layui-textarea" rows="30" name="content">{notempty name="$content"}{$content|htmlspecialchars}{/notempty}</textarea>
  61. </div>
  62. <div class="layui-form-mid layui-word-aux">快捷键:F11全屏,Ctrl+Q:折叠代码,Alt-F:开始搜索,输入Enter:查找下一个,Shift-Enter:查找上一个,Shift-Ctrl-R:替换全部</div>
  63. </div>
  64. {notempty name="$filename"}
  65. <input type="hidden" name="filename" value="{$filename}">
  66. <input type="hidden" name="filemtime" id="filemtime" value="{$filemtime}">
  67. {/notempty}
  68. <div class="layui-form-item">
  69. <div class="layui-input-block">
  70. <button class="layui-btn" lay-submit lay-filter="admin">立即提交</button>
  71. <button type="reset" class="layui-btn layui-btn-primary" onclick="location.reload()">刷新</button>
  72. </div>
  73. </div>
  74. </form>
  75. <script src="__PUBLIC__/layui/layui.js"></script>
  76. <script src="__PUBLIC__/jquery/jquery.min.js"></script>
  77. <script>
  78. layui.use(['layer', 'form'], function () {
  79. var layer = layui.layer,
  80. $ = layui.jquery,
  81. form = layui.form;
  82. $(window).on('load', function () {
  83. //
  84. var te_html = document.getElementById("code-html");
  85. var editor = CodeMirror.fromTextArea(te_html, {
  86. mode: "text/html",
  87. lineNumbers: true,
  88. lineWrapping: true,
  89. extraKeys: {
  90. "Ctrl-Q": function (cm) {
  91. cm.foldCode(cm.getCursor());
  92. },
  93. "F11": function(cm) {
  94. cm.setOption("fullScreen", !cm.getOption("fullScreen"));
  95. },
  96. "Esc": function(cm) {
  97. if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
  98. },
  99. "Alt-F": "findPersistent"
  100. },
  101. foldGutter: true,
  102. gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
  103. });
  104. //
  105. form.on('submit(admin)', function (data) {
  106. te_html.value = editor.getValue();
  107. $.ajax({
  108. url: "{:url('publish')}",
  109. data: $('#publish').serialize(),
  110. type: 'post',
  111. async: false,
  112. success: function (res) {
  113. if (res.code == 1) {
  114. {notempty name="$filename"}
  115. layer.confirm(res.msg, {
  116. btn: ['关闭','继续编辑']
  117. }, function (index) {
  118. window.parent.tab.close('templet{$filename|default=""}');
  119. }, function (index, layero) {
  120. $('#filemtime').val(res.data)
  121. console.log(res.data);
  122. });
  123. {else/}
  124. layer.alert(res.msg, function (index) {
  125. location.href = res.url;
  126. })
  127. {/notempty}
  128. } else {
  129. layer.msg(res.msg);
  130. }
  131. }
  132. })
  133. return false;
  134. });
  135. });
  136. });
  137. </script>
  138. </div>
  139. </body>
  140. </html>