]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/ObjectGroupList.js
spam detector: custom rules: consitent add/edit/remove button & modernization
[pmg-gui.git] / js / ObjectGroupList.js
index f88ba361299072139df3b9b95309059965fc764f..ab66e92c36b1f6fa4ae62d8c4bfeeb3751b5ff9a 100644 (file)
@@ -1,7 +1,7 @@
 Ext.define('pmg-object-group', {
     extend: 'Ext.data.Model',
-    fields: [ 'id', 'name', 'info' ],
-    idProperty: 'cidr'
+    fields: ['id', 'name', 'info'],
+    idProperty: 'id',
 });
 
 Ext.define('pmg-object-list', {
@@ -9,9 +9,9 @@ Ext.define('pmg-object-list', {
     fields: [
        'id', 'descr',
        { name: 'otype', type: 'integer' },
-       { name: 'receivertest', type: 'boolean' }
+       { name: 'receivertest', type: 'boolean' },
     ],
-    idProperty: 'id'
+    idProperty: 'id',
 });
 
 
@@ -25,31 +25,26 @@ Ext.define('PMG.ObjectGroupList', {
 
     baseurl: undefined,
 
+    enableButtons: true,
+
     inputItems: [
        {
            xtype: 'textfield',
            name: 'name',
            allowBlank: false,
-           fieldLabel: gettext('Name')
+           fieldLabel: gettext('Name'),
        },
        {
            xtype: 'textareafield',
            name: 'info',
-           fieldLabel: gettext("Description")
-       }
+           fieldLabel: gettext("Description"),
+       },
     ],
 
     reload: function() {
        var me = this;
 
-       var rec = me.selModel.getSelection()[0];
-        me.store.load(function() {
-           if (rec) {
-               // try to selectprevious selection
-               var nrec = me.store.findRecord('id', rec.data.id);
-               me.selModel.select(nrec);
-           }
-       });
+        me.store.load();
     },
 
     run_editor: function() {
@@ -62,10 +57,11 @@ Ext.define('PMG.ObjectGroupList', {
 
        var config = {
            url: "/api2/extjs" + me.baseurl +'/' + rec.data.id + '/config',
+           onlineHelp: 'chapter_mailfilter',
            method: 'PUT',
            subject: me.subject,
            width: 400,
-           items: me.inputItems
+           items: me.inputItems,
        };
 
        var win = Ext.createWidget('proxmoxWindowEdit', config);
@@ -75,7 +71,7 @@ Ext.define('PMG.ObjectGroupList', {
        win.show();
     },
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
 
        if (!me.ogclass) {
@@ -92,86 +88,77 @@ Ext.define('PMG.ObjectGroupList', {
            },
            sorters: {
                property: 'name',
-               order: 'DESC'
-           }
+               direction: 'ASC',
+           },
        });
 
        me.selModel = Ext.create('Ext.selection.RowModel', {});
 
-       var remove_btn = Ext.createWidget('proxmoxButton', {
-           text: gettext('Remove'),
-           disabled: true,
-           selModel: me.selModel,
-           confirmMsg: function (rec) {
-               return Ext.String.format(
-                   gettext('Are you sure you want to remove entry {0}'),
-                   "'" + rec.data.name + "'");
-           },
-           handler: function(btn, event, rec) {
-               Proxmox.Utils.API2Request({
-                   url: me.baseurl + '/' + rec.data.id,
-                   method: 'DELETE',
-                   waitMsgTarget: me,
-                   callback: function() {
-                       me.reload();
-                   },
-                   failure: function (response, opts) {
-                       Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-                   }
-               });
-           }
-       });
-
        var tbar = [
-            {
-               xtype: 'proxmoxButton',
-               text: gettext('Edit'),
-               disabled: true,
-               selModel: me.selModel,
-               handler: function() { me.run_editor(); }
-            },
             {
                text: gettext('Create'),
                handler: function() {
-                   var config = {
+                   Ext.createWidget('proxmoxWindowEdit', {
                        method: 'POST',
-                       url: "/api2/extjs" + me.baseurl,
-                       create: true,
+                       url: `/api2/extjs${me.baseurl}`,
+                       onlineHelp: 'chapter_mailfilter',
+                       isCreate: true,
                        width: 400,
                        subject: me.subject,
-                       items: me.inputItems
-                   };
-
-                   var win = Ext.createWidget('proxmoxWindowEdit', config);
-
-                   win.on('destroy', me.reload, me);
-                   win.show();
-               }
+                       items: me.inputItems,
+                       autoShow: true,
+                       listeners: {
+                           destroy: () => me.reload(),
+                       },
+                   });
+               },
+            },
+           '-',
+            {
+               xtype: 'proxmoxButton',
+               text: gettext('Edit'),
+               disabled: true,
+               selModel: me.selModel,
+               handler: () => me.run_editor(),
             },
-           remove_btn
+           {
+               xtype: 'proxmoxStdRemoveButton',
+               selModel: me.selModel,
+               baseurl: me.baseurl,
+               callback: () => me.reload(),
+               getRecordName: rec => rec.data.name,
+               waitMsgTarget: me,
+           },
         ];
 
-       Proxmox.Utils.monStoreErrors(me, me.store);
+       Proxmox.Utils.monStoreErrors(me, me.store, true);
+
+       if (me.enableButtons) {
+           me.tbar = tbar;
+       }
 
        Ext.apply(me, {
-           tbar: tbar,
            columns: [
                {
                    header: gettext('Name'),
                    sortable: true,
                    flex: 1,
                    dataIndex: 'name',
-                   renderer: Ext.String.htmlEncode
-               }
+                   renderer: Ext.String.htmlEncode,
+               },
            ],
            listeners: {
-               itemdblclick: function() { me.run_editor(); },
-               activate: function() { me.reload(); }
-           }
+               itemdblclick: function() {
+                   if (me.enableButtons) {
+                       me.run_editor();
+                   }
+               },
+               activate: function() { me.reload(); },
+           },
        });
 
        me.callParent();
 
        me.reload(); // initial load
-    }
+    },
 });