[Kimchi-devel] [PATCH 2/2] Allow admin user change permission settings when VM is running

Wen Wang wenwang at linux.vnet.ibm.com
Thu Aug 21 11:38:34 UTC 2014


Functions changed:
1) Enable "Edit" whether VM is running or off
2) Disable edit function of "General", "Storage", "Interface" except
"replace" of the cdrom under "Storage".

Signed-off-by: Wen Wang <wenwang at linux.vnet.ibm.com>
---
 ui/js/src/kimchi.guest_edit_main.js |   54 ++++++++++++++++++++++++-----------
 ui/js/src/kimchi.guest_main.js      |    1 -
 ui/pages/guest-edit.html.tmpl       |    2 +-
 3 files changed, 38 insertions(+), 19 deletions(-)

diff --git a/ui/js/src/kimchi.guest_edit_main.js b/ui/js/src/kimchi.guest_edit_main.js
index 01d8045..ab63bb2 100644
--- a/ui/js/src/kimchi.guest_edit_main.js
+++ b/ui/js/src/kimchi.guest_edit_main.js
@@ -19,7 +19,12 @@ kimchi.guest_edit_main = function() {
     var buttonContainer = $('#action-button-container');
     $('#guest-edit-tabs').tabs({
         beforeActivate: function(event, ui) {
-            var display_list = ['form-guest-edit-general', 'form-guest-edit-permission']
+            var display_list = null;
+            if(kimchi.thisVMState === "running") {
+                display_list = ['form-guest-edit-permission'];
+            } else {
+                display_list = ['form-guest-edit-general', 'form-guest-edit-permission'];
+            }
             $(buttonContainer).addClass('hidden');
             var deactivated = ui['newPanel'];
             if(display_list.indexOf($(deactivated).attr('id')) >= 0) {
@@ -52,12 +57,17 @@ kimchi.guest_edit_main = function() {
                 text: false
             });
 
-            $('.detach', container).button({
-                icons: {
-                    primary: 'ui-icon-trash'
-                },
-                text: false
-            });
+            if(kimchi.thisVMState != "running") {
+                $('.detach', container).button({
+                    icons: {
+                        primary: 'ui-icon-trash'
+                    },
+                    text: false
+                });
+
+            } else {
+                $('.detach', container).remove();
+            }
 
             $('.save', container).button({
                 icons: {
@@ -170,6 +180,9 @@ kimchi.guest_edit_main = function() {
             var itemNode = $.parseHTML(kimchi.substitute($('#interface-tmpl').html(),data));
             $(".body", "#form-guest-edit-interface").append(itemNode);
             $("select", itemNode).append(networkOptions);
+            if(kimchi.thisVMState === "running") {
+                $("#form-guest-edit-interface .delete").remove();
+            }
             if(data.network!==""){
                 $("select", itemNode).val(data.network);
             }
@@ -340,18 +353,25 @@ kimchi.guest_edit_main = function() {
     var initContent = function(guest) {
         guest['icon'] = guest['icon'] || 'images/icon-vm.png';
         $('#form-guest-edit-general').fillWithObject(guest);
+        kimchi.thisVMState = guest['state'];
 
         refreshCDROMs();
-
-        $('#guest-edit-attach-cdrom-button').button({
-            icons: {
-                primary: "ui-icon-plusthick"
-            },
-            text: false
-        }).click(function(event) {
-            event.preventDefault();
-            kimchi.window.open("guest-storage-add.html");
-        });
+        if(kimchi.thisVMState === "running") {
+            $("#form-guest-edit-general input").prop("disabled", "disabled");
+            $("#guest-edit-attach-cdrom-button").remove();
+            $("#form-guest-edit-interface .header button").remove();
+        } else {
+            $('#guest-edit-attach-cdrom-button').button({
+                icons: {
+                    primary: "ui-icon-plusthick"
+                },
+                text: false
+            }).click(function(event) {
+                event.preventDefault();
+                kimchi.window.open("guest-storage-add.html");
+            });
+            $("#action-button-container").removeClass("hidden");
+        }
 
         var onAttached = function(params) {
             refreshCDROMs();
diff --git a/ui/js/src/kimchi.guest_main.js b/ui/js/src/kimchi.guest_main.js
index 320847e..5cbdb40 100644
--- a/ui/js/src/kimchi.guest_main.js
+++ b/ui/js/src/kimchi.guest_main.js
@@ -253,7 +253,6 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu) {
     //Setup the VM Actions
     var guestActions=result.find("div[name=guest-actions]");
     guestActions.find(".shutoff-disabled").prop('disabled', !vmRunningBool );
-    guestActions.find(".running-disabled").prop('disabled', vmRunningBool );
 
     if (vmRunningBool) {
         guestActions.find(".running-hidden").hide();
diff --git a/ui/pages/guest-edit.html.tmpl b/ui/pages/guest-edit.html.tmpl
index ed7ddeb..47615be 100644
--- a/ui/pages/guest-edit.html.tmpl
+++ b/ui/pages/guest-edit.html.tmpl
@@ -145,7 +145,7 @@
         </div>
     </div>
     <footer>
-        <div id="action-button-container" class="btn-group">
+        <div id="action-button-container" class="btn-group hidden">
             <button id="guest-edit-button-save" class="btn-normal">
                 <span class="text">$_("Save")</span>
             </button>
-- 
1.7.1




More information about the Kimchi-devel mailing list