You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ch...@apache.org on 2012/07/28 05:41:21 UTC

[7/13] git commit: CS-15349: Fix incorrect result when Make owner in New project/Add account.

CS-15349: Fix incorrect result when Make owner in New project/Add account.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/82bb1e55
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/82bb1e55
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/82bb1e55

Branch: refs/heads/master
Commit: 82bb1e5592d5a15b12215c79bcc4245b3c1e9878
Parents: 12c7fb3
Author: olgasmola <ol...@gmail.com>
Authored: Fri Jul 27 17:32:54 2012 +0300
Committer: chip.childers@gmail.com <ch...@gmail.com>
Committed: Fri Jul 27 23:37:46 2012 -0400

----------------------------------------------------------------------
 ui/scripts/projects.js             |   28 ++++++++++++++++++++++++++--
 ui/scripts/ui/widgets/multiEdit.js |    6 ++++++
 2 files changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/82bb1e55/ui/scripts/projects.js
----------------------------------------------------------------------
diff --git a/ui/scripts/projects.js b/ui/scripts/projects.js
index 2ece194..cbbb4ce 100644
--- a/ui/scripts/projects.js
+++ b/ui/scripts/projects.js
@@ -15,6 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 (function(cloudStack) {
+  var getProjectAdmin;
   cloudStack.projects = {
     requireInvitation: function(args) {
       return g_capabilities.projectinviterequired;
@@ -447,12 +448,28 @@
             return ['destroy'];
         }
 
-        if (args.context.multiRule[0].role != 'Admin') {
+        if (args.context.multiRule[0].role != 'Admin' &&
+            (cloudStack.context.users[0].account == getProjectAdmin || isAdmin() || isDomainAdmin())) { // This is for the new project wizard: check if current logged in User is the Project Owner
           return args.context.actions;
         }
 
         return [];
       },
+      readOnlyCheck: function(args) { // check if current logged in User is the Project Owner
+        if (isAdmin() || isDomainAdmin())
+            return true;
+
+        var projectOwner, currentUser = cloudStack.context.users[0].account;
+        $(args.data).each(function() {
+            var data = this;
+            if (data.role == 'Admin')
+                projectOwner = data.username;
+        });
+        if (projectOwner == currentUser)
+            return true;
+
+        return false;
+      },
       actions: {
         destroy: {
           label: 'label.remove.project.account',
@@ -497,7 +514,12 @@
               success: function(data) {
                 args.response.success({
                   _custom: {
-                    jobId: data.updateprojectresponse.jobid
+                    jobId: data.updateprojectresponse.jobid,
+                    onComplete: function(){
+                      setTimeout(function() {
+                        $(window).trigger('cloudStack.fullRefresh');
+                      }, 500);
+                    }
                   },
                   notification: {
                     label: 'label.make.project.owner',
@@ -522,6 +544,8 @@
           success: function(data) {
             args.response.success({
               data: $.map(data.listprojectaccountsresponse.projectaccount, function(elem) {
+                if (elem.role == 'Owner' || elem.role == 'Admin')
+                  getProjectAdmin = elem.account;
                 return {
                   id: elem.accountid,
                   role: elem.role,

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/82bb1e55/ui/scripts/ui/widgets/multiEdit.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui/widgets/multiEdit.js b/ui/scripts/ui/widgets/multiEdit.js
index 140b889..9334214 100644
--- a/ui/scripts/ui/widgets/multiEdit.js
+++ b/ui/scripts/ui/widgets/multiEdit.js
@@ -675,6 +675,7 @@
     var context = args.context;
     var ignoreEmptyFields = args.ignoreEmptyFields;
     var actionPreFilter = args.actionPreFilter;
+    var readOnlyCheck = args.readOnlyCheck;
 
     var $thead = $('<tr>').appendTo(
       $('<thead>').appendTo($inputTable)
@@ -935,6 +936,11 @@
               ).appendTo($dataBody);
             });
 
+            if (readOnlyCheck && !readOnlyCheck(args)) {
+                $multi.find('th.add-user, td.add-user').detach();
+                $multiForm.find('tbody').detach();
+            }
+
             _medit.refreshItemWidths($multi);
           },
           error: cloudStack.dialog.error