]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/RelayDomains.js
rules: use tree panel instead of grouping feature of the grid
[pmg-gui.git] / js / RelayDomains.js
index 572b2c83edb3cf3b06cdd86346d57ce473731efd..68395db0577457c3cc49ad3776bed0440b005b6c 100644 (file)
 Ext.define('pmg-domains', {
     extend: 'Ext.data.Model',
-    fields: [ 'domain', 'comment' ],
-    proxy: {
-        type: 'proxmox',
-       url: "/api2/json/config/domains"
-    },
-    idProperty: 'domain'
+    fields: ['domain', 'comment'],
+    idProperty: 'domain',
 });
 
 Ext.define('PMG.RelayDomains', {
     extend: 'Ext.grid.GridPanel',
     alias: ['widget.pmgRelayDomains'],
 
-    initComponent : function() {
+    baseurl: '/config/domains',
+    domain_desc: gettext('Relay Domain'),
+
+    onlineHelp: 'pmgconfig_mailproxy_relay_domains',
+
+    initComponent: function() {
        var me = this;
 
        var store = new Ext.data.Store({
            model: 'pmg-domains',
            sorters: {
                property: 'domain',
-               order: 'DESC'
-           }
+               direction: 'ASC',
+           },
+           proxy: {
+               type: 'proxmox',
+               url: '/api2/json' + me.baseurl,
+           },
        });
 
         var reload = function() {
             store.load();
         };
 
-       var sm = Ext.create('Ext.selection.RowModel', {});
+       me.selModel = Ext.create('Ext.selection.RowModel', {});
 
-       var remove_btn = Ext.createWidget('proxmoxButton', {
-           text: gettext('Remove'),
-           disabled: true,
-           selModel: sm,
-           confirmMsg: function (rec) {
-               return Ext.String.format(
-                   gettext('Are you sure you want to remove entry {0}'),
-                   "'" + rec.data.domain + "'");
-           },
-           handler: function(btn, event, rec) {
-               Proxmox.Utils.API2Request({
-                   url: '/config/domains/' + rec.data.domain,
-                   method: 'DELETE',
-                   waitMsgTarget: me,
-                   callback: function() {
-                       reload();
-                   },
-                   failure: function (response, opts) {
-                       Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-                   }
-               });
-           }
+       var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
+           selModel: me.selModel,
+           baseurl: me.baseurl,
+           callback: reload,
+           waitMsgTarget: me,
        });
 
+       var run_editor = function() {
+           var rec = me.selModel.getSelection()[0];
+           if (!rec) {
+               return;
+           }
+
+           var config = {
+               url: '/api2/extjs' + me.baseurl + '/' + rec.data.domain,
+               onlineHelp: me.onlineHelp,
+               method: 'PUT',
+               subject: me.domain_desc,
+               items: [
+                   {
+                       xtype: 'displayfield',
+                       name: 'domain',
+                       fieldLabel: me.domain_desc,
+                   },
+                   {
+                       xtype: 'textfield',
+                       name: 'comment',
+                       fieldLabel: gettext("Comment"),
+                   },
+               ],
+           };
+
+           var win = Ext.createWidget('proxmoxWindowEdit', config);
+
+           win.load();
+           win.on('destroy', reload);
+           win.show();
+       };
+
        var tbar = [
+            {
+               xtype: 'proxmoxButton',
+               text: gettext('Edit'),
+               disabled: true,
+               selModel: me.selModel,
+               handler: run_editor,
+            },
             {
                text: gettext('Create'),
                handler: function() {
                    var config = {
                        method: 'POST',
-                       create: true,
-                       url: "/api2/extjs/config/domains",
+                       url: '/api2/extjs' + me.baseurl,
+                       onlineHelp: me.onlineHelp,
+                       isCreate: true,
                        subject: gettext("Relay Domain"),
-                       items: {
-                           xtype: 'proxmoxtextfield',
-                           name: 'domain',
-                           fieldLabel: gettext("Relay Domain")
-                       }
+                       items: [
+                           {
+                               xtype: 'proxmoxtextfield',
+                               name: 'domain',
+                               fieldLabel: me.domain_desc,
+                           },
+                           {
+                               xtype: 'proxmoxtextfield',
+                               name: 'comment',
+                               fieldLabel: gettext("Comment"),
+                           },
+                       ],
                    };
 
                    var win = Ext.createWidget('proxmoxWindowEdit', config);
+
                    win.on('destroy', reload);
                    win.show();
-               }
+               },
             },
-           remove_btn
+           remove_btn,
+           '->',
+           {
+               xtype: 'pmgFilterField',
+               filteredFields: ['domain', 'comment'],
+           },
         ];
 
-       Proxmox.Utils.monStoreErrors(me, store);
+       Proxmox.Utils.monStoreErrors(me, store, true);
 
        Ext.apply(me, {
            store: store,
-           selModel: sm,
            tbar: tbar,
+           run_editor: run_editor,
            viewConfig: {
-               trackOver: false
+               trackOver: false,
            },
            columns: [
                {
-                   header: gettext('Relay Domain'),
+                   header: me.domain_desc,
                    width: 200,
                    sortable: true,
-                   dataIndex: 'domain'
+                   dataIndex: 'domain',
                },
                {
                    header: gettext('Comment'),
                    sortable: false,
                    renderer: Ext.String.htmlEncode,
                    dataIndex: 'comment',
-                   flex: 1
-               }
+                   flex: 1,
+               },
            ],
            listeners: {
-               activate: reload
-           }
+               itemdblclick: run_editor,
+               activate: reload,
+           },
        });
 
        me.callParent();
-    }
+    },
 });