|
@@ -1,124 +1,120 @@
|
|
|
-{include file='admin/main.tpl'}
|
|
|
+{include file='admin/tabler_header.tpl'}
|
|
|
|
|
|
-<main class="content">
|
|
|
- <div class="content-header ui-content-header">
|
|
|
- <div class="container">
|
|
|
- <h1 class="content-heading">添加公告</h1>
|
|
|
+<link rel="stylesheet" type="text/css" id="mce-u0" href="//cdn.jsdelivr.net/npm/@tabler/core@latest/dist/libs/tinymce/skins/ui/oxide/skin.min.css">
|
|
|
+<script src="//cdn.jsdelivr.net/npm/@tabler/core@latest/dist/libs/tinymce/tinymce.min.js"></script>
|
|
|
+
|
|
|
+<div class="page-wrapper">
|
|
|
+ <div class="container-xl">
|
|
|
+ <div class="page-header d-print-none text-white">
|
|
|
+ <div class="row align-items-center">
|
|
|
+ <div class="col">
|
|
|
+ <h2 class="page-title">
|
|
|
+ <span class="home-title">创建公告</span>
|
|
|
+ </h2>
|
|
|
+ <div class="page-pretitle my-3">
|
|
|
+ <span class="home-subtitle">创建站点公告</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="col-auto ms-auto d-print-none">
|
|
|
+ <div class="btn-list">
|
|
|
+ <a id="create-ann" href="#" class="btn btn-primary">
|
|
|
+ <i class="icon ti ti-device-floppy"></i>
|
|
|
+ 保存
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="container">
|
|
|
- <div class="col-lg-12 col-md-12">
|
|
|
- <section class="content-inner margin-top-no">
|
|
|
- <div class="card">
|
|
|
- <div class="card-main">
|
|
|
- <div class="card-inner">
|
|
|
- <div class="form-group form-group-label">
|
|
|
- <label class="floating-label" for="content">内容</label>
|
|
|
- <link rel="stylesheet"
|
|
|
- href="https://cdn.jsdelivr.net/npm/[email protected]/css/editormd.min.css"/>
|
|
|
- <div id="editormd">
|
|
|
- <textarea style="display:none;" id="content"></textarea>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div class="page-body">
|
|
|
+ <div class="container-xl">
|
|
|
+ <div class="card">
|
|
|
+ <div class="card-body">
|
|
|
+ <div class="mb-3">
|
|
|
+ <form method="post">
|
|
|
+ <textarea id="tinymce"></textarea>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ <div class="mb-3">
|
|
|
+ <label class="form-label col-3 col-form-label">公告通知的用户等级,0为不分级</label>
|
|
|
+ <div class="col">
|
|
|
+ <input id="email_notify_class" type="text" class="form-control" value=""></input>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="card">
|
|
|
- <div class="card-main">
|
|
|
- <div class="card-inner">
|
|
|
- <div class="form-group">
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-10 col-md-push-1">
|
|
|
- <div class="form-group form-group-label">
|
|
|
- <label class="floating-label" for="vip">VIP等级</label>
|
|
|
- <input class="form-control maxwidth-edit" id="vip" type="text" name="vip">
|
|
|
- <p class="form-control-guide"><i class="mdi mdi-information"></i>发送给等于或高于这个等级的用户
|
|
|
- 0为不分级</p>
|
|
|
- <div class="checkbox switch">
|
|
|
- <label for="issend">
|
|
|
- <input class="access-hide" id="issend" type="checkbox"
|
|
|
- name="issend"><span class="switch-toggle"></span>是否发送邮件
|
|
|
- </label>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <button id="submit" type="submit"
|
|
|
- class="btn btn-block btn-brand waves-attach waves-light">添加
|
|
|
- </button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div class="mb-3">
|
|
|
+ <div class="divide-y">
|
|
|
+ <div>
|
|
|
+ <label class="row">
|
|
|
+ <span class="col">发送邮件通知</span>
|
|
|
+ <span class="col-auto">
|
|
|
+ <label class="form-check form-check-single form-switch">
|
|
|
+ <input id="email_notify" class="form-check-input" type="checkbox"
|
|
|
+ checked="">
|
|
|
+ </label>
|
|
|
+ </span>
|
|
|
+ </label>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- {include file='dialog.tpl'}
|
|
|
- </section>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
-</main>
|
|
|
-
|
|
|
-{include file='admin/footer.tpl'}
|
|
|
+</div>
|
|
|
|
|
|
-<script src="//cdn.jsdelivr.net/npm/[email protected]/editormd.min.js"></script>
|
|
|
<script>
|
|
|
- (() => {
|
|
|
- editor = editormd("editormd", {
|
|
|
- path: "https://cdn.jsdelivr.net/npm/[email protected]/lib/", // Autoload modules mode, codemirror, marked... dependents libs path
|
|
|
- height: 720,
|
|
|
- saveHTMLToTextarea: true
|
|
|
- });
|
|
|
- /*
|
|
|
- // or
|
|
|
- var editor = editormd({
|
|
|
- id : "editormd",
|
|
|
- path : "../lib/"
|
|
|
- });
|
|
|
- */
|
|
|
- })();
|
|
|
- window.addEventListener('load', () => {
|
|
|
- function submit(page = -1) {
|
|
|
- if ($$.getElementById('issend').checked) {
|
|
|
- var issend = 1;
|
|
|
- } else {
|
|
|
- var issend = 0;
|
|
|
- }
|
|
|
- if (page === -1) {
|
|
|
- sedPage = 1;
|
|
|
- } else {
|
|
|
- sedPage = page;
|
|
|
- }
|
|
|
- $.ajax({
|
|
|
- type: "POST",
|
|
|
- url: "/admin/announcement",
|
|
|
- dataType: "json",
|
|
|
- data: {
|
|
|
- content: editor.getHTML(),
|
|
|
- markdown: $('.editormd-markdown-textarea').val(),
|
|
|
- vip: $$getValue('vip'),
|
|
|
- issend,
|
|
|
- page: sedPage
|
|
|
- },
|
|
|
- success: data => {
|
|
|
- if (data.ret === 1) {
|
|
|
- $("#result").modal();
|
|
|
- $$.getElementById('msg').innerHTML = data.msg;
|
|
|
- window.setTimeout("location.href=top.document.referrer", {$config['jump_delay']});
|
|
|
- } else if (data.ret === 2) {
|
|
|
- submit(data.msg);
|
|
|
- } else {
|
|
|
- $("#result").modal();
|
|
|
- $$.getElementById('msg').innerHTML = data.msg;
|
|
|
- }
|
|
|
- },
|
|
|
- error: jqXHR => {
|
|
|
- $("#result").modal();
|
|
|
- $$.getElementById('msg').innerHTML = `发生错误:${
|
|
|
- jqXHR.status
|
|
|
- }`;
|
|
|
- }
|
|
|
- });
|
|
|
+ <script>
|
|
|
+ // @formatter:off
|
|
|
+ document.addEventListener("DOMContentLoaded", function () {
|
|
|
+ let options = {
|
|
|
+ selector: '#tinymce',
|
|
|
+ height: 300,
|
|
|
+ menubar: false,
|
|
|
+ statusbar: false,
|
|
|
+ plugins: [
|
|
|
+ 'advlist autolink lists link image charmap print preview anchor',
|
|
|
+ 'searchreplace visualblocks code fullscreen',
|
|
|
+ 'insertdatetime media table paste code help wordcount'
|
|
|
+ ],
|
|
|
+ toolbar: 'undo redo | formatselect | ' +
|
|
|
+ 'bold italic backcolor | alignleft aligncenter ' +
|
|
|
+ 'alignright alignjustify | bullist numlist outdent indent | ' +
|
|
|
+ 'removeformat',
|
|
|
+ content_style: 'body { font-family: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif; font-size: 14px; -webkit-font-smoothing: antialiased; }'
|
|
|
+ }
|
|
|
+ if (localStorage.getItem("tablerTheme") === 'dark') {
|
|
|
+ options.skin = 'oxide-dark';
|
|
|
+ options.content_css = 'dark';
|
|
|
}
|
|
|
- $$.getElementById('submit').addEventListener('click', () => {
|
|
|
- submit();
|
|
|
- });
|
|
|
+ tinyMCE.init(options);
|
|
|
+ })
|
|
|
+ // @formatter:on
|
|
|
+ </script>
|
|
|
+
|
|
|
+ $("#create-ann").click(function() {
|
|
|
+ $.ajax({
|
|
|
+ url: '/announcement',
|
|
|
+ type: 'POST',
|
|
|
+ dataType: "json",
|
|
|
+ data: {
|
|
|
+ {foreach $update_field as $key}
|
|
|
+ {$key}: $('#{$key}').val(),
|
|
|
+ {/foreach}
|
|
|
+ email_notify: $("#email_notify").is(":checked"),
|
|
|
+ content: tinyMCE.activeEditor.getContent(),
|
|
|
+ },
|
|
|
+ success: function(data) {
|
|
|
+ if (data.ret == 1) {
|
|
|
+ $('#success-message').text(data.msg);
|
|
|
+ $('#success-dialog').modal('show');
|
|
|
+ window.setTimeout("location.href=top.document.referrer", {$config['jump_delay']});
|
|
|
+ } else {
|
|
|
+ $('#fail-message').text(data.msg);
|
|
|
+ $('#fail-dialog').modal('show');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
});
|
|
|
-</script>
|
|
|
+</script>
|
|
|
+
|
|
|
+{include file='admin/tabler_footer.tpl'}
|