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

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