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

827 lines
25KB

  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 $Nav() {
  10. if (window.navigator.userAgent.indexOf("MSIE") >= 1) return 'IE';
  11. else if (window.navigator.userAgent.indexOf("Firefox") >= 1) return 'FF';
  12. else return "OT";
  13. }
  14. function $Obj(objname) {
  15. return document.getElementById(objname);
  16. }
  17. //旧的颜色选择框(已经过期)
  18. /*
  19. function ShowColor()
  20. {
  21. var fcolor=showModalDialog("images/color.htm?ok",false,"dialogWidth:106px;dialogHeight:110px;status:0;dialogTop:"+(+120)+";dialogLeft:"+(+120));
  22. if(fcolor!=null && fcolor!="undefined") document.form1.color.value = fcolor;
  23. }
  24. */
  25. function ColorSel(c, oname) {
  26. var tobj = $Obj(oname);
  27. if (!tobj) tobj = eval('document.form1.' + oname);
  28. if (!tobj) {
  29. $Obj('colordlg').style.display = 'none';
  30. return false;
  31. }
  32. else {
  33. tobj.value = c;
  34. $Obj('colordlg').style.display = 'none';
  35. return true;
  36. }
  37. }
  38. function ShowColor(e, o) {
  39. LoadNewDiv(e, 'images/colornew.htm', 'colordlg');
  40. }
  41. function ShowHide(objname) {
  42. var obj = $Obj(objname);
  43. if (obj.style.display != "none") obj.style.display = "none";
  44. else obj.style.display = "inline-block";
  45. }
  46. function ShowHideT(objname) {
  47. var obj = $Obj(objname);
  48. if (obj.style.display != "none") obj.style.display = "none";
  49. else obj.style.display = ($Nav() == "IE" ? "inline-block" : "table");
  50. }
  51. function ShowObj(objname) {
  52. var obj = $Obj(objname);
  53. if (obj == null) return false;
  54. obj.style.display = ($Nav() == "IE" ? "inline-block" : "table");
  55. }
  56. function ShowObjRow(objname) {
  57. var obj = $Obj(objname);
  58. obj.style.display = ($Nav() == "IE" ? "inline-block" : "table-row");
  59. }
  60. function AddTypeid2() {
  61. ShowObjRow('typeid2tr');
  62. //$Obj('typeid2ct').innerHTML = $Obj('typeidct').innerHTML.replace('typeid','typeid2');
  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="images/loadinglit.gif" width="16" height="16" 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. //nForm.litpic = null;
  114. //if(nForm.attachEvent) nForm.attachEvent("onsubmit", checkSubmit);
  115. //else nForm.addEventListener("submit", checkSubmit, true);
  116. }
  117. function SelectFlash() {
  118. if ($Nav() == 'IE') { var posLeft = window.event.clientX - 300; var posTop = window.event.clientY; }
  119. else { var posLeft = 100; var posTop = 100; }
  120. window.open("./dialog/select_media.php?f=form1.flashurl", "popUpFlashWin", "scrollbars=yes,resizable=yes,statebar=no,width=500,height=350,left=" + posLeft + ", top=" + posTop);
  121. }
  122. function SelectMedia(fname) {
  123. if ($Nav() == 'IE') { var posLeft = window.event.clientX - 200; var posTop = window.event.clientY; }
  124. else { var posLeft = 100; var posTop = 100; }
  125. window.open("./dialog/select_media.php?f=" + fname, "popUpFlashWin", "scrollbars=yes,resizable=yes,statebar=no,width=500,height=350,left=" + posLeft + ", top=" + posTop);
  126. }
  127. function SelectSoft(fname) {
  128. if ($Nav() == 'IE') { var posLeft = window.event.clientX - 200; var posTop = window.event.clientY - 50; }
  129. else { var posLeft = 100; var posTop = 100; }
  130. window.open("./dialog/select_soft.php?f=" + fname, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=600,height=400,left=" + posLeft + ", top=" + posTop);
  131. }
  132. function SelectImage(fname, stype, imgsel) {
  133. if ($Nav() == 'IE') { var posLeft = window.event.clientX - 100; var posTop = window.event.clientY; }
  134. else { var posLeft = 100; var posTop = 100; }
  135. if (!fname) fname = 'form1.picname';
  136. if (imgsel) imgsel = '&noeditor=yes';
  137. if (!stype) stype = '';
  138. window.open("./dialog/select_images.php?f=" + fname + "&noeditor=yes&imgstick=" + stype + imgsel, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=650,height=400,left=" + posLeft + ", top=" + posTop);
  139. }
  140. function imageCut(fname) {
  141. if ($Nav() == 'IE') { var posLeft = window.event.clientX - 100; var posTop = window.event.clientY; }
  142. else { var posLeft = 100; var posTop = 100; }
  143. if (!fname) fname = 'picname';
  144. file = document.getElementById(fname).value;
  145. if (file == '') {
  146. alert('请先选择网站内已上传的图片');
  147. return false;
  148. }
  149. window.open("imagecut.php?f=" + fname + "&file=" + file, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + posLeft + ", top=" + posTop);
  150. }
  151. function SelectImageN(fname, stype, vname) {
  152. if ($Nav() == 'IE') { var posLeft = window.event.clientX - 100; var posTop = window.event.clientY; }
  153. else { var posLeft = 100; var posTop = 100; }
  154. if (!fname) fname = 'form1.picname';
  155. if (!stype) stype = '';
  156. window.open("./dialog/select_images.php?f=" + fname + "&imgstick=" + stype + "&v=" + vname, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=600,height=400,left=" + posLeft + ", top=" + posTop);
  157. }
  158. function SelectKeywords(f) {
  159. if ($Nav() == 'IE') { var posLeft = window.event.clientX - 350; var posTop = window.event.clientY - 200; }
  160. else { var posLeft = 100; var posTop = 100; }
  161. window.open("article_keywords_select.php?f=" + f, "popUpkwWin", "scrollbars=yes,resizable=yes,statebar=no,width=600,height=450,left=" + posLeft + ", top=" + posTop);
  162. }
  163. function InitPage() {
  164. var selsource = $Obj('selsource');
  165. var selwriter = $Obj('selwriter');
  166. var titlechange = $Obj('title');
  167. var colorbt = $Obj('color');
  168. if (selsource) { selsource.onmousedown = function (e) { SelectSource(e); } }
  169. if (selwriter) { selwriter.onmousedown = function (e) { SelectWriter(e); } }
  170. if (titlechange) { titlechange.onchange = function (e) { TestHasTitle(e); } }
  171. }
  172. function OpenMyWin(surl) {
  173. window.open(surl, "popUpMyWin", "scrollbars=yes,resizable=yes,statebar=no,width=500,height=350,left=200, top=100");
  174. }
  175. function OpenMyWinCoOne(surl) {
  176. window.open(surl, "popUpMyWin2", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=450,left=100,top=50");
  177. }
  178. function PutSource(str) {
  179. var osource = $Obj('source');
  180. if (osource) osource.value = str;
  181. $Obj('mysource').style.display = 'none';
  182. ChangeFullDiv('hide');
  183. }
  184. function PutWriter(str) {
  185. var owriter = $Obj('writer');
  186. if (owriter) owriter.value = str;
  187. $Obj('mywriter').style.display = 'none';
  188. ChangeFullDiv('hide');
  189. }
  190. // 增加选择投票内容
  191. function PutVote(str) {
  192. var ovote = $Obj('voteid');
  193. if (ovote) {
  194. ovote.value = str;
  195. tb_remove(false);
  196. } else {
  197. parent.document.form1.voteid.value = str;
  198. tb_remove(true);
  199. }
  200. }
  201. function ClearDivCt(objname) {
  202. if (!$Obj(objname)) return;
  203. $Obj(objname).innerHTML = '';
  204. $Obj(objname).style.display = 'none';
  205. ChangeFullDiv("hide");
  206. }
  207. function ChangeFullDiv(showhide, screenheigt) {
  208. var newobj = $Obj('fullpagediv');
  209. if (showhide == 'show') {
  210. if (!newobj) {
  211. newobj = document.createElement("DIV");
  212. newobj.id = 'fullpagediv';
  213. newobj.style.position = 'absolute';
  214. newobj.className = 'fullpagediv';
  215. newobj.style.height = document.body.clientHeight + 50 + 'px';
  216. document.body.appendChild(newobj);
  217. }
  218. else {
  219. newobj.style.display = 'block';
  220. }
  221. }
  222. else {
  223. if (newobj) newobj.style.display = 'none';
  224. }
  225. }
  226. function SelectSource(e) {
  227. LoadNewDiv(e, 'article_select_sw.php?t=source&k=8&rnd=' + Math.random(), 'mysource');
  228. //ChangeFullDiv('show');
  229. }
  230. function SelectWriter(e) {
  231. LoadNewDiv(e, 'article_select_sw.php?t=writer&k=8&rnd=' + Math.random(), 'mywriter');
  232. //ChangeFullDiv('show');
  233. }
  234. function LoadNewDiv(e, surl, oname) {
  235. var pxStr = '';
  236. if ($Nav() == 'IE') {
  237. var posLeft = window.event.clientX - 20;
  238. var posTop = window.event.clientY - 30;
  239. // IE下scrollTop的兼容性问题
  240. var scrollTop = document.documentElement.scrollTop || window.pageYOffset;
  241. if (typeof (scrollTop) == 'undefined') scrollTop = document.body.scrollTop;
  242. posTop += scrollTop;
  243. }
  244. else {
  245. var posLeft = e.pageX - 20;
  246. var posTop = e.pageY - 30;
  247. pxStr = 'px';
  248. }
  249. posLeft = posLeft - 100;
  250. var newobj = $Obj(oname);
  251. if (!newobj) {
  252. newobj = document.createElement("DIV");
  253. newobj.id = oname;
  254. newobj.style.position = 'absolute';
  255. newobj.className = oname;
  256. newobj.className += ' dlgws';
  257. newobj.style.top = posTop + pxStr;
  258. newobj.style.left = posLeft + pxStr;
  259. document.body.appendChild(newobj);
  260. }
  261. else {
  262. newobj.style.display = "block";
  263. }
  264. if (newobj.innerHTML.length < 10) {
  265. var myajax = new DedeAjax(newobj);
  266. myajax.SendGet(surl);
  267. }
  268. }
  269. function TestHasTitle(e) {
  270. LoadNewDiv2(e, 'article_test_title.php?t=' + $Obj('title').value, 'mytitle', "dlgTesttitle");
  271. }
  272. function LoadNewDiv2(e, surl, oname, dlgcls) {
  273. var posLeft = 300;
  274. var posTop = 50;
  275. var newobj = $Obj(oname);
  276. if (!newobj) {
  277. newobj = document.createElement("DIV");
  278. newobj.id = oname;
  279. newobj.style.position = 'absolute';
  280. newobj.className = dlgcls;
  281. newobj.style.top = posTop;
  282. newobj.style.left = posLeft;
  283. newobj.style.display = 'none';
  284. document.body.appendChild(newobj);
  285. }
  286. newobj.innerHTML = '';
  287. var myajax = new DedeAjax(newobj);
  288. myajax.SendGet2(surl);
  289. if (newobj.innerHTML == '') newobj.style.display = 'none';
  290. else newobj.style.display = 'block';
  291. jQuery(newobj).css('top', '50px').css('left', '300px');
  292. DedeXHTTP = null;
  293. }
  294. function ShowUrlTr() {
  295. var jumpTest = $Obj('flagsj');
  296. var jtr = $Obj('redirecturltr');
  297. var jf = $Obj('redirecturl');
  298. if (jumpTest.checked) jtr.style.display = "block";
  299. else {
  300. jf.value = '';
  301. jtr.style.display = "none";
  302. }
  303. }
  304. function ShowUrlTrEdit() {
  305. ShowUrlTr();
  306. var jumpTest = $Obj('isjump');
  307. var rurl = $Obj('redirecturl');
  308. if (!jumpTest.checked) rurl.value = "";
  309. }
  310. function CkRemote() {
  311. document.getElementById('picname').value = '';
  312. }
  313. //载入指定宽高的AJAX窗体
  314. function LoadQuickDiv(e, surl, oname, w, h) {
  315. if ($Nav() == 'IE') {
  316. if (window.event) {
  317. var posLeft = window.event.clientX - 20;
  318. var posTop = window.event.clientY - 30;
  319. }
  320. else {
  321. var posLeft = e.clientX - 20;
  322. var posTop = e.clientY + 30;
  323. }
  324. }
  325. else {
  326. var posLeft = e.pageX - 20;
  327. var posTop = e.pageY - 30;
  328. }
  329. posTop += MyGetScrollTop();
  330. posLeft = posLeft - 400;
  331. //固定位置的高度
  332. if (fixupPos) {
  333. posLeft = posTop = 50;
  334. }
  335. var newobj = $Obj(oname);
  336. if (!newobj) {
  337. newobj = document.createElement("DIV");
  338. newobj.id = oname;
  339. newobj.style.position = 'absolute';
  340. newobj.className = 'pubdlg';
  341. newobj.style.width = w;
  342. newobj.style.height = h + 30;
  343. document.body.appendChild(newobj);
  344. }
  345. if (posTop > 500) posTop = 500;
  346. if (posLeft < 50) posLeft = 50;
  347. newobj.style.minWidth = "450px";
  348. newobj.style.top = posTop + "px";
  349. newobj.style.left = posLeft + "px";
  350. newobj.innerHTML = '<div style="margin-top:10px;margin-left:10px;"><img src="images/loadinglit.gif" /> Loading...</div>';
  351. newobj.style.display = 'block';
  352. var myajax = new DedeAjax(newobj);
  353. myajax.SendGet(surl);
  354. fixupPos = false;
  355. }
  356. function MyGetScrollTop() {
  357. return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
  358. }
  359. //通用事件获取接口
  360. function getEvent() {
  361. if ($Nav() == 'IE') return window.event;
  362. func = getEvent.caller;
  363. while (func != null) {
  364. var arg0 = func.arguments[0];
  365. if (arg0) {
  366. if ((arg0.constructor == Event || arg0.constructor == MouseEvent)
  367. || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
  368. return arg0;
  369. }
  370. }
  371. func = func.caller;
  372. }
  373. return null;
  374. }
  375. //模拟ondrop事件相关代码
  376. /*----------------------------
  377. leftLeaning = 300;
  378. 如果对象内容固定,用onmousedown=DropStart去除底下的DropStop
  379. newobj.ondblclick = DropStart;
  380. newobj.onmousemove = DropMove;
  381. newobj.onmousedown = DropStop;
  382. ----------------------------*/
  383. function DropStart() {
  384. this.style.cursor = 'move';
  385. }
  386. function DropStop() {
  387. this.style.cursor = 'default';
  388. }
  389. function DropMove() {
  390. if (this.style.cursor != 'move') return;
  391. var event = getEvent();
  392. if ($Nav() == 'IE') {
  393. var posLeft = event.clientX - 20;
  394. var posTop = event.clientY - 30;
  395. posTop += document.body.scrollTop;
  396. }
  397. else {
  398. var posLeft = event.pageX - 20;
  399. var posTop = event.pageY - 30;
  400. }
  401. this.style.top = posTop;
  402. this.style.left = posLeft - leftLeaning;
  403. }
  404. //对指定的元素绑定move事件
  405. /*-----------------------------
  406. onmousemove="DropMoveHand('divname', 225);"
  407. onmousedown="DropStartHand();"
  408. onmouseup="DropStopHand();"
  409. -----------------------------*/
  410. function DropStartHand() {
  411. canMove = (canMove ? false : true);
  412. }
  413. function DropStopHand() {
  414. canMove = false;
  415. }
  416. function DropMoveHand(objid, mleftLeaning) {
  417. var event = getEvent();
  418. var obj = $Obj(objid);
  419. if (!canMove) return;
  420. if ($Nav() == 'IE') {
  421. var posLeft = event.clientX - 20;
  422. var posTop = event.clientY - 20;
  423. posTop += window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  424. }
  425. else {
  426. var posLeft = event.pageX - 20;
  427. var posTop = event.pageY - 20;
  428. }
  429. obj.style.top = posTop + "px";
  430. obj.style.left = posLeft - mleftLeaning + "px";
  431. }
  432. //复制内容到剪切板
  433. function copyToClipboard(txt) {
  434. if (txt == null || txt == '') {
  435. alert("没有选择任何内容!");
  436. return;
  437. }
  438. if (window.clipboardData) {
  439. window.clipboardData.clearData();
  440. window.clipboardData.setData("Text", txt);
  441. }
  442. else if (navigator.userAgent.indexOf('Opera') != -1) {
  443. window.location = txt;
  444. }
  445. else {
  446. try {
  447. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  448. } catch (e) {
  449. alert("被浏览器拒绝!\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");
  450. }
  451. var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
  452. if (!clip) return;
  453. var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
  454. if (!trans) return;
  455. trans.addDataFlavor('text/unicode');
  456. var str = new Object();
  457. var len = new Object();
  458. var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  459. var copytext = txt;
  460. str.data = copytext;
  461. trans.setTransferData("text/unicode", str, copytext.length * 2);
  462. var clipid = Components.interfaces.nsIClipboard;
  463. if (!clip) return false;
  464. clip.setData(trans, null, clipid.kGlobalClipboard);
  465. }
  466. }
  467. function getSelTxt() {
  468. var g, r;
  469. if (document.all) {
  470. g = document.selection.createRange().text;
  471. } else {
  472. g = document.getSelection();
  473. }
  474. return g;
  475. }
  476. //显示栏目Map地图
  477. function ShowCatMap(e, obj, cid, targetId, oldvalue) {
  478. fixupPos = true;
  479. LoadQuickDiv(e, 'archives_do.php?dopost=getCatMap&targetid=' + targetId + '&channelid=' + cid + '&oldvalue=' + oldvalue + '&rnd=' + Math.random(), 'getCatMap', '700px', '500px');
  480. ChangeFullDiv('show');
  481. }
  482. function getSelCat(targetId) {
  483. var selBox = document.quicksel.seltypeid;
  484. var targetObj = $Obj(targetId);
  485. var selvalue = '';
  486. //副栏目(多选)
  487. if (targetId == 'typeid2') {
  488. var j = 0;
  489. for (var i = 0; i < selBox.length; i++) {
  490. if (selBox[i].checked) {
  491. j++;
  492. if (j == 10) break;
  493. selvalue += (selvalue == '' ? selBox[i].value : ',' + selBox[i].value);
  494. }
  495. }
  496. if (targetObj) targetObj.value = selvalue;
  497. }
  498. //主栏目(单选)
  499. else {
  500. if (selBox) {
  501. for (var i = 0; i < selBox.length; i++) {
  502. if (selBox[i].checked) selvalue = selBox[i].value;
  503. }
  504. }
  505. if (selvalue == '') {
  506. alert('你没有选中任何项目!');
  507. return;
  508. }
  509. if (targetObj) {
  510. for (var j = 0; j < targetObj.length; j++) {
  511. op = targetObj.options[j];
  512. if (op.value == selvalue) op.selected = true;
  513. }
  514. }
  515. }
  516. HideObj("getCatMap");
  517. ChangeFullDiv("hide");
  518. }
  519. function getElementLeft(element) {
  520. var actualLeft = element.offsetLeft;
  521. var current = element.offsetParent;
  522. while (current !== null) {
  523. actualLeft += current.offsetLeft;
  524. current = current.offsetParent;
  525. }
  526. return actualLeft;
  527. }
  528. function getElementTop(element) {
  529. var actualTop = element.offsetTop;
  530. var current = element.offsetParent;
  531. while (current !== null) {
  532. actualTop += current.offsetTop;
  533. current = current.offsetParent;
  534. }
  535. return actualTop;
  536. }
  537. // Copyright 2020 The MuEMS Authors. All rights reserved.
  538. // license that can be found in the LICENSE file.
  539. // -----msgbox-------------------------------------
  540. // 生成一个随机ID
  541. function guid() {
  542. function S4() {
  543. return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  544. }
  545. return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
  546. }
  547. // 显示对话框,动态创建modal并显示,退出自动销毁窗体
  548. // args是以下结构体
  549. /*
  550. args = {
  551. title : "", // 标题,默认是MuEMS
  552. footer : "", // 底部按钮,可以自定义按钮
  553. noClose : false, // 是否显示右上角关闭按钮,默认显示
  554. }
  555. */
  556. // 函数会返回一个modalID,通过这个ID可自已定义一些方法
  557. // 这里用到了一个展开语法
  558. // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax
  559. function ShowMsg(content, ...args) {
  560. title = "DedeBIZ信息提示";
  561. if (typeof content == "undefined") content = "";
  562. modalID = guid();
  563. var footer = `<button type="button" class="btn btn-primary" onClick="CloseModal(\'GKModal${modalID}\')">Ok</button>`;
  564. var noClose = false;
  565. if (args.length == 1) {
  566. // 存在args参数
  567. if (typeof args[0].title !== 'undefined' && args[0].title != "") {
  568. title = args[0].title;
  569. }
  570. if (typeof args[0].footer !== 'undefined' && args[0].footer != "") {
  571. footer = args[0].footer;
  572. }
  573. if (typeof args[0].noClose !== 'undefined' && args[0].noClose == true) {
  574. noClose = true;
  575. }
  576. }
  577. footer = footer.replace("~modalID~", modalID);
  578. content = content.replace("~modalID~", modalID);
  579. var modal = `<div id="GKModal${modalID}" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="GKModalLabel${modalID}" aria-hidden="true">
  580. <div class="modal-dialog" role="document">
  581. <div class="modal-content"><div class="modal-header">
  582. <h5 class="modal-title" id="GKModalLabel${modalID}">${title}</h5>`;
  583. if (!noClose) {
  584. modal += `<button type="button" class="close" data-dismiss="modal" aria-label="Close">
  585. <span aria-hidden="true">&times;</span>
  586. </button>`;
  587. }
  588. modal += `</div><div class="modal-body">${content}</div><div class="modal-footer">${footer}</div></div></div></div>`;
  589. $("body").append(modal)
  590. $("#GKModal" + modalID).modal({
  591. backdrop: 'static',
  592. show: true
  593. });
  594. $("#GKModal" + modalID).on('hidden.bs.modal', function (e) {
  595. $("#GKModal" + modalID).remove();
  596. })
  597. return modalID;
  598. }
  599. // 隐藏并销毁modal
  600. function CloseModal(modalID) {
  601. $("#" + modalID).modal('hide');
  602. $("#" + modalID).on('hidden.bs.modal', function (e) {
  603. if ($("#" + modalID).length > 0) {
  604. $("#" + modalID).remove();
  605. }
  606. })
  607. }
  608. // 获取缩略图
  609. var litpicImgSrc = "";
  610. var litpicImg = "";
  611. var currentCID = 0;
  612. var mdlCropperID = "";
  613. var pubAt = 0;
  614. var optCropper = {
  615. preview: ".pv",
  616. crop: function (e) {
  617. $("#cropWidth").text(Math.round(e.detail.height));
  618. $("#cropHeight").text(Math.round(e.detail.width));
  619. var dataUrl = $(this).cropper("getCroppedCanvas")
  620. .toDataURL();
  621. litpicImg = dataUrl;
  622. $("#litPic").attr("src", litpicImg);
  623. $("#litpic_b64").val(litpicImg);
  624. },
  625. aspectRatio: 4 / 3,
  626. // 拖动截取缩略图后,截取的缩略图更新到imageItems中
  627. cropend: function (data) {
  628. // 这里的ID要单独取出来
  629. var dataUrl = $(this).cropper("getCroppedCanvas")
  630. .toDataURL();
  631. litpicImg = dataUrl;
  632. $("#litPic").attr("src", litpicImg);
  633. $("#litpic_b64").val(litpicImg);
  634. }
  635. }
  636. var cropperAspectRatio = {
  637. 0: 16 / 9,
  638. 1: 4 / 3,
  639. 2: 1 / 1,
  640. 3: 2 / 3,
  641. 4: NaN,
  642. }
  643. function setAspectRatio(ar) {
  644. var opts = optCropper;
  645. opts.aspectRatio = cropperAspectRatio[ar];
  646. $("#cropImg" + mdlCropperID).cropper('destroy').cropper(opts);
  647. }
  648. function useDefault(modalID) {
  649. $("#litpic_b64").val(litpicImgSrc);
  650. $("#litPic").attr("src", litpicImgSrc);
  651. CloseModal('GKModal' + modalID);
  652. }
  653. $(document).ready(function () {
  654. $("#btnClearAll").click(function (event) {
  655. litpicImgSrc = "";
  656. litpicImg = "";
  657. $("#litpic_b64").val(litpicImg);
  658. $("#litPic").attr("src", "../static/defaultpic.gif");
  659. })
  660. // 添加图片
  661. $("#iptAddImages").change(function (event) {
  662. var files = event.target.files;
  663. for (var i = 0, f; f = files[i]; i++) {
  664. // 如果不是图片忽略
  665. if (!f.type.match('image.*')) {
  666. continue;
  667. }
  668. // 将图片渲染到浏览器
  669. var reader = new FileReader();
  670. reader.onload = (function (theFile) {
  671. return function (e) {
  672. litpicImgSrc = e.target.result;
  673. SetThumb(litpicImgSrc);
  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-secondary'>使用原图</a> <a href='?' class='btn btn-secondary' data-dismiss='modal' aria-label='Close'>确定</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. '" width=200><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. })