]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/MailProxyRelaying.js
quarantine: refactor spamquarantine controller
[pmg-gui.git] / js / MailProxyRelaying.js
index 1fe986dfe631a3240fd2159d55fe67c1065771df..ace95752fc0f3737a99f4e13deb4e93d31e905cc 100644 (file)
@@ -2,129 +2,113 @@ Ext.define('PMG.MailProxyRelaying', {
     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);
+    },
 });