var SHINE_PUBLISH_LOCKER = 'shine_publish_locker'; Ext.BLANK_IMAGE_URL = '/admin/images/s.gif'; var System = {'baseURL': '/admin','CurrentUser':null}; document.oncontextmenu = function(){ return false; } var ShineElementDataType = { 15:'视频', 20:'图片', 4:'音乐', 5:'语音播报', 50:'flash', 25:'幻灯片', 30:'电视频点', 31:'直播', 41:'PPT文档', 42:'PDF文档', 60:'网页', 61:'文本', 107:'文本', 80:'交互式网页', 101:'TXT文件', 102:'Word文档', 103:'Excel文档', 104:'LED天气预报', 105:'LED基金', 106:'LED汇率', 111:'字幕文件', 999:'其它', 1001:'数据源网址' }; var shineSettingTypeData = [ {id:'1',name:'Media'}, {id:'2',name:'VOD'}, {id:'3',name:'Media+VOD'}, {id:'4',name:'IDC'}, {id:'6',name:'VOD+IDC'}, {id:'7',name:'Media+VOD+IDC'} ]; Ext.BLANK_IMAGE_URL = "/admin/images/s.gif"; var Loading = function(){ setTimeout((function(){ Ext.get('loading').remove(); Ext.get('loading-mask').fadeOut({remove:true}); }),300); } document.oncontextmenu = function(e) {return false;}; Ext.state.Manager.setProvider( new Ext.state.CookieProvider() ); var menus = { '_window': '分屏', 'window': '菜单' }; var user = Ext.state.Manager.get('currentUser'); function record() { var isLocked = (Cookies.get('shinestb_locker') == '1'); if (!isLocked) Cookies.set('shinestb_last_active', Math.ceil(new Date().getTime() / 1000)); } var contextmenu_debug = true; if (!contextmenu_debug) { document.oncontextmenu = function() {return false;} } String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } String.prototype.realLength = function() { return this.replace(/[^\x00-\xff]/g,"**").length; } function loading() { (function() { Ext.get('loading').remove(); Ext.get('loading-mask').fadeOut({remove:true}); }).defer(500); } function ajustWindow(win, s) { return ; s = s ? s: 100; var pos = win.getPosition(); win.setPosition(pos[0], (pos[1] - s)); } // EXT 扩展plugin, 用于屏蔽backspace键 Ext.ux.FieldDisableKey = function() { this.init = function(field) { field.enableKeyEvents = true; field.on('keydown', _onKeydown); } function _onKeydown(field, e) { /** 在文本域为readonly时,屏蔽所有键 */ if (field.readOnly) { e.preventDefault(); } } }; Ext.ux.FieldF5Key = function() { this.init = function(obj) { document.onkeypress = _onKeyPress; } function _onKeyPress(e) { try { if (e.keyCode == 116) { e.cancelBubble = true; e.returnValue = false; return false; } } catch (e) { alert(e.message); } } }; /** * 2009-9-7 表单验证 * 2010/6/4 去掉了IP验证(填写G网LED终端,填的是 com 号, 1,2) */ Ext.apply(Ext.form.VTypes, { 'password' : function(val, field) { if (field.confirmTo) { var pwd = field.confirmTo; return (val == pwd.getValue()); } return true; }, 'passwordMask' : /[^ ]/, 'passwordText' : '两次输入的密码不一致' }); Ext.apply(Ext.form.VTypes, { 'ip' : function(v){ var ipv4RegExp = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/; return ipv4RegExp.test(v); }, 'ipText' : 'IP地址输入错误(例如:192.168.1.1)', 'ipMask' : /\d|\./ }); Ext.apply(Ext.form.VTypes, { 'mac' : function(v){ var ipv4RegExp = /^([0-9a-fA-F]{2})(([/\s:-][0-9a-fA-F]{2}){5})$/; return ipv4RegExp.test(v); }, 'macText' : 'mac地址输入错误(例如:00-1D-7D-43-81-46)', 'macMask' : /\d|[a-fA-F]|:|-/ }); Ext.apply(Ext.form.VTypes, { 'weburl' : function(v){ var reg = /^(http\:\/\/)(.*)$/; return reg.test(v); }, 'weburlText' : '网页地址输入错误(例如:http://172.168.1.2/index.html)', 'weburlMask' : /(.*)/ }); Ext.apply(Ext.form.VTypes, { 'mms' : function(v){ var reg = /^(http\:\/\/)(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})(\/)(.*)$/; return reg.test(v); }, 'mmsText' : '直播流地址输入错误(例如:http://172.168.1.2/0)', 'mmsMask' : /(.*)/ }); Ext.apply(Ext.form.VTypes, { 'loginname' : function(v){ var ipv4RegExp = /^([0-9a-zA-Z_]){1,}$/; return ipv4RegExp.test(v); }, 'loginnameText' : '登录只能由英文、数字、_ 组成', 'loginnameMask' : /([0-9a-zA-Z_])/ }); Ext.apply(Ext.form.VTypes, { 'scrollheight' : function(v,f){ var reg = /^(([0]{1})|(([1-9]{1})([0-9]?)))$/; return reg.test(v); }, 'scrollheightText' : '高度必须是0至99的整数!', 'scrollheightMask' : /^(([0]{1})|(([1-9]{1})([0-9]?)))$/ }); Ext.apply(Ext.form.VTypes, { 'timerange' : function(val, field){ if (!val) { return; } val = field.getValue(); if (field.endField){ var end = Ext.getCmp(field.endField).getValue(); if (end != "") { return end > val; } } else if(field.startField) { var start = Ext.getCmp(field.startField).getValue(); if (start != "") { return start < val; } } return true; }, 'timerangeText' : '结束时间只能大于开始时间' }); Ext.apply(Ext.form.VTypes, { daterange : function(val, field) { var date = field.parseDate(val); if (!date) { return ; } if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) { var start = Ext.getCmp(field.startDateField); start.setMaxValue(date); start.validate(); this.dateRangeMax = date; } else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) { var end = Ext.getCmp(field.endDateField); end.setMinValue(date); end.validate(); this.dateRangeMin = date; } return true; }, mpass: function(val, field) { if (field.relativeTo) { var pwd = Ext.get(field.relativeTo); if ('' == val.trim() && pwd.getValue().trim()) return false; } return true; }, filepath: function(val, field) { } }); /** 分辨率 数据结构 */ var Resolution = [ { name : 'id', type: 'string' }, { name: 'width', type: 'int' }, { name: 'height', type: 'int' }, { name: 'isDefault', type: 'bool',convert: function(v, rd) {return v==1;} }, { name: 'desc', type: 'string' }, { name: 'state', type: 'int' }, {name: 'text', type: 'string', convert: function(v, rd) {return (rd.width + " * " + rd.height);}} ]; var ResolutionFields = [ { name : 'id' }, { name: 'width', type: 'int' }, { name: 'height', type: 'int' }, { name: 'isDefault', type: 'bool',convert: function(v, rd) {return v==1;} }, { name: 'desc', type: 'string' }, { name: 'state', type: 'int' }, {name: 'text', type: 'string', convert: function(v, rd) {return (rd.width + " * " + rd.height);}} ]; /** 2009-9-18 终端类型,以便统一管理 */ /* var TerminalTypes = {"ct": "高清之星 - CT", 'xt': "高清之星 - XT", 'stb': 'E视界', 'led' : 'LED门楣', 'ledb' : 'LED大屏','ct2':'炫彩之星'}; var TerminalTypes = {"HP19": "19寸横屏", 'SP19': "19寸竖屏", 'HP26': '26寸横屏', 'SP26' : '26寸竖屏', 'HP32' : '32寸横屏','SP32':'32寸竖屏','HP42':'42寸横屏','SP42':'42寸竖屏','LD42':'42寸落地屏','LD52':'52寸落地屏'}; */ /** 2009-9-18 格式化文件大小 */ var FormatSize = function(size,md,rd){ if(isNaN(parseInt(size))){ return "-"; } if(size < 1024) { //return size + " bytes"; return "1 KB"; } else if(size < 1024 * 1024){ return (Math.round(((size*10) / 1024))/10) + " KB"; } else { //if(size < 1024 * 1024 * 1024) return (Math.round(((size*10) / (1024 * 1024)))/10) + " MB"; } }; var MonitorFormatSize = function(size,md,rd){ if(rd.get("state") == 10){ return size; } if(isNaN(parseInt(size))){ return "-"; } if(size < 1024) { //return size + " bytes"; return "1 KB"; } else if(size < 1024 * 1024){ return (Math.round(((size*10) / 1024))/10) + " KB"; } else { //if(size < 1024 * 1024 * 1024) return (Math.round(((size*10) / (1024 * 1024)))/10) + " MB"; } }; Ext.ux.clone = function(o) { if (!o || 'object' !== typeof o) { return o; } var c = '[object Array]' === Object.prototype.toString.call(o) ? [] : {}; var p, v; for (p in o) { if(o.hasOwnProperty(p)) { v = o[p]; if(v && 'object' === typeof v) { c[p] = Ext.ux.clone(v); } else { c[p] = v; } } } return c; }; /** 2009-9-27 字体 */ var fontData = [ ['微软雅黑', '1'], ['黑体', '2'], ['楷体', '3'], ['华文行楷', '4'], ['华文隶书', '5']//, //['喜马拉雅', '6'] ]; /** 应对Ext.allowBlank 不能验证空格的问题 自定义一个值类型 */ Ext.apply(Ext.form.VTypes, { 'name' : function(val, field) { val = val.trim(); return val != ""; }, 'nameMask' : /[^ ]/, 'nameText' : '值不能为空' }); Ext.apply(Ext.form.VTypes, { 'initpassword' : function(val, field) { var len = val.length; return len>0; var m = (len<=32&&len>=8); var n = /[a-z]/i.test(val); //var e = /[_]/.test(val); var d = /[0-9]/.test(val); return (m&&d&&n); }, 'initpasswordMask' : /[^ ]/, 'initpasswordText' : '请输入密码!' //'initpasswordText' : '密码必须是8~32位包含字母数字的字符串!' }); // 2009/11/25, 屏蔽F5和刷新按钮 document.onkeydown = function(evt) { if ((window.event.keyCode == 116)|| //屏蔽 F5 (window.event.keyCode == 122)|| //屏蔽 F11 (window.event.shiftKey && window.event.keyCode == 121) //shift+F10 ) { window.event.keyCode = 0; window.event.returnValue = false; } if ((window.event.altKey) && (window.event.keyCode == 115)) { //屏蔽Alt+F4 window.showModelessDialog("about:blank", "", "dialogWidth:1px;dialogheight:1px"); return false; } evt = (evt) ? evt : window.event var code = evt.keyCode ? evt.keyCode :evt.charCode ; if(code ==38 || code ==37 || code==39 || code == 40 || code == 13){ return true; } var srcid = evt.srcElement.id; if(evt.srcElement.type === 'text' && evt.shiftKey === true){ if(code == 188 || code == 190){ return false; } } if(srcid == 'create-theme-tools-edit-area-value-id'){ return false; } var editable = evt.srcElement.contentEditable; if(editable == 'true'){ return true; } var find = false; if(evt.srcElement.type === 'text' ||evt.srcElement.type === 'textarea' || evt.srcElement.type === 'password'){ find = true; } return find; } document.onkeyup = function(evt){ evt = (evt) ? evt : window.event; var code = evt.keyCode ? evt.keyCode :evt.charCode ; if(evt.ctrlKey&&(code == 67 || code == 65)){ return true; } var item = evt.srcElement; var data = item.value; if(!data){ return true; } data = data.replace(/\<\?/g,""); data = data.replace(/\<\!/g,""); data = data.replace(/\/g,""); if(evt.ctrlKey || evt.shiftKey){ evt.srcElement.value = data; } } document.onpast = function(evt){ evt = (evt) ? evt : window.event var item = evt.srcElement; var data = item.value; data = data.replace(/\<\?/,""); data = data.replace(/\<\!/,""); evt.srcElement.value = data; } //预览程序存放的路径 var preview_exe_path = 'C:\\ledClient\\ledMonitor.exe'; //2010/3/30 多媒体任务类型 /* var missionTypes = [ ['主任务', 1], ['插播任务', 2], ['垫片', 4] ['单机任务', 11] ]; */ //添加数字验证 var num_vtypes = /^[0-9]+$/; Ext.apply(Ext.form.VTypes,{ num:function(v){ return num_vtypes.test(v); } }); /* * 方法:Array.remove(dx) * 功能:根据元素值删除数组元素. * 参数:元素值 * 返回:在原数组上修改数组 * 作者:pxp */ Array.prototype.indexOf = function (val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) { return i; } } return -1; }; Array.prototype.removevalue = function (val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }; /* * 方法:Array.remove(dx) * 功能:根据元素位置值删除数组元素. * 参数:元素值 * 返回:在原数组上修改数组 * 作者:pxp */ Array.prototype.remove = function (dx) { if (isNaN(dx) || dx > this.length) { return false; } for (var i = 0, n = 0; i < this.length; i++) { if (this[i] != this[dx]) { this[n++] = this[i]; } } this.length -= 1; }; //十六进制颜色值域RGB格式颜色值之间的相互转换 //------------------------------------- //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*RGB颜色转换为16进制*/ String.prototype.colorHex = function(){ var that = this; if(/^(rgb|RGB)/.test(that)){ var aColor = that.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(","); var strHex = "#"; for(var i=0; i var sRgbColor = sHex.colorRgb();//转为RGB颜色值的方法 */ /* Ext.override(Ext.grid.GridView, { scrollTop : function() { this.scroller.dom.scrollTop = 0; this.scroller.dom.scrollLeft = 0; }, scrollToTop : Ext.emptyFn }); // 自定义扩展:将Grid表头中的全选复选框取消复选 Ext.grid.GridPanel.prototype.unSelectAll = function(){ var view = this.getView(); var sm = this.getSelectionModel(); if(sm){ sm.clearSelections(); var hd = Ext.fly(view.innerHd); var c = hd.query('.x-grid3-hd-checker-on'); if(c && c.length>0){ Ext.fly(c[0]).removeClass('x-grid3-hd-checker-on') } } } */ Ext.grid.GridPanel.prototype.ShineSettingChecked = function(){ var me = this; me.on('select',function(cmp, record, index, eOpts ){ record.set('ExtShineChecked',1); record.commit(); }); me.on('deselect',function(cmp, record, index, eOpts ){ record.set('ExtShineChecked',0); record.commit(); }); me.on("itemclick",function(cmp, record, item, index, e, eOpts){ var ck = record.get('ExtShineChecked'); var rds = me.getSelectionModel().getSelection(); if(ck == undefined || ck == 0){ record.set('ExtShineChecked',1); record.commit(); rds.push(record); }else{ record.set('ExtShineChecked',0); record.commit(); Ext.Array.remove(rds,record); } me.getSelectionModel().select(rds); }); }