]> git.proxmox.com Git - proxmox-widget-toolkit.git/commitdiff
button/Button.js: make it work with named scopes
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 28 Mar 2017 11:00:11 +0000 (13:00 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 28 Mar 2017 11:07:10 +0000 (13:07 +0200)
and add ability to bind to underlying grid automatically if no selModel
specified.

button/Button.js

index 6d55ea786aa35eedd7c0fd2f2e55de1866e6a387..56bdd85cf5bd64f651bcd26acf5a171a25400745 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;
@@ -50,17 +52,31 @@ Ext.define('Proxmox.button.Button', {
                            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();
 
+       if (!me.selModel) {
+           var grid = me.up('grid');
+           if (grid && grid.selModel) {
+               me.selModel = grid.selModel;
+               if (me.waitMsgTarget === true) {
+                   me.waitMsgTarget = grid;
+               }
+           }
+       }
+
+       if (me.waitMsgTarget === true) {
+           throw "unable to find waitMsgTarget"; // no grid found
+       }
+       
        if (me.selModel) {
 
            me.mon(me.selModel, "selectionchange", function() {
@@ -92,6 +108,7 @@ Ext.define('Proxmox.button.StdRemoveButton', {
        return me.baseurl + '/' + rec.getId();
     },
 
+    // also works with names scopes
     callback: function(options, success, response) {},
 
     getRecordName: function(rec) { return rec.getId() },
@@ -112,7 +129,9 @@ Ext.define('Proxmox.button.StdRemoveButton', {
            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);
            }