国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

212 lines
7.4KB

  1. /* Copyright 2020 The DedeBIZ.COM Authors. All rights reserved.
  2. license that can be found in the LICENSE file. */
  3. // 滚动到页面顶部
  4. function gotop() {
  5. $('html, body').animate({ scrollTop: 0 }, 'slow');
  6. }
  7. //读写cookie函数
  8. function GetCookie(c_name) {
  9. if (document.cookie.length > 0) {
  10. c_start = document.cookie.indexOf(c_name + "=")
  11. if (c_start != -1) {
  12. c_start = c_start + c_name.length + 1;
  13. c_end = document.cookie.indexOf(";", c_start);
  14. if (c_end == -1) {
  15. c_end = document.cookie.length;
  16. }
  17. return unescape(document.cookie.substring(c_start, c_end));
  18. }
  19. }
  20. return null
  21. }
  22. function SetCookie(c_name, value, expiredays) {
  23. var exdate = new Date();
  24. exdate.setDate(exdate.getDate() + expiredays);
  25. document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()); //使设置的有效时间正确。增加toGMTString()
  26. }
  27. //-------------------------------------------------------------------------------------------
  28. // 全局消息提示框
  29. //-------------------------------------------------------------------------------------------
  30. // 生成一个随机ID
  31. function guid() {
  32. function S4() {
  33. return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  34. }
  35. return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
  36. }
  37. // 显示对话框,动态创建modal并显示,退出自动销毁窗体
  38. // args是以下结构体
  39. /*
  40. args = {
  41. title : "", // 标题,默认是MuEMS
  42. footer : "", // 底部按钮,可以自定义按钮
  43. noClose : false, // 是否显示右上角关闭按钮,默认显示
  44. }
  45. */
  46. // 函数会返回一个modalID,通过这个ID可自已定义一些方法
  47. // 这里用到了一个展开语法
  48. // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax
  49. function ShowMsg(content, ...args) {
  50. title = "DedeCMS信息提示";
  51. if (typeof content == "undefined") content = "";
  52. modalID = guid();
  53. var footer = `<button type="button" class="btn btn-outline-success" onClick="CloseModal(\'DedeModal${modalID}\')">确定</button>`;
  54. var noClose = false;
  55. if (args.length == 1) {
  56. // 存在args参数
  57. if (typeof args[0].title !== 'undefined' && args[0].title != "") {
  58. title = args[0].title;
  59. }
  60. if (typeof args[0].footer !== 'undefined' && args[0].footer != "") {
  61. footer = args[0].footer;
  62. }
  63. if (typeof args[0].noClose !== 'undefined' && args[0].noClose == true) {
  64. noClose = true;
  65. }
  66. }
  67. String.prototype.replaceAll = function (s1, s2) {
  68. return this.replace(new RegExp(s1, "gm"), s2);
  69. }
  70. footer = footer.replaceAll("~modalID~", modalID);
  71. content = content.replaceAll("~modalID~", modalID);
  72. var modal = `<div id="DedeModal${modalID}" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="DedeModalLabel${modalID}" aria-hidden="true">
  73. <div class="modal-dialog modal-dialog-centered" role="document">
  74. <div class="modal-content"><div class="modal-header">
  75. <h6 class="modal-title" id="DedeModalLabel${modalID}">${title}</h6>`;
  76. if (!noClose) {
  77. modal += `<button type="button" class="close" data-dismiss="modal" aria-label="Close">
  78. <span aria-hidden="true">&times;</span>
  79. </button>`;
  80. }
  81. modal += `</div><div class="modal-body">${content}</div><div class="modal-footer">${footer}</div></div></div></div>`;
  82. $("body").append(modal)
  83. $("#DedeModal" + modalID).modal({
  84. backdrop: 'static',
  85. show: true
  86. });
  87. $("#DedeModal" + modalID).on('hidden.bs.modal', function (e) {
  88. $("#DedeModal" + modalID).remove();
  89. })
  90. return modalID;
  91. }
  92. // 隐藏并销毁modal
  93. function CloseModal(modalID) {
  94. $("#" + modalID).modal('hide');
  95. $("#" + modalID).on('hidden.bs.modal', function (e) {
  96. if ($("#" + modalID).length > 0) {
  97. $("#" + modalID).remove();
  98. }
  99. })
  100. }
  101. // 在某个元素内显示alert信息
  102. function ShowAlert(ele, content, type, showtime = 3000) {
  103. let msg = `<div class="alert alert-${type}" role="alert">
  104. ${content}
  105. </div>`;
  106. $(ele).html(msg);
  107. $(ele).show();
  108. setTimeout(() => {
  109. $(ele).html("");
  110. }, showtime);
  111. }
  112. //-------------------------------------------------------------------------------------------
  113. // 纠错扩展
  114. //-------------------------------------------------------------------------------------------
  115. // 提交纠错信息
  116. function ErrAddSaveDo(modalID) {
  117. let aid = $("#iptID").val();
  118. let title = $("#iptTitle").val();
  119. let type = $("#selType").val();
  120. let err = $("#iptErr").val();
  121. let erradd = $("#iptErradd").val();
  122. let parms = {
  123. format: "json",
  124. dopost: "saveedit",
  125. aid: aid,
  126. title: title,
  127. type: type,
  128. err: err,
  129. erradd: erradd,
  130. };
  131. $("#btnSubmit").attr("disabled", "disabled");
  132. if (typeof PHPURL === "undefined") {
  133. const PHPURL = "/plus";
  134. }
  135. $.post(PHPURL + "/erraddsave.php", parms, function (data) {
  136. let result = JSON.parse(data);
  137. if (result.code === 200) {
  138. CloseModal(modalID);
  139. } else {
  140. ShowAlert("#error-add-alert", `提交失败:${result.msg}`, "danger");
  141. }
  142. $("#btnSubmit").removeAttr("disabled");
  143. });
  144. }
  145. // 错误提示
  146. function ErrorAddSave(id, title) {
  147. let content = `
  148. <input type="hidden" value="${id}" class="form-control" id="iptID">
  149. <div class="form-group">
  150. <div id="error-add-alert">
  151. </div>
  152. <label for="iptTitle" class="col-form-label">标题:</label>
  153. <input type="text" disabled=true value="${title}" class="form-control" id="iptTitle">
  154. </div>
  155. <div class="form-group">
  156. <label for="message-text" class="col-form-label">错误类型:</label>
  157. <select id="selType" class="form-control">
  158. <option value="1">错别字(除的、地、得)</option>
  159. <option value="2">成语运用不当</option>
  160. <option value="3">专业术语写法不规则</option>
  161. <option value="4">产品与图片不符</option>
  162. <option value="5">事实年代以及内容错误</option>
  163. <option value="6">技术参数错误</option>
  164. <option value="7">其他</option>
  165. </select>
  166. </div>
  167. <div class="form-group">
  168. <label for="message-text" class="col-form-label">错误内容:</label>
  169. <textarea name="iptErr" class="form-control" id="iptErr"></textarea>
  170. </div>
  171. <div class="form-group">
  172. <label for="message-text" class="col-form-label">修正建议:</label>
  173. <textarea name="optErradd" class="form-control" id="iptErradd"></textarea>
  174. </div>
  175. `;
  176. let footer = `
  177. <button type="button" id="btnSubmit" class="btn btn-success" onClick="ErrAddSaveDo('DedeModal~modalID~')">提交</button>
  178. <button type="button" class="btn btn-outline-success" onClick="CloseModal('DedeModal~modalID~')">确定</button>
  179. `;
  180. ShowMsg(content, {
  181. 'footer': footer,
  182. });
  183. }
  184. // 页面加载触发
  185. $(document).ready(function () {
  186. window.onscroll = function () { scrollFunction() };
  187. function scrollFunction() {
  188. if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
  189. $("#btnScrollTop").show();
  190. } else {
  191. $("#btnScrollTop").hide();
  192. }
  193. }
  194. });