]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/lxc/CmdMenu.js
make container clones/template available in the gui
[pve-manager.git] / www / manager6 / lxc / CmdMenu.js
index 8758bd4cb660c6bb8fe5951b66fa698dbbcb95fc..13edcb2e988a35715ceb2c361dcf4376e7ccff62 100644 (file)
@@ -1,6 +1,7 @@
 Ext.define('PVE.lxc.CmdMenu', {
     extend: 'Ext.menu.Menu',
 
+    showSeparator: false,
     initComponent: function() {
        var me = this;
 
@@ -13,11 +14,10 @@ Ext.define('PVE.lxc.CmdMenu', {
        if (!vmid) {
            throw "no CT ID specified";
        }
-
        var vmname = me.pveSelNode.data.name;
 
        var vm_command = function(cmd, params) {
-           PVE.Utils.API2Request({
+           Proxmox.Utils.API2Request({
                params: params,
                url: '/nodes/' + nodename + '/lxc/' + vmid + "/status/" + cmd,
                method: 'POST',
@@ -27,100 +27,139 @@ Ext.define('PVE.lxc.CmdMenu', {
            });
        };
 
-       me.title = gettext('CT') + ' ' + vmid;
+       var caps = Ext.state.Manager.get('GuiCap');
+
+       var running = false;
+       var stopped = true;
+       var suspended = false;
+       var standalone = PVE.data.ResourceStore.getNodes().length < 2;
+
+       switch (me.pveSelNode.data.status) {
+           case 'running':
+               running = true;
+               stopped = false;
+               break;
+           case 'paused':
+               stopped = false;
+               suspended = true;
+               break;
+           default: break;
+       }
+
+       me.title = 'CT ' + vmid;
 
        me.items = [
            {
                text: gettext('Start'),
-               icon: '/pve2/images/start.png',
+               iconCls: 'fa fa-fw fa-play',
+               disabled: running,
                handler: function() {
                    vm_command('start');
                }
            },
-           { 
-               text: gettext('Migrate'),
-               icon: '/pve2/images/forward.png',
+//         {
+//             text: gettext('Suspend'),
+//             iconCls: 'fa fa-fw fa-pause',
+//             hidde: suspended,
+//             disabled: stopped || suspended,
+//             handler: function() {
+//                 var msg = Proxmox.Utils.format_task_description('vzsuspend', vmid);
+//                 Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
+//                     if (btn !== 'yes') {
+//                         return;
+//                     }
+//
+//                     vm_command('suspend');
+//                 });
+//             }
+//         },
+//         {
+//             text: gettext('Resume'),
+//             iconCls: 'fa fa-fw fa-play',
+//             hidden: !suspended,
+//             handler: function() {
+//                 vm_command('resume');
+//             }
+//         },
+           {
+               text: gettext('Shutdown'),
+               iconCls: 'fa fa-fw fa-power-off',
+               disabled: stopped || suspended,
                handler: function() {
-                   var win = Ext.create('PVE.window.Migrate', {
-                       vmtype: 'lxc',
-                       nodename: nodename,
-                       vmid: vmid
+                   var msg = Proxmox.Utils.format_task_description('vzshutdown', vmid);
+                   Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
+                       if (btn !== 'yes') {
+                           return;
+                       }
+
+                       vm_command('shutdown');
                    });
-                   win.show();
                }
            },
            {
-               text: gettext('Suspend'),
-               icon: '/pve2/images/forward.png',
+               text: gettext('Stop'),
+               iconCls: 'fa fa-fw fa-stop',
+               disabled: stopped,
                handler: function() {
-                   var msg = Ext.String.format(gettext("Do you really want to suspend {0}?"), gettext('CT') + ' ' + vmid);
+                   var msg = Proxmox.Utils.format_task_description('vzstop', vmid);
                    Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
                        if (btn !== 'yes') {
                            return;
                        }
-                       
-                       vm_command('suspend');
+
+                       vm_command("stop");
                    });
                }
            },
            {
-               text: gettext('Resume'),
-               icon: '/pve2/images/forward.png',
+               xtype: 'menuseparator',
+               hidden: standalone || !caps.vms['VM.Migrate']
+           },
+           {
+               text: gettext('Clone'),
+               iconCls: 'fa fa-fw fa-clone',
+               hidden: !caps.vms['VM.Clone'],
                handler: function() {
-                   vm_command('resume');
+                   PVE.window.Clone.wrap(nodename, vmid, me.isTemplate, 'lxc');
                }
            },
            {
-               text: gettext('Shutdown'),
-               icon: '/pve2/images/stop.png',
+               text: gettext('Migrate'),
+               iconCls: 'fa fa-fw fa-send-o',
+               hidden: standalone || !caps.vms['VM.Migrate'],
                handler: function() {
-                   var msg = Ext.String.format(gettext("Do you really want to shutdown {0}?"), gettext('CT') + ' ' + vmid);
-                   Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
-                       if (btn !== 'yes') {
-                           return;
-                       }
-
-                       vm_command('shutdown');
+                   var win = Ext.create('PVE.window.Migrate', {
+                       vmtype: 'lxc',
+                       nodename: nodename,
+                       vmid: vmid
                    });
-               }                           
+                   win.show();
+               }
            },
            {
-               text: gettext('Stop'),
-               icon: '/pve2/images/gtk-stop.png',
+               text: gettext('Convert to template'),
+               iconCls: 'fa fa-fw fa-file-o',
                handler: function() {
-                   var msg = Ext.String.format(gettext("Do you really want to stop {0}?"), gettext('CT') + ' ' + vmid);
+                   var msg = Proxmox.Utils.format_task_description('vztemplate', vmid);
                    Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
                        if (btn !== 'yes') {
                            return;
                        }
 
-                       vm_command("stop");
+                       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'),
-//             icon: '/pve2/images/forward.png',
-//             handler: function() {
-//                 var msg = Ext.String.format(gettext("Do you really want to convert {0} into a template?"), gettext('CT') + ' ' + vmid);
-//                 Ext.Msg.confirm(gettext('Confirm'), msg, function(btn) {
-//                     if (btn !== 'yes') {
-//                         return;
-//                     }
-//
-//                     PVE.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'),
-               icon: '/pve2/images/display.png',
+               iconCls: 'fa fa-fw fa-terminal',
                handler: function() {
                    PVE.Utils.openDefaultConsoleWindow(true, 'lxc', vmid, nodename, vmname);
                }