create.tpl 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. {include file='admin/header.tpl'}
  2. <script src="//cdnjs.cloudflare.com/ajax/libs/tinymce/7.0.0/tinymce.min.js"></script>
  3. <div class="page-wrapper">
  4. <div class="container-xl">
  5. <div class="page-header d-print-none text-white">
  6. <div class="row align-items-center">
  7. <div class="col">
  8. <h2 class="page-title">
  9. <span class="home-title">创建文档</span>
  10. </h2>
  11. <div class="page-pretitle my-3">
  12. <span class="home-subtitle">创建站点文档</span>
  13. </div>
  14. </div>
  15. <div class="col-auto ms-auto d-print-none">
  16. <div class="btn-list">
  17. <button href="#" class="btn btn-primary" data-bs-toggle="modal"
  18. data-bs-target="#generate-ai-content">
  19. <i class="icon ti ti-robot"></i>
  20. AI 文档生成
  21. </button>
  22. <button id="create-doc" href="#" class="btn btn-primary">
  23. <i class="icon ti ti-device-floppy"></i>
  24. 保存
  25. </button>
  26. </div>
  27. </div>
  28. </div>
  29. </div>
  30. </div>
  31. <div class="page-body">
  32. <div class="container-xl">
  33. <div class="card">
  34. <div class="card-body">
  35. <div class="mb-3">
  36. <label class="form-label col-3 col-form-label">文档标题</label>
  37. <div class="col">
  38. <input id="title" type="text" class="form-control" value="">
  39. </div>
  40. </div>
  41. <div class="mb-3">
  42. <form method="post">
  43. <textarea id="tinymce"></textarea>
  44. </form>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="modal modal-blur fade" id="generate-ai-content" tabindex="-1" role="dialog" aria-hidden="true">
  51. <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
  52. <div class="modal-content">
  53. <div class="modal-header">
  54. <h5 class="modal-title">使用 LLM 自动生成文档</h5>
  55. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  56. </div>
  57. <div class="modal-body">
  58. <div class="mb-3">
  59. <input id="question" class="form-control" rows="12" placeholder="请输入文档生成问题"></input>
  60. </div>
  61. </div>
  62. <div class="modal-footer">
  63. <button type="button" class="btn me-auto" data-bs-dismiss="modal">取消</button>
  64. <button id="generate" type="button" class="btn btn-primary" data-bs-dismiss="modal">生成</button>
  65. </div>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. <script>
  71. document.addEventListener("DOMContentLoaded", function () {
  72. let options = {
  73. selector: '#tinymce',
  74. menubar: false,
  75. statusbar: false,
  76. plugins:
  77. 'advlist autolink lists link image charmap preview anchor searchreplace visualblocks ' +
  78. 'code insertdatetime media table',
  79. toolbar: 'undo redo | bold italic backcolor link | styles | fontsize | lineheight | alignleft aligncenter ' +
  80. 'alignright alignjustify | bullist numlist outdent indent | removeformat',
  81. content_style: 'body { font-size: 14px; }',
  82. {if $user->is_dark_mode}
  83. skin: 'oxide-dark',
  84. content_css: 'dark',
  85. {/if}
  86. }
  87. tinyMCE.init(options);
  88. })
  89. $("#generate").click(function () {
  90. $.ajax({
  91. url: "/admin/docs/generate",
  92. type: 'POST',
  93. dataType: "json",
  94. data: {
  95. question: $("#question").val(),
  96. },
  97. success: function (data) {
  98. if (data.ret === 1) {
  99. $('#success-noreload-message').text(data.msg);
  100. $('#success-noreload-dialog').modal('show');
  101. tinyMCE.activeEditor.setContent(data.content);
  102. } else {
  103. $('#fail-message').text(data.msg);
  104. $('#fail-dialog').modal('show');
  105. }
  106. }
  107. })
  108. });
  109. $("#create-doc").click(function () {
  110. $.ajax({
  111. url: '/admin/docs',
  112. type: 'POST',
  113. dataType: "json",
  114. data: {
  115. title: $("#title").val(),
  116. content: tinyMCE.get('tinymce').getContent(),
  117. },
  118. success: function (data) {
  119. if (data.ret === 1) {
  120. $('#success-message').text(data.msg);
  121. $('#success-dialog').modal('show');
  122. window.setTimeout("location.href=top.document.referrer", {$config['jump_delay']});
  123. } else {
  124. $('#fail-message').text(data.msg);
  125. $('#fail-dialog').modal('show');
  126. }
  127. }
  128. })
  129. });
  130. </script>
  131. {include file='admin/footer.tpl'}