extend: 'Proxmox.grid.ObjectGrid',
alias: ['widget.pmgMailProxyRelaying'],
- initComponent : function() {
+ monStoreErrors: true,
+
+ initComponent: function() {
var me = this;
- var rows = {
- relay: {
- required: true,
- defaultValue: Proxmox.Utils.noneText,
- header: gettext('Default Relay'),
- editor: {
- xtype: 'proxmoxWindowEdit',
- subject: gettext('Default Relay'),
- items: {
- xtype: 'proxmoxtextfield',
- name: 'relay',
- deleteEmpty: true,
- fieldLabel: gettext('Default Relay')
+ me.add_text_row('relay', gettext('Default Relay'),
+ { deleteEmpty: true, defaultValue: Proxmox.Utils.noneText });
+
+ me.add_integer_row('relayport', gettext('Relay Port'), {
+ defaultValue: 25,
+ deleteEmpty: true,
+ minValue: 1,
+ maxValue: 65535,
+ });
+
+ me.add_combobox_row('relayprotocol', gettext('Relay Protocol'), {
+ defaultValue: 'smtp',
+ comboItems: [
+ ['smtp', 'SMTP'],
+ ['lmtp', 'LMTP']],
+ });
+
+
+ me.add_boolean_row('relaynomx', gettext('Disable MX lookup (SMTP)'));
+
+ me.rows.smarthost = {
+ required: true,
+ multiKey: ['smarthost', 'smarthostport'],
+ header: gettext('Smarthost'),
+ renderer: function() {
+ var host = me.getObjectValue('smarthost', undefined);
+ var port = me.getObjectValue('smarthostport', undefined);
+ var result = '';
+ if (host) {
+ if (port) {
+ if (host.match(Proxmox.Utils.IP6_match)) {
+ result = "[" + host + "]:" + port;
+ } else {
+ result = host + ':' + port;
+ }
+ } else {
+ result = host;
}
}
- },
- relayport: {
- required: true,
- defaultValue: 25,
- header: gettext('SMTP port'),
- editor: {
- xtype: 'proxmoxWindowEdit',
- subject: gettext('SMTP port'),
- items: {
- xtype: 'proxmoxintegerfield',
- name: 'relayport',
- minValue: 1,
- maxValue: 65535,
- deleteEmpty: true,
- value: 25,
- fieldLabel: gettext('SMTP port')
- }
+ if (result === '') {
+ result = Proxmox.Utils.noneText;
}
+ return result;
},
- relaynomx: {
- required: true,
- defaultValue: 0,
- header: gettext('Disable MX lookup'),
- renderer: Proxmox.Utils.format_boolean,
- editor: {
- xtype: 'proxmoxWindowEdit',
- subject: gettext('Disable MX lookup'),
- items: {
- xtype: 'proxmoxcheckbox',
- name: 'relaynomx',
- uncheckedValue: 0,
- defaultValue: 0,
- deleteDefaultValue: true,
- fieldLabel: gettext('Disable MX lookup')
- }
- }
- },
- smarthost: {
- required: true,
- defaultValue: Proxmox.Utils.noneText,
- header: gettext('Smarthost'),
- editor: {
- xtype: 'proxmoxWindowEdit',
- subject: gettext('Smarthost'),
- items: {
+ editor: {
+ xtype: 'proxmoxWindowEdit',
+ onlineHelp: 'pmgconfig_mailproxy_relaying',
+ subject: gettext('Smarthost'),
+ fieldDefaults: {
+ labelWidth: 100,
+ },
+ items: [
+ {
xtype: 'proxmoxtextfield',
name: 'smarthost',
deleteEmpty: true,
- fieldLabel: gettext('Smarthost')
- }
- }
+ emptyText: Proxmox.Utils.noneText,
+ fieldLabel: gettext('Smarthost'),
+ },
+ {
+ xtype: 'proxmoxintegerfield',
+ name: 'smarthostport',
+ deleteEmpty: true,
+ minValue: 1,
+ maxValue: 65535,
+ emptyText: Proxmox.Utils.defaultText,
+ fieldLabel: gettext('Port'),
+ },
+ ],
},
-
};
- var baseurl = '/config/mail';
+ me.rows.smarthostport = { visible: false };
- var reload = function() {
- me.rstore.load();
- };
-
- var run_editor = function() {
- var sm = me.getSelectionModel();
- var rec = sm.getSelection()[0];
- if (!rec) {
- return;
- }
-
- var rowdef = rows[rec.data.key];
- if (!rowdef.editor) {
- return;
- }
-
- var win;
- if (Ext.isString(rowdef.editor)) {
- win = Ext.create(rowdef.editor, {
- confid: rec.data.key,
- url: '/api2/extjs/' + baseurl
- });
- } else {
- var config = Ext.apply({
- confid: rec.data.key,
- url: '/api2/extjs/' + baseurl
- }, rowdef.editor);
- win = Ext.createWidget(rowdef.editor.xtype, config);
- win.load();
- }
+ var baseurl = '/config/mail';
- win.show();
- win.on('destroy', reload);
- };
+ me.selModel = Ext.create('Ext.selection.RowModel', {});
Ext.apply(me, {
- url: '/api2/json/' + baseurl,
+ tbar: [{
+ text: gettext('Edit'),
+ xtype: 'proxmoxButton',
+ disabled: true,
+ handler: function() { me.run_editor(); },
+ selModel: me.selModel,
+ }],
+ url: '/api2/json' + baseurl,
+ editorConfig: {
+ url: '/api2/extjs' + baseurl,
+ onlineHelp: 'pmgconfig_mailproxy_relaying',
+ },
interval: 5000,
cwidth1: 200,
- rows: rows,
listeners: {
- itemdblclick: run_editor
- }
+ itemdblclick: me.run_editor,
+ },
});
me.callParent();
me.on('activate', me.rstore.startUpdate);
me.on('destroy', me.rstore.stopUpdate);
- }
+ me.on('deactivate', me.rstore.stopUpdate);
+ },
});