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

750 lines
23KB

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