]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - button/Button.js
tree-wide trailing whitespace cleanup
[proxmox-widget-toolkit.git] / button / Button.js
index 15619a325309a3a0c56ee65c0de677c5dcca6a14..89d273e92248feccf5023dbb2bd8b9e1ae9537ec 100644 (file)
@@ -24,7 +24,9 @@ Ext.define('Proxmox.button.Button', {
         var me = this;
 
        if (me.handler) {
-           me.realHandler = me.handler;
+
+           // Note: me.realHandler may be a string (see named scopes)
+           var realHandler = me.handler;
 
            me.handler = function(button, event) {
                var rec, msg;
@@ -46,21 +48,39 @@ Ext.define('Proxmox.button.Button', {
                        icon: me.dangerous ? Ext.Msg.WARNING : Ext.Msg.QUESTION,
                        msg: msg,
                        buttons: Ext.Msg.YESNO,
+                       defaultFocus: me.dangerous ? 'no' : 'yes',
                        callback: function(btn) {
                            if (btn !== 'yes') {
                                return;
                            }
-                           me.realHandler(button, event, rec);
+                           Ext.callback(realHandler, me.scope, [button, event, rec], 0, me);
                        }
                    });
                } else {
-                   me.realHandler(button, event, rec);
+                   Ext.callback(realHandler, me.scope, [button, event, rec], 0, me);
                }
            };
        }
 
        me.callParent();
 
+       var grid;
+       if (!me.selModel && me.selModel !== null) {
+           grid = me.up('grid');
+           if (grid && grid.selModel) {
+               me.selModel = grid.selModel;
+           }
+       }
+
+       if (me.waitMsgTarget === true) {
+           grid = me.up('grid');
+           if (grid) {
+               me.waitMsgTarget = grid;
+           } else {
+               throw "unable to find waitMsgTarget";
+           }
+       }
+
        if (me.selModel) {
 
            me.mon(me.selModel, "selectionchange", function() {
@@ -74,3 +94,62 @@ Ext.define('Proxmox.button.Button', {
        }
     }
 });
+
+
+Ext.define('Proxmox.button.StdRemoveButton', {
+    extend: 'Proxmox.button.Button',
+    alias: 'widget.proxmoxStdRemoveButton',
+
+    text: gettext('Remove'),
+
+    disabled: true,
+
+    // time to wait for removal task to finish
+    delay: undefined,
+
+    config: {
+       baseurl: undefined
+    },
+
+    getUrl: function(rec) {
+       var me = this;
+
+       return me.baseurl + '/' + rec.getId();
+    },
+
+    // also works with names scopes
+    callback: function(options, success, response) {},
+
+    getRecordName: function(rec) { return rec.getId() },
+
+    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 + "'");
+    },
+
+    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: 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) {
+               Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+           }
+       });
+    }
+});