also refactor the right click menu logic

Signed-off-by: Dominik Csapak <[email protected]>
---
 www/manager6/Utils.js       | 36 ++++++++++++----------------------
 www/manager6/lxc/CmdMenu.js | 48 ++++++++++++++++++++++++++-------------------
 www/manager6/lxc/Config.js  | 26 ++++++++++++++++++++++++
 3 files changed, 67 insertions(+), 43 deletions(-)

diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index 7b495890..6345b2b4 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -831,32 +831,22 @@ Ext.define('PVE.Utils', { utilities: {
            v.select(record);
        }
        var menu;
+       var template = !!record.data.template;
+       var type = record.data.type;
 
-       if (record.data.type === 'qemu' && !record.data.template) {
-           menu = Ext.create('PVE.qemu.CmdMenu', {
-               pveSelNode: record
-           });
-       } else if (record.data.type === 'qemu' && record.data.template) {
-           menu = Ext.create('PVE.menu.TemplateMenu', {
-               pveSelNode: record
-           });
-       } else if (record.data.type === 'lxc' && !record.data.template) {
-           menu = Ext.create('PVE.lxc.CmdMenu', {
-               pveSelNode: record
-           });
-       } else if (record.data.type === 'lxc' && record.data.template) {
-           /* since clone does not work reliably, disable for now
-           menu = Ext.create('PVE.lxc.TemplateMenu', {
-               pveSelNode: record
-           });
-           */
-           return;
-
-       } else if (record.data.type === 'node' ){
-           menu = Ext.create('PVE.node.CmdMenu', {
+       if (template) {
+           if (type === 'qemu' || type == 'lxc') {
+               menu = Ext.create('PVE.menu.TemplateMenu', {
+                   pveSelNode: record
+               });
+           }
+       } else if (type === 'qemu' ||
+                  type === 'lxc' ||
+                  type === 'node') {
+           menu = Ext.create('PVE.' + type + '.CmdMenu', {
+               pveSelNode: record,
                nodename: record.data.node
            });
-
        } else {
            return;
        }
diff --git a/www/manager6/lxc/CmdMenu.js b/www/manager6/lxc/CmdMenu.js
index 6ad3ca29..13edcb2e 100644
--- a/www/manager6/lxc/CmdMenu.js
+++ b/www/manager6/lxc/CmdMenu.js
@@ -116,6 +116,14 @@ Ext.define('PVE.lxc.CmdMenu', {
                hidden: standalone || !caps.vms['VM.Migrate']
            },
            {
+               text: gettext('Clone'),
+               iconCls: 'fa fa-fw fa-clone',
+               hidden: !caps.vms['VM.Clone'],
+               handler: function() {
+                   PVE.window.Clone.wrap(nodename, vmid, me.isTemplate, 'lxc');
+               }
+           },
+           {
                text: gettext('Migrate'),
                iconCls: 'fa fa-fw fa-send-o',
                hidden: standalone || !caps.vms['VM.Migrate'],
@@ -128,26 +136,26 @@ Ext.define('PVE.lxc.CmdMenu', {
                    win.show();
                }
            },
-//         {
-//             text: gettext('Convert to template'),
-//             icon: '/pve2/images/forward.png',
-//             handler: function() {
-//                 var msg = 
Proxmox.Utils.format_task_description('vztemplate', vmid);
-//                 Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
-//                     if (btn !== 'yes') {
-//                         return;
-//                     }
-//
-//                     Proxmox.Utils.API2Request({
-//                          url: '/nodes/' + nodename + '/lxc/' + vmid + 
'/template',
-//                          method: 'POST',
-//                          failure: function(response, opts) {
-//                             Ext.Msg.alert('Error', response.htmlStatus);
-//                          }
-//                     });
-//                 });
-//             }
-//         },
+           {
+               text: gettext('Convert to template'),
+               iconCls: 'fa fa-fw fa-file-o',
+               handler: function() {
+                   var msg = 
Proxmox.Utils.format_task_description('vztemplate', vmid);
+                   Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
+                       if (btn !== 'yes') {
+                           return;
+                       }
+
+                       Proxmox.Utils.API2Request({
+                           url: '/nodes/' + nodename + '/lxc/' + vmid + 
'/template',
+                           method: 'POST',
+                           failure: function(response, opts) {
+                               Ext.Msg.alert('Error', response.htmlStatus);
+                           }
+                       });
+                   });
+               }
+           },
            { xtype: 'menuseparator' },
            {
                text: gettext('Console'),
diff --git a/www/manager6/lxc/Config.js b/www/manager6/lxc/Config.js
index 52569901..c9c49177 100644
--- a/www/manager6/lxc/Config.js
+++ b/www/manager6/lxc/Config.js
@@ -94,6 +94,32 @@ Ext.define('PVE.lxc.Config', {
            text: gettext('More'),
            menu: { items: [
                {
+                   text: gettext('Clone'),
+                   iconCls: 'fa fa-fw fa-clone',
+                   hidden: caps.vms['VM.Clone'] ? false : true,
+                   handler: function() {
+                       PVE.window.Clone.wrap(nodename, vmid, template, 'lxc');
+                   }
+               },
+               {
+                   text: gettext('Convert to template'),
+                   disabled: template,
+                   xtype: 'pveMenuItem',
+                   iconCls: 'fa fa-fw fa-file-o',
+                   hidden: caps.vms['VM.Allocate'] ? false : true,
+                   confirmMsg: 
Proxmox.Utils.format_task_description('vztemplate', vmid),
+                   handler: function() {
+                       Proxmox.Utils.API2Request({
+                           url: base_url + '/template',
+                           waitMsgTarget: me,
+                           method: 'POST',
+                           failure: function(response, opts) {
+                               Ext.Msg.alert('Error', response.htmlStatus);
+                           }
+                       });
+                   }
+               },
+               {
                    iconCls: 'fa fa-heartbeat ',
                    hidden: !caps.nodes['Sys.Console'],
                    text: gettext('Manage HA'),
-- 
2.11.0


_______________________________________________
pve-devel mailing list
[email protected]
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to