]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/ActionList.js
tfa: avoid trailing space on WebAuthn
[pmg-gui.git] / js / ActionList.js
index adb119759a63887e6d9d489150384b65e930650e..a94e3e14e88113d0a74db920d6f636ba66ffc076 100644 (file)
@@ -1,26 +1,26 @@
 Ext.define('pmg-action-list', {
     extend: 'Ext.data.Model',
     fields: [
-       'id', 'name', 'info', 'descr',
+       'id', 'name', 'info', 'descr', 'editable',
        { name: 'otype', type: 'integer' },
     ],
-    idProperty: 'id'
+    idProperty: 'id',
 });
 
 Ext.define('PMG.ActionList', {
     extend: 'Ext.grid.GridPanel',
     alias: ['widget.pmgActionList'],
 
-    title: PMG.Utils.oclass_text['action'],
+    title: PMG.Utils.oclass_text.action,
     border: false,
 
     baseurl: '/config/ruledb/action',
 
-    otype_list: [4005],
+    otype_list: [4002, 4003, 4005, 4007, 4009],
 
     enableButtons: true,
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
 
        me.store = new Ext.data.Store({
@@ -31,8 +31,8 @@ Ext.define('PMG.ActionList', {
            },
            sorters: {
                property: 'name',
-               order: 'DESC'
-           }
+               direction: 'ASC',
+           },
        });
 
        me.selModel = Ext.create('Ext.selection.RowModel', {});
@@ -63,48 +63,36 @@ Ext.define('PMG.ActionList', {
            win.show();
        };
 
-       var remove_btn = Ext.createWidget('proxmoxButton', {
-           text: gettext('Remove'),
-           disabled: true,
+       var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
            selModel: me.selModel,
-           confirmMsg: function (rec) {
-               return Ext.String.format(
-                   gettext('Are you sure you want to remove entry {0}'),
-                   "'" + rec.data.descr + "'");
+           getUrl: function(rec) {
+               return me.baseurl + '/objects/' + rec.data.id;
            },
-           handler: function(btn, event, rec) {
-               Proxmox.Utils.API2Request({
-                   url: me.baseurl + '/objects/' + rec.data.id,
-                   method: 'DELETE',
-                   waitMsgTarget: me,
-                   callback: reload,
-                   failure: function (response, opts) {
-                       Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-                   }
-               });
-           }
+           enableFn: rec => !!rec.data.editable,
+           callback: reload,
+           getRecordName: function(rec) { return rec.data.descr; },
+           waitMsgTarget: me,
        });
 
        var menu_items = [];
 
        Ext.Array.each(me.otype_list, function(otype) {
-
            var editor = PMG.Utils.object_editors[otype];
 
            var config = Ext.apply({ method: 'POST' }, editor);
 
-           config.create = true,
+           config.isCreate = true;
            menu_items.push({
                text: config.subject,
                handler: function() {
-                   if (me.baseurl == undefined) {
+                   if (me.baseurl === undefined) {
                        return;
                    }
                    config.url = me.baseurl + '/' + editor.subdir;
                    var win = Ext.createWidget('proxmoxWindowEdit', config);
                    win.on('destroy', reload);
                    win.show();
-               }
+               },
            });
        });
 
@@ -112,47 +100,54 @@ Ext.define('PMG.ActionList', {
            {
                text: gettext('Add'),
                menu: new Ext.menu.Menu({
-                   items: menu_items
-               })
+                   items: menu_items,
+               }),
            },
             {
                xtype: 'proxmoxButton',
                text: gettext('Edit'),
                disabled: true,
                selModel: me.selModel,
-               handler: run_editor
+               enableFn: rec => !!rec.data.editable,
+               handler: run_editor,
             },
-           remove_btn
+           remove_btn,
         ];
 
-       Proxmox.Utils.monStoreErrors(me, me.store);
+       Proxmox.Utils.monStoreErrors(me, me.store, true);
 
        if (me.enableButtons) {
            me.tbar = tbar;
        }
 
        Ext.apply(me, {
+           run_editor: run_editor,
            columns: [
                {
                    header: gettext('Name'),
                    sortable: true,
                    width: 200,
                    dataIndex: 'name',
-                   renderer: Ext.String.htmlEncode
+                   renderer: Ext.String.htmlEncode,
                },
                {
                    header: gettext('Description'),
                    sortable: true,
                    width: 300,
                    dataIndex: 'descr',
-                   renderer: Ext.String.htmlEncode
+                   renderer: Ext.String.htmlEncode,
                },
                {
                    header: gettext('Comment'),
                    sortable: false,
                    flex: 1,
                    dataIndex: 'info',
-                   renderer: Ext.String.htmlEncode
+                   renderer: Ext.String.htmlEncode,
+               },
+               {
+                   header: gettext('Editable'),
+                   dataIndex: 'editable',
+                   renderer: Proxmox.Utils.format_boolean,
                },
            ],
            listeners: {
@@ -161,12 +156,12 @@ Ext.define('PMG.ActionList', {
                        run_editor();
                    }
                },
-               activate: reload
-           }
+               activate: reload,
+           },
        });
 
        me.callParent();
 
        reload(); // initial load
-    }
+    },
 });