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,
// take special care in confirm box (select no as default).
dangerous: false,
- initComponent: function() {
- /*jslint confusion: true */
+ // is used to get the parent container for its selection model
+ parentXType: 'grid',
- var me = this;
+ initComponent: function() {
+ let me = this;
if (me.handler) {
-
// Note: me.realHandler may be a string (see named scopes)
- var realHandler = me.handler;
+ let realHandler = me.handler;
me.handler = function(button, event) {
- var rec, msg;
+ let rec, msg;
if (me.selModel) {
rec = me.selModel.getSelection()[0];
- if (!rec || (me.enableFn(rec) === false)) {
+ if (!rec || me.enableFn(rec) === false) {
return;
}
}
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) {
return;
}
Ext.callback(realHandler, me.scope, [button, event, rec], 0, me);
- }
+ },
});
} else {
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;
+ let grid;
+ if (!me.selModel && me.selModel !== null && me.selModel !== false) {
+ let parent = me.up(me.parentXType);
+ if (parent && parent.selModel) {
+ me.selModel = parent.selModel;
}
}
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)) {
+ let rec = me.selModel.getSelection()[0];
+ if (!rec || me.enableFn(rec) === false) {
me.setDisabled(true);
- } else {
+ } else {
me.setDisabled(false);
}
});
}
- }
+ },
});
delay: undefined,
config: {
- baseurl: undefined
+ baseurl: undefined,
},
getUrl: function(rec) {
- var me = this;
-
- return me.baseurl + '/' + rec.getId();
+ let me = this;
+
+ 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) {
- var me = this;
+ confirmMsg: function(rec) {
+ let me = this;
- var name = me.getRecordName(rec);
- return Ext.String.format(
- gettext('Are you sure you want to remove entry {0}'),
- "'" + name + "'");
+ let 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') url += "?delay=" + me.delay;
+ let me = this;
+
+ let url = me.getUrl(rec);
+
+ if (typeof me.delay !== 'undefined' && me.delay >= 0) {
+ url += "?delay=" + me.delay;
+ }
Proxmox.Utils.API2Request({
url: url,
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();
+ },
});