CLOUDSTACK-109: cloudstack UI - (1) detailView widget - pass context to isEditable() when calling it. (2) account page - Edit action - allow to update network domain on system-generated default admin account.

This commit is contained in:
Jessica Wang 2012-09-24 16:01:53 -07:00
parent 309be015ce
commit a3c80ebf4e
2 changed files with 101 additions and 63 deletions

View File

@ -282,59 +282,71 @@
});
$.ajax({
url: createURL("updateResourceLimit&resourceType=0&max=" + todb(args.data.vmLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["vmLimit"] = args.data.vmLimit;
}
});
if(args.data.vmLimit != null) {
$.ajax({
url: createURL("updateResourceLimit&resourceType=0&max=" + todb(args.data.vmLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["vmLimit"] = args.data.vmLimit;
}
});
}
$.ajax({
url: createURL("updateResourceLimit&resourceType=1&max=" + todb(args.data.ipLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["ipLimit"] = args.data.ipLimit;
}
});
if(args.data.ipLimit != null) {
$.ajax({
url: createURL("updateResourceLimit&resourceType=1&max=" + todb(args.data.ipLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["ipLimit"] = args.data.ipLimit;
}
});
}
$.ajax({
url: createURL("updateResourceLimit&resourceType=2&max=" + todb(args.data.volumeLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["volumeLimit"] = args.data.volumeLimit;
}
});
if(args.data.volumeLimit != null) {
$.ajax({
url: createURL("updateResourceLimit&resourceType=2&max=" + todb(args.data.volumeLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["volumeLimit"] = args.data.volumeLimit;
}
});
}
$.ajax({
url: createURL("updateResourceLimit&resourceType=3&max=" + todb(args.data.snapshotLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["snapshotLimit"] = args.data.snapshotLimit;
}
});
$.ajax({
url: createURL("updateResourceLimit&resourceType=4&max=" + todb(args.data.templateLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["templateLimit"] = args.data.templateLimit;
}
});
$.ajax({
url: createURL("updateResourceLimit&resourceType=7&max=" + todb(args.data.vpcLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["vpcLimit"] = args.data.vpcLimit;
}
});
if(args.data.snapshotLimit != null) {
$.ajax({
url: createURL("updateResourceLimit&resourceType=3&max=" + todb(args.data.snapshotLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["snapshotLimit"] = args.data.snapshotLimit;
}
});
}
if(args.data.templateLimit != null) {
$.ajax({
url: createURL("updateResourceLimit&resourceType=4&max=" + todb(args.data.templateLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["templateLimit"] = args.data.templateLimit;
}
});
}
if(args.data.vpcLimit != null) {
$.ajax({
url: createURL("updateResourceLimit&resourceType=7&max=" + todb(args.data.vpcLimit) + "&account=" + accountObj.name + "&domainid=" + accountObj.domainid),
dataType: "json",
async: false,
success: function(json) {
accountObj["vpcLimit"] = args.data.vpcLimit;
}
});
}
if(errorMsg == "")
args.response.success({data: accountObj});
@ -546,27 +558,57 @@
},
vmLimit: {
label: 'label.instance.limits',
isEditable: true
isEditable: function(context) {
if (context.accounts[0].accounttype == roleTypeUser || context.accounts[0].accounttype == roleTypeDomainAdmin) //updateResourceLimits is only allowed on account whose type is user or domain-admin
return true;
else
return false;
}
},
ipLimit: {
label: 'label.ip.limits',
isEditable: true
isEditable: function(context) {
if (context.accounts[0].accounttype == roleTypeUser || context.accounts[0].accounttype == roleTypeDomainAdmin) //updateResourceLimits is only allowed on account whose type is user or domain-admin
return true;
else
return false;
}
},
volumeLimit: {
label: 'label.volume.limits',
isEditable: true
isEditable: function(context) {
if (context.accounts[0].accounttype == roleTypeUser || context.accounts[0].accounttype == roleTypeDomainAdmin) //updateResourceLimits is only allowed on account whose type is user or domain-admin
return true;
else
return false;
}
},
snapshotLimit: {
label: 'label.snapshot.limits',
isEditable: true
isEditable: function(context) {
if (context.accounts[0].accounttype == roleTypeUser || context.accounts[0].accounttype == roleTypeDomainAdmin) //updateResourceLimits is only allowed on account whose type is user or domain-admin
return true;
else
return false;
}
},
templateLimit: {
label: 'label.template.limits',
isEditable: true
isEditable: function(context) {
if (context.accounts[0].accounttype == roleTypeUser || context.accounts[0].accounttype == roleTypeDomainAdmin) //updateResourceLimits is only allowed on account whose type is user or domain-admin
return true;
else
return false;
}
},
vpcLimit: {
label: 'VPC limits',
isEditable: true
isEditable: function(context) {
if (context.accounts[0].accounttype == roleTypeUser || context.accounts[0].accounttype == roleTypeDomainAdmin) //updateResourceLimits is only allowed on account whose type is user or domain-admin
return true;
else
return false;
}
},
vmtotal: { label: 'label.total.of.vm' },
@ -1091,12 +1133,8 @@
if (jsonObj.state == 'Destroyed') return [];
if(isAdmin()) {
if(!(jsonObj.domain == "ROOT" && jsonObj.name == "admin" && jsonObj.accounttype == 1)) { //if not system-generated default admin account
//allowedActions.push("edit");
if (jsonObj.accounttype == roleTypeUser || jsonObj.accounttype == roleTypeDomainAdmin) {
//allowedActions.push("updateResourceLimits");
allowedActions.push("edit");
}
allowedActions.push("edit"); //updating networkdomain is allowed on any account, including system-generated default admin account
if(!(jsonObj.domain == "ROOT" && jsonObj.name == "admin" && jsonObj.accounttype == 1)) { //if not system-generated default admin account
if(jsonObj.state == "enabled") {
allowedActions.push("disable");
allowedActions.push("lock");

View File

@ -789,7 +789,7 @@
// Set up editable metadata
if(typeof(value.isEditable) == 'function')
$value.data('detail-view-is-editable', value.isEditable());
$value.data('detail-view-is-editable', value.isEditable(context));
else //typeof(value.isEditable) == 'boolean' or 'undefined'
$value.data('detail-view-is-editable', value.isEditable);
if (value.select) {