mirror of
https://git.proxmox.com/git/pmg-gui
synced 2025-07-25 23:46:38 +00:00
jslint: remove trailing commas
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
ff735274ca
commit
771bd0b94b
@ -31,7 +31,7 @@ Ext.define('PMG.Application', {
|
|||||||
me.currentView.destroy();
|
me.currentView.destroy();
|
||||||
me.currentView = Ext.create({
|
me.currentView = Ext.create({
|
||||||
xtype: view,
|
xtype: view,
|
||||||
targetview: me.targetview,
|
targetview: me.targetview
|
||||||
});
|
});
|
||||||
if (skipCheck !== true) {
|
if (skipCheck !== true) {
|
||||||
Proxmox.Utils.checked_command(function() {}); // display subscription status
|
Proxmox.Utils.checked_command(function() {}); // display subscription status
|
||||||
|
@ -19,7 +19,7 @@ Ext.define('PMG.ClamAVDatabaseConfig', {
|
|||||||
Ext.apply(me, {
|
Ext.apply(me, {
|
||||||
url: '/api2/json' + baseurl,
|
url: '/api2/json' + baseurl,
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs' + baseurl,
|
url: '/api2/extjs' + baseurl
|
||||||
},
|
},
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
cwidth1: 200,
|
cwidth1: 200,
|
||||||
@ -98,7 +98,7 @@ Ext.define('PMG.ClamAVDatabaseStatus', {
|
|||||||
flex: 1,
|
flex: 1,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
dataIndex: 'nsigs'
|
dataIndex: 'nsigs'
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
listeners: {
|
listeners: {
|
||||||
activate: me.reload
|
activate: me.reload
|
||||||
|
@ -82,7 +82,7 @@ Ext.define('PMG.ContactDetails', {
|
|||||||
header: gettext('Time'),
|
header: gettext('Time'),
|
||||||
format: 'H:i:s',
|
format: 'H:i:s',
|
||||||
dataIndex: 'time'
|
dataIndex: 'time'
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
initComponent: function() {
|
initComponent: function() {
|
||||||
@ -119,7 +119,7 @@ Ext.define('PMG.ContactList', {
|
|||||||
'contact',
|
'contact',
|
||||||
{ type: 'integer', name: 'count' },
|
{ type: 'integer', name: 'count' },
|
||||||
{ type: 'integer', name: 'viruscount' },
|
{ type: 'integer', name: 'viruscount' },
|
||||||
{ type: 'integer', name: 'bytes' },
|
{ type: 'integer', name: 'bytes' }
|
||||||
],
|
],
|
||||||
proxy: {
|
proxy: {
|
||||||
type: 'pmgfilterproxy',
|
type: 'pmgfilterproxy',
|
||||||
@ -192,7 +192,7 @@ Ext.define('PMG.ContactStatistics', {
|
|||||||
layout: 'border',
|
layout: 'border',
|
||||||
border: false,
|
border: false,
|
||||||
defaults: {
|
defaults: {
|
||||||
border: false,
|
border: false
|
||||||
},
|
},
|
||||||
|
|
||||||
controller: {
|
controller: {
|
||||||
@ -219,7 +219,7 @@ Ext.define('PMG.ContactStatistics', {
|
|||||||
layout: 'fit',
|
layout: 'fit',
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
|
||||||
listeners: { selectionchange: 'selectionChange' },
|
listeners: { selectionchange: 'selectionChange' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
xtype: 'pmgContactDetails',
|
xtype: 'pmgContactDetails',
|
||||||
|
@ -42,7 +42,7 @@ Ext.define('PMG.Dashboard', {
|
|||||||
win.close();
|
win.close();
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}],
|
}]
|
||||||
}).show();
|
}).show();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ Ext.define('PMG.Dashboard', {
|
|||||||
hours: 12, // in hours
|
hours: 12, // in hours
|
||||||
'bytes_in': 0,
|
'bytes_in': 0,
|
||||||
'bytes_out': 0,
|
'bytes_out': 0,
|
||||||
'avg_ptime': 0.0,
|
'avg_ptime': 0.0
|
||||||
},
|
},
|
||||||
|
|
||||||
stores: {
|
stores: {
|
||||||
@ -244,7 +244,7 @@ Ext.define('PMG.Dashboard', {
|
|||||||
type: 'proxmox',
|
type: 'proxmox',
|
||||||
url: '/api2/json/statistics/recentreceivers',
|
url: '/api2/json/statistics/recentreceivers',
|
||||||
extraParams: {
|
extraParams: {
|
||||||
hours: '{hours}',
|
hours: '{hours}'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
fields: [
|
fields: [
|
||||||
@ -288,7 +288,7 @@ Ext.define('PMG.Dashboard', {
|
|||||||
title: gettext('E-Mail Volume'),
|
title: gettext('E-Mail Volume'),
|
||||||
layout: {
|
layout: {
|
||||||
type: 'vbox',
|
type: 'vbox',
|
||||||
align: 'stretch',
|
align: 'stretch'
|
||||||
},
|
},
|
||||||
defaults: {
|
defaults: {
|
||||||
xtype: 'pmgMiniGraph',
|
xtype: 'pmgMiniGraph',
|
||||||
@ -309,8 +309,8 @@ Ext.define('PMG.Dashboard', {
|
|||||||
highlightCfg: {
|
highlightCfg: {
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
scaling: 1
|
scaling: 1
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fields: ['spam'],
|
fields: ['spam'],
|
||||||
@ -324,9 +324,9 @@ Ext.define('PMG.Dashboard', {
|
|||||||
highlightCfg: {
|
highlightCfg: {
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
scaling: 1
|
scaling: 1
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -334,7 +334,7 @@ Ext.define('PMG.Dashboard', {
|
|||||||
height: 300,
|
height: 300,
|
||||||
layout: {
|
layout: {
|
||||||
type: 'vbox',
|
type: 'vbox',
|
||||||
align: 'stretch',
|
align: 'stretch'
|
||||||
},
|
},
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
@ -348,7 +348,7 @@ Ext.define('PMG.Dashboard', {
|
|||||||
'out': '{bytes_out}',
|
'out': '{bytes_out}',
|
||||||
'ptime': '{avg_ptime}'
|
'ptime': '{avg_ptime}'
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
iconCls: 'fa fa-ticket',
|
iconCls: 'fa fa-ticket',
|
||||||
@ -356,7 +356,7 @@ Ext.define('PMG.Dashboard', {
|
|||||||
reference: 'subscription',
|
reference: 'subscription',
|
||||||
xtype: 'pmgSubscriptionInfo',
|
xtype: 'pmgSubscriptionInfo',
|
||||||
margin: '10 0 0 0',
|
margin: '10 0 0 0',
|
||||||
height: 110,
|
height: 110
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -416,7 +416,7 @@ Ext.define('PMG.Dashboard', {
|
|||||||
columnLines: false,
|
columnLines: false,
|
||||||
rowLines: false,
|
rowLines: false,
|
||||||
viewConfig: {
|
viewConfig: {
|
||||||
stripeRows: false,
|
stripeRows: false
|
||||||
},
|
},
|
||||||
|
|
||||||
columns: [
|
columns: [
|
||||||
|
@ -73,7 +73,7 @@ Ext.define('PMG.FetchmailEdit', {
|
|||||||
name: 'target',
|
name: 'target',
|
||||||
fieldLabel: gettext('Deliver to'),
|
fieldLabel: gettext('Deliver to'),
|
||||||
allowBlank: false
|
allowBlank: false
|
||||||
},
|
}
|
||||||
|
|
||||||
],
|
],
|
||||||
column2: [
|
column2: [
|
||||||
|
@ -5,7 +5,7 @@ Ext.define('pmg-fetchmail-users', {
|
|||||||
'id', 'protocol', 'port', 'server', 'user', 'pass', 'target',
|
'id', 'protocol', 'port', 'server', 'user', 'pass', 'target',
|
||||||
'ssl', 'keep',
|
'ssl', 'keep',
|
||||||
{ type: 'integer', name: 'interval' },
|
{ type: 'integer', name: 'interval' },
|
||||||
{ type: 'boolean', name: 'enable' },
|
{ type: 'boolean', name: 'enable' }
|
||||||
],
|
],
|
||||||
proxy: {
|
proxy: {
|
||||||
type: 'proxmox',
|
type: 'proxmox',
|
||||||
@ -39,7 +39,7 @@ Ext.define('PMG.FetchmailView', {
|
|||||||
|
|
||||||
var win = Ext.create('PMG.FetchmailEdit', {
|
var win = Ext.create('PMG.FetchmailEdit', {
|
||||||
url: view.baseurl,
|
url: view.baseurl,
|
||||||
method: 'POST',
|
method: 'POST'
|
||||||
});
|
});
|
||||||
win.on('destroy', function() { view.store.load() });
|
win.on('destroy', function() { view.store.load() });
|
||||||
win.show();
|
win.show();
|
||||||
@ -84,12 +84,12 @@ Ext.define('PMG.FetchmailView', {
|
|||||||
reference: 'removeBtn',
|
reference: 'removeBtn',
|
||||||
callback: 'onAfterRemove',
|
callback: 'onAfterRemove',
|
||||||
waitMsgTarget: true
|
waitMsgTarget: true
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
listeners: {
|
listeners: {
|
||||||
//scope: 'controller',
|
//scope: 'controller',
|
||||||
itemdblclick: 'onEdit',
|
itemdblclick: 'onEdit'
|
||||||
},
|
},
|
||||||
|
|
||||||
columns: [
|
columns: [
|
||||||
|
@ -83,7 +83,7 @@ Ext.define('PMG.HourlyMailDistribution', {
|
|||||||
{ type: 'integer', name: 'viruscount_in' },
|
{ type: 'integer', name: 'viruscount_in' },
|
||||||
{ type: 'integer', name: 'viruscount_ou' },
|
{ type: 'integer', name: 'viruscount_ou' },
|
||||||
{ type: 'integer', name: 'bounces_in' },
|
{ type: 'integer', name: 'bounces_in' },
|
||||||
{ type: 'integer', name: 'bounces_out' },
|
{ type: 'integer', name: 'bounces_out' }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ Ext.define('PMG.LDAPInputPanel', {
|
|||||||
deleteEmpty: me.create ? false : true,
|
deleteEmpty: me.create ? false : true,
|
||||||
minValue: 1,
|
minValue: 1,
|
||||||
maxValue: 65535,
|
maxValue: 65535,
|
||||||
fieldLabel: gettext('Port'),
|
fieldLabel: gettext('Port')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
xtype: 'textfield',
|
xtype: 'textfield',
|
||||||
@ -294,7 +294,7 @@ Ext.define('PMG.LDAPConfig', {
|
|||||||
},
|
},
|
||||||
columns: [
|
columns: [
|
||||||
{ dataIndex: 'email', text: gettext('E-Mail address'), flex: 1 }
|
{ dataIndex: 'email', text: gettext('E-Mail address'), flex: 1 }
|
||||||
],
|
]
|
||||||
}]
|
}]
|
||||||
}).show();
|
}).show();
|
||||||
},
|
},
|
||||||
@ -373,7 +373,7 @@ Ext.define('PMG.LDAPConfig', {
|
|||||||
region: 'center',
|
region: 'center',
|
||||||
reference: 'grid',
|
reference: 'grid',
|
||||||
xtype: 'pmgLDAPConfigGrid',
|
xtype: 'pmgLDAPConfigGrid',
|
||||||
border: false,
|
border: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
xtype: 'tabpanel',
|
xtype: 'tabpanel',
|
||||||
@ -426,11 +426,11 @@ Ext.define('PMG.LDAPConfig', {
|
|||||||
}],
|
}],
|
||||||
bind: {
|
bind: {
|
||||||
title: Ext.String.format(gettext("Users of '{0}'"), '{name}')
|
title: Ext.String.format(gettext("Users of '{0}'"), '{name}')
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -450,7 +450,7 @@ Ext.define('PMG.LDAPConfigGrid', {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var win = Ext.createWidget('pmgLDAPEdit', {
|
var win = Ext.createWidget('pmgLDAPEdit', {
|
||||||
profileId: rec.data.profile,
|
profileId: rec.data.profile
|
||||||
});
|
});
|
||||||
win.on('destroy', me.reload, me);
|
win.on('destroy', me.reload, me);
|
||||||
win.load();
|
win.load();
|
||||||
@ -516,7 +516,7 @@ Ext.define('PMG.LDAPConfigGrid', {
|
|||||||
{
|
{
|
||||||
xtype: 'proxmoxStdRemoveButton',
|
xtype: 'proxmoxStdRemoveButton',
|
||||||
baseurl: '/config/ldap',
|
baseurl: '/config/ldap',
|
||||||
callback: 'reload',
|
callback: 'reload'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxButton',
|
xtype: 'proxmoxButton',
|
||||||
@ -526,7 +526,7 @@ Ext.define('PMG.LDAPConfigGrid', {
|
|||||||
},
|
},
|
||||||
disabled: true,
|
disabled: true,
|
||||||
handler: 'sync'
|
handler: 'sync'
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
listeners: {
|
listeners: {
|
||||||
@ -589,7 +589,7 @@ Ext.define('PMG.LDAPConfigGrid', {
|
|||||||
width: 80,
|
width: 80,
|
||||||
sortable: true,
|
sortable: true,
|
||||||
dataIndex: 'gcount'
|
dataIndex: 'gcount'
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -74,7 +74,7 @@ Ext.define('PMG.MailProxyOptions', {
|
|||||||
}],
|
}],
|
||||||
url: '/api2/json' + baseurl,
|
url: '/api2/json' + baseurl,
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs' + baseurl,
|
url: '/api2/extjs' + baseurl
|
||||||
},
|
},
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
cwidth1: 200,
|
cwidth1: 200,
|
||||||
|
@ -7,7 +7,7 @@ Ext.define('PMG.MailProxyPorts', {
|
|||||||
monStoreErrors: true,
|
monStoreErrors: true,
|
||||||
|
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs/config/mail',
|
url: '/api2/extjs/config/mail'
|
||||||
},
|
},
|
||||||
|
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
@ -24,7 +24,7 @@ Ext.define('PMG.MailProxyPorts', {
|
|||||||
},
|
},
|
||||||
|
|
||||||
listeners: {
|
listeners: {
|
||||||
itemdblclick: 'onEdit',
|
itemdblclick: 'onEdit'
|
||||||
},
|
},
|
||||||
|
|
||||||
tbar: [
|
tbar: [
|
||||||
|
@ -34,7 +34,7 @@ Ext.define('PMG.MailProxyRelaying', {
|
|||||||
}],
|
}],
|
||||||
url: '/api2/json' + baseurl,
|
url: '/api2/json' + baseurl,
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs' + baseurl,
|
url: '/api2/extjs' + baseurl
|
||||||
},
|
},
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
cwidth1: 200,
|
cwidth1: 200,
|
||||||
|
@ -27,7 +27,7 @@ Ext.define('PMG.MailProxyTLS', {
|
|||||||
}],
|
}],
|
||||||
url: '/api2/json' + baseurl,
|
url: '/api2/json' + baseurl,
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs' + baseurl,
|
url: '/api2/extjs' + baseurl
|
||||||
},
|
},
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
cwidth1: 200,
|
cwidth1: 200,
|
||||||
|
@ -6,7 +6,7 @@ Ext.define('PMG.MailStatGrid', {
|
|||||||
hideHeaders: true,
|
hideHeaders: true,
|
||||||
|
|
||||||
store: {
|
store: {
|
||||||
fields: [ 'name', 'value', 'percentage' ],
|
fields: [ 'name', 'value', 'percentage' ]
|
||||||
},
|
},
|
||||||
|
|
||||||
columns: [
|
columns: [
|
||||||
|
@ -217,7 +217,7 @@ Ext.define('PMG.MailTracker', {
|
|||||||
plugins: [
|
plugins: [
|
||||||
{
|
{
|
||||||
ptype: 'rowexpander',
|
ptype: 'rowexpander',
|
||||||
rowBodyTpl: '<p class="logs">{logs}</p>',
|
rowBodyTpl: '<p class="logs">{logs}</p>'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -22,25 +22,25 @@ Ext.define('PMG.store.NavigationStore', {
|
|||||||
text: gettext('Action Objects'),
|
text: gettext('Action Objects'),
|
||||||
iconCls: 'fa fa-flag',
|
iconCls: 'fa fa-flag',
|
||||||
path: 'pmgActionList',
|
path: 'pmgActionList',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Who Objects'),
|
text: gettext('Who Objects'),
|
||||||
iconCls: 'fa fa-user-circle',
|
iconCls: 'fa fa-user-circle',
|
||||||
path: 'pmgWhoConfiguration',
|
path: 'pmgWhoConfiguration',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('What Objects'),
|
text: gettext('What Objects'),
|
||||||
iconCls: 'fa fa-cube',
|
iconCls: 'fa fa-cube',
|
||||||
path: 'pmgWhatConfiguration',
|
path: 'pmgWhatConfiguration',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('When Objects'),
|
text: gettext('When Objects'),
|
||||||
iconCls: 'fa fa-clock-o',
|
iconCls: 'fa fa-clock-o',
|
||||||
path: 'pmgWhenConfiguration',
|
path: 'pmgWhenConfiguration',
|
||||||
leaf: true,
|
leaf: true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -54,31 +54,31 @@ Ext.define('PMG.store.NavigationStore', {
|
|||||||
text: gettext('Mail Proxy'),
|
text: gettext('Mail Proxy'),
|
||||||
iconCls: 'fa fa-envelope-o',
|
iconCls: 'fa fa-envelope-o',
|
||||||
path: 'pmgMailProxyConfiguration',
|
path: 'pmgMailProxyConfiguration',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Spam Detector'),
|
text: gettext('Spam Detector'),
|
||||||
iconCls: 'fa fa-bullhorn',
|
iconCls: 'fa fa-bullhorn',
|
||||||
path: 'pmgSpamDetectorConfiguration',
|
path: 'pmgSpamDetectorConfiguration',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Virus Detector'),
|
text: gettext('Virus Detector'),
|
||||||
iconCls: 'fa fa-bug',
|
iconCls: 'fa fa-bug',
|
||||||
path: 'pmgVirusDetectorConfiguration',
|
path: 'pmgVirusDetectorConfiguration',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('User Management'),
|
text: gettext('User Management'),
|
||||||
iconCls: 'fa fa-users',
|
iconCls: 'fa fa-users',
|
||||||
path: 'pmgUserManagement',
|
path: 'pmgUserManagement',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Cluster'),
|
text: gettext('Cluster'),
|
||||||
iconCls: 'fa fa-server',
|
iconCls: 'fa fa-server',
|
||||||
path: 'pmgClusterAdministration',
|
path: 'pmgClusterAdministration',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Subscription'),
|
text: gettext('Subscription'),
|
||||||
@ -98,37 +98,37 @@ Ext.define('PMG.store.NavigationStore', {
|
|||||||
text: gettext('Spam Quarantine'),
|
text: gettext('Spam Quarantine'),
|
||||||
iconCls: 'fa fa-bullhorn',
|
iconCls: 'fa fa-bullhorn',
|
||||||
path: 'pmgSpamQuarantine',
|
path: 'pmgSpamQuarantine',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Virus Quarantine'),
|
text: gettext('Virus Quarantine'),
|
||||||
iconCls: 'fa fa-bug',
|
iconCls: 'fa fa-bug',
|
||||||
path: 'pmgVirusQuarantine',
|
path: 'pmgVirusQuarantine',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('User Whitelist'),
|
text: gettext('User Whitelist'),
|
||||||
iconCls: 'fa fa-file-o',
|
iconCls: 'fa fa-file-o',
|
||||||
path: 'pmgUserWhitelist',
|
path: 'pmgUserWhitelist',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('User Blacklist'),
|
text: gettext('User Blacklist'),
|
||||||
iconCls: 'fa fa-file',
|
iconCls: 'fa fa-file',
|
||||||
path: 'pmgUserBlacklist',
|
path: 'pmgUserBlacklist',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Tracking Center'),
|
text: gettext('Tracking Center'),
|
||||||
iconCls: 'fa fa-map-o',
|
iconCls: 'fa fa-map-o',
|
||||||
path: 'pmgMailTracker',
|
path: 'pmgMailTracker',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Queues'),
|
text: gettext('Queues'),
|
||||||
iconCls: 'fa fa-bars',
|
iconCls: 'fa fa-bars',
|
||||||
path: 'pmgQueueAdministration',
|
path: 'pmgQueueAdministration',
|
||||||
leaf: true,
|
leaf: true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -88,7 +88,7 @@ Ext.define('PMG.Postfix.MailQueue', {
|
|||||||
|
|
||||||
var win = Ext.create('PMG.ViewMailHeaders', {
|
var win = Ext.create('PMG.ViewMailHeaders', {
|
||||||
title: view.title + ' : ' + rec.data.queue_id,
|
title: view.title + ' : ' + rec.data.queue_id,
|
||||||
url: url,
|
url: url
|
||||||
});
|
});
|
||||||
win.show();
|
win.show();
|
||||||
},
|
},
|
||||||
|
@ -87,7 +87,7 @@ Ext.define('PMG.Postfix.QShape', {
|
|||||||
activate: function() {
|
activate: function() {
|
||||||
this.view.store.load(); // reload
|
this.view.store.load(); // reload
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ Ext.define('PMG.QuarantineList', {
|
|||||||
|
|
||||||
control: {
|
control: {
|
||||||
'#':{
|
'#':{
|
||||||
beforedestroy: 'resetEmail',
|
beforedestroy: 'resetEmail'
|
||||||
},
|
},
|
||||||
'combobox[reference=email]': {
|
'combobox[reference=email]': {
|
||||||
change: {
|
change: {
|
||||||
|
@ -23,13 +23,13 @@ Ext.define('PMG.QuarantineNavigationTree', {
|
|||||||
text: gettext('Whitelist'),
|
text: gettext('Whitelist'),
|
||||||
//iconCls: 'fa fa-cubes',
|
//iconCls: 'fa fa-cubes',
|
||||||
path: 'pmgUserWhitelist',
|
path: 'pmgUserWhitelist',
|
||||||
leaf: true,
|
leaf: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Blacklist'),
|
text: gettext('Blacklist'),
|
||||||
//iconCls: 'fa fa-cubes',
|
//iconCls: 'fa fa-cubes',
|
||||||
path: 'pmgUserBlacklist',
|
path: 'pmgUserBlacklist',
|
||||||
leaf: true,
|
leaf: true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -237,7 +237,7 @@ Ext.define('PMG.QuarantineView', {
|
|||||||
layout: 'card',
|
layout: 'card',
|
||||||
region: 'center',
|
region: 'center',
|
||||||
border: false,
|
border: false,
|
||||||
reference: 'contentpanel',
|
reference: 'contentpanel'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
@ -30,7 +30,7 @@ Ext.define('PMG.QueueAdministration', {
|
|||||||
|
|
||||||
control: {
|
control: {
|
||||||
pmgPostfixQShape: {
|
pmgPostfixQShape: {
|
||||||
itemdblclick: 'onSelect',
|
itemdblclick: 'onSelect'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -18,7 +18,7 @@ Ext.define('PMG.RBLStatistics', {
|
|||||||
legend: false,
|
legend: false,
|
||||||
fields: [ 'count' ],
|
fields: [ 'count' ],
|
||||||
fieldTitles: [
|
fieldTitles: [
|
||||||
gettext('RBL rejects'),
|
gettext('RBL rejects')
|
||||||
],
|
],
|
||||||
store: {
|
store: {
|
||||||
type: 'pmgStatStore',
|
type: 'pmgStatStore',
|
||||||
|
@ -204,7 +204,7 @@ Ext.define('PMG.ReceiverStatistics', {
|
|||||||
layout: 'border',
|
layout: 'border',
|
||||||
border: false,
|
border: false,
|
||||||
defaults: {
|
defaults: {
|
||||||
border: false,
|
border: false
|
||||||
},
|
},
|
||||||
|
|
||||||
controller: {
|
controller: {
|
||||||
@ -231,7 +231,7 @@ Ext.define('PMG.ReceiverStatistics', {
|
|||||||
layout: 'fit',
|
layout: 'fit',
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
|
||||||
listeners: { selectionchange: 'selectionChange' },
|
listeners: { selectionchange: 'selectionChange' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
xtype: 'pmgReceiverDetails',
|
xtype: 'pmgReceiverDetails',
|
||||||
|
@ -17,7 +17,7 @@ Ext.define('PMG.RulesConfiguration', {
|
|||||||
layout: 'border',
|
layout: 'border',
|
||||||
border: false,
|
border: false,
|
||||||
defaults: {
|
defaults: {
|
||||||
border: false,
|
border: false
|
||||||
},
|
},
|
||||||
|
|
||||||
controller: {
|
controller: {
|
||||||
@ -112,7 +112,7 @@ Ext.define('PMG.RulesConfiguration', {
|
|||||||
data: {
|
data: {
|
||||||
selectedRule: undefined,
|
selectedRule: undefined,
|
||||||
baseUrl: '/config/ruledb/rules'
|
baseUrl: '/config/ruledb/rules'
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
items: [
|
items: [
|
||||||
@ -135,7 +135,7 @@ Ext.define('PMG.RulesConfiguration', {
|
|||||||
xtype: 'button',
|
xtype: 'button',
|
||||||
text: gettext('Add'),
|
text: gettext('Add'),
|
||||||
iconCls: 'fa fa-plus-circle',
|
iconCls: 'fa fa-plus-circle',
|
||||||
reference: 'addButton',
|
reference: 'addButton'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxStdRemoveButton',
|
xtype: 'proxmoxStdRemoveButton',
|
||||||
@ -171,7 +171,7 @@ Ext.define('PMG.RulesConfiguration', {
|
|||||||
direction: 'DESC'
|
direction: 'DESC'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
property: 'name',
|
property: 'name'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -181,16 +181,16 @@ Ext.define('PMG.RulesConfiguration', {
|
|||||||
{
|
{
|
||||||
text: 'Active',
|
text: 'Active',
|
||||||
dataIndex: 'active',
|
dataIndex: 'active',
|
||||||
hidden : true,
|
hidden : true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'Name',
|
text: 'Name',
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
flex: 1,
|
flex: 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'Priority',
|
text: 'Priority',
|
||||||
dataIndex: 'priority',
|
dataIndex: 'priority'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'Direction',
|
text: 'Direction',
|
||||||
@ -216,7 +216,7 @@ Ext.define('PMG.RulesConfiguration', {
|
|||||||
return (rec.get('active') ? 'Deactivate' : 'Activate');
|
return (rec.get('active') ? 'Deactivate' : 'Activate');
|
||||||
},
|
},
|
||||||
handler: 'toggleIconClick'
|
handler: 'toggleIconClick'
|
||||||
},
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -226,7 +226,7 @@ Ext.define('PMG.RulesConfiguration', {
|
|||||||
reference: 'infopanel',
|
reference: 'infopanel',
|
||||||
xtype: 'pmgRuleInfo',
|
xtype: 'pmgRuleInfo',
|
||||||
split: true,
|
split: true,
|
||||||
width: 440,
|
width: 440
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
@ -82,7 +82,7 @@ Ext.define('PMG.SenderDetails', {
|
|||||||
header: gettext('Time'),
|
header: gettext('Time'),
|
||||||
format: 'H:i:s',
|
format: 'H:i:s',
|
||||||
dataIndex: 'time'
|
dataIndex: 'time'
|
||||||
},
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
initComponent: function() {
|
initComponent: function() {
|
||||||
@ -192,7 +192,7 @@ Ext.define('PMG.SenderStatistics', {
|
|||||||
layout: 'border',
|
layout: 'border',
|
||||||
border: false,
|
border: false,
|
||||||
defaults: {
|
defaults: {
|
||||||
border: false,
|
border: false
|
||||||
},
|
},
|
||||||
|
|
||||||
controller: {
|
controller: {
|
||||||
@ -219,7 +219,7 @@ Ext.define('PMG.SenderStatistics', {
|
|||||||
layout: 'fit',
|
layout: 'fit',
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
|
||||||
listeners: { selectionchange: 'selectionChange' },
|
listeners: { selectionchange: 'selectionChange' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
xtype: 'pmgSenderDetails',
|
xtype: 'pmgSenderDetails',
|
||||||
|
@ -66,7 +66,7 @@ Ext.define('PMG.SpamDetectorLanguagesInputPanel', {
|
|||||||
[ 'uk', 'Ukrainian' ],
|
[ 'uk', 'Ukrainian' ],
|
||||||
[ 'vi', 'Vietnamese' ],
|
[ 'vi', 'Vietnamese' ],
|
||||||
[ 'yi', 'Yiddish' ],
|
[ 'yi', 'Yiddish' ],
|
||||||
[ 'zh', 'Chinese' ],
|
[ 'zh', 'Chinese' ]
|
||||||
],
|
],
|
||||||
|
|
||||||
onGetValues: function(values) {
|
onGetValues: function(values) {
|
||||||
|
@ -51,7 +51,7 @@ Ext.define('PMG.SpamDetectorOptions', {
|
|||||||
}],
|
}],
|
||||||
url: '/api2/json' + baseurl,
|
url: '/api2/json' + baseurl,
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs' + baseurl,
|
url: '/api2/extjs' + baseurl
|
||||||
},
|
},
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
cwidth1: 200,
|
cwidth1: 200,
|
||||||
|
@ -55,5 +55,5 @@ Ext.define('PMG.grid.SpamInfoGrid',{
|
|||||||
dataIndex: 'desc',
|
dataIndex: 'desc',
|
||||||
flex: 3
|
flex: 3
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
});
|
});
|
||||||
|
@ -36,7 +36,7 @@ Ext.define('PMG.SpamQuarantineOptions', {
|
|||||||
comboItems: [
|
comboItems: [
|
||||||
['ticket', render_authmode('ticket') ],
|
['ticket', render_authmode('ticket') ],
|
||||||
['ldap', render_authmode('ldap') ],
|
['ldap', render_authmode('ldap') ],
|
||||||
['ldapticket', render_authmode('ldapticket') ]],
|
['ldapticket', render_authmode('ldapticket') ]]
|
||||||
});
|
});
|
||||||
|
|
||||||
var render_reportstyle = function(value) {
|
var render_reportstyle = function(value) {
|
||||||
@ -51,7 +51,7 @@ Ext.define('PMG.SpamQuarantineOptions', {
|
|||||||
['short', render_reportstyle('short') ],
|
['short', render_reportstyle('short') ],
|
||||||
['verbose', render_reportstyle('verbose') ],
|
['verbose', render_reportstyle('verbose') ],
|
||||||
['outlook', render_reportstyle('outlook') ],
|
['outlook', render_reportstyle('outlook') ],
|
||||||
['custom', render_reportstyle('custom') ]],
|
['custom', render_reportstyle('custom') ]]
|
||||||
});
|
});
|
||||||
|
|
||||||
me.add_text_row('hostname', gettext('Quarantine Host'),
|
me.add_text_row('hostname', gettext('Quarantine Host'),
|
||||||
@ -79,7 +79,7 @@ Ext.define('PMG.SpamQuarantineOptions', {
|
|||||||
}],
|
}],
|
||||||
url: '/api2/json' + baseurl,
|
url: '/api2/json' + baseurl,
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs' + baseurl,
|
url: '/api2/extjs' + baseurl
|
||||||
},
|
},
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
cwidth1: 200,
|
cwidth1: 200,
|
||||||
|
@ -25,7 +25,7 @@ Ext.define('PMG.SpamScoreDistribution', {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
columns: [
|
columns: [
|
||||||
@ -48,7 +48,7 @@ Ext.define('PMG.SpamScoreDistribution', {
|
|||||||
widget: {
|
widget: {
|
||||||
xtype: 'progressbarwidget',
|
xtype: 'progressbarwidget',
|
||||||
textTpl: ['{percent:number("0")}%' ]
|
textTpl: ['{percent:number("0")}%' ]
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
@ -54,7 +54,7 @@ Ext.define('PMG.SystemConfiguration', {
|
|||||||
layout: {
|
layout: {
|
||||||
type: 'vbox',
|
type: 'vbox',
|
||||||
align: 'stretch',
|
align: 'stretch',
|
||||||
multi: true,
|
multi: true
|
||||||
},
|
},
|
||||||
bodyPadding: '0 0 10 0',
|
bodyPadding: '0 0 10 0',
|
||||||
defaults: {
|
defaults: {
|
||||||
@ -68,7 +68,7 @@ Ext.define('PMG.SystemConfiguration', {
|
|||||||
minHeight: 200,
|
minHeight: 200,
|
||||||
title: gettext('Interfaces'),
|
title: gettext('Interfaces'),
|
||||||
xtype: 'proxmoxNodeNetworkView',
|
xtype: 'proxmoxNodeNetworkView',
|
||||||
nodename: Proxmox.NodeName,
|
nodename: Proxmox.NodeName
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: gettext('DNS'),
|
title: gettext('DNS'),
|
||||||
@ -79,7 +79,7 @@ Ext.define('PMG.SystemConfiguration', {
|
|||||||
title: gettext('Time'),
|
title: gettext('Time'),
|
||||||
xtype: 'proxmoxNodeTimeView',
|
xtype: 'proxmoxNodeTimeView',
|
||||||
nodename: Proxmox.NodeName
|
nodename: Proxmox.NodeName
|
||||||
},
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -94,7 +94,7 @@ Ext.define('PMG.SystemConfiguration', {
|
|||||||
{
|
{
|
||||||
itemId: 'options',
|
itemId: 'options',
|
||||||
title: gettext('Options'),
|
title: gettext('Options'),
|
||||||
xtype: 'pmgSystemOptions',
|
xtype: 'pmgSystemOptions'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
@ -29,7 +29,7 @@ Ext.define('PMG.SystemOptions', {
|
|||||||
}],
|
}],
|
||||||
|
|
||||||
listeners: {
|
listeners: {
|
||||||
itemdblclick: 'onEdit',
|
itemdblclick: 'onEdit'
|
||||||
},
|
},
|
||||||
|
|
||||||
add_proxy_row: function(name, text, opts) {
|
add_proxy_row: function(name, text, opts) {
|
||||||
|
@ -34,7 +34,7 @@ Ext.define('PMG.UserBlackWhiteList', {
|
|||||||
items.push({
|
items.push({
|
||||||
xtype: 'hidden',
|
xtype: 'hidden',
|
||||||
name: key,
|
name: key,
|
||||||
value: value,
|
value: value
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ Ext.define('PMG.UserBlackWhiteList', {
|
|||||||
editable: true,
|
editable: true,
|
||||||
reference: 'email',
|
reference: 'email',
|
||||||
name: 'email',
|
name: 'email',
|
||||||
fieldLabel: 'E-Mail',
|
fieldLabel: 'E-Mail'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: gettext('Add'),
|
text: gettext('Add'),
|
||||||
@ -178,7 +178,7 @@ Ext.define('PMG.UserBlacklist', {
|
|||||||
proxy: {
|
proxy: {
|
||||||
type: 'proxmox',
|
type: 'proxmox',
|
||||||
url: "/api2/json/quarantine/blacklist"
|
url: "/api2/json/quarantine/blacklist"
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
dockedItems: [
|
dockedItems: [
|
||||||
@ -187,7 +187,7 @@ Ext.define('PMG.UserBlacklist', {
|
|||||||
bodyStyle: {
|
bodyStyle: {
|
||||||
padding: '10px',
|
padding: '10px',
|
||||||
'border-left': '0px',
|
'border-left': '0px',
|
||||||
'border-right': '0px',
|
'border-right': '0px'
|
||||||
},
|
},
|
||||||
html: gettext('With this feature, you can manually mark E-mails from certain domains or addresses as spam.') + '<br><br>' +
|
html: gettext('With this feature, you can manually mark E-mails from certain domains or addresses as spam.') + '<br><br>' +
|
||||||
'<b>*.com</b> (all mails from <b>.com</b> domains)' + '<br>' +
|
'<b>*.com</b> (all mails from <b>.com</b> domains)' + '<br>' +
|
||||||
@ -212,7 +212,7 @@ Ext.define('PMG.UserWhitelist', {
|
|||||||
proxy: {
|
proxy: {
|
||||||
type: 'proxmox',
|
type: 'proxmox',
|
||||||
url: "/api2/json/quarantine/whitelist"
|
url: "/api2/json/quarantine/whitelist"
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
dockedItems: [
|
dockedItems: [
|
||||||
@ -221,7 +221,7 @@ Ext.define('PMG.UserWhitelist', {
|
|||||||
bodyStyle: {
|
bodyStyle: {
|
||||||
padding: '10px',
|
padding: '10px',
|
||||||
'border-left': '0px',
|
'border-left': '0px',
|
||||||
'border-right': '0px',
|
'border-right': '0px'
|
||||||
},
|
},
|
||||||
html: gettext('With this feature, you can manually bypass spam checking for certain domains or E-mail addresses.') + '<br><br>' +
|
html: gettext('With this feature, you can manually bypass spam checking for certain domains or E-mail addresses.') + '<br><br>' +
|
||||||
'<b>*.com</b> (all mails from <b>.com</b> domains)' + '<br>' +
|
'<b>*.com</b> (all mails from <b>.com</b> domains)' + '<br>' +
|
||||||
|
@ -25,7 +25,7 @@ Ext.define('PMG.UserEdit', {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
useridXType: userid ? 'displayfield' : 'textfield',
|
useridXType: userid ? 'displayfield' : 'textfield',
|
||||||
isSuperUser: userid === 'root@pam',
|
isSuperUser: userid === 'root@pam'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ Ext.define('PMG.UserEdit', {
|
|||||||
allowBlank: false,
|
allowBlank: false,
|
||||||
cbind: {
|
cbind: {
|
||||||
submitValue: '{create}',
|
submitValue: '{create}',
|
||||||
xtype: '{useridXType}',
|
xtype: '{useridXType}'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -89,7 +89,7 @@ Ext.define('PMG.UserView', {
|
|||||||
|
|
||||||
listeners: {
|
listeners: {
|
||||||
scope: 'controller',
|
scope: 'controller',
|
||||||
itemdblclick: 'onEdit',
|
itemdblclick: 'onEdit'
|
||||||
},
|
},
|
||||||
|
|
||||||
tbar: [
|
tbar: [
|
||||||
|
@ -17,7 +17,7 @@ Ext.define('PMG.Utils', {
|
|||||||
root: gettext('Superuser'),
|
root: gettext('Superuser'),
|
||||||
admin: gettext('Administrator'),
|
admin: gettext('Administrator'),
|
||||||
qmanager: gettext('Quarantine Manager'),
|
qmanager: gettext('Quarantine Manager'),
|
||||||
audit: gettext('Auditor'),
|
audit: gettext('Auditor')
|
||||||
},
|
},
|
||||||
|
|
||||||
format_user_role: function(role) {
|
format_user_role: function(role) {
|
||||||
|
@ -44,7 +44,7 @@ Ext.define('PMG.VirusDetectorOptions', {
|
|||||||
}],
|
}],
|
||||||
url: '/api2/json' + baseurl,
|
url: '/api2/json' + baseurl,
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs' + baseurl,
|
url: '/api2/extjs' + baseurl
|
||||||
},
|
},
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
cwidth1: 200,
|
cwidth1: 200,
|
||||||
|
@ -31,7 +31,7 @@ Ext.define('PMG.VirusQuarantineOptions', {
|
|||||||
}],
|
}],
|
||||||
url: '/api2/json' + baseurl,
|
url: '/api2/json' + baseurl,
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
url: '/api2/extjs' + baseurl,
|
url: '/api2/extjs' + baseurl
|
||||||
},
|
},
|
||||||
interval: 5000,
|
interval: 5000,
|
||||||
cwidth1: 200,
|
cwidth1: 200,
|
||||||
|
@ -18,8 +18,8 @@ Ext.define('PMG.dashboard.MiniGraph', {
|
|||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
axisLine: false,
|
axisLine: false,
|
||||||
majorTickSize: 0,
|
majorTickSize: 0
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'time',
|
type: 'time',
|
||||||
@ -31,11 +31,11 @@ Ext.define('PMG.dashboard.MiniGraph', {
|
|||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
axisLine: false,
|
axisLine: false,
|
||||||
majorTickSize: 0,
|
majorTickSize: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
border: false,
|
border: false,
|
||||||
flex: 1,
|
flex: 1,
|
||||||
noTool: true,
|
noTool: true
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user