]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/SafeDestroy.js
ec4a2f5e834fa6207c8445e06e491538fbf8eb40
[pve-manager.git] / www / manager6 / window / SafeDestroy.js
1 /* Popup a message window
2 * where the user has to manually enter the ressource ID
3 * to enable the destroy button
4 */
5 Ext.define('PVE.window.SafeDestroy', {
6 extend: 'Ext.window.Window',
7 alias: 'widget.pveSafeDestroy',
8
9 title: gettext('Are you sure?'),
10 modal: true,
11 buttonAlign: 'center',
12 bodyPadding: 10,
13 width: 450,
14 layout: 'hbox',
15
16 viewModel: { type: 'default' },
17
18 config: {
19 item: {
20 id: undefined,
21 type: undefined
22 },
23 url: undefined
24 },
25
26 applyItem: function(item) {
27 var me = this;
28
29 if (!Ext.isDefined(item.id)) {
30 throw "no ID specified";
31 }
32
33 if (!Ext.isDefined(item.type)) {
34 throw "no VM type specified";
35 }
36
37 me.getViewModel().set('item', item);
38
39 return item;
40 },
41
42 controller: {
43
44 xclass: 'Ext.app.ViewController',
45
46 control: {
47 'field[name=confirm]': {
48 change: function(f, value) {
49 var view = this.getView();
50 var removeButton = this.lookupReference('removeButton');
51 if (value === view.getItem().id) {
52 removeButton.enable();
53 } else {
54 removeButton.disable();
55 }
56 }
57 },
58 'button[reference=removeButton]': {
59 click: function() {
60 var view = this.getView();
61 PVE.Utils.API2Request({
62 url: view.getUrl(),
63 method: 'DELETE',
64 waitMsgTarget: view,
65 failure: function(response, opts) {
66 Ext.Msg.alert('Error', response.htmlStatus);
67 },
68 callback: function() {
69 view.close();
70 }
71 });
72 }
73 }
74 }
75 },
76
77 items: [
78 {
79 xtype: 'component',
80 cls: [ Ext.baseCSSPrefix + 'message-box-icon',
81 Ext.baseCSSPrefix + 'message-box-warning',
82 Ext.baseCSSPrefix + 'dlg-icon'],
83 },
84 {
85 xtype: 'container',
86 flex: 1,
87 layout: {
88 type: 'vbox',
89 align: 'stretch'
90 },
91 items: [
92 {
93 xtype: 'component',
94 bind: gettext('Are you sure you want to remove {item.type} {item.id}? This will permanently erase all data.')
95 },
96 {
97 reference: 'confirmField',
98 xtype: 'numberfield',
99 name: 'confirm',
100 labelWidth: 300,
101 bind: {
102 fieldLabel: gettext('Please enter the {item.type} ID to confirm'),
103 },
104 hideTrigger: true,
105 allowBlank: false
106 }
107 ],
108 }
109 ],
110 buttons: [
111 {
112 reference: 'removeButton',
113 text: gettext('Remove'),
114 disabled: true
115 }
116 ]
117 });