国内流行的内容管理系统(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.

751 lines
24KB

  1. var fixupPos = false;
  2. var canMove = false;
  3. var leftLeaning = 0;
  4. //异步上传缩略图相关变量
  5. var nForm = null;
  6. var nFrame = null;
  7. var picnameObj = null;
  8. var vImg = null;
  9. function GetWinPos(w, h) {
  10. var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
  11. var dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
  12. var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
  13. var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
  14. var systemZoom = width / window.screen.availWidth;
  15. var left = (width - w) / 2 / systemZoom + dualScreenLeft;
  16. var top = (height - h) / 2 / systemZoom + dualScreenTop;
  17. return { left: left, top: top };
  18. }
  19. function $Nav() {
  20. if (window.navigator.userAgent.indexOf("MSIE") >= 1) return 'IE';
  21. else if (window.navigator.userAgent.indexOf("Firefox") >= 1) return 'FF';
  22. else return "OT";
  23. }
  24. function $Obj(objname) {
  25. return document.getElementById(objname);
  26. }
  27. function ColorSel(c, oname) {
  28. var tobj = $Obj(oname);
  29. if (!tobj) tobj = eval('document.form1.' + oname);
  30. if (!tobj) {
  31. $Obj('colordlg').style.display = 'none';
  32. return false;
  33. } else {
  34. tobj.value = c;
  35. $Obj('colordlg').style.display = 'none';
  36. return true;
  37. }
  38. }
  39. function ShowColor(e, o) {
  40. LoadNewDiv(e, '../../static/web/img/colornew.htm', 'colordlg');
  41. }
  42. function ShowHide(objname) {
  43. var obj = $Obj(objname);
  44. if (obj.style.display != "none") obj.style.display = "none";
  45. else obj.style.display = "inline-block";
  46. }
  47. function ShowHideT(objname) {
  48. var obj = $Obj(objname);
  49. if (obj.style.display != "none") obj.style.display = "none";
  50. else obj.style.display = ($Nav() == "IE" ? "inline-block" : "table");
  51. }
  52. function ShowObj(objname) {
  53. var obj = $Obj(objname);
  54. if (obj == null) return false;
  55. obj.style.display = ($Nav() == "IE" ? "inline-block" : "table");
  56. }
  57. function ShowObjRow(objname) {
  58. var obj = $Obj(objname);
  59. obj.style.display = ($Nav() == "IE" ? "inline-block" : "table-row");
  60. }
  61. function AddTypeid2() {
  62. ShowObjRow('typeid2tr');
  63. }
  64. function HideObj(objname) {
  65. var obj = $Obj(objname);
  66. if (obj == null) return false;
  67. obj.style.display = "none";
  68. }
  69. function ShowItem1() {
  70. ShowObj('needset'); ShowObj('head1'); HideObj('head2'); HideObj('adset'); ShowObj('votehead');
  71. }
  72. function ShowItem2() {
  73. ShowObj('head2'); ShowObj('adset'); HideObj('voteset'); HideObj('head1'); HideObj('needset'); HideObj('votehead');
  74. }
  75. function SeePic(img, f) {
  76. if (f.value != '') img.src = f.value;
  77. }
  78. function SeePicNew(f, imgdid, frname, hpos, acname) {
  79. var newobj = null;
  80. if (f.value == '') return;
  81. vImg = $Obj(imgdid);
  82. picnameObj = document.getElementById('picname');
  83. nFrame = $Nav() == 'IE' ? eval('document.frames.' + frname) : $Obj(frname);
  84. nForm = f.form;
  85. //修改form的action等参数
  86. if (nForm.detachEvent) nForm.detachEvent("onsubmit", checkSubmit);
  87. else nForm.removeEventListener("submit", checkSubmit, false);
  88. nForm.action = 'archives_do.php';
  89. nForm.target = frname;
  90. nForm.dopost.value = 'uploadLitpic';
  91. nForm.submit();
  92. picnameObj.value = '';
  93. newobj = $Obj('uploadwait');
  94. if (!newobj) {
  95. newobj = document.createElement("DIV");
  96. newobj.id = 'uploadwait';
  97. newobj.style.position = 'absolute';
  98. newobj.className = 'uploadwait';
  99. newobj.style.width = 120;
  100. newobj.style.height = 20;
  101. newobj.style.top = hpos;
  102. newobj.style.left = 100;
  103. newobj.style.display = 'block';
  104. document.body.appendChild(newobj);
  105. newobj.innerHTML = '<img src="../../static/web/img/loadinglit.gif" alit="" />上传中...';
  106. }
  107. newobj.style.display = 'block';
  108. //提交后还原form的action等参数
  109. nForm.action = acname;
  110. nForm.dopost.value = 'save';
  111. nForm.target = '';
  112. nForm.litpic.disabled = true;
  113. }
  114. function SelectFlash() {
  115. var pos = GetWinPos(800,600);
  116. window.open("./dialog/select_media.php?f=form1.flashurl", "popUpFlashWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  117. }
  118. function SelectMedia(fname) {
  119. var pos = GetWinPos(800,600);
  120. window.open("./dialog/select_media.php?f=" + fname, "popUpFlashWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  121. }
  122. function SelectSoft(fname) {
  123. var pos = GetWinPos(800,600);
  124. window.open("./dialog/select_soft.php?f=" + fname, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  125. }
  126. function SelectImage(fname, stype, imgsel) {
  127. var pos = GetWinPos(800,600);
  128. if (!fname) fname = 'form1.picname';
  129. if (imgsel) imgsel = '&noeditor=yes';
  130. if (!stype) stype = '';
  131. window.open("./dialog/select_images.php?f=" + fname + "&noeditor=yes&imgstick=" + stype + imgsel, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  132. }
  133. function imageCut(fname) {
  134. var pos = GetWinPos(800,600);
  135. if (!fname) fname = 'picname';
  136. file = document.getElementById(fname).value;
  137. if (file == '') {
  138. alert('请先选择网站内已上传的图片');
  139. return false;
  140. }
  141. window.open("imagecut.php?f=" + fname + "&file=" + file, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  142. }
  143. function SelectImageN(fname, stype, vname) {
  144. var pos = GetWinPos(800,600);
  145. if (!fname) fname = 'form1.picname';
  146. if (!stype) stype = '';
  147. window.open("./dialog/select_images.php?f=" + fname + "&imgstick=" + stype + "&v=" + vname, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  148. }
  149. function SelectKeywords(f) {
  150. var pos = GetWinPos(800,600);
  151. window.open("article_keywords_select.php?f=" + f, "popUpkwWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  152. }
  153. function InitPage() {
  154. var selsource = $Obj('selsource');
  155. var selwriter = $Obj('selwriter');
  156. var titlechange = $Obj('title');
  157. var colorbt = $Obj('color');
  158. if (selsource) { selsource.onmousedown = function (e) { SelectSource(e); } }
  159. if (selwriter) { selwriter.onmousedown = function (e) { SelectWriter(e); } }
  160. if (titlechange) { titlechange.onchange = function (e) { TestHasTitle(e); } }
  161. }
  162. function OpenMyWin(surl) {
  163. var pos = GetWinPos(800,600);
  164. window.open(surl, "popUpMyWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left="+pos.left+", top="+pos.top);
  165. }
  166. function OpenMyWinCoOne(surl) {
  167. var pos = GetWinPos(800,600);
  168. window.open(surl, "popUpMyWin2", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left="+pos.left+",top="+pos.top);
  169. }
  170. function PutSource(str) {
  171. var osource = $Obj('source');
  172. if (osource) osource.value = str;
  173. $Obj('mysource').style.display = 'none';
  174. ChangeFullDiv('hide');
  175. }
  176. function PutWriter(str) {
  177. var owriter = $Obj('writer');
  178. if (owriter) owriter.value = str;
  179. $Obj('mywriter').style.display = 'none';
  180. ChangeFullDiv('hide');
  181. }
  182. //增加选择投票内容
  183. function PutVote(str) {
  184. var ovote = $Obj('voteid');
  185. if (ovote) {
  186. ovote.value = str;
  187. tb_remove(false);
  188. } else {
  189. parent.document.form1.voteid.value = str;
  190. tb_remove(true);
  191. }
  192. }
  193. function ClearDivCt(objname) {
  194. if (!$Obj(objname)) return;
  195. $Obj(objname).innerHTML = '';
  196. $Obj(objname).style.display = 'none';
  197. ChangeFullDiv("hide");
  198. }
  199. function ChangeFullDiv(showhide, screenheigt) {
  200. var newobj = $Obj('fullpagediv');
  201. if (showhide == 'show') {
  202. if (!newobj) {
  203. newobj = document.createElement("DIV");
  204. newobj.id = 'fullpagediv';
  205. newobj.style.position = 'absolute';
  206. newobj.className = 'fullpagediv';
  207. newobj.style.height = document.body.clientHeight + 50 + 'px';
  208. document.body.appendChild(newobj);
  209. } else {
  210. newobj.style.display = 'block';
  211. }
  212. } else {
  213. if (newobj) newobj.style.display = 'none';
  214. }
  215. }
  216. function SelectSource(e) {
  217. LoadNewDiv(e, 'article_select_sw.php?t=source&k=8&rnd=' + Math.random(), 'mysource');
  218. }
  219. function SelectWriter(e) {
  220. LoadNewDiv(e, 'article_select_sw.php?t=writer&k=8&rnd=' + Math.random(), 'mywriter');
  221. }
  222. function LoadNewDiv(e, surl, oname) {
  223. var pxStr = '';
  224. if ($Nav() == 'IE') {
  225. var posLeft = window.event.clientX - 20;
  226. var posTop = window.event.clientY - 30;
  227. // IE下scrollTop的兼容性问题
  228. var scrollTop = document.documentElement.scrollTop || window.pageYOffset;
  229. if (typeof (scrollTop) == 'undefined') scrollTop = document.body.scrollTop;
  230. posTop += scrollTop;
  231. } else {
  232. var posLeft = e.pageX - 20;
  233. var posTop = e.pageY - 30;
  234. pxStr = 'px';
  235. }
  236. posLeft = posLeft - 100;
  237. var newobj = $Obj(oname);
  238. if (!newobj) {
  239. newobj = document.createElement("DIV");
  240. newobj.id = oname;
  241. newobj.style.position = 'absolute';
  242. newobj.className = oname;
  243. newobj.className += ' dlgws';
  244. newobj.style.top = posTop + pxStr;
  245. newobj.style.left = posLeft + pxStr;
  246. document.body.appendChild(newobj);
  247. } else {
  248. newobj.style.display = "block";
  249. }
  250. if (newobj.innerHTML.length < 10) {
  251. fetch(surl).then(resp => resp.text()).then((d) => { newobj.innerHTML = d });
  252. }
  253. }
  254. function TestHasTitle(e) {
  255. LoadNewDiv2(e, 'article_test_title.php?t=' + $Obj('title').value, 'mytitle', "dlgTesttitle");
  256. }
  257. function LoadNewDiv2(e, surl, oname, dlgcls) {
  258. var posLeft = 300;
  259. var posTop = 50;
  260. var newobj = $Obj(oname);
  261. if (!newobj) {
  262. newobj = document.createElement("DIV");
  263. newobj.id = oname;
  264. newobj.style.position = 'absolute';
  265. newobj.className = dlgcls;
  266. newobj.style.top = posTop;
  267. newobj.style.left = posLeft;
  268. newobj.style.display = 'none';
  269. document.body.appendChild(newobj);
  270. }
  271. newobj.innerHTML = '';
  272. fetch(surl).then(resp => resp.text()).then((d) => {
  273. newobj.innerHTML = d;
  274. });
  275. if (newobj.innerHTML == '') newobj.style.display = 'none';
  276. else newobj.style.display = 'block';
  277. jQuery(newobj).css('top', '50px').css('left', '300px');
  278. DedeXHTTP = null;
  279. }
  280. function ShowUrlTr() {
  281. var jumpTest = $Obj('flagsj');
  282. var jtr = $Obj('redirecturltr');
  283. var jf = $Obj('redirecturl');
  284. if (jumpTest.checked) jtr.style.display = "block";
  285. else {
  286. jf.value = '';
  287. jtr.style.display = "none";
  288. }
  289. }
  290. function ShowUrlTrEdit() {
  291. ShowUrlTr();
  292. var jumpTest = $Obj('isjump');
  293. var rurl = $Obj('redirecturl');
  294. if (!jumpTest.checked) rurl.value = "";
  295. }
  296. function CkRemote() {
  297. document.getElementById('picname').value = '';
  298. }
  299. //载入指定宽高的AJAX窗体
  300. function LoadQuickDiv(e, surl, oname, w, h) {
  301. if ($Nav() == 'IE') {
  302. if (window.event) {
  303. var posLeft = window.event.clientX - 20;
  304. var posTop = window.event.clientY - 30;
  305. } else {
  306. var posLeft = e.clientX - 20;
  307. var posTop = e.clientY + 30;
  308. }
  309. } else {
  310. var posLeft = e.pageX - 20;
  311. var posTop = e.pageY - 30;
  312. }
  313. posTop += MyGetScrollTop();
  314. posLeft = posLeft - 400;
  315. //固定位置的高度
  316. if (fixupPos) {
  317. posLeft = posTop = 50;
  318. }
  319. var newobj = $Obj(oname);
  320. if (!newobj) {
  321. newobj = document.createElement("DIV");
  322. newobj.id = oname;
  323. newobj.style.position = 'absolute';
  324. newobj.className = 'pubdlg';
  325. newobj.style.width = w;
  326. newobj.style.height = h + 30;
  327. document.body.appendChild(newobj);
  328. }
  329. if (posTop > 500) posTop = 500;
  330. if (posLeft < 50) posLeft = 50;
  331. newobj.style.minWidth = "450px";
  332. newobj.style.top = posTop + "px";
  333. newobj.style.left = posLeft + "px";
  334. newobj.innerHTML = '<div style="margin-top:10px;margin-left:10px;"><img src="../../static/web/img/loadinglit.gif">Loading...</div>';
  335. newobj.style.display = 'block';
  336. fetch(surl).then(resp => resp.text()).then((d) => {
  337. newobj.innerHTML = d;
  338. });
  339. fixupPos = false;
  340. }
  341. function MyGetScrollTop() {
  342. return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
  343. }
  344. //通用事件获取接口
  345. function getEvent() {
  346. if ($Nav() == 'IE') return window.event;
  347. func = getEvent.caller;
  348. while (func != null) {
  349. var arg0 = func.arguments[0];
  350. if (arg0) {
  351. if ((arg0.constructor == Event || arg0.constructor == MouseEvent)
  352. || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
  353. return arg0;
  354. }
  355. }
  356. func = func.caller;
  357. }
  358. return null;
  359. }
  360. //模拟ondrop事件相关代码
  361. /*----------------------------
  362. leftLeaning = 300;
  363. 如果对象内容固定,用onmousedown=DropStart去除底下的DropStop
  364. newobj.ondblclick = DropStart;
  365. newobj.onmousemove = DropMove;
  366. newobj.onmousedown = DropStop;
  367. ----------------------------*/
  368. function DropStart() {
  369. this.style.cursor = 'move';
  370. }
  371. function DropStop() {
  372. this.style.cursor = 'default';
  373. }
  374. function DropMove() {
  375. if (this.style.cursor != 'move') return;
  376. var event = getEvent();
  377. if ($Nav() == 'IE') {
  378. var posLeft = event.clientX - 20;
  379. var posTop = event.clientY - 30;
  380. posTop += document.body.scrollTop;
  381. } else {
  382. var posLeft = event.pageX - 20;
  383. var posTop = event.pageY - 30;
  384. }
  385. this.style.top = posTop;
  386. this.style.left = posLeft - leftLeaning;
  387. }
  388. //对指定的元素绑定move事件
  389. /*-----------------------------
  390. onmousemove="DropMoveHand('divname', 225);"
  391. onmousedown="DropStartHand();"
  392. onmouseup="DropStopHand();"
  393. -----------------------------*/
  394. function DropStartHand() {
  395. canMove = (canMove ? false : true);
  396. }
  397. function DropStopHand() {
  398. canMove = false;
  399. }
  400. function DropMoveHand(objid, mleftLeaning) {
  401. var event = getEvent();
  402. var obj = $Obj(objid);
  403. if (!canMove) return;
  404. if ($Nav() == 'IE') {
  405. var posLeft = event.clientX - 20;
  406. var posTop = event.clientY - 20;
  407. posTop += window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  408. } else {
  409. var posLeft = event.pageX - 20;
  410. var posTop = event.pageY - 20;
  411. }
  412. obj.style.top = posTop + "px";
  413. obj.style.left = posLeft - mleftLeaning + "px";
  414. }
  415. //复制内容到剪切板
  416. function copyToClipboard(txt) {
  417. if (txt == null || txt == '') {
  418. alert("没有选择任何内容!");
  419. return;
  420. }
  421. if (window.clipboardData) {
  422. window.clipboardData.clearData();
  423. window.clipboardData.setData("Text", txt);
  424. } else if (navigator.userAgent.indexOf('Opera') != -1) {
  425. window.location = txt;
  426. } else {
  427. try {
  428. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  429. } catch (e) {
  430. alert("被浏览器拒绝\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");
  431. }
  432. var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
  433. if (!clip) return;
  434. var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
  435. if (!trans) return;
  436. trans.addDataFlavor('text/unicode');
  437. var str = new Object();
  438. var len = new Object();
  439. var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  440. var copytext = txt;
  441. str.data = copytext;
  442. trans.setTransferData("text/unicode", str, copytext.length * 2);
  443. var clipid = Components.interfaces.nsIClipboard;
  444. if (!clip) return false;
  445. clip.setData(trans, null, clipid.kGlobalClipboard);
  446. }
  447. }
  448. function getSelTxt() {
  449. var g, r;
  450. if (document.all) {
  451. g = document.selection.createRange().text;
  452. } else {
  453. g = document.getSelection();
  454. }
  455. return g;
  456. }
  457. //显示栏目Map地图
  458. function ShowCatMap(e, obj, cid, targetId, oldvalue) {
  459. fixupPos = true;
  460. LoadQuickDiv(e, 'archives_do.php?dopost=getCatMap&targetid=' + targetId + '&channelid=' + cid + '&oldvalue=' + oldvalue + '&rnd=' + Math.random(), 'getCatMap', '700px', '500px');
  461. ChangeFullDiv('show');
  462. }
  463. function getSelCat(targetId) {
  464. var selBox = document.quicksel.seltypeid;
  465. var targetObj = $Obj(targetId);
  466. var selvalue = '';
  467. //副栏目(多选)
  468. if (targetId == 'typeid2') {
  469. var j = 0;
  470. for (var i = 0; i < selBox.length; i++) {
  471. if (selBox[i].checked) {
  472. j++;
  473. if (j == 10) break;
  474. selvalue += (selvalue == '' ? selBox[i].value : ',' + selBox[i].value);
  475. }
  476. }
  477. if (targetObj) targetObj.value = selvalue;
  478. }
  479. //主栏目(单选)
  480. else {
  481. if (selBox) {
  482. for (var i = 0; i < selBox.length; i++) {
  483. if (selBox[i].checked) selvalue = selBox[i].value;
  484. }
  485. }
  486. if (selvalue == '') {
  487. alert('您没有选中任何项目');
  488. return;
  489. }
  490. if (targetObj) {
  491. for (var j = 0; j < targetObj.length; j++) {
  492. op = targetObj.options[j];
  493. if (op.value == selvalue) op.selected = true;
  494. }
  495. }
  496. }
  497. HideObj("getCatMap");
  498. ChangeFullDiv("hide");
  499. }
  500. function getElementLeft(element) {
  501. var actualLeft = element.offsetLeft;
  502. var current = element.offsetParent;
  503. while (current !== null) {
  504. actualLeft += current.offsetLeft;
  505. current = current.offsetParent;
  506. }
  507. return actualLeft;
  508. }
  509. function getElementTop(element) {
  510. var actualTop = element.offsetTop;
  511. var current = element.offsetParent;
  512. while (current !== null) {
  513. actualTop += current.offsetTop;
  514. current = current.offsetParent;
  515. }
  516. return actualTop;
  517. }
  518. //Copyright 2020 The MuEMS Authors. All rights reserved.
  519. //license that can be found in the LICENSE file.
  520. //-----msgbox-------------------------------------
  521. //生成一个随机ID
  522. function guid() {
  523. function S4() {
  524. return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  525. }
  526. return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
  527. }
  528. // 函数会返回一个modalID,通过这个ID可自已定义一些方法
  529. // 这里用到了一个展开语法
  530. // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax
  531. function ShowMsg(content, ...args) {
  532. title = "系统提示";
  533. if (typeof content == "undefined") content = "";
  534. modalID = guid();
  535. var footer = `<button type="button" class="btn btn-primary" onClick="CloseModal(\'GKModal${modalID}\')">Ok</button>`;
  536. var noClose = false;
  537. if (args.length == 1) {
  538. // 存在args参数
  539. if (typeof args[0].title !== 'undefined' && args[0].title != "") {
  540. title = args[0].title;
  541. }
  542. if (typeof args[0].footer !== 'undefined' && args[0].footer != "") {
  543. footer = args[0].footer;
  544. }
  545. if (typeof args[0].noClose !== 'undefined' && args[0].noClose == true) {
  546. noClose = true;
  547. }
  548. }
  549. footer = footer.replaceAll("~modalID~", modalID);
  550. content = content.replaceAll("~modalID~", modalID);
  551. var modal = `<div id="GKModal${modalID}" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="GKModalLabel${modalID}">
  552. <div class="modal-dialog" role="document">
  553. <div class="modal-content"><div class="modal-header">
  554. <h5 class="modal-title" id="GKModalLabel${modalID}">${title}</h5>`;
  555. if (!noClose) {
  556. modal += `<button type="button" class="close" data-dismiss="modal" aria-label="Close">
  557. <span>&times;</span>
  558. </button>`;
  559. }
  560. modal += `</div><div class="modal-body">${content}</div><div class="modal-footer">${footer}</div></div></div></div>`;
  561. $("body").append(modal)
  562. $("#GKModal" + modalID).modal({
  563. backdrop: 'static',
  564. show: true
  565. });
  566. $("#GKModal" + modalID).on('hidden.bs.modal', function (e) {
  567. $("#GKModal" + modalID).remove();
  568. })
  569. return modalID;
  570. }
  571. //隐藏并销毁modal
  572. function CloseModal(modalID) {
  573. $("#" + modalID).modal('hide');
  574. $("#" + modalID).on('hidden.bs.modal', function (e) {
  575. if ($("#" + modalID).length > 0) {
  576. $("#" + modalID).remove();
  577. }
  578. })
  579. }
  580. //获取缩略图
  581. var litpicImgSrc = "";
  582. var litpicImg = "";
  583. var currentCID = 0;
  584. var mdlCropperID = "";
  585. var pubAt = 0;
  586. var optCropper = {
  587. preview: ".pv",
  588. crop: function (e) {
  589. $("#cropWidth").text(Math.round(e.detail.height));
  590. $("#cropHeight").text(Math.round(e.detail.width));
  591. var dataUrl = $(this).cropper("getCroppedCanvas")
  592. .toDataURL();
  593. litpicImg = dataUrl;
  594. $("#litPic").attr("src", litpicImg);
  595. },
  596. aspectRatio: 4 / 3,
  597. //拖动截取缩略图后,截取的缩略图更新到imageItems中
  598. cropend: function (data) {
  599. //这里的ID要单独取出来
  600. var dataUrl = $(this).cropper("getCroppedCanvas").toDataURL();
  601. litpicImg = dataUrl;
  602. $("#litPic").attr("src", litpicImg);
  603. $("#litpic_b64").val(litpicImg);
  604. }
  605. }
  606. var cropperAspectRatio = {
  607. 0: 16 / 9,
  608. 1: 4 / 3,
  609. 2: 1 / 1,
  610. 3: 2 / 3,
  611. 4: NaN,
  612. }
  613. function setAspectRatio(ar) {
  614. var opts = optCropper;
  615. opts.aspectRatio = cropperAspectRatio[ar];
  616. $("#cropImg" + mdlCropperID).cropper('destroy').cropper(opts);
  617. }
  618. function okImage(modalID) {
  619. uploadImage(litpicImg);
  620. $("#litPic").attr("src", litpicImg);
  621. CloseModal('GKModal' + modalID);
  622. }
  623. function useDefault(modalID) {
  624. uploadImage(litpicImgSrc);
  625. $("#litPic").attr("src", litpicImgSrc);
  626. CloseModal('GKModal' + modalID);
  627. }
  628. function uploadImage(litpicImgSrc) {
  629. const formData = new FormData()
  630. formData.append('litpic_b64', litpicImgSrc);
  631. fetch('archives_do.php?dopost=upload_base64_image', {
  632. method: 'POST',
  633. body: formData
  634. })
  635. .then(r => {
  636. if (r.ok) {
  637. return r.json()
  638. }
  639. throw new Error(errMsg);
  640. })
  641. .then(d => {
  642. if (d.code == 200) {
  643. $("#picname").val(d.data.image_url);
  644. }
  645. }).catch((error) => {
  646. alert("上传缩略图错误");
  647. });
  648. }
  649. $(document).ready(function () {
  650. $("#btnClearAll").click(function (event) {
  651. litpicImgSrc = "";
  652. litpicImg = "";
  653. $("#picname").val(litpicImg);
  654. $("#litPic").attr("src", "../../static/web/img/defaultpic.jpg");
  655. })
  656. //添加图片
  657. $("#iptAddImages").change(function (event) {
  658. var files = event.target.files;
  659. for (var i = 0, f; f = files[i]; i++) {
  660. //如果不是图片忽略
  661. if (!f.type.match('image.*')) {
  662. continue;
  663. }
  664. //将图片渲染到浏览器
  665. var reader = new FileReader();
  666. reader.onload = (function (theFile) {
  667. return function (e) {
  668. litpicImgSrc = e.target.result;
  669. if (cfg_uplitpic_cut == 'Y') {
  670. SetThumb(litpicImgSrc);
  671. } else {
  672. uploadImage(litpicImgSrc);
  673. $("#litPic").attr("src", litpicImgSrc);
  674. }
  675. };
  676. })(f);
  677. reader.readAsDataURL(f);
  678. }
  679. $("#iptAddImages").val("");
  680. });
  681. //截取缩略图
  682. function SetThumb(srcURL) {
  683. var footer =
  684. "<p><a href='javascript:useDefault(\"~modalID~\");' class='btn btn-success'>使用原图</a> <a href='javascript:okImage(\"~modalID~\")' class='btn btn-success'>确定</a></p>";
  685. var optButton = `<p><div class="form-group">
  686. <label for="aspectRatio">比例</label>
  687. <select class="form-control" id="aspectRatio" onchange="setAspectRatio(this.selectedIndex)">
  688. <option>16:9</option>
  689. <option selected>4:3</option>
  690. <option>1:1</option>
  691. <option>2:3</option>
  692. <option>自定义</option>
  693. </select>
  694. </div></p>`;
  695. mdlCropperID = ShowMsg(
  696. '<div><div class="float-left" style="width:300px;"><img id="cropImg~modalID~" src="' +
  697. srcURL +
  698. '"0><p>宽度:<span id="cropWidth"></span>px,高度:<span id="cropHeight"></span>px</p>' + optButton + '</div><div class="pv float-right" style="width:150px;height:100px;overflow:hidden;"></div></div>', {
  699. footer: footer,
  700. noClose: false,
  701. title: 'DedeBIZ缩略图裁剪',
  702. });
  703. setTimeout(function () {
  704. $("#cropImg" + mdlCropperID).cropper(optCropper);
  705. }, 500);
  706. }
  707. if ($.fn.daterangepicker) {
  708. $('.datepicker').daterangepicker({
  709. "singleDatePicker": true,
  710. "autoApply": true,
  711. "showDropdowns": true,
  712. "linkedCalendars": false,
  713. "timePicker": true,
  714. "timePicker24Hour": true,
  715. "timePickerSeconds": true,
  716. "showCustomRangeLabel": false,
  717. "drops": "up",
  718. ranges: {
  719. '今日': [moment(), moment()],
  720. '昨日': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
  721. '本月': [moment().startOf('month'), moment().startOf('month')],
  722. '上月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').startOf('month')]
  723. },
  724. "locale": {
  725. format: 'YYYY-MM-DD HH:mm:ss',
  726. applyLabel: '确定',
  727. cancelLabel: '取消',
  728. daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
  729. monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
  730. '七月', '八月', '九月', '十月', '十一月', '十二月'],
  731. firstDay: 1
  732. }
  733. }, function (start) {
  734. $(this).val(start.format("YYYY-MM-DD HH:mm:ss"));
  735. });
  736. $('.datepicker').on('show.daterangepicker', function (ev, picker) {
  737. if (picker.element.offset().top - $(window).scrollTop() + picker.container.outerHeight() > $(window).height()) {
  738. picker.drops = 'up';
  739. } else {
  740. picker.drops = 'down';
  741. }
  742. picker.move();
  743. })
  744. }
  745. })