]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - button/Button.js
add missing htmlEncodes
[proxmox-widget-toolkit.git] / button / Button.js
index 835a6668bf180aa79d5f16d130c7817d3eaea792..68c6e982ba3494509fbb1e55cd532cae0f6f32c8 100644 (file)
@@ -10,7 +10,9 @@ Ext.define('Proxmox.button.Button', {
     selModel: undefined,
 
     // if 'false' handler will not be called (button disabled)
-    enableFn: function(record) { },
+    enableFn: function(record) {
+       // return undefined by default
+    },
 
     // function(record) or text
     confirmMsg: false,
@@ -19,12 +21,9 @@ Ext.define('Proxmox.button.Button', {
     dangerous: false,
 
     initComponent: function() {
-       /*jslint confusion: true */
-
         var me = this;
 
        if (me.handler) {
-
            // Note: me.realHandler may be a string (see named scopes)
            var realHandler = me.handler;
 
@@ -32,7 +31,7 @@ Ext.define('Proxmox.button.Button', {
                var rec, msg;
                if (me.selModel) {
                    rec = me.selModel.getSelection()[0];
-                   if (!rec || (me.enableFn(rec) === false)) {
+                   if (!rec || me.enableFn(rec) === false) {
                        return;
                    }
                }
@@ -46,14 +45,15 @@ Ext.define('Proxmox.button.Button', {
                    Ext.Msg.show({
                        title: gettext('Confirm'),
                        icon: me.dangerous ? Ext.Msg.WARNING : Ext.Msg.QUESTION,
-                       msg: msg,
+                       message: msg,
                        buttons: Ext.Msg.YESNO,
+                       defaultFocus: me.dangerous ? 'no' : 'yes',
                        callback: function(btn) {
                            if (btn !== 'yes') {
                                return;
                            }
                            Ext.callback(realHandler, me.scope, [button, event, rec], 0, me);
-                       }
+                       },
                    });
                } else {
                    Ext.callback(realHandler, me.scope, [button, event, rec], 0, me);
@@ -63,34 +63,34 @@ Ext.define('Proxmox.button.Button', {
 
        me.callParent();
 
-       if (!me.selModel && me.selModel !== null) {
-           var grid = me.up('grid');
+       var grid;
+       if (!me.selModel && me.selModel !== null && me.selModel !== false) {
+           grid = me.up('grid');
            if (grid && grid.selModel) {
                me.selModel = grid.selModel;
            }
        }
 
        if (me.waitMsgTarget === true) {
-           var grid = me.up('grid');
+           grid = me.up('grid');
            if (grid) {
                me.waitMsgTarget = grid;
            } else {
                throw "unable to find waitMsgTarget";
            }
        }
-       
-       if (me.selModel) {
 
+       if (me.selModel) {
            me.mon(me.selModel, "selectionchange", function() {
                var rec = me.selModel.getSelection()[0];
-               if (!rec || (me.enableFn(rec) === false)) {
+               if (!rec || me.enableFn(rec) === false) {
                    me.setDisabled(true);
-               } else  {
+               } else {
                    me.setDisabled(false);
                }
            });
        }
-    }
+    },
 });
 
 
@@ -102,41 +102,67 @@ Ext.define('Proxmox.button.StdRemoveButton', {
 
     disabled: true,
 
-    baseurl: undefined,
+    // time to wait for removal task to finish
+    delay: undefined,
+
+    config: {
+       baseurl: undefined,
+    },
 
     getUrl: function(rec) {
        var me = this;
-       
-       return me.baseurl + '/' + rec.getId();
+
+       if (me.selModel) {
+           return me.baseurl + '/' + rec.getId();
+       } else {
+           return me.baseurl;
+       }
     },
 
     // also works with names scopes
-    callback: function(options, success, response) {},
+    callback: function(options, success, response) {
+       // do nothing by default
+    },
 
-    getRecordName: function(rec) { return rec.getId() },
+    getRecordName: (rec) => rec.getId(),
 
-    confirmMsg: function (rec) {
+    confirmMsg: function(rec) {
        var me = this;
 
        var name = me.getRecordName(rec);
-       return Ext.String.format(
-           gettext('Are you sure you want to remove entry {0}'),
-           "'" + name + "'");
+       return Ext.String.format(gettext('Are you sure you want to remove entry {0}'), `'${name}'`);
     },
 
     handler: function(btn, event, rec) {
        var me = this;
 
+       var url = me.getUrl(rec);
+
+       if (typeof me.delay !== 'undefined' && me.delay >= 0) {
+           url += "?delay=" + me.delay;
+       }
+
        Proxmox.Utils.API2Request({
-           url: me.getUrl(rec),
+           url: url,
            method: 'DELETE',
            waitMsgTarget: me.waitMsgTarget,
            callback: function(options, success, response) {
                Ext.callback(me.callback, me.scope, [options, success, response], 0, me);
            },
-           failure: function (response, opts) {
+           failure: function(response, opts) {
                Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-           }
+           },
        });
-    }
+    },
+    initComponent: function() {
+       let me = this;
+
+       // enable by default if no seleModel is there and disabled not set
+       if (me.initialConfig.disabled === undefined &&
+           (me.selModel === null || me.selModel === false)) {
+           me.disabled = false;
+       }
+
+       me.callParent();
+    },
 });