Signed-off-by: Stefan Hanreich <s.hanre...@proxmox.com>
---
I've added a custom Window containing the dialog, since using MessageBox
for this seemed a bit tricky. Maybe I could move the definition of the
components outside the handler and only instantiate them there? I
thought it was fine for now, since the Window is specific to the
SnapshotTree anyway.

 www/manager6/tree/SnapshotTree.js | 62 +++++++++++++++++++++++++++----
 1 file changed, 55 insertions(+), 7 deletions(-)

diff --git a/www/manager6/tree/SnapshotTree.js 
b/www/manager6/tree/SnapshotTree.js
index 97268072..a6f25f19 100644
--- a/www/manager6/tree/SnapshotTree.js
+++ b/www/manager6/tree/SnapshotTree.js
@@ -61,7 +61,9 @@ Ext.define('PVE.guest.SnapshotTree', {
            me.mon(win, 'destroy', me.reload, me);
        },
 
-       snapshotAction: function(action, method) {
+       snapshotAction: function(action, method, params) {
+           params = params || {};
+
            let me = this;
            let view = me.getView();
            let vm = me.getViewModel();
@@ -75,6 +77,7 @@ Ext.define('PVE.guest.SnapshotTree', {
            Proxmox.Utils.API2Request({
                url: 
`/nodes/${nodename}/${type}/${vmid}/snapshot/${snapname}/${action}`,
                method: method,
+               params: params,
                waitMsgTarget: view,
                callback: function() {
                    me.reload();
@@ -89,9 +92,8 @@ Ext.define('PVE.guest.SnapshotTree', {
                },
            });
        },
-
-       rollback: function() {
-           this.snapshotAction('rollback', 'POST');
+       rollback: function(params) {
+           this.snapshotAction('rollback', 'POST', params);
        },
        remove: function() {
            this.snapshotAction('', 'DELETE');
@@ -255,14 +257,60 @@ Ext.define('PVE.guest.SnapshotTree', {
            bind: {
                disabled: '{!canRollback}',
            },
-           confirmMsg: function() {
+           handler: function() {
                let view = this.up('treepanel');
+
                let rec = view.getSelection()[0];
                let vmid = view.getViewModel().get('vmid');
-               return Proxmox.Utils.format_task_description('qmrollback', 
vmid) +
+               let label = Proxmox.Utils.format_task_description('qmrollback', 
vmid) +
                    ` '${rec.data.name}'? ${gettext("Current state will be 
lost.")}`;
+
+               let formPanel = Ext.create({
+                   xtype: 'inputpanel',
+                   bodyPadding: 10,
+                   border: false,
+                   items: [
+                       {
+                           xtype: 'label',
+                           html: label,
+                       },
+                       {
+                           xtype: 'proxmoxcheckbox',
+                           name: 'start',
+                           margin: '5 0 0 0',
+                           boxLabel: gettext('Start guest after rollback'),
+                       },
+                   ],
+               });
+
+               let win = Ext.create("Ext.window.Window", {
+                   width: 400,
+                   layout: 'fit',
+                   title: gettext('Confirm'),
+                   closable: true,
+                   resizable: false,
+                   modal: true,
+                   buttons: [
+                       {
+                           text: 'Yes',
+                           handler: function() {
+                               view.controller.rollback(formPanel.getValues());
+                               win.close();
+                           },
+                       },
+                       {
+                           text: 'No',
+                           handler: function() {
+                               win.close();
+                           },
+                       },
+                   ],
+                   buttonAlign: 'center',
+                   items: [formPanel],
+               });
+
+               win.show();
            },
-           handler: 'rollback',
        },
        '-',
        {
-- 
2.30.2


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to