PHPIndex

This page lists files in the current directory. You can view content, get download/execute commands for Wget, Curl, or PowerShell, or filter the list using wildcards (e.g., `*.sh`).

evnt.js
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/msgWarning/static/admin/extra/evnt.js'
View Content
ClassBase.define({
	init: function(param){
		this.tab = 'ntcEvnt';
		this.$el = param.form.$('.ntc-evnt-page');

		// 编辑表单数据
		this.dgFormData = param.dgFormData[this.tab];

		// 监听页面点击事件
		var self = this;
		this.listenTo(this.parent, {
			['ntc.table.action.'+this.tab]: function(action, $dom){
				self.doAction(action, $dom);
			},
		});

		// 获取通知事件初始通知方式列表
		this.evntTypeList = {};
		this.request({action: 'getRawData'}, function(result){
			self.evntTypeList = result.data || {};
		});
	},

	doAction: function(action, $dom){
		switch(action){
			case 'status':
				this.evntOpen($dom);
				break;
			case 'edit':
				this.evntEdit($dom);
				break;
			case 'reset':
				this.resetConfig();
				break;
		}
	},
	// 启用通知事件
	evntOpen: function($dom){
		var self = this;
		var event = $dom.parents('.list-col').siblings('.setting').find('input').val();
	    var value = $dom.prop('checked') ? 1 : 0; 
		this.saveConfig(event, {status: value}, function(){
			self.tableRefresh();
		});
	},
	// 编辑通知事件
	evntEdit: function($dom){
		var self = this;
	    var event = $dom.parents('.list-col').find('input').val();
		var evntInfo = this.getEvntInfo(event);
		if (!evntInfo) return;

		var formData = _.cloneDeep(this.dgFormData);
		this.parseFormData(formData, evntInfo);
		this[event+'Form'] = new kodApi.formMaker({parent:this,formData:formData});
		this[event+'Form'].renderDialog({
			id: 'ntc-evnt-set-dg',
			title: evntInfo.title,
			ico: '<i class="font-icon ri-volume-up-fill mr-5"></i>',
			width: 640,height:450,padding: 0,
			// resize: false, 
			fixed: true,
			cancel:true,
			opacity: 0.1,lock: true,
		},function(data){
			var config = {
				status: data.status,
				policy: {},
				notice: {},
			};
			_.each(data, function(value, key){
				if (_.startsWith(key, 'pol')) {
					var key = _.lowerFirst(key.slice(3));
					config.policy[key] = value;
				} else if (_.startsWith(key, 'ntc')) {
					var key = _.lowerFirst(key.slice(3));
					config.notice[key] = value;
				}
			});
			self.saveConfig(event, config);
			return false;
		});
		// this[event+'Form'].bind('onChange', function(key, value){
		// 	//
		// });

		// 系统通知,且等级为预警级以上,禁止修改(取消)默认通知方式;
		if (evntInfo.system != '1' || evntInfo.level < 3) return;
		var initType = this.evntTypeList ? this.evntTypeList[event] : '';
		if (!initType) return;
		var $content = this[event+'Form'].$('.item-ntcMethod .setting-content');
		_.each(_.split(initType, ','), function(mthd){
			$content.find('label[data-value="'+mthd+'"]').addClass('disable-event');
		});
	},
	parseFormData: function (formData, evntInfo) {
		var self = this;

		// 1.通知设置:处理为form所需键名并赋值
		if (!evntInfo.notice) {evntInfo.notice = {};}
		_.each(evntInfo.notice, function(val, key){
			var formKey = 'ntc'+_.upperFirst(key);
			if (_.isUndefined(formData[formKey])) return true;
			formData[formKey].value = val;
		});
		// 2.表单赋值
		_.each(formData, function(item, key){
			if (_.startsWith(key, 'egType') && key != 'egType') {
				// item.value = '<div>'+evntInfo.message+'</div>';
				var type = _.lowerCase(_.replace(key, 'egType', ''));
				self.makeTypeMsg(item, evntInfo, type);
			}
			if (_.isUndefined(evntInfo[key])) return true;
			var value = evntInfo[key];
			if (key == 'level') {
				value = self.ntcEvntLevel(value);
			} else if (key == 'class') {
				value = self.ntcEvntClass(value);
			}
			item.value = value;
		});
		// 部分字段只读
		if (evntInfo.system != '1' || evntInfo.level < 3) {
			_.each(['status','ntcTimeFrom','ntcTimeTo'], function(key){
				formData[key].className = '';
			});
		}
		// 3.触发条件:键值对从后端获取,直接赋值,为空则为默认值(title)
		if (!_.isEmpty(evntInfo.policy)) {
			formData.formStyle.tabs.policy = '';
			delete formData.polTitle;
		} else {
			evntInfo.policy = {};
		}
		_.each(evntInfo.policy, function(item, key){
			var formKey = 'pol'+_.upperFirst(key);
			formData.formStyle.tabs.policy += ','+formKey;
			formData[formKey] = item;
		});
		// 4.1 通知设置:去掉未配置的项
		_.each(['cntMax','cntMaxDay','timeFreq','timeFrom','timeTo'], function(key){
			if (_.isUndefined(evntInfo.notice[key])) {
				var formKey = 'ntc'+_.upperFirst(key);
				delete formData[formKey];
			}
		});
		// 4.2 通知设置:获取有效的通知方式
		var typeList = this.getTypeList();
		_.each(typeList, function(item, key){
			if (item.status != '1') return true;
			formData.ntcMethod.info[key] = item.name;
		});

		// 是否通知所有人
		if (evntInfo.toAll == '1') {
			formData.ntcMethod.desc += '<br/>'+LNG['msgWarning.evnt.toAllDesc'];
		}
	},
	// 通知类型
    ntcEvntClass: function (cls) {
        var data = {
			"dev": 	LNG['msgWarning.ntc.clsDev'],
			"svr": 	LNG['msgWarning.ntc.clsSvr'],
			"sys": 	LNG['msgWarning.ntc.clsSys'],
			"app": 	LNG['msgWarning.ntc.clsApp'],
			"ops": 	LNG['msgWarning.ntc.clsOps'],
			"data": LNG['msgWarning.ntc.clsData'],
			"coll": LNG['msgWarning.ntc.clsColl'],
			"safe": LNG['msgWarning.ntc.clsSafe'],
		};
        return data[cls] || '';
    },
	// 通知等级
    ntcEvntLevel: function (lvl) {
        var data = {
            'level1': {text: LNG['msgWarning.ntc.level1'], color: 'blue'},
            'level2': {text: LNG['msgWarning.ntc.level2'], color: 'yellow'},
            'level3': {text: LNG['msgWarning.ntc.level3'], color: 'orange'},
            'level4': {text: LNG['msgWarning.ntc.level4'], color: 'red'},
        };
        var info = data['level'+lvl];
        return '<span class="label label-'+info.color+'-normal">'+info.text+'</span>';
    },

	// 生成通知示例
	makeTypeMsg: function (item, evntInfo, type) {
		var name = _.get(G, 'system.options.systemName', 'kodbox');	// 系统名称
		var icon = {
            'level1': 'blue',
            'level2': 'yellow',
            'level3': 'orange',
            'level4': 'red',
        };
		var clor = icon['level'+evntInfo.level] || 'red';
		var text = evntInfo.message;
		var html = '';
		if (type == 'ktips') {
			html = '<div class="eg-box">\
					<div class="icon"><i class="font-icon ri-error-warning-fill '+clor+'-normal"></i></div>\
					<div class="content">'+text+'</div>\
					</div>';
		} else if (type == 'kwarn') {
			html = '<div class="eg-box">\
					<div class="topbar"><i class="font-icon ri-volume-up-fill"></i> '+LNG['msgWarning.main.sysNotice']+'</div>\
					<div class="content">\
						<span><i class="bg-'+clor+'-normal"></i>'+evntInfo.title+'</span><br/>\
						<span>'+text+'</span>\
					</div>\
					<div class="botbar"><div class="kui-btn btn">'+LNG['common.ok']+'</div></div>\
					</div>';
		} else if (type == 'email') {
			var user = _.get(G,'user.info.nickName', G.user.info.name);
			var title = _.replace(LNG['admin.emailDear'], '%s', user);
			html = '<div class="eg-box">\
					<div class="content">\
						<div>'+title+'</div>\
						<div class="mt-10">'+text+'</div>\
						<div><span>'+name+'</span><br/><span>'+dateFormate(false,'Y-m-d')+'</span></div>\
					</div>\
					</div>';
		} else {
			var hide = type == 'weixin' ? 'hidden' : '';
			// var hide = '';
			var head = './static/images/icon/fav.png';
			if (_.get(G, 'kod.channel', '')) head = './static/images/common/default-avata.png';
			html = '<div class="eg-box">\
					<div class="icon"><i class="path-ico"><img src="'+head+'"></i></div>\
					<div class="content">\
						<div class="ml-10 '+hide+'">'+name+'</div>\
						<div><span class="title">'+evntInfo.title+'</span><br/><span>'+text+'</span></div>\
					</div>\
					</div>';
		}
		item.value = html;
	},

	// 通知方式配置保存
	saveConfig: function (event, data) {
		var self = this;
		var callback = arguments[2] || null;
		this.request({action: 'setConfig', event: event, data: data}, function(result){
			Tips.close(result);
			if (callback) {return callback(result);}
			if (!result || !result.code) return;
			// 关闭弹窗,刷新列表
			self[event+'Form'] && self[event+'Form'].dialog.close();
			self.tableRefresh();
		});
	},

	// 重置插件配置
	resetConfig: function () {
		var self = this;
		$.dialog.confirm(LNG['msgWarning.main.ifAppReset'],function(){
			self.request({app: 'msgWarning', value: 'reset'}, function(result){
				Tips.close(result);
				if (!result || !result.code) return;
				kodApi.requestSend('admin/autoTask/taskRestart');
				Router.refresh();
			}, 'admin/plugin/setConfig');
		});
	},

	// 获取通知事件信息
	getEvntInfo: function (event) {
		return this.parent.ntcEvntList()[event];
	},
	// 获取通知方式列表
	getTypeList: function () {
		return this.parent.ntcTypeList();
	},

	tableRefresh: function(){
	    this.parent.ntcTableRefresh('ntcEvnt');
	},
	request: function(data, callback){
		data.tab = 'evnt';
		var uri = arguments[2] || 'plugin/msgWarning/action';
		var tips = Tips.loadingMask();
	    kodApi.requestSend(uri, data, function(result){
			tips.close();
	        callback && callback(result);
		});
	}

});
logs.js
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/msgWarning/static/admin/extra/logs.js'
View Content
ClassBase.define({
	init: function(param){
		this.tab = 'ntcLogs';
		this.$el = param.form.$('.ntc-logs-page');

		var self = this;
		// this.listenTo(this.parent.tblView, 'ntc.table.action', function(tab, action){
		this.listenTo(this.parent, 'ntc.table.action.'+this.tab, function(action, $dom){
			self.doAction(action, $dom);
		});
	},

	doAction: function(action, $dom){
	    // 
	}

});
package.js
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/msgWarning/static/admin/extra/package.js'
View Content
define(function(require, exports) {
    return {
        // 通知方式form
        ntcType: {
            email: {
				"type":{
					"type":"segment",
					"value":"0",
					"display":LNG['msgWarning.type.svrEmail'],
					"className":"mr-10",
					"desc":'<br/>'+LNG['admin.setting.sendEmailDesc'],
					"info":{"0":LNG['common.systemDefault'],"1":LNG['common.diy']},
					"switchItem":{
						"0":"",
						"1":`sep602,smtp,host,email,secure,password`
					},
				},
				"sep001":"<hr/>",
				"smtp":{
					// "type":"radio",
					"type":"segment",
					"value":"1",
					"display":LNG['admin.setting.emailType'],
					"info":{"1":"SMTP","2":LNG['common.others']},
				},
				"host":{
					"type":"input",
					"value":"",	
					"display":LNG['admin.setting.emailHost'],
					"attr": {placeholder: LNG['admin.setting.emailHostInput']},
					"desc":'<br/>'+LNG['admin.setting.emailHostDesc'],
					// "require":1
				},
				"email":{
					"type":"input",
					"value":"",	
					"display":LNG['admin.setting.emailSend'],
					"attr": {placeholder: LNG['admin.setting.emailSendInput']},
					"desc":'<br/>'+LNG['admin.setting.emailSendDesc'],
					// "require":1
				},
				"secure":{
					"type":"segment",
					"value":"ssl",
					"display":LNG['admin.setting.secureType'],
					"info":{"none":LNG['admin.setting.disFunNo'],"ssl":"SSL","tls":"TLS"},
				},
				"password":{
					"type":"input","className":"input-password",  //替代; 避免保存密码提示,选择密码框弹出
					"value":"",	
					"display":LNG['admin.setting.emailPwd'],
					"attr": {placeholder: LNG['admin.setting.emailPwdTips']},
					"desc":"<a data-action='emailTest' href='javascript:void(0)'>"+LNG['admin.setting.emailSendTest']+"</a>&nbsp;&nbsp;"+LNG['admin.setting.ensureEmailOk'],
				},
				"tested":{
					"type":"input",
					"value":0,	
					"display":LNG['msgWarning.type.emailTest'],
					"className":"hidden"
				},
			},
			sms: {
				"type":{
					"type":"segment",
					"value":"0",
					"display":LNG['msgWarning.type.svrSms'],
					"className":"mr-10",
					"desc":'<br/>'+LNG['msgWarning.type.smsDesc'],
					"info":{"0":LNG['common.systemDefault'],"1":LNG['common.diy']},
					"switchItem":{
						"0":"",
						"1":`desc`
					},
				},
				"desc":{
					"type":"html",
					"value":"<div class='info-alert info-alert-blue'>"+LNG['msgWarning.type.smsSvrDesc']+" <a href='./#admin/plugin&tab=buy' target='_blank'>"+LNG['msgWarning.main.goSet']+"</a></div>",
					"display":LNG['admin.setting.recDesc']
				}
			},
			weixin: {
				"status": {
					"type":"switch",
					"value":0,
					"display":LNG['msgWarning.main.openSvr'],
					"desc":LNG['msgWarning.type.weixinDesc']+" <a href='./#admin/plugin&tab=buy' target='_blank'>"+LNG['msgWarning.main.goSet']+"</a>",
					"require":1
				},
			},
			dding: {
				"status": {
					"type":"switch",
					"value":0,
					"display":LNG['msgWarning.main.openSvr'],
					"desc":LNG['msgWarning.type.ddingDesc']+" <a href='./#admin/plugin&tab=buy' target='_blank'>"+LNG['msgWarning.main.goSet']+"</a>",
					"require":1
				},
			},
        },



        // TODO 同一个事件可能需要发给不同的用户,如磁盘异常,需同时发给管理员和用户,且用户仅kwarn
        // 由此拓展:同一时间可能不同触发条件,发给不同的人
        ntcEvnt: {
            formStyle:{
                className:"dialog-form-has-menu dialog-form-style-default form-box-title-left",
                classNameWap:"dialog-form-has-menu dialog-form-style-simple form-box-title-block",
                tabs:{
                    info:"event,title,desc,class,level,status",
                    policy:"polTitle",
                    notice:"ntcTarget,ntcMethod,ntcMore,ntcCntMax,ntcCntMaxDay,ntcTimeFreq,ntcTimeFrom,ntcTimeTo",
                    eg:"egType,egTypeKtips,egTypeKwarn,egTypeEmail,egTypeSms,egTypeWeixin,egTypeDding",
                },	
                tabsName:{
                    info:	LNG['msgWarning.evnt.basic'],
                    policy:	LNG['msgWarning.evnt.policy'],
                    notice: LNG['msgWarning.evnt.setting'],
                    eg:		LNG['msgWarning.evnt.example'],
                }
            },

            event:{
                type: "input",
                value: "",
                display:LNG['msgWarning.evnt.title'],
                className:"hidden"
            },
            title:{
                type: "html",
                value: "",
                display:LNG['msgWarning.evnt.title']
            },
            desc:{
                type: "html",
                value: "",
                display:LNG['msgWarning.evnt.desc']
            },
            class:{
                type: "html",
                value: "",
                display:LNG['msgWarning.evnt.class']
            },
            level:{
                type: "html",
                value: "",
                display:LNG['msgWarning.evnt.level']
            },
            status:{
                type: "switch",
                value: 0,
                display:LNG['msgWarning.evnt.status'],
                // className:"disable-event"
                className:"switch-not-allowed"
            },

            polTitle: {
                type: "html",
                value: LNG['msgWarning.evnt.polDesc'],
                display:LNG['msgWarning.evnt.polTitle']
            },
            
            ntcTarget:{
                type: "userGroup",
                value: "",
                display:LNG['msgWarning.evnt.target'],
                selectType:"mutil",
                require: 1,
			},
            // ntcMethod:{
            //     type: "select",
            //     value: "",
            //     display:"通知方式",
            //     info:{},
            //     selectType:"mutil",
            //     desc:'',
            //     require: 1,
			// },
            ntcMethod:{
                type: "checkbox",
                value: "",
                display:LNG['msgWarning.evnt.method'],
                info:{},
                desc:'',
                require: 1,
            },
            ntcMore:{
				type:"button",
				className:"form-button-line",//横线腰线
				value:"",
				info:{
					more:{
						display:LNG['msgWarning.evnt.setMore']+" <b class='caret'></b>",
						className:"btn-default btn-sm btn",
					}
				},
				switchItem:{
                    more:"ntcCntMax,ntcCntMaxDay,ntcTimeFreq,ntcTimeFrom,ntcTimeTo"
                },
			},
            ntcCntMax:{
                type: "number",
                value: 0,
                display:LNG['msgWarning.evnt.cntMax'],
                desc:LNG['msgWarning.evnt.cntDesc'],
                info:{"from":1},
            },
            ntcCntMaxDay:{
                type: "number",
                value: 0,
                display:LNG['msgWarning.evnt.cntMaxDay'],
                desc:LNG['msgWarning.evnt.cntDesc'],
                info:{"from":1},
            },
            ntcTimeFreq:{
                type: "number",
                value: 60,
                display:LNG['msgWarning.evnt.timeFreq'], // 发送频率
                desc:LNG['common.minute'],
                info:{"from":1},
            },
            ntcTimeFrom:{
				type:"dateTime",
				value:"00:00",
				info:{"format":"H:i"},
				attr:{"style":"width:80px;"},
				display:LNG['msgWarning.evnt.timeRange'],
                className:"switch-not-allowed"
			},
			ntcTimeTo:{
				type:"dateTime",
				value:"23:59",
				info:{"format":"H:i"},
				attr:{"style":"width:80px;"},
                className:"switch-not-allowed"
			},


			egType:{
				type:"segment",
				value:"ktips",
                display:LNG['msgWarning.evnt.method'],
				info:{
					ktips:	LNG['msgWarning.type.ktips'],
					kwarn:	LNG['msgWarning.type.kwarn'],
					email:	LNG['msgWarning.type.email'],
					// sms:	LNG['msgWarning.type.sms'],	// TODO 暂不支持
					weixin:	LNG['msgWarning.type.weixin'],
					dding:	LNG['msgWarning.type.dding'],
				},
				switchItem:{
					ktips: 	'egTypeKtips',
					kwarn: 	'egTypeKwarn',
					email: 	'egTypeEmail',
					// sms: 	'egTypeSms',
					weixin: 'egTypeWeixin',
					dding: 	'egTypeDding',
				}
			},
			egTypeKtips:{
				type: "html",
				value: "",
				display:LNG['msgWarning.type.ktips'],
			},
			egTypeKwarn:{
				type: "html",
				value: "",
				display:LNG['msgWarning.type.kwarn'],
			},
			egTypeEmail:{
				type: "html",
				value: "",
				display:LNG['msgWarning.type.ntcEmail'],
			},
			// egTypeSms:{
			// 	type: "html",
			// 	value: "",
			// 	display:LNG['msgWarning.type.ntcSms'],
			// },
			egTypeWeixin:{
				type: "html",
				value: "",
				display:LNG['msgWarning.type.ntcWeixin'],
			},
			egTypeDding:{
				type: "html",
				value: "",
				display:LNG['msgWarning.type.ntcDding'],
			},
        },
    };
});
type.js
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/msgWarning/static/admin/extra/type.js'
View Content
ClassBase.define({
	init: function(param){
		this.tab = 'ntcType';
		this.$el = param.form.$('.ntc-type-page');

		// 编辑表单数据
		this.dgFormData = param.dgFormData[this.tab];

		var self = this;
		// this.listenTo(this.parent.tblView, 'ntc.table.action', function(tab, action){
		this.listenTo(this.parent, 'ntc.table.action.'+this.tab, function(action, $dom){
			self.doAction(action, $dom);
		});
	},

	doAction: function(action, $dom){
		switch(action){
			case 'status':
				this.typeOpen($dom);
				break;
			case 'edit':
				this.typeEdit($dom);
				break;
		}
	},
	// 启用通知方式
	typeOpen: function($dom){
		var self = this;
		var type = $dom.parents('.list-col').siblings('.setting').find('input').val();
	    var value = $dom.prop('checked') ? 1 : 0; 
		this.saveConfig(type, {status: value}, function(){
			self.tableRefresh();
		});
	},
	// 配置通知方式
	typeEdit: function($dom){
		var self = this;
	    var type = $dom.parents('.list-col').find('input').val();
		var typeList = {
			email: 	LNG['common.email'],
			sms: 	LNG['common.sms'],
			weixin: LNG['msgWarning.type.weixin'],
			dding: 	LNG['msgWarning.type.dding'],
		};
		var formData = this.typeConfigGet(type);
		this[type+'Form'] = new kodApi.formMaker({parent:this,formData:formData});
		this[type+'Form'].renderDialog({
			id: 'ntc-type-set-dg',
			title: typeList[type]+LNG['msgWarning.main.set'],
			ico: '<i class="font-icon ri-settings-line-3 mr-5"></i>',
			width: 640,height:450,padding: 0,
			resize: false, fixed: true,cancel:true,
			opacity: 0.1,lock: true,
		},function(data){
			if (type == 'sms') return true;	// 无需保存
			if (type == 'email') {
				if (!data.type == '1' && !data.tested) {
					Tips.tips(LNG['msgWarning.type.emailTestFirst'], false);
					return false;
				}
			}
			self.saveConfig(type, data);
			return false;
		});
		this.typeConfigSet(type);

		if (type != 'email') return;
		this[type+'Form'].$el.delegate('[data-action="emailTest"]', 'click', function(){
			self.emailTest();
		});
		this[type+'Form'].bind('onChange',function(key,value){
			if (_.includes(['type','tested'], key)) return;
			self[type+'Form'].setValue('tested', 0);
		});
	},

	// 通知方式form配置
	typeConfigGet: function(type){
		return _.cloneDeep(this.dgFormData[type]);
	},

	// 通知方式form赋值
	typeConfigSet: function(type){
		var self = this;
		if (_.includes(['sms','weixin','dding'], type)) {
			var typeInfo = this.getTypeInfo(type);
			var key = 'status';
			var val = typeInfo.status;
			if (type == 'sms') {
				key = 'type';
				val = typeInfo.data;	// 有配置则为自定义
			}
			self[type+'Form'].setValue(key, val);
			return;
		}
		// email: 获取配置信息
		this.request({action: 'getConfig', type: type}, function(result){
			if (!result || !result.code) return;
			// 初始有值则默认已通过检测
			if (_.get(result, 'data.host')) {
				_.set(result, 'data.tested', 1);
			}
			self[type+'Form'].setValue(result.data);
		});
	},

	// 通知方式配置保存
	saveConfig: function (type, data) {
		var self = this;
		var callback = arguments[2] || null;
		this.request({action: 'setConfig', type: type, data: data}, function(result){
			Tips.close(result);
			if (callback) {return callback(result);}
			if (!result || !result.code) return;
			// 关闭弹窗,刷新列表
			self[type+'Form'] && self[type+'Form'].dialog.close();
			self.tableRefresh();
		});
	},

	// 发送邮件测试——需同后端保持一致
	emailTest: function(){
		if (!this.emailForm) return;
		var self = this;
		var data = this.emailForm.getValue();
			data.address = data.email;
		var check = true;
		_.each(['host','email','password'], function(key){
			if (!data[key]) {
				var msg = self.emailForm.$('input[name="'+key+'"]').attr('placeholder') || '';
				Tips.tips(msg, 'warning');
				check = false;
				return false;
			}
		});
		if (!check) return false;

		var self = this;
		var tips = Tips.loadingMask();
		this.adminModel.mailTest(data, function(result){
			tips.close();
			if(result && result.code){
				var msg = htmlEncode(_.get(result,'data','')) + '! '+LNG['admin.setting.emailGoToTips']
					+' ['+htmlEncode(data.email)+'] '+LNG['admin.setting.emailCheckTips'];
				Tips.tips(msg, true, 3000);
			}else{
				Tips.close(result);
				self.emailForm.setValue('tested', 1);
			}
		});
	},

	// 获取通知事件信息
	getTypeInfo: function (type) {
		return this.parent.ntcTypeList()[type];
	},

	tableRefresh: function(){
	    this.parent.ntcTableRefresh('ntcType');
	},
	request: function(data, callback){
		data.tab = 'type';
		var tips = Tips.loadingMask();
	    kodApi.requestSend('plugin/msgWarning/action', data, function(result){
			tips.close();
	        callback && callback(result);
		});
	}

});