]> git.proxmox.com Git - proxmox-widget-toolkit.git/blob - button/Button.js
proxmoxStdRemoveButton: fixup getUrl method - add 'me'
[proxmox-widget-toolkit.git] / button / Button.js
1 /* Button features:
2 * - observe selection changes to enable/disable the button using enableFn()
3 * - pop up confirmation dialog using confirmMsg()
4 */
5 Ext.define('Proxmox.button.Button', {
6 extend: 'Ext.button.Button',
7 alias: 'widget.proxmoxButton',
8
9 // the selection model to observe
10 selModel: undefined,
11
12 // if 'false' handler will not be called (button disabled)
13 enableFn: function(record) { },
14
15 // function(record) or text
16 confirmMsg: false,
17
18 // take special care in confirm box (select no as default).
19 dangerous: false,
20
21 initComponent: function() {
22 /*jslint confusion: true */
23
24 var me = this;
25
26 if (me.handler) {
27 me.realHandler = me.handler;
28
29 me.handler = function(button, event) {
30 var rec, msg;
31 if (me.selModel) {
32 rec = me.selModel.getSelection()[0];
33 if (!rec || (me.enableFn(rec) === false)) {
34 return;
35 }
36 }
37
38 if (me.confirmMsg) {
39 msg = me.confirmMsg;
40 if (Ext.isFunction(me.confirmMsg)) {
41 msg = me.confirmMsg(rec);
42 }
43 Ext.MessageBox.defaultButton = me.dangerous ? 2 : 1;
44 Ext.Msg.show({
45 title: gettext('Confirm'),
46 icon: me.dangerous ? Ext.Msg.WARNING : Ext.Msg.QUESTION,
47 msg: msg,
48 buttons: Ext.Msg.YESNO,
49 callback: function(btn) {
50 if (btn !== 'yes') {
51 return;
52 }
53 me.realHandler(button, event, rec);
54 }
55 });
56 } else {
57 me.realHandler(button, event, rec);
58 }
59 };
60 }
61
62 me.callParent();
63
64 if (me.selModel) {
65
66 me.mon(me.selModel, "selectionchange", function() {
67 var rec = me.selModel.getSelection()[0];
68 if (!rec || (me.enableFn(rec) === false)) {
69 me.setDisabled(true);
70 } else {
71 me.setDisabled(false);
72 }
73 });
74 }
75 }
76 });
77
78
79 Ext.define('Proxmox.button.StdRemoveButton', {
80 extend: 'Proxmox.button.Button',
81 alias: 'widget.proxmoxStdRemoveButton',
82
83 text: gettext('Remove'),
84
85 disabled: true,
86
87 baseurl: undefined,
88
89 getUrl: function(rec) {
90 var me = this;
91
92 return me.baseurl + '/' + rec.getId();
93 },
94
95 callback: function(options, success, response) {},
96
97 getRecordName: function(rec) { return rec.getId() },
98
99 confirmMsg: function (rec) {
100 var me = this;
101
102 var name = me.getRecordName(rec);
103 return Ext.String.format(
104 gettext('Are you sure you want to remove entry {0}'),
105 "'" + name + "'");
106 },
107
108 handler: function(btn, event, rec) {
109 var me = this;
110
111 Proxmox.Utils.API2Request({
112 url: me.getUrl(rec),
113 method: 'DELETE',
114 waitMsgTarget: me.waitMsgTarget,
115 callback: me.callback,
116 failure: function (response, opts) {
117 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
118 }
119 });
120 }
121 });