X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=button%2FButton.js;h=dade477b91f14da311cda0b500b2cbd33b4392ff;hb=61e428c29d0b551da06e286667f08c7b1a31befa;hp=5a03be7a7391e1affed1cdba1707e12ecc4fd170;hpb=a1d5d0649e150c581759892c2a196d67287a5c8e;p=proxmox-widget-toolkit.git diff --git a/button/Button.js b/button/Button.js index 5a03be7..dade477 100644 --- a/button/Button.js +++ b/button/Button.js @@ -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() { @@ -84,8 +104,17 @@ Ext.define('Proxmox.button.StdRemoveButton', { disabled: true, - baseurl: 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() }, @@ -103,10 +132,12 @@ Ext.define('Proxmox.button.StdRemoveButton', { var me = this; Proxmox.Utils.API2Request({ - url: me.baseurl + '/' + rec.getId(), + url: me.getUrl(rec), method: 'DELETE', waitMsgTarget: me.waitMsgTarget, - callback: me.callback, + 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); }