util.js 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. (function(window) {
  2. var util = {};
  3. util.tomedia = function(src, forcelocal){
  4. if(src.indexOf('http://') == 0 || src.indexOf('https://') == 0 || src.indexOf('./resource') == 0) {
  5. return src;
  6. } else if(src.indexOf('./addons') == 0) {
  7. var url=window.document.location.href;
  8. var pathName = window.document.location.pathname;
  9. var pos = url.indexOf(pathName);
  10. var host = url.substring(0,pos);
  11. if (src.substr(0,1)=='.') {
  12. src=src.substr(1);
  13. }
  14. return host + src;
  15. } else {
  16. if(!forcelocal) {
  17. return window.sysinfo.attachurl + src;
  18. } else {
  19. return window.sysinfo.attachurl_local + src;
  20. }
  21. }
  22. };
  23. util.clip = function(elm, str) {
  24. if(elm.clip) {
  25. return;
  26. }
  27. require(['jquery.zclip'], function(){
  28. $(elm).zclip({
  29. path: '/web/resource/components/zclip/ZeroClipboard.swf',
  30. copy: str,
  31. afterCopy: function(){
  32. var obj = $('<em> &nbsp; <span class="label label-success"><i class="fa fa-check-circle"></i> 复制成功</span></em>');
  33. var enext = $(elm).next().html();
  34. if (!enext || enext.indexOf('&nbsp; <span class="label label-success"><i class="fa fa-check-circle"></i> 复制成功</span>')<0) {
  35. $(elm).after(obj);
  36. }
  37. setTimeout(function(){
  38. obj.remove();
  39. }, 2000);
  40. }
  41. });
  42. elm.clip = true;
  43. });
  44. };
  45. util.colorpicker = function(elm, callback) {
  46. require(['colorpicker'], function(){
  47. $(elm).spectrum({
  48. className : "colorpicker",
  49. showInput: true,
  50. showInitial: true,
  51. showPalette: true,
  52. maxPaletteSize: 10,
  53. preferredFormat: "hex",
  54. change: function(color) {
  55. if($.isFunction(callback)) {
  56. callback(color);
  57. }
  58. },
  59. palette: [
  60. ["rgb(0, 0, 0)", "rgb(67, 67, 67)", "rgb(102, 102, 102)", "rgb(153, 153, 153)","rgb(183, 183, 183)",
  61. "rgb(204, 204, 204)", "rgb(217, 217, 217)","rgb(239, 239, 239)", "rgb(243, 243, 243)", "rgb(255, 255, 255)"],
  62. ["rgb(152, 0, 0)", "rgb(255, 0, 0)", "rgb(255, 153, 0)", "rgb(255, 255, 0)", "rgb(0, 255, 0)",
  63. "rgb(0, 255, 255)", "rgb(74, 134, 232)", "rgb(0, 0, 255)", "rgb(153, 0, 255)", "rgb(255, 0, 255)"],
  64. ["rgb(230, 184, 175)", "rgb(244, 204, 204)", "rgb(252, 229, 205)", "rgb(255, 242, 204)", "rgb(217, 234, 211)",
  65. "rgb(208, 224, 227)", "rgb(201, 218, 248)", "rgb(207, 226, 243)", "rgb(217, 210, 233)", "rgb(234, 209, 220)",
  66. "rgb(221, 126, 107)", "rgb(234, 153, 153)", "rgb(249, 203, 156)", "rgb(255, 229, 153)", "rgb(182, 215, 168)",
  67. "rgb(162, 196, 201)", "rgb(164, 194, 244)", "rgb(159, 197, 232)", "rgb(180, 167, 214)", "rgb(213, 166, 189)",
  68. "rgb(204, 65, 37)", "rgb(224, 102, 102)", "rgb(246, 178, 107)", "rgb(255, 217, 102)", "rgb(147, 196, 125)",
  69. "rgb(118, 165, 175)", "rgb(109, 158, 235)", "rgb(111, 168, 220)", "rgb(142, 124, 195)", "rgb(194, 123, 160)",
  70. "rgb(166, 28, 0)", "rgb(204, 0, 0)", "rgb(230, 145, 56)", "rgb(241, 194, 50)", "rgb(106, 168, 79)",
  71. "rgb(69, 129, 142)", "rgb(60, 120, 216)", "rgb(61, 133, 198)", "rgb(103, 78, 167)", "rgb(166, 77, 121)",
  72. "rgb(133, 32, 12)", "rgb(153, 0, 0)", "rgb(180, 95, 6)", "rgb(191, 144, 0)", "rgb(56, 118, 29)",
  73. "rgb(19, 79, 92)", "rgb(17, 85, 204)", "rgb(11, 83, 148)", "rgb(53, 28, 117)", "rgb(116, 27, 71)",
  74. "rgb(91, 15, 0)", "rgb(102, 0, 0)", "rgb(120, 63, 4)", "rgb(127, 96, 0)", "rgb(39, 78, 19)",
  75. "rgb(12, 52, 61)", "rgb(28, 69, 135)", "rgb(7, 55, 99)", "rgb(32, 18, 77)", "rgb(76, 17, 48)"]
  76. ]
  77. });
  78. });
  79. }
  80. util.uploadMultiPictures = function(callback, options){
  81. var opts = {
  82. type :'image',
  83. tabs : {
  84. 'upload' : 'active',
  85. 'browser' : '',
  86. 'crawler' : ''
  87. },
  88. path : '',
  89. direct : false,
  90. multi : true,
  91. dest_dir : ''
  92. };
  93. opts = $.extend({}, opts, options);
  94. require(['jquery', 'fileUploader'], function($, fileUploader){
  95. fileUploader.show(function(images){
  96. if(images.length > 0){
  97. for (i in images) {
  98. images[i].filename = images[i].attachment;
  99. }
  100. if($.isFunction(callback)){
  101. callback(images);
  102. }
  103. }
  104. }, opts);
  105. });
  106. }
  107. util.editor = function(e, t, o) {
  108. if (!e && "" != e) return "";
  109. var n = "string" == typeof e ? e: e.id;
  110. n || (n = "editor-" + Math.random(), e.id = n);
  111. var a = {
  112. height: "200",
  113. dest_dir: "",
  114. image_limit: "1024",
  115. allow_upload_video: 1,
  116. audio_limit: "1024",
  117. callback: null
  118. };
  119. $.isFunction(t) && (t = {
  120. callback: t
  121. }),
  122. t = $.extend({},
  123. a, t),
  124. window.UEDITOR_HOME_URL = window.sysinfo.siteroot + "web/resource/components/ueditor/";
  125. var r = function(a, r) {
  126. var l = {
  127. autoClearinitialContent: !1,
  128. toolbars: [["fullscreen", "source", "preview", "|", "bold", "italic", "underline", "strikethrough", "forecolor", "backcolor", "|", "justifyleft", "justifycenter", "justifyright", "|", "insertorderedlist", "insertunorderedlist", "blockquote", "emotion", "link", "removeformat", "|", "rowspacingtop", "rowspacingbottom", "lineheight", "indent", "paragraph", "fontfamily", "fontsize", "|", "inserttable", "deletetable", "insertparagraphbeforetable", "insertrow", "deleterow", "insertcol", "deletecol", "mergecells", "mergeright", "mergedown", "splittocells", "splittorows", "splittocols", "|", "anchor", "map", "print", "drafts"]],
  129. elementPathEnabled: !1,
  130. catchRemoteImageEnable: !1,
  131. initialFrameHeight: t.height,
  132. focus: !1,
  133. maximumWords: 9999999999999
  134. };
  135. o && (l.toolbars = [["fullscreen", "source", "preview", "|", "bold", "italic", "underline", "strikethrough", "forecolor", "backcolor", "|", "justifyleft", "justifycenter", "justifyright", "|", "insertorderedlist", "insertunorderedlist", "blockquote", "emotion", "link", "removeformat", "|", "rowspacingtop", "rowspacingbottom", "lineheight", "indent", "paragraph", "fontfamily", "fontsize", "|", "inserttable", "deletetable", "insertparagraphbeforetable", "insertrow", "deleterow", "insertcol", "deletecol", "mergecells", "mergeright", "mergedown", "splittocells", "splittorows", "splittocols", "|", "anchor", "print", "drafts"]]);
  136. var s = {
  137. type: "image",
  138. direct: !1,
  139. multiple: !0,
  140. tabs: {
  141. upload: "active",
  142. browser: "",
  143. crawler: ""
  144. },
  145. path: "",
  146. dest_dir: t.dest_dir,
  147. global: !1,
  148. thumb: !1,
  149. width: 0,
  150. fileSizeLimit: 1024 * t.image_limit
  151. };
  152. let rand_str = getRandom();
  153. if (a.registerUI("myinsertimage",
  154. function(e, t) {
  155. e.registerCommand(t, {
  156. execCommand: function() {
  157. r.upload_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.upload&upload_type=`);
  158. r.image_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.getImage&local=local&group_id=-999`);
  159. r.fetch_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.fetch`);
  160. r.delet_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.delete`);
  161. r.video_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.getVideo&local=local&type=video&pagesize=5`);
  162. r.show(function(t) {
  163. if (0 != t.length) if (1 == t.length) e.execCommand("insertimage", {
  164. src: t[0].url,
  165. _src: t[0].attachment,
  166. width: "100%",
  167. alt: t[0].filename
  168. });
  169. else {
  170. var o = [];
  171. for (i in t) o.push({
  172. src: t[i].url,
  173. _src: t[i].attachment,
  174. width: "100%",
  175. alt: t[i].filename
  176. });
  177. e.execCommand("insertimage", o)
  178. }
  179. },
  180. s)
  181. }
  182. });
  183. var o = new a.ui.Button({
  184. name: "插入图片",
  185. title: "插入图片",
  186. cssRules: "background-position: -726px -77px",
  187. onclick: function() {
  188. e.execCommand(t)
  189. }
  190. });
  191. return e.addListener("selectionchange",
  192. function() {
  193. var i = e.queryCommandState(t); - 1 == i ? (o.setDisabled(!0), o.setChecked(!1)) : (o.setDisabled(!1), o.setChecked(i))
  194. }),
  195. o
  196. },
  197. 19), a.registerUI("myinsertvideo",
  198. function(e, i) {
  199. e.registerCommand(i, {
  200. execCommand: function() {
  201. r.show(function(t) {
  202. if (t) {
  203. var i = t.isRemote ? "iframe": "video";
  204. e.execCommand("insertvideo", {
  205. url: t.url,
  206. width: 300,
  207. height: 200
  208. },
  209. i)
  210. }
  211. },
  212. {
  213. fileSizeLimit: 1024 * t.audio_limit,
  214. type: "video",
  215. allowUploadVideo: t.allow_upload_video,
  216. netWorkVideo: !0
  217. })
  218. }
  219. });
  220. var o = new a.ui.Button({
  221. name: "插入视频",
  222. title: "插入视频",
  223. cssRules: "background-position: -320px -20px",
  224. onclick: function() {
  225. e.execCommand(i)
  226. }
  227. });
  228. return e.addListener("selectionchange",
  229. function() {
  230. var t = e.queryCommandState(i); - 1 == t ? (o.setDisabled(!0), o.setChecked(!1)) : (o.setDisabled(!1), o.setChecked(t))
  231. }),
  232. o
  233. },
  234. 20), n) {
  235. var d = a.getEditor(n, l);
  236. $("#" + n).removeClass("form-control"),
  237. $("#" + n).data("editor", d),
  238. $("#" + n).parents("form").submit(function() {
  239. d.queryCommandState("source") && d.execCommand("source")
  240. }),
  241. $.isFunction(t.callback) && t.callback(e, d)
  242. }
  243. };
  244. require(["ueditor", "fileUploader"],
  245. function(e, t) {
  246. r(e, t)
  247. },
  248. function(e) {
  249. var t = e.requireModules && e.requireModules[0];
  250. "ueditor" === t && (requirejs.undef(t), requirejs.config({
  251. paths: {
  252. ueditor: "../../components/ueditor/ueditor.all.min"
  253. },
  254. shim: {
  255. ueditor: {
  256. deps: ["./resource/components/ueditor/third-party/zeroclipboard/ZeroClipboard.min.js", "./resource/components/ueditor/ueditor.config.js"],
  257. exports: "UE",
  258. init: function(e) {
  259. window.ZeroClipboard = e
  260. }
  261. }
  262. }
  263. }), require(["ueditor", "fileUploader"],
  264. function(e, t) {
  265. r(e, t)
  266. }))
  267. })
  268. },
  269. // target dom 对象
  270. util.emotion = function(elm, target, callback) {
  271. require(['jquery.caret', 'bootstrap', 'css!../../components/emotions/emotions.css'],function($){
  272. $(function() {
  273. var emotions_html = '<table class="emotions" cellspacing="0" cellpadding="0"><tbody><tr><td><div class="eItem" style="background-position:0px 0;" data-title="微笑" data-code="微笑" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/0.gif"></div></td><td><div class="eItem" style="background-position:-24px 0;" data-title="撇嘴" data-code="撇嘴" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/1.gif"></div></td><td><div class="eItem" style="background-position:-48px 0;" data-title="色" data-code="色" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/2.gif"></div></td><td><div class="eItem" style="background-position:-72px 0;" data-title="发呆" data-code="发呆" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/3.gif"></div></td><td><div class="eItem" style="background-position:-96px 0;" data-title="得意" data-code="得意" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/4.gif"></div></td><td><div class="eItem" style="background-position:-120px 0;" data-title="流泪" data-code="流泪" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/5.gif"></div></td><td><div class="eItem" style="background-position:-144px 0;" data-title="害羞" data-code="害羞" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/6.gif"></div></td><td><div class="eItem" style="background-position:-168px 0;" data-title="闭嘴" data-code="闭嘴" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/7.gif"></div></td><td><div class="eItem" style="background-position:-192px 0;" data-title="睡" data-code="睡" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/8.gif"></div></td><td><div class="eItem" style="background-position:-216px 0;" data-title="大哭" data-code="大哭" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/9.gif"></div></td><td><div class="eItem" style="background-position:-240px 0;" data-title="尴尬" data-code="尴尬" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/10.gif"></div></td><td><div class="eItem" style="background-position:-264px 0;" data-title="发怒" data-code="发怒" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/11.gif"></div></td><td><div class="eItem" style="background-position:-288px 0;" data-title="调皮" data-code="调皮" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/12.gif"></div></td><td><div class="eItem" style="background-position:-312px 0;" data-title="呲牙" data-code="呲牙" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/13.gif"></div></td><td><div class="eItem" style="background-position:-336px 0;" data-title="惊讶" data-code="惊讶" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/14.gif"></div></td></tr><tr><td><div class="eItem" style="background-position:-360px 0;" data-title="难过" data-code="难过" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/15.gif"></div></td><td><div class="eItem" style="background-position:-384px 0;" data-title="酷" data-code="酷" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/16.gif"></div></td><td><div class="eItem" style="background-position:-408px 0;" data-title="冷汗" data-code="冷汗" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/17.gif"></div></td><td><div class="eItem" style="background-position:-432px 0;" data-title="抓狂" data-code="抓狂" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/18.gif"></div></td><td><div class="eItem" style="background-position:-456px 0;" data-title="吐" data-code="吐" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/19.gif"></div></td><td><div class="eItem" style="background-position:-480px 0;" data-title="偷笑" data-code="偷笑" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/20.gif"></div></td><td><div class="eItem" style="background-position:-504px 0;" data-title="可爱" data-code="可爱" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/21.gif"></div></td><td><div class="eItem" style="background-position:-528px 0;" data-title="白眼" data-code="白眼" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/22.gif"></div></td><td><div class="eItem" style="background-position:-552px 0;" data-title="傲慢" data-code="傲慢" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/23.gif"></div></td><td><div class="eItem" style="background-position:-576px 0;" data-title="饥饿" data-code="饥饿" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/24.gif"></div></td><td><div class="eItem" style="background-position:-600px 0;" data-title="困" data-code="困" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/25.gif"></div></td><td><div class="eItem" style="background-position:-624px 0;" data-title="惊恐" data-code="惊恐" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/26.gif"></div></td><td><div class="eItem" style="background-position:-648px 0;" data-title="流汗" data-code="流汗" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/27.gif"></div></td><td><div class="eItem" style="background-position:-672px 0;" data-title="憨笑" data-code="憨笑" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/28.gif"></div></td><td><div class="eItem" style="background-position:-696px 0;" data-title="大兵" data-code="大兵" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/29.gif"></div></td></tr><tr><td><div class="eItem" style="background-position:-720px 0;" data-title="奋斗" data-code="奋斗" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/30.gif"></div></td><td><div class="eItem" style="background-position:-744px 0;" data-title="咒骂" data-code="咒骂" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/31.gif"></div></td><td><div class="eItem" style="background-position:-768px 0;" data-title="疑问" data-code="疑问" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/32.gif"></div></td><td><div class="eItem" style="background-position:-792px 0;" data-title="嘘" data-code="嘘" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/33.gif"></div></td><td><div class="eItem" style="background-position:-816px 0;" data-title="晕" data-code="晕" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/34.gif"></div></td><td><div class="eItem" style="background-position:-840px 0;" data-title="折磨" data-code="折磨" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/35.gif"></div></td><td><div class="eItem" style="background-position:-864px 0;" data-title="衰" data-code="衰" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/36.gif"></div></td><td><div class="eItem" style="background-position:-888px 0;" data-title="骷髅" data-code=":!!!" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/37.gif"></div></td><td><div class="eItem" style="background-position:-912px 0;" data-title="敲打" data-code="敲打" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/38.gif"></div></td><td><div class="eItem" style="background-position:-936px 0;" data-title="再见" data-code="再见" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/39.gif"></div></td><td><div class="eItem" style="background-position:-960px 0;" data-title="擦汗" data-code="擦汗" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/40.gif"></div></td><td><div class="eItem" style="background-position:-984px 0;" data-title="抠鼻" data-code="抠鼻" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/41.gif"></div></td><td><div class="eItem" style="background-position:-1008px 0;" data-title="鼓掌" data-code="鼓掌" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/42.gif"></div></td><td><div class="eItem" style="background-position:-1032px 0;" data-title="糗大了" data-code="糗大了" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/43.gif"></div></td><td><div class="eItem" style="background-position:-1056px 0;" data-title="坏笑" data-code="坏笑" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/44.gif"></div></td></tr><tr><td><div class="eItem" style="background-position:-1080px 0;" data-title="左哼哼" data-code="左哼哼" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/45.gif"></div></td><td><div class="eItem" style="background-position:-1104px 0;" data-title="右哼哼" data-code="右哼哼" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/46.gif"></div></td><td><div class="eItem" style="background-position:-1128px 0;" data-title="哈欠" data-code="哈欠" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/47.gif"></div></td><td><div class="eItem" style="background-position:-1152px 0;" data-title="鄙视" data-code="鄙视" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/48.gif"></div></td><td><div class="eItem" style="background-position:-1176px 0;" data-title="委屈" data-code="委屈" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/49.gif"></div></td><td><div class="eItem" style="background-position:-1200px 0;" data-title="快哭了" data-code="快哭了" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/50.gif"></div></td><td><div class="eItem" style="background-position:-1224px 0;" data-title="阴险" data-code="阴险" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/51.gif"></div></td><td><div class="eItem" style="background-position:-1248px 0;" data-title="亲亲" data-code="亲亲" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/52.gif"></div></td><td><div class="eItem" style="background-position:-1272px 0;" data-title="吓" data-code="吓" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/53.gif"></div></td><td><div class="eItem" style="background-position:-1296px 0;" data-title="可怜" data-code="可怜" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/54.gif"></div></td><td><div class="eItem" style="background-position:-1320px 0;" data-title="菜刀" data-code="菜刀" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/55.gif"></div></td><td><div class="eItem" style="background-position:-1344px 0;" data-title="西瓜" data-code="西瓜" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/56.gif"></div></td><td><div class="eItem" style="background-position:-1368px 0;" data-title="啤酒" data-code="啤酒" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/57.gif"></div></td><td><div class="eItem" style="background-position:-1392px 0;" data-title="篮球" data-code="篮球" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/58.gif"></div></td><td><div class="eItem" style="background-position:-1416px 0;" data-title="乒乓" data-code="乒乓" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/59.gif"></div></td></tr><tr><td><div class="eItem" style="background-position:-1440px 0;" data-title="咖啡" data-code="咖啡" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/60.gif"></div></td><td><div class="eItem" style="background-position:-1464px 0;" data-title="饭" data-code="饭" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/61.gif"></div></td><td><div class="eItem" style="background-position:-1488px 0;" data-title="猪头" data-code="猪头" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/62.gif"></div></td><td><div class="eItem" style="background-position:-1512px 0;" data-title="玫瑰" data-code="玫瑰" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/63.gif"></div></td><td><div class="eItem" style="background-position:-1536px 0;" data-title="凋谢" data-code="凋谢" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/64.gif"></div></td><td><div class="eItem" style="background-position:-1560px 0;" data-title="示爱" data-code="示爱" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/65.gif"></div></td><td><div class="eItem" style="background-position:-1584px 0;" data-title="爱心" data-code="爱心" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/66.gif"></div></td><td><div class="eItem" style="background-position:-1608px 0;" data-title="心碎" data-code="心碎" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/67.gif"></div></td><td><div class="eItem" style="background-position:-1632px 0;" data-title="蛋糕" data-code="蛋糕" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/68.gif"></div></td><td><div class="eItem" style="background-position:-1656px 0;" data-title="闪电" data-code="闪电" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/69.gif"></div></td><td><div class="eItem" style="background-position:-1680px 0;" data-title="炸弹" data-code="炸弹" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/70.gif"></div></td><td><div class="eItem" style="background-position:-1704px 0;" data-title="刀" data-code="刀" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/71.gif"></div></td><td><div class="eItem" style="background-position:-1728px 0;" data-title="足球" data-code="足球" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/72.gif"></div></td><td><div class="eItem" style="background-position:-1752px 0;" data-title="瓢虫" data-code="瓢虫" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/73.gif"></div></td><td><div class="eItem" style="background-position:-1776px 0;" data-title="便便" data-code="便便" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/74.gif"></div></td></tr><tr><td><div class="eItem" style="background-position:-1800px 0;" data-title="月亮" data-code="月亮" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/75.gif"></div></td><td><div class="eItem" style="background-position:-1824px 0;" data-title="太阳" data-code="太阳" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/76.gif"></div></td><td><div class="eItem" style="background-position:-1848px 0;" data-title="礼物" data-code="礼物" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/77.gif"></div></td><td><div class="eItem" style="background-position:-1872px 0;" data-title="拥抱" data-code="拥抱" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/78.gif"></div></td><td><div class="eItem" style="background-position:-1896px 0;" data-title="强" data-code="强" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/79.gif"></div></td><td><div class="eItem" style="background-position:-1920px 0;" data-title="弱" data-code="弱" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/80.gif"></div></td><td><div class="eItem" style="background-position:-1944px 0;" data-title="握手" data-code="握手" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/81.gif"></div></td><td><div class="eItem" style="background-position:-1968px 0;" data-title="胜利" data-code="胜利" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/82.gif"></div></td><td><div class="eItem" style="background-position:-1992px 0;" data-title="抱拳" data-code="抱拳" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/83.gif"></div></td><td><div class="eItem" style="background-position:-2016px 0;" data-title="勾引" data-code="勾引" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/84.gif"></div></td><td><div class="eItem" style="background-position:-2040px 0;" data-title="拳头" data-code="拳头" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/85.gif"></div></td><td><div class="eItem" style="background-position:-2064px 0;" data-title="差劲" data-code="差劲" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/86.gif"></div></td><td><div class="eItem" style="background-position:-2088px 0;" data-title="爱你" data-code="爱你" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/87.gif"></div></td><td><div class="eItem" style="background-position:-2112px 0;" data-title="NO" data-code="NO" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/88.gif"></div></td><td><div class="eItem" style="background-position:-2136px 0;" data-title="OK" data-code="OK" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/89.gif"></div></td></tr><tr><td><div class="eItem" style="background-position:-2160px 0;" data-title="爱情" data-code="爱情" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/90.gif"></div></td><td><div class="eItem" style="background-position:-2184px 0;" data-title="飞吻" data-code="飞吻" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/91.gif"></div></td><td><div class="eItem" style="background-position:-2208px 0;" data-title="跳跳" data-code="跳跳" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/92.gif"></div></td><td><div class="eItem" style="background-position:-2232px 0;" data-title="发抖" data-code="发抖" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/93.gif"></div></td><td><div class="eItem" style="background-position:-2256px 0;" data-title="怄火" data-code="怄火" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/94.gif"></div></td><td><div class="eItem" style="background-position:-2280px 0;" data-title="转圈" data-code="转圈" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/95.gif"></div></td><td><div class="eItem" style="background-position:-2304px 0;" data-title="磕头" data-code="磕头" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/96.gif"></div></td><td><div class="eItem" style="background-position:-2328px 0;" data-title="回头" data-code="回头" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/97.gif"></div></td><td><div class="eItem" style="background-position:-2352px 0;" data-title="跳绳" data-code="跳绳" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/98.gif"></div></td><td><div class="eItem" style="background-position:-2376px 0;" data-title="挥手" data-code="挥手" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/99.gif"></div></td><td><div class="eItem" style="background-position:-2400px 0;" data-title="激动" data-code="激动" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/100.gif"></div></td><td><div class="eItem" style="background-position:-2424px 0;" data-title="街舞" data-code="街舞" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/101.gif"></div></td><td><div class="eItem" style="background-position:-2448px 0;" data-title="献吻" data-code="献吻" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/102.gif"></div></td><td><div class="eItem" style="background-position:-2472px 0;" data-title="左太极" data-code="左太极" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/103.gif"></div></td><td><div class="eItem" style="background-position:-2496px 0;" data-title="右太极" data-code="右太极" data-gifurl="http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/104.gif"></div></td></tr></tbody></table><div class="emotionsGif" style=""></div>';
  274. $(elm).popover({
  275. html: true,
  276. content: emotions_html,
  277. placement:"bottom"
  278. });
  279. $(elm).one('shown.bs.popover', function(){
  280. $(elm).next().mouseleave(function(){
  281. $(elm).popover('hide');
  282. });
  283. $(elm).next().delegate(".eItem", "mouseover", function(){
  284. var emo_img = '<img src="'+$(this).attr("data-gifurl")+'" alt="mo-'+$(this).attr("data-title")+'" />';
  285. var emo_txt = '/'+$(this).attr("data-code");
  286. $(elm).next().find(".emotionsGif").html(emo_img);
  287. });
  288. $(elm).next().delegate(".eItem", "click", function(){
  289. $(target).setCaret();
  290. var emo_txt = '/'+$(this).attr("data-code");
  291. $(target).insertAtCaret(emo_txt);
  292. $(elm).popover('hide');
  293. if($.isFunction(callback)) {
  294. callback(emo_txt, elm, target);
  295. }
  296. });
  297. });
  298. });
  299. });
  300. };
  301. util.loading = function() {
  302. var loadingid = 'modal-loading';
  303. var modalobj = $('#' + loadingid);
  304. if(modalobj.length == 0) {
  305. $(document.body).append('<div id="' + loadingid + '" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"></div>');
  306. modalobj = $('#' + loadingid);
  307. html =
  308. '<div class="modal-dialog">'+
  309. ' <div style="text-align:center; background-color: transparent;">'+
  310. ' <img style="width:48px; height:48px; margin-top:100px;" src="../attachment/images/global/loading.gif" title="正在努力加载...">'+
  311. ' </div>'+
  312. '</div>';
  313. modalobj.html(html);
  314. }
  315. modalobj.modal('show');
  316. modalobj.next().css('z-index', 999999);
  317. return modalobj;
  318. };
  319. util.loaded = function(){
  320. var loadingid = 'modal-loading';
  321. var modalobj = $('#' + loadingid);
  322. if(modalobj.length > 0){
  323. modalobj.modal('hide');
  324. }
  325. }
  326. util.dialog = function(title, content, footer, options) {
  327. if(!options) {
  328. options = {};
  329. }
  330. if(!options.containerName) {
  331. options.containerName = 'modal-message';
  332. }
  333. var modalobj = $('#' + options.containerName);
  334. if(modalobj.length == 0) {
  335. $(document.body).append('<div id="' + options.containerName + '" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"></div>');
  336. modalobj = $('#' + options.containerName);
  337. }
  338. html =
  339. '<div class="modal-dialog">'+
  340. ' <div class="modal-content">';
  341. if(title) {
  342. html +=
  343. '<div class="modal-header">'+
  344. ' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>'+
  345. ' <h3>' + title + '</h3>'+
  346. '</div>';
  347. }
  348. if(content) {
  349. if(!$.isArray(content)) {
  350. html += '<div class="modal-body">'+ content + '</div>';
  351. } else {
  352. html += '<div class="modal-body">正在加载中</div>';
  353. }
  354. }
  355. if(footer) {
  356. html +=
  357. '<div class="modal-footer">'+ footer + '</div>';
  358. }
  359. html += ' </div></div>';
  360. modalobj.html(html);
  361. if(content && $.isArray(content)) {
  362. var embed = function(c) {
  363. modalobj.find('.modal-body').html(c);
  364. };
  365. if(content.length == 2) {
  366. $.post(content[0], content[1]).success(embed);
  367. } else {
  368. $.get(content[0]).success(embed);
  369. }
  370. }
  371. return modalobj;
  372. };
  373. util.message = function(msg, redirect, type){
  374. if(!redirect && !type){
  375. type = 'info';
  376. }
  377. if($.inArray(type, ['success', 'error', 'info', 'warning']) == -1) {
  378. type = '';
  379. }
  380. if(type == '') {
  381. type = redirect == '' ? 'error' : 'success';
  382. }
  383. var icons = {
  384. success : 'check-circle',
  385. error :'times-circle',
  386. info : 'info-circle',
  387. warning : 'exclamation-triangle'
  388. };
  389. var p = '';
  390. if(redirect && redirect.length > 0){
  391. if(redirect == 'back'){
  392. p = '<p>[<a href="javascript:;" onclick="history.go(-1)">返回上一页</a>] &nbsp; [<a href="./?refresh">回首页</a>]</p>';
  393. } else if(redirect == 'refresh') {
  394. redirect = location.href;
  395. p = '<p><a href="' + redirect + '" target="main" data-dismiss="modal" aria-hidden="true">如果你的浏览器在 <span id="timeout"></span> 秒后没有自动跳转,请点击此链接</a></p>';
  396. } else {
  397. p = '<p><a href="' + redirect + '" target="main" data-dismiss="modal" aria-hidden="true">如果你的浏览器在 <span id="timeout"></span> 秒后没有自动跳转,请点击此链接</a></p>';
  398. }
  399. }
  400. var content =
  401. ' <i class="pull-left fa fa-4x fa-'+icons[type]+'"></i>'+
  402. ' <div class="pull-left"><p>'+ msg +'</p>' +
  403. p +
  404. ' </div>'+
  405. ' <div class="clearfix"></div>';
  406. var footer =
  407. ' <button type="button" class="btn btn-default" data-dismiss="modal">确认</button>';
  408. var modalobj = util.dialog('系统提示', content, footer, {'containerName' : 'modal-message'});
  409. modalobj.find('.modal-content').addClass('alert alert-'+type);
  410. if(redirect) {
  411. var timer = '';
  412. timeout = 3;
  413. modalobj.find("#timeout").html(timeout);
  414. modalobj.on('show.bs.modal', function(){doredirect();});
  415. modalobj.on('hide.bs.modal', function(){timeout = 0;doredirect(); });
  416. modalobj.on('hidden.bs.modal', function(){modalobj.remove();});
  417. function doredirect() {
  418. timer = setTimeout(function(){
  419. if (timeout <= 0) {
  420. modalobj.modal('hide');
  421. clearTimeout(timer);
  422. window.location.href = redirect;
  423. return;
  424. } else {
  425. timeout--;
  426. modalobj.find("#timeout").html(timeout);
  427. doredirect();
  428. }
  429. }, 1000);
  430. }
  431. }
  432. modalobj.modal('show');
  433. return modalobj;
  434. };
  435. util.map = function(val, callback){
  436. require(['map'], function(BMap){
  437. if(!val) {
  438. val = {};
  439. }
  440. if(!val.lng) {
  441. val.lng = 116.403851;
  442. }
  443. if(!val.lat) {
  444. val.lat = 39.915177;
  445. }
  446. var point = new BMap.Point(val.lng, val.lat);
  447. var geo = new BMap.Geocoder();
  448. var modalobj = $('#map-dialog');
  449. if(modalobj.length == 0) {
  450. var content =
  451. '<div class="form-group">' +
  452. '<div class="input-group">' +
  453. '<input type="text" class="form-control" placeholder="请输入地址来直接查找相关位置">' +
  454. '<div class="input-group-btn">' +
  455. '<button class="btn btn-default"><i class="icon-search"></i> 搜索</button>' +
  456. '</div>' +
  457. '</div>' +
  458. '</div>' +
  459. '<div id="map-container" style="height:400px;"></div>';
  460. var footer =
  461. '<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>' +
  462. '<button type="button" class="btn btn-primary">确认</button>';
  463. modalobj = util.dialog('请选择地点', content, footer, {containerName : 'map-dialog'});
  464. modalobj.find('.modal-dialog').css('width', '80%');
  465. modalobj.modal({'keyboard': false});
  466. map = util.map.instance = new BMap.Map('map-container');
  467. map.centerAndZoom(point, 12);
  468. map.enableScrollWheelZoom();
  469. map.enableDragging();
  470. map.enableContinuousZoom();
  471. map.addControl(new BMap.NavigationControl());
  472. map.addControl(new BMap.OverviewMapControl());
  473. marker = util.map.marker = new BMap.Marker(point);
  474. marker.setLabel(new BMap.Label('请您移动此标记,选择您的坐标!', {'offset': new BMap.Size(10,-20)}));
  475. map.addOverlay(marker);
  476. marker.enableDragging();
  477. marker.addEventListener('dragend', function(e){
  478. var point = marker.getPosition();
  479. geo.getLocation(point, function(address){
  480. modalobj.find('.input-group :text').val(address.address);
  481. });
  482. });
  483. function searchAddress(address) {
  484. geo.getPoint(address, function(point){
  485. map.panTo(point);
  486. marker.setPosition(point);
  487. marker.setAnimation(BMAP_ANIMATION_BOUNCE);
  488. setTimeout(function(){marker.setAnimation(null)}, 3600);
  489. });
  490. }
  491. modalobj.find('.input-group :text').keydown(function(e){
  492. if(e.keyCode == 13) {
  493. var kw = $(this).val();
  494. searchAddress(kw);
  495. }
  496. });
  497. modalobj.find('.input-group button').click(function(){
  498. var kw = $(this).parent().prev().val();
  499. searchAddress(kw);
  500. });
  501. }
  502. modalobj.off('shown.bs.modal');
  503. modalobj.on('shown.bs.modal', function(){
  504. marker.setPosition(point);
  505. map.panTo(marker.getPosition());
  506. });
  507. modalobj.find('button.btn-primary').off('click');
  508. modalobj.find('button.btn-primary').on('click', function(){
  509. if($.isFunction(callback)) {
  510. var point = util.map.marker.getPosition();
  511. geo.getLocation(point, function(address){
  512. var val = {lng: point.lng, lat: point.lat, label: address.address};
  513. callback(val);
  514. });
  515. }
  516. modalobj.modal('hide');
  517. });
  518. modalobj.modal('show');
  519. });
  520. }; // end of map
  521. util.iconBrowser = function(callback){
  522. var footer = '<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>';
  523. var modalobj = util.dialog('请选择图标',['/web/index.php?c=site&a=entry&m=yun_shop&do=8991&route=frame.icon.index&callback=selectIconComplete'],footer,{containerName:'icon-container'});
  524. modalobj.modal({'keyboard': false});
  525. modalobj.find('.modal-dialog').css({'width':'70%'});
  526. modalobj.find('.modal-body').css({'height':'70%','overflow-y':'scroll'});
  527. modalobj.modal('show');
  528. window.selectIconComplete = function(ico){
  529. if($.isFunction(callback)){
  530. callback(ico);
  531. modalobj.modal('hide');
  532. }
  533. };
  534. }; // end of icon dialog
  535. util.emojiBrowser = function(callback){
  536. var footer = '<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>';
  537. var modalobj = util.dialog('请选择表情',['/web/index.php?c=utility&a=emoji&callback=selectEmojiComplete'],footer,{containerName:'icon-container'});
  538. modalobj.modal({'keyboard': false});
  539. modalobj.find('.modal-dialog').css({'width':'70%'});
  540. modalobj.find('.modal-body').css({'height':'70%','overflow-y':'scroll'});
  541. modalobj.modal('show');
  542. window.selectEmojiComplete = function(emoji){
  543. if($.isFunction(callback)){
  544. callback(emoji);
  545. modalobj.modal('hide');
  546. }
  547. };
  548. }; // end of emoji dialog
  549. util.linkBrowser = function(callback){
  550. var footer = '<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>';
  551. var modalobj = util.dialog('请选择链接',['/web/index.php?c=utility&a=link&callback=selectLinkComplete'],footer,{containerName:'link-container'});
  552. modalobj.modal({'keyboard': false});
  553. modalobj.find('.modal-body').css({'height':'300px','overflow-y':'auto' });
  554. modalobj.modal('show');
  555. window.selectLinkComplete = function(link){
  556. if($.isFunction(callback)){
  557. callback(link);
  558. modalobj.modal('hide');
  559. }
  560. };
  561. }; // end of icon dialo
  562. util.pageBrowser = function(callback, page){
  563. var footer = '';
  564. var modalobj = util.dialog('',['/web/index.php?c=utility&a=link&do=page&callback=pageLinkComplete&page='+ page],footer,{containerName:'link-container'});
  565. modalobj.modal({'keyboard': false});
  566. modalobj.find('.modal-body').css({'height':'700px','overflow-y':'auto' });
  567. modalobj.modal('show');
  568. window.pageLinkComplete = function(link, page){
  569. if($.isFunction(callback)){
  570. callback(link, page);
  571. if (page == '' || page == undefined) {
  572. modalobj.modal('hide');
  573. }
  574. }
  575. };
  576. };
  577. util.newsBrowser = function(callback, page){
  578. var footer = '';
  579. var modalobj = util.dialog('',['/web/index.php?c=utility&a=link&do=news&callback=newsLinkComplete&page='+ page],footer,{containerName:'link-container'});
  580. modalobj.modal({'keyboard': false});
  581. modalobj.find('.modal-body').css({'height':'700px','overflow-y':'auto' });
  582. modalobj.modal('show');
  583. window.newsLinkComplete = function(link, page){
  584. if($.isFunction(callback)){
  585. callback(link, page);
  586. if (page == '' || page == undefined) {
  587. modalobj.modal('hide');
  588. }
  589. }
  590. };
  591. };
  592. util.articleBrowser = function(callback, page){
  593. var footer = '';
  594. var modalobj = util.dialog('',['/web/index.php?c=utility&a=link&do=article&callback=articleLinkComplete&page='+ page],footer,{containerName:'link-container'});
  595. modalobj.modal({'keyboard': false});
  596. modalobj.find('.modal-body').css({'height':'700px','overflow-y':'auto' });
  597. modalobj.modal('show');
  598. window.articleLinkComplete = function(link, page){
  599. if($.isFunction(callback)){
  600. callback(link, page);
  601. if (page == '' || page == undefined) {
  602. modalobj.modal('hide');
  603. }
  604. }
  605. };
  606. };
  607. /**
  608. * val : image 值;
  609. * callback: 回调函数
  610. * base64options: base64(json($options))
  611. * options: {tabs: {'browser': 'active', 'upload': '', 'remote': ''}
  612. **/
  613. util.image = function(val, callback,options, base64options ) {
  614. var opts = {
  615. type :'image',
  616. direct : false,
  617. multiple : false,
  618. path : val,
  619. dest_dir : '',
  620. global : false,
  621. thumb : false,
  622. width : 0
  623. };
  624. opts = $.extend({}, opts, options);
  625. opts.type = 'image';
  626. let rand_str = getRandom();
  627. require(['jquery', 'fileUploader'], function($, fileUploader){
  628. fileUploader.upload_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.jsUpload&upload_type=`);
  629. fileUploader.fetch_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.fetch`);
  630. fileUploader.image_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.jsImage`);
  631. fileUploader.delet_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.delete`);
  632. fileUploader.show(function(images){
  633. if(images){
  634. if($.isFunction(callback)){
  635. callback(images);
  636. }
  637. }
  638. }, opts);
  639. });
  640. }; // end of image
  641. getRandom = function() {
  642. let str = '';
  643. for (let i = 0; i < 3; i++) {
  644. str = `${str}${Math.round(Math.random()*10)}` ;
  645. }
  646. return str;
  647. };
  648. util.wechat_image = function(val, callback, options) {
  649. var opts = {
  650. type :'image',
  651. direct : false,
  652. multiple : false,
  653. acid : 0,
  654. path : val,
  655. dest_dir : ''
  656. };
  657. opts = $.extend({}, opts, options);
  658. require(['jquery', 'wechatFileUploader'], function($, wechatFileUploader){
  659. wechatFileUploader.show(function(images){
  660. if(images){
  661. if($.isFunction(callback)){
  662. callback(images);
  663. }
  664. }
  665. }, opts);
  666. });
  667. };
  668. // util.audio = function(val, callback, base64options, options) {
  669. // var opts = {
  670. // type :'audio',
  671. // direct : false,
  672. // multiple : false,
  673. // path : '',
  674. // dest_dir : ''
  675. // };
  676. // if(val){
  677. // opts.path = val;
  678. // }
  679. //
  680. // opts = $.extend({}, opts, options);
  681. // opts.type = 'audio';
  682. //
  683. // require(['jquery', 'fileUploader'], function($, fileUploader){
  684. // fileUploader.show(function(audios){
  685. // if(audios){
  686. // if($.isFunction(callback)){
  687. // callback(audios);
  688. // }
  689. // }
  690. // }, opts);
  691. // });
  692. //
  693. // }; // end of audio
  694. util.audio = function(e, t, i, o) {
  695. var n = {
  696. type: "voice",
  697. direct: !1,
  698. multiple: !1,
  699. path: "",
  700. dest_dir: "",
  701. needType: 2
  702. };
  703. let rand_str = getRandom();
  704. e && (n.path = e),
  705. !i && o && (i = o),
  706. n = $.extend({},
  707. n, i),
  708. require(["fileUploader"],
  709. function(e) {
  710. e.upload_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.upload&upload_type=`);
  711. e.image_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.getImage&local=local&group_id=-999`);
  712. e.fetch_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.fetch`);
  713. e.delet_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.delete`);
  714. e.video_url(`./index.php?c=site&a=entry&m=yun_shop&do=${rand_str}&route=upload.upload.getVideo&local=local&type=video&pagesize=5`);
  715. e.show(function(e) {
  716. e && $.isFunction(t) && t(e)
  717. },
  718. n);
  719. })
  720. },
  721. /*
  722. 打开远程地址
  723. @params string url 目标远程地址
  724. @params string title 打开窗口标题,为空则不显示标题。可在返回的HTML定义<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>控制关闭
  725. @params object options 打开窗口的属性配置,可选项backdrop,show,keyboard,remote,width,height。具体参考bootcss模态对话框的options说明
  726. @params object events 窗口的一些回调事件,可选项show,shown,hide,hidden,confirm。回调函数第一个参数对话框JQ对象。具体参考bootcss模态对话框的on说明.
  727. @demo ajaxshow('url', 'title', {'show' : true}, {'hidden' : function(obj) {obj.remove();}});
  728. */
  729. util.ajaxshow = function(url, title, options, events) {
  730. var defaultoptions = {'show' : true};
  731. var defaultevents = {};
  732. var option = $.extend({}, defaultoptions, options);
  733. var events = $.extend({}, defaultevents, events);
  734. var footer = (typeof events['confirm'] == 'function' ? '<a href="#" class="btn btn-primary confirm">确定</a>' : '') + '<a href="#" class="btn" data-dismiss="modal" aria-hidden="true">关闭</a><iframe id="_formtarget" style="display:none;" name="_formtarget"></iframe>';
  735. var modalobj = util.dialog(title, '正在加载中', footer, {'containerName' : 'modal-panel-ajax'});
  736. if (typeof option['width'] != 'undeinfed' && option['width'] > 0) {
  737. modalobj.find('.modal-dialog').css({'width' : option['width']});
  738. }
  739. if (events) {
  740. for (i in events) {
  741. if (typeof events[i] == 'function') {
  742. modalobj.on(i, events[i]);
  743. }
  744. }
  745. }
  746. modalobj.find('.modal-body').load(url, function(){
  747. $('form.ajaxfrom').each(function(){
  748. $(this).attr('action', $(this).attr('action') + '&isajax=1&target=formtarget');
  749. $(this).attr('target', '_formtarget');
  750. })
  751. });
  752. modalobj.on('hidden.bs.modal', function(){modalobj.remove();});
  753. if (typeof events['confirm'] == 'function') {
  754. modalobj.find('.confirm', modalobj).on('click', events['confirm']);
  755. }
  756. return modalobj.modal(option);
  757. }; //end of ajaxshow
  758. util.cookie = {
  759. 'prefix' : '',
  760. // 保存 Cookie
  761. 'set' : function(name, value, seconds) {
  762. expires = new Date();
  763. expires.setTime(expires.getTime() + (1000 * seconds));
  764. document.cookie = this.name(name) + "=" + escape(value) + "; expires=" + expires.toGMTString() + "; path=/";
  765. },
  766. // 获取 Cookie
  767. 'get' : function(name) {
  768. cookie_name = this.name(name) + "=";
  769. cookie_length = document.cookie.length;
  770. cookie_begin = 0;
  771. while (cookie_begin < cookie_length)
  772. {
  773. value_begin = cookie_begin + cookie_name.length;
  774. if (document.cookie.substring(cookie_begin, value_begin) == cookie_name)
  775. {
  776. var value_end = document.cookie.indexOf ( ";", value_begin);
  777. if (value_end == -1)
  778. {
  779. value_end = cookie_length;
  780. }
  781. return unescape(document.cookie.substring(value_begin, value_end));
  782. }
  783. cookie_begin = document.cookie.indexOf ( " ", cookie_begin) + 1;
  784. if (cookie_begin == 0)
  785. {
  786. break;
  787. }
  788. }
  789. return null;
  790. },
  791. // 清除 Cookie
  792. 'del' : function(name) {
  793. var expireNow = new Date();
  794. document.cookie = this.name(name) + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT" + "; path=/";
  795. },
  796. 'name' : function(name) {
  797. return this.prefix + name;
  798. }
  799. };//end cookie
  800. util.wechat_audio = function(val, callback, options) {
  801. var opts = {
  802. type :'voice',
  803. direct : false,
  804. multiple : false,
  805. path : '',
  806. dest_dir : ''
  807. };
  808. if(val){
  809. opts.path = val;
  810. }
  811. opts = $.extend({}, opts, options);
  812. require(['jquery', 'wechatFileUploader'], function($, wechatFileUploader){
  813. wechatFileUploader.show(function(audios){
  814. if(audios){
  815. if($.isFunction(callback)){
  816. callback(audios);
  817. }
  818. }
  819. }, opts);
  820. });
  821. };
  822. util.coupon = function(callback, options) {
  823. var opts = {
  824. type :'all',
  825. multiple : false
  826. };
  827. opts = $.extend({}, opts, options);
  828. require(['jquery', 'coupon'], function($, coupon){
  829. coupon.init(function(coupons){
  830. if(coupons){
  831. if($.isFunction(callback)){
  832. callback(coupons);
  833. }
  834. }
  835. }, opts);
  836. });
  837. };
  838. util.material = function(callback, options) {
  839. var opts = {
  840. type :'news',
  841. multiple : false,
  842. ignore : {}
  843. };
  844. opts = $.extend({}, opts, options);
  845. require(['jquery', 'material'], function($, material){
  846. material.init(function(material){
  847. if(material){
  848. if($.isFunction(callback)){
  849. callback(material);
  850. }
  851. }
  852. }, opts);
  853. });
  854. };
  855. util.getUrl = function(route) {
  856. return '/web/index.php?c=site&a=entry&m=yun_shop&do=7296&route='+route;
  857. };
  858. if (typeof define === "function" && define.amd) {
  859. define(['bootstrap'], function(){
  860. return util;
  861. });
  862. } else {
  863. window.util = util;
  864. }
  865. })(window);