]> git.proxmox.com Git - pve-manager.git/blame - www/manager/window/Restore.js
Added translations
[pve-manager.git] / www / manager / window / Restore.js
CommitLineData
7404e8fe
DM
1Ext.define('PVE.window.Restore', {
2 extend: 'Ext.window.Window', // fixme: PVE.window.Edit?
3
4 resizable: false,
5
6 initComponent : function() {
7 var me = this;
8
9 if (!me.nodename) {
10 throw "no node name specified";
11 }
12
13 if (!me.volid) {
14 throw "no volume ID specified";
15 }
16
17 if (!me.vmtype) {
18 throw "no vmtype specified";
19 }
20
21 var storagesel = Ext.create('PVE.form.StorageSelector', {
22 nodename: me.nodename,
23 name: 'storage',
24 value: '',
6b21ab95 25 fieldLabel: gettext('Storage'),
7404e8fe
DM
26 storageContent: (me.vmtype === 'openvz') ? 'rootdir' : 'images',
27 allowBlank: true
28 });
29
30 me.formPanel = Ext.create('Ext.form.Panel', {
31 bodyPadding: 10,
32 border: false,
33 fieldDefaults: {
34 labelWidth: 60,
35 anchor: '100%'
36 },
37 items: [
38 {
39 xtype: 'displayfield',
40 value: me.volidText || me.volid,
6b21ab95 41 fieldLabel: gettext('Source')
7404e8fe
DM
42 },
43 storagesel,
44 {
9f767883 45 xtype: me.vmid ? 'displayfield' : 'pveVMIDSelector',
7404e8fe 46 name: 'vmid',
9f767883 47 fieldLabel: 'VM ID',
e893439e
DM
48 value: me.vmid,
49 loadNextFreeVMID: me.vmid ? false: true,
7404e8fe
DM
50 validateExists: false
51 }
52 ]
53 });
54
55 var form = me.formPanel.getForm();
56
9f767883
DM
57 var doRestore = function(url, params) {
58 PVE.Utils.API2Request({
59 url: url,
60 params: params,
61 method: 'POST',
2c535170 62 waitMsgTarget: me,
9f767883 63 failure: function (response, opts) {
0070ee37 64 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
9f767883
DM
65 },
66 success: function(response, options) {
67 var upid = response.result.data;
68
69 var win = Ext.create('PVE.window.TaskViewer', {
70 upid: upid
71 });
72 win.show();
73 me.close();
74 }
75 });
76 };
77
7404e8fe 78 var submitBtn = Ext.create('Ext.Button', {
6b21ab95 79 text: gettext('Restore'),
7404e8fe
DM
80 handler: function(){
81 var storage = storagesel.getValue();
82 var values = form.getValues();
83
84 var params = {
85 storage: storage,
a2f57991 86 vmid: me.vmid || values.vmid,
9f767883 87 force: me.vmid ? 1 : 0
7404e8fe
DM
88 };
89
a2f57991 90 var url;
7404e8fe
DM
91 if (me.vmtype === 'openvz') {
92 url = '/nodes/' + me.nodename + '/openvz';
93 params.ostemplate = me.volid;
9f767883 94 params.restore = 1;
7404e8fe
DM
95 } else if (me.vmtype === 'qemu') {
96 url = '/nodes/' + me.nodename + '/qemu';
97 params.archive = me.volid;
98 } else {
99 throw 'unknown VM type';
100 }
9f767883
DM
101
102 if (me.vmid) {
6b21ab95
DM
103 var msg = gettext('Are you sure you want to restore this VM?') + ' ' +
104 gettext('This will permanently erase current VM data.');
0070ee37 105 Ext.Msg.confirm(gettext('Confirmation'), msg, function(btn) {
9f767883
DM
106 if (btn !== 'yes') {
107 return;
108 }
109 doRestore(url, params);
110 });
111 } else {
112 doRestore(url, params);
113 }
7404e8fe
DM
114 }
115 });
116
a2f57991
DM
117 form.on('validitychange', function(f, valid) {
118 submitBtn.setDisabled(!valid);
119 });
120
0070ee37 121 var title = (me.vmtype === 'openvz') ? gettext('Restore CT') : gettext('Restore VM');
7404e8fe
DM
122
123 Ext.apply(me, {
124 title: title,
125 width: 450,
126 modal: true,
127 layout: 'auto',
128 border: false,
129 items: [ me.formPanel ],
a2f57991 130 buttons: [ submitBtn ]
7404e8fe
DM
131 });
132
133 me.callParent();
134 }
135});