(function(window) { var util = {}; util.tomedia = function(src, forcelocal){ if(src.indexOf('http://') == 0 || src.indexOf('https://') == 0 || src.indexOf('./resource') == 0) { return src; } else if(src.indexOf('./addons') == 0) { var url=window.document.location.href; var pathName = window.document.location.pathname; var pos = url.indexOf(pathName); var host = url.substring(0,pos); if (src.substr(0,1)=='.') { src=src.substr(1); } return host + src; } else { if(!forcelocal) { return window.sysinfo.attachurl + src; } else { return window.sysinfo.attachurl_local + src; } } }; util.clip = function(elm, str) { if(elm.clip) { return; } require(['jquery.zclip'], function(){ $(elm).zclip({ path: '/static/resource/components/zclip/ZeroClipboard.swf', copy: str, afterCopy: function(){ var obj = $('   复制成功'); var enext = $(elm).next().html(); if (!enext || enext.indexOf('  复制成功')<0) { $(elm).after(obj); } setTimeout(function(){ obj.remove(); }, 2000); } }); elm.clip = true; }); }; util.colorpicker = function(elm, callback) { require(['colorpicker'], function(){ $(elm).spectrum({ className : "colorpicker", showInput: true, showInitial: true, showPalette: true, maxPaletteSize: 10, preferredFormat: "hex", change: function(color) { if($.isFunction(callback)) { callback(color); } }, palette: [ ["rgb(0, 0, 0)", "rgb(67, 67, 67)", "rgb(102, 102, 102)", "rgb(153, 153, 153)","rgb(183, 183, 183)", "rgb(204, 204, 204)", "rgb(217, 217, 217)","rgb(239, 239, 239)", "rgb(243, 243, 243)", "rgb(255, 255, 255)"], ["rgb(152, 0, 0)", "rgb(255, 0, 0)", "rgb(255, 153, 0)", "rgb(255, 255, 0)", "rgb(0, 255, 0)", "rgb(0, 255, 255)", "rgb(74, 134, 232)", "rgb(0, 0, 255)", "rgb(153, 0, 255)", "rgb(255, 0, 255)"], ["rgb(230, 184, 175)", "rgb(244, 204, 204)", "rgb(252, 229, 205)", "rgb(255, 242, 204)", "rgb(217, 234, 211)", "rgb(208, 224, 227)", "rgb(201, 218, 248)", "rgb(207, 226, 243)", "rgb(217, 210, 233)", "rgb(234, 209, 220)", "rgb(221, 126, 107)", "rgb(234, 153, 153)", "rgb(249, 203, 156)", "rgb(255, 229, 153)", "rgb(182, 215, 168)", "rgb(162, 196, 201)", "rgb(164, 194, 244)", "rgb(159, 197, 232)", "rgb(180, 167, 214)", "rgb(213, 166, 189)", "rgb(204, 65, 37)", "rgb(224, 102, 102)", "rgb(246, 178, 107)", "rgb(255, 217, 102)", "rgb(147, 196, 125)", "rgb(118, 165, 175)", "rgb(109, 158, 235)", "rgb(111, 168, 220)", "rgb(142, 124, 195)", "rgb(194, 123, 160)", "rgb(166, 28, 0)", "rgb(204, 0, 0)", "rgb(230, 145, 56)", "rgb(241, 194, 50)", "rgb(106, 168, 79)", "rgb(69, 129, 142)", "rgb(60, 120, 216)", "rgb(61, 133, 198)", "rgb(103, 78, 167)", "rgb(166, 77, 121)", "rgb(133, 32, 12)", "rgb(153, 0, 0)", "rgb(180, 95, 6)", "rgb(191, 144, 0)", "rgb(56, 118, 29)", "rgb(19, 79, 92)", "rgb(17, 85, 204)", "rgb(11, 83, 148)", "rgb(53, 28, 117)", "rgb(116, 27, 71)", "rgb(91, 15, 0)", "rgb(102, 0, 0)", "rgb(120, 63, 4)", "rgb(127, 96, 0)", "rgb(39, 78, 19)", "rgb(12, 52, 61)", "rgb(28, 69, 135)", "rgb(7, 55, 99)", "rgb(32, 18, 77)", "rgb(76, 17, 48)"] ] }); }); } util.uploadMultiPictures = function(callback, options){ var opts = { type :'image', tabs : { 'upload' : 'active', 'browser' : '', 'crawler' : '' }, path : '', direct : false, multi : true, dest_dir : '' }; opts = $.extend({}, opts, options); require(['jquery', 'fileUploader'], function($, fileUploader){ fileUploader.show(function(images){ if(images.length > 0){ for (i in images) { images[i].filename = images[i].attachment; } if($.isFunction(callback)){ callback(images); } } }, opts); }); } util.editor = function(e, t, o) { if (!e && "" != e) return ""; var n = "string" == typeof e ? e: e.id; n || (n = "editor-" + Math.random(), e.id = n); var a = { height: "200", dest_dir: "", image_limit: "1024", allow_upload_video: 1, audio_limit: "1024", callback: null }; $.isFunction(t) && (t = { callback: t }), t = $.extend({}, a, t), window.UEDITOR_HOME_URL = window.sysinfo.siteroot + "/static/resource/components/ueditor/"; var r = function(a, r) { var l = { autoClearinitialContent: !1, 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"]], elementPathEnabled: !1, catchRemoteImageEnable: !1, initialFrameHeight: t.height, focus: !1, maximumWords: 9999999999999 }; 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"]]); var s = { type: "image", direct: !1, multiple: !0, tabs: { upload: "active", browser: "", crawler: "" }, path: "", dest_dir: t.dest_dir, global: !1, thumb: !1, width: 0, fileSizeLimit: 1024 * t.image_limit }; if (a.registerUI("myinsertimage", function(e, t) { e.registerCommand(t, { execCommand: function() { r.fetch_url('/admin/system/upload/fetch'); r.upload_url('/admin/system/upload/upload?upload_type='); r.image_url('/admin/system/upload/image?local=local&groupid=-999'); r.delet_url('/admin/system/upload/delete'); r.video_url('/admin/system/upload/video?local=local&type=video&pagesize=5'); r.show(function(t) { if (0 != t.length) if (1 == t.length) e.execCommand("insertimage", { src: t[0].url, _src: t[0].attachment, width: "100%", alt: t[0].filename }); else { var o = []; for (i in t) o.push({ src: t[i].url, _src: t[i].attachment, width: "100%", alt: t[i].filename }); e.execCommand("insertimage", o) } }, s) } }); var o = new a.ui.Button({ name: "插入图片", title: "插入图片", cssRules: "background-position: -726px -77px", onclick: function() { e.execCommand(t) } }); return e.addListener("selectionchange", function() { var i = e.queryCommandState(t); - 1 == i ? (o.setDisabled(!0), o.setChecked(!1)) : (o.setDisabled(!1), o.setChecked(i)) }), o }, 19), a.registerUI("myinsertvideo", function(e, i) { e.registerCommand(i, { execCommand: function() { r.show(function(t) { if (t) { var i = t.isRemote ? "iframe": "video"; e.execCommand("insertvideo", { url: t.url, width: 300, height: 200 }, i) } }, { fileSizeLimit: 1024 * t.audio_limit, type: "video", allowUploadVideo: t.allow_upload_video, netWorkVideo: !0 }) } }); var o = new a.ui.Button({ name: "插入视频", title: "插入视频", cssRules: "background-position: -320px -20px", onclick: function() { e.execCommand(i) } }); return e.addListener("selectionchange", function() { var t = e.queryCommandState(i); - 1 == t ? (o.setDisabled(!0), o.setChecked(!1)) : (o.setDisabled(!1), o.setChecked(t)) }), o }, 20), n) { var d = a.getEditor(n, l); $("#" + n).removeClass("form-control"), $("#" + n).data("editor", d), $("#" + n).parents("form").submit(function() { d.queryCommandState("source") && d.execCommand("source") }), $.isFunction(t.callback) && t.callback(e, d) } }; require(["ueditor", "fileUploader"], function(e, t) { r(e, t) }, function(e) { var t = e.requireModules && e.requireModules[0]; "ueditor" === t && (requirejs.undef(t), requirejs.config({ paths: { ueditor: "../../components/ueditor/ueditor.all.min" }, shim: { ueditor: { deps: ["/static/resource/components/ueditor/third-party/zeroclipboard/ZeroClipboard.min.js", "/static/resource/components/ueditor/ueditor.config.js"], exports: "UE", init: function(e) { window.ZeroClipboard = e } } } }), require(["ueditor", "fileUploader"], function(e, t) { r(e, t) })) }) }, // target dom 对象 util.emotion = function(elm, target, callback) { require(['jquery.caret', 'bootstrap', 'css!../../components/emotions/emotions.css'],function($){ $(function() { var emotions_html = '
'; $(elm).popover({ html: true, content: emotions_html, placement:"bottom" }); $(elm).one('shown.bs.popover', function(){ $(elm).next().mouseleave(function(){ $(elm).popover('hide'); }); $(elm).next().delegate(".eItem", "mouseover", function(){ var emo_img = 'mo-'+$(this).attr('; var emo_txt = '/'+$(this).attr("data-code"); $(elm).next().find(".emotionsGif").html(emo_img); }); $(elm).next().delegate(".eItem", "click", function(){ $(target).setCaret(); var emo_txt = '/'+$(this).attr("data-code"); $(target).insertAtCaret(emo_txt); $(elm).popover('hide'); if($.isFunction(callback)) { callback(emo_txt, elm, target); } }); }); }); }); }; util.loading = function() { var loadingid = 'modal-loading'; var modalobj = $('#' + loadingid); if(modalobj.length == 0) { $(document.body).append(''); modalobj = $('#' + loadingid); html = ''; modalobj.html(html); } modalobj.modal('show'); modalobj.next().css('z-index', 999999); return modalobj; }; util.loaded = function(){ var loadingid = 'modal-loading'; var modalobj = $('#' + loadingid); if(modalobj.length > 0){ modalobj.modal('hide'); } } util.dialog = function(title, content, footer, options) { if(!options) { options = {}; } if(!options.containerName) { options.containerName = 'modal-message'; } var modalobj = $('#' + options.containerName); if(modalobj.length == 0) { $(document.body).append(''); modalobj = $('#' + options.containerName); } html = ''; modalobj.html(html); if(content && $.isArray(content)) { var embed = function(c) { modalobj.find('.modal-body').html(c); }; if(content.length == 2) { $.post(content[0], content[1]).success(embed); } else { $.get(content[0]).success(embed); } } return modalobj; }; util.message = function(msg, redirect, type){ if(!redirect && !type){ type = 'info'; } if($.inArray(type, ['success', 'error', 'info', 'warning']) == -1) { type = ''; } if(type == '') { type = redirect == '' ? 'error' : 'success'; } var icons = { success : 'check-circle', error :'times-circle', info : 'info-circle', warning : 'exclamation-triangle' }; var p = ''; if(redirect && redirect.length > 0){ if(redirect == 'back'){ p = '

[返回上一页]   [回首页]

'; } else if(redirect == 'refresh') { redirect = location.href; p = '

'; } else { p = '

'; } } var content = ' '+ '

'+ msg +'

' + p + '
'+ '
'; var footer = ' '; var modalobj = util.dialog('系统提示', content, footer, {'containerName' : 'modal-message'}); modalobj.find('.modal-content').addClass('alert alert-'+type); if(redirect) { var timer = ''; timeout = 3; modalobj.find("#timeout").html(timeout); modalobj.on('show.bs.modal', function(){doredirect();}); modalobj.on('hide.bs.modal', function(){timeout = 0;doredirect(); }); modalobj.on('hidden.bs.modal', function(){modalobj.remove();}); function doredirect() { timer = setTimeout(function(){ if (timeout <= 0) { modalobj.modal('hide'); clearTimeout(timer); window.location.href = redirect; return; } else { timeout--; modalobj.find("#timeout").html(timeout); doredirect(); } }, 1000); } } modalobj.modal('show'); return modalobj; }; util.map = function(val, callback){ require(['map'], function(BMap){ if(!val) { val = {}; } if(!val.lng) { val.lng = 116.403851; } if(!val.lat) { val.lat = 39.915177; } var point = new BMap.Point(val.lng, val.lat); var geo = new BMap.Geocoder(); var modalobj = $('#map-dialog'); if(modalobj.length == 0) { var content = '
' + '
' + '' + '
' + '' + '
' + '
' + '
' + '
'; var footer = '' + ''; modalobj = util.dialog('请选择地点', content, footer, {containerName : 'map-dialog'}); modalobj.find('.modal-dialog').css('width', '80%'); modalobj.modal({'keyboard': false}); map = util.map.instance = new BMap.Map('map-container'); map.centerAndZoom(point, 12); map.enableScrollWheelZoom(); map.enableDragging(); map.enableContinuousZoom(); map.addControl(new BMap.NavigationControl()); map.addControl(new BMap.OverviewMapControl()); marker = util.map.marker = new BMap.Marker(point); marker.setLabel(new BMap.Label('请您移动此标记,选择您的坐标!', {'offset': new BMap.Size(10,-20)})); map.addOverlay(marker); marker.enableDragging(); marker.addEventListener('dragend', function(e){ var point = marker.getPosition(); geo.getLocation(point, function(address){ modalobj.find('.input-group :text').val(address.address); }); }); function searchAddress(address) { geo.getPoint(address, function(point){ map.panTo(point); marker.setPosition(point); marker.setAnimation(BMAP_ANIMATION_BOUNCE); setTimeout(function(){marker.setAnimation(null)}, 3600); }); } modalobj.find('.input-group :text').keydown(function(e){ if(e.keyCode == 13) { var kw = $(this).val(); searchAddress(kw); } }); modalobj.find('.input-group button').click(function(){ var kw = $(this).parent().prev().val(); searchAddress(kw); }); } modalobj.off('shown.bs.modal'); modalobj.on('shown.bs.modal', function(){ marker.setPosition(point); map.panTo(marker.getPosition()); }); modalobj.find('button.btn-primary').off('click'); modalobj.find('button.btn-primary').on('click', function(){ if($.isFunction(callback)) { var point = util.map.marker.getPosition(); geo.getLocation(point, function(address){ var val = {lng: point.lng, lat: point.lat, label: address.address}; callback(val); }); } modalobj.modal('hide'); }); modalobj.modal('show'); }); }; // end of map util.iconBrowser = function(callback){ var footer = ''; var modalobj = util.dialog('请选择图标',['/admin/shop?c=site&a=entry&m=yun_shop&do=8991&route=frame.icon.index&callback=selectIconComplete'],footer,{containerName:'icon-container'}); modalobj.modal({'keyboard': false}); modalobj.find('.modal-dialog').css({'width':'70%'}); modalobj.find('.modal-body').css({'height':'70%','overflow-y':'scroll'}); modalobj.modal('show'); window.selectIconComplete = function(ico){ if($.isFunction(callback)){ callback(ico); modalobj.modal('hide'); } }; }; // end of icon dialog util.emojiBrowser = function(callback){ var footer = ''; var modalobj = util.dialog('请选择表情',['/admin/shop?c=utility&a=emoji&callback=selectEmojiComplete'],footer,{containerName:'icon-container'}); modalobj.modal({'keyboard': false}); modalobj.find('.modal-dialog').css({'width':'70%'}); modalobj.find('.modal-body').css({'height':'70%','overflow-y':'scroll'}); modalobj.modal('show'); window.selectEmojiComplete = function(emoji){ if($.isFunction(callback)){ callback(emoji); modalobj.modal('hide'); } }; }; // end of emoji dialog util.linkBrowser = function(callback){ var footer = ''; var modalobj = util.dialog('请选择链接',['/admin/shop?c=utility&a=link&callback=selectLinkComplete'],footer,{containerName:'link-container'}); modalobj.modal({'keyboard': false}); modalobj.find('.modal-body').css({'height':'300px','overflow-y':'auto' }); modalobj.modal('show'); window.selectLinkComplete = function(link){ if($.isFunction(callback)){ callback(link); modalobj.modal('hide'); } }; }; // end of icon dialo util.pageBrowser = function(callback, page){ var footer = ''; var modalobj = util.dialog('',['/admin/shop?c=utility&a=link&do=page&callback=pageLinkComplete&page='+ page],footer,{containerName:'link-container'}); modalobj.modal({'keyboard': false}); modalobj.find('.modal-body').css({'height':'700px','overflow-y':'auto' }); modalobj.modal('show'); window.pageLinkComplete = function(link, page){ if($.isFunction(callback)){ callback(link, page); if (page == '' || page == undefined) { modalobj.modal('hide'); } } }; }; util.newsBrowser = function(callback, page){ var footer = ''; var modalobj = util.dialog('',['/admin/shop?c=utility&a=link&do=news&callback=newsLinkComplete&page='+ page],footer,{containerName:'link-container'}); modalobj.modal({'keyboard': false}); modalobj.find('.modal-body').css({'height':'700px','overflow-y':'auto' }); modalobj.modal('show'); window.newsLinkComplete = function(link, page){ if($.isFunction(callback)){ callback(link, page); if (page == '' || page == undefined) { modalobj.modal('hide'); } } }; }; util.articleBrowser = function(callback, page){ var footer = ''; var modalobj = util.dialog('',['/admin/shop?c=utility&a=link&do=article&callback=articleLinkComplete&page='+ page],footer,{containerName:'link-container'}); modalobj.modal({'keyboard': false}); modalobj.find('.modal-body').css({'height':'700px','overflow-y':'auto' }); modalobj.modal('show'); window.articleLinkComplete = function(link, page){ if($.isFunction(callback)){ callback(link, page); if (page == '' || page == undefined) { modalobj.modal('hide'); } } }; }; /** * val : image 值; * callback: 回调函数 * base64options: base64(json($options)) * options: {tabs: {'browser': 'active', 'upload': '', 'remote': ''} **/ util.image = function(val, callback,options, base64options ) { var opts = { type :'image', direct : false, multiple : false, path : val, dest_dir : '', global : false, thumb : false, width : 0 }; opts = $.extend({}, opts, options); opts.type = 'image'; require(['jquery', 'fileUploader'], function($, fileUploader){ fileUploader.upload_url('/admin/shop?route=upload.upload.jsUpload&upload_type='); fileUploader.fetch_url('/admin/shop?route=upload.upload.fetch'); fileUploader.image_url('/admin/shop?route=upload.upload.jsImage'); fileUploader.delet_url('/admin/shop?route=upload.upload.delete'); fileUploader.show(function(images){ if(images){ if($.isFunction(callback)){ callback(images); } } }, opts); }); }; // end of image util.wechat_image = function(val, callback, options) { var opts = { type :'image', direct : false, multiple : false, acid : 0, path : val, dest_dir : '' }; opts = $.extend({}, opts, options); require(['jquery', 'wechatFileUploader'], function($, wechatFileUploader){ wechatFileUploader.show(function(images){ if(images){ if($.isFunction(callback)){ callback(images); } } }, opts); }); }; // util.audio = function(val, callback, base64options, options) { // var opts = { // type :'audio', // direct : false, // multiple : false, // path : '', // dest_dir : '' // }; // if(val){ // opts.path = val; // } // // opts = $.extend({}, opts, options); // opts.type = 'audio'; // // require(['jquery', 'fileUploader'], function($, fileUploader){ // fileUploader.show(function(audios){ // if(audios){ // if($.isFunction(callback)){ // callback(audios); // } // } // }, opts); // }); // // }; // end of audio util.audio = function(e, t, i, o) { var n = { type: "voice", direct: !1, multiple: !1, path: "", dest_dir: "", needType: 2 }; e && (n.path = e), !i && o && (i = o), n = $.extend({}, n, i), require(["fileUploader"], function(e) { e.fetch_url('/admin/system/upload/fetch'); e.upload_url('/admin/system/upload/upload?upload_type='); e.image_url('/admin/system/upload/image?local=local&groupid=-999'); e.delet_url('/admin/system/upload/delete'); e.video_url('/admin/system/upload/video?local=local&type=video&pagesize=5'); e.show(function(e) { e && $.isFunction(t) && t(e) }, n); }) }, /* 打开远程地址 @params string url 目标远程地址 @params string title 打开窗口标题,为空则不显示标题。可在返回的HTML定义控制关闭 @params object options 打开窗口的属性配置,可选项backdrop,show,keyboard,remote,width,height。具体参考bootcss模态对话框的options说明 @params object events 窗口的一些回调事件,可选项show,shown,hide,hidden,confirm。回调函数第一个参数对话框JQ对象。具体参考bootcss模态对话框的on说明. @demo ajaxshow('url', 'title', {'show' : true}, {'hidden' : function(obj) {obj.remove();}}); */ util.ajaxshow = function(url, title, options, events) { var defaultoptions = {'show' : true}; var defaultevents = {}; var option = $.extend({}, defaultoptions, options); var events = $.extend({}, defaultevents, events); var footer = (typeof events['confirm'] == 'function' ? '确定' : '') + ''; var modalobj = util.dialog(title, '正在加载中', footer, {'containerName' : 'modal-panel-ajax'}); if (typeof option['width'] != 'undeinfed' && option['width'] > 0) { modalobj.find('.modal-dialog').css({'width' : option['width']}); } if (events) { for (i in events) { if (typeof events[i] == 'function') { modalobj.on(i, events[i]); } } } modalobj.find('.modal-body').load(url, function(){ $('form.ajaxfrom').each(function(){ $(this).attr('action', $(this).attr('action') + '&isajax=1&target=formtarget'); $(this).attr('target', '_formtarget'); }) }); modalobj.on('hidden.bs.modal', function(){modalobj.remove();}); if (typeof events['confirm'] == 'function') { modalobj.find('.confirm', modalobj).on('click', events['confirm']); } return modalobj.modal(option); }; //end of ajaxshow util.cookie = { 'prefix' : '', // 保存 Cookie 'set' : function(name, value, seconds) { expires = new Date(); expires.setTime(expires.getTime() + (1000 * seconds)); document.cookie = this.name(name) + "=" + escape(value) + "; expires=" + expires.toGMTString() + "; path=/"; }, // 获取 Cookie 'get' : function(name) { cookie_name = this.name(name) + "="; cookie_length = document.cookie.length; cookie_begin = 0; while (cookie_begin < cookie_length) { value_begin = cookie_begin + cookie_name.length; if (document.cookie.substring(cookie_begin, value_begin) == cookie_name) { var value_end = document.cookie.indexOf ( ";", value_begin); if (value_end == -1) { value_end = cookie_length; } return unescape(document.cookie.substring(value_begin, value_end)); } cookie_begin = document.cookie.indexOf ( " ", cookie_begin) + 1; if (cookie_begin == 0) { break; } } return null; }, // 清除 Cookie 'del' : function(name) { var expireNow = new Date(); document.cookie = this.name(name) + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT" + "; path=/"; }, 'name' : function(name) { return this.prefix + name; } };//end cookie util.wechat_audio = function(val, callback, options) { var opts = { type :'voice', direct : false, multiple : false, path : '', dest_dir : '' }; if(val){ opts.path = val; } opts = $.extend({}, opts, options); require(['jquery', 'wechatFileUploader'], function($, wechatFileUploader){ wechatFileUploader.show(function(audios){ if(audios){ if($.isFunction(callback)){ callback(audios); } } }, opts); }); }; util.coupon = function(callback, options) { var opts = { type :'all', multiple : false }; opts = $.extend({}, opts, options); require(['jquery', 'coupon'], function($, coupon){ coupon.init(function(coupons){ if(coupons){ if($.isFunction(callback)){ callback(coupons); } } }, opts); }); }; util.material = function(callback, options) { var opts = { type :'news', multiple : false, ignore : {} }; opts = $.extend({}, opts, options); require(['jquery', 'material'], function($, material){ material.init(function(material){ if(material){ if($.isFunction(callback)){ callback(material); } } }, opts); }); }; util.getUrl = function(route) { return '/admin/shop?c=site&a=entry&m=yun_shop&do=7296&route='+route; }; if (typeof define === "function" && define.amd) { define(['bootstrap'], function(){ return util; }); } else { window.util = util; } })(window);