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`).
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/msgWarning/static/admin/extra/evnt.js'
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);
});
}
});
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/msgWarning/static/admin/extra/logs.js'
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){
//
}
});
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/msgWarning/static/admin/extra/package.js'
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> "+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'],
},
},
};
});
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/msgWarning/static/admin/extra/type.js'
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);
});
}
});