Account page - user tab - implement "Edit User" action.

This commit is contained in:
Jessica Wang 2010-12-06 15:59:35 -08:00
parent 51b55d8ae9
commit c07d1b3e7b
2 changed files with 203 additions and 34 deletions

View File

@ -621,6 +621,103 @@
</div>
</div>
<!-- Add User Dialog (end)-->
<!-- Edit User Dialog (begin)-->
<div id="dialog_edit_user" title="Edit User" style="display:none">
<p>Please review your changes before clicking 'Save'</p>
<div class="dialog_formcontent">
<form action="#" method="post" id="form2">
<ol>
<li>
<label for="edit_user_username">User name:</label>
<input class="text" type="text" name="edit_user_username" id="edit_user_username"/>
<div id="edit_user_username_errormsg" class="dialog_formcontent_errormsg" style="display:none;" ></div>
</li>
<li>
<label for="edit_user_email">Email:</label>
<input class="text" type="text" name="edit_user_email" id="edit_user_email"/>
<div id="edit_user_email_errormsg" class="dialog_formcontent_errormsg" style="display:none;" ></div>
</li>
<li>
<label for="edit_user_firstname">First name:</label>
<input class="text" type="text" name="edit_user_firstname" id="edit_user_firstname"/>
<div id="edit_user_firstname_errormsg" class="dialog_formcontent_errormsg" style="display:none;" ></div>
</li>
<li>
<label for="edit_user_lastname">Last name:</label>
<input class="text" type="text" name="edit_user_lastname" id="edit_user_lastname"/>
<div id="edit_user_lastname_errormsg" class="dialog_formcontent_errormsg" style="display:none;" ></div>
</li>
<li>
<label for="edit_user_timezone">Time Zone:</label>
<select class="select" id="edit_user_timezone">
<option value=""></option>
<option value='Etc/GMT+11'>[UTC-11:00] GMT-11:00</option>
<option value='Pacific/Samoa'>[UTC-11:00] Samoa Standard Time</option>
<option value='Pacific/Honolulu'>[UTC-10:00] Hawaii Standard Time</option>
<option value='US/Alaska'>[UTC-09:00] Alaska Standard Time</option>
<option value='America/Los_Angeles'>[UTC-08:00] Pacific Standard Time</option>
<option value='Mexico/BajaNorte'>[UTC-08:00] Baja California</option>
<option value='US/Arizona'>[UTC-07:00] Arizona</option>
<option value='US/Mountain'>[UTC-07:00] Mountain Standard Time</option>
<option value='America/Chihuahua'>[UTC-07:00] Chihuahua, La Paz</option>
<option value='America/Chicago'>[UTC-06:00] Central Standard Time</option>
<option value='America/Costa_Rica'>[UTC-06:00] Central America</option>
<option value='America/Mexico_City'>[UTC-06:00] Mexico City, Monterrey</option>
<option value='Canada/Saskatchewan'>[UTC-06:00] Saskatchewan</option>
<option value='America/Bogota'>[UTC-05:00] Bogota, Lima</option>
<option value='America/New_York'>[UTC-05:00] Eastern Standard Time</option>
<option value='America/Caracas'>[UTC-04:00] Venezuela Time</option>
<option value='America/Asuncion'>[UTC-04:00] Paraguay Time</option>
<option value='America/Cuiaba'>[UTC-04:00] Amazon Time</option>
<option value='America/Halifax'>[UTC-04:00] Atlantic Standard Time</option>
<option value='America/La_Paz'>[UTC-04:00] Bolivia Time</option>
<option value='America/Santiago'>[UTC-04:00] Chile Time</option>
<option value='America/St_Johns'>[UTC-03:30] Newfoundland Standard Time</option>
<option value='America/Araguaina'>[UTC-03:00] Brasilia Time</option>
<option value='America/Argentina/Buenos_Aires'>[UTC-03:00] Argentine Time</option>
<option value='America/Cayenne'>[UTC-03:00] French Guiana Time</option>
<option value='America/Godthab'>[UTC-03:00] Greenland Time</option>
<option value='America/Montevideo'>[UTC-03:00] Uruguay Time]</option>
<option value='Etc/GMT+2'>[UTC-02:00] GMT-02:00</option>
<option value='Atlantic/Azores'>[UTC-01:00] Azores Time</option>
<option value='Atlantic/Cape_Verde'>[UTC-01:00] Cape Verde Time</option>
<option value='Africa/Casablanca'>[UTC] Casablanca</option>
<option value='Etc/UTC'>[UTC] Coordinated Universal Time</option>
<option value='Atlantic/Reykjavik'>[UTC] Reykjavik</option>
<option value='Europe/London'>[UTC] Western European Time</option>
<option value='CET'>[UTC+01:00] Central European Time</option>
<option value='Europe/Bucharest'>[UTC+02:00] Eastern European Time</option>
<option value='Africa/Johannesburg'>[UTC+02:00] South Africa Standard Time</option>
<option value='Asia/Beirut'>[UTC+02:00] Beirut</option>
<option value='Africa/Cairo'>[UTC+02:00] Cairo</option>
<option value='Asia/Jerusalem'>[UTC+02:00] Israel Standard Time</option>
<option value='Europe/Minsk'>[UTC+02:00] Minsk</option>
<option value='Europe/Moscow'>[UTC+03:00] Moscow Standard Time</option>
<option value='Africa/Nairobi'>[UTC+03:00] Eastern African Time</option>
<option value='Asia/Karachi'>[UTC+05:00] Pakistan Time</option>
<option value='Asia/Kolkata'>[UTC+05:30] India Standard Time</option>
<option value='Asia/Bangkok'>[UTC+05:30] Indochina Time</option>
<option value='Asia/Shanghai'>[UTC+08:00] China Standard Time</option>
<option value='Asia/Kuala_Lumpur'>[UTC+08:00] Malaysia Time</option>
<option value='Australia/Perth'>[UTC+08:00] Western Standard Time (Australia)</option>
<option value='Asia/Taipei'>[UTC+08:00] Taiwan</option>
<option value='Asia/Tokyo'>[UTC+09:00] Japan Standard Time</option>
<option value='Asia/Seoul'>[UTC+09:00] Korea Standard Time</option>
<option value='Australia/Adelaide'>[UTC+09:30] Central Standard Time (South Australia)</option>
<option value='Australia/Darwin'>[UTC+09:30] Central Standard Time (Northern Territory)</option>
<option value='Australia/Brisbane'>[UTC+10:00] Eastern Standard Time (Queensland)</option>
<option value='Australia/Canberra'>[UTC+10:00] Eastern Standard Time (New South Wales)</option>
<option value='Pacific/Guam'>[UTC+10:00] Chamorro Standard Time</option>
<option value='Pacific/Auckland'>[UTC+12:00] New Zealand Standard Time</option>
</select>
</li>
</ol>
</form>
</div>
</div>
<!-- Edit User Dialog (end)-->
<!-- dialogs (end) -->
<!-- advanced search template (begin) -->

View File

@ -17,8 +17,12 @@
*/
var rootDomainId = 1;
var systemAccountId = 1;
var adminAccountId = 2;
var adminAccountId = 2;
var systemUserId = 1;
var adminUserId = 2;
function accountGetSearchParams() {
var moreCriteria = [];
@ -44,10 +48,13 @@ function accountGetSearchParams() {
}
function afterLoadAccountJSP() {
initDialog("dialog_resource_limits");
initDialog("dialog_disable_account");
initDialog("dialog_lock_account");
initDialog("dialog_enable_account");
if(isAdmin()) {
initDialog("dialog_resource_limits");
initDialog("dialog_disable_account");
initDialog("dialog_lock_account");
initDialog("dialog_enable_account");
initDialog("dialog_edit_user", 450);
}
// switch between different tabs
var tabArray = [$("#tab_details"), $("#tab_user")];
@ -386,22 +393,24 @@ function accountJsonToDetailsTab() {
$actionMenu.find("#action_list").empty();
var noAvailableActions = true;
if(jsonObj.id != systemAccountId && jsonObj.id != adminAccountId) {
if (jsonObj.accounttype == roleTypeUser || jsonObj.accounttype == roleTypeDomainAdmin) {
buildActionLinkForTab("Resource limits", accountActionMap, $actionMenu, $midmenuItem1, $detailsTab);
noAvailableActions = false;
}
if(jsonObj.state == "enabled") {
buildActionLinkForTab("Disable account", accountActionMap, $actionMenu, $midmenuItem1, $detailsTab);
buildActionLinkForTab("Lock account", accountActionMap, $actionMenu, $midmenuItem1, $detailsTab);
noAvailableActions = false;
}
else if(jsonObj.state == "disabled" || jsonObj.state == "locked") {
buildActionLinkForTab("Enable account", accountActionMap, $actionMenu, $midmenuItem1, $detailsTab);
noAvailableActions = false;
}
}
if(isAdmin()) {
if(jsonObj.id != systemAccountId && jsonObj.id != adminAccountId) {
if (jsonObj.accounttype == roleTypeUser || jsonObj.accounttype == roleTypeDomainAdmin) {
buildActionLinkForTab("Resource limits", accountActionMap, $actionMenu, $midmenuItem1, $detailsTab);
noAvailableActions = false;
}
if(jsonObj.state == "enabled") {
buildActionLinkForTab("Disable account", accountActionMap, $actionMenu, $midmenuItem1, $detailsTab);
buildActionLinkForTab("Lock account", accountActionMap, $actionMenu, $midmenuItem1, $detailsTab);
noAvailableActions = false;
}
else if(jsonObj.state == "disabled" || jsonObj.state == "locked") {
buildActionLinkForTab("Enable account", accountActionMap, $actionMenu, $midmenuItem1, $detailsTab);
noAvailableActions = false;
}
}
}
// no available actions
if(noAvailableActions == true) {
@ -478,6 +487,7 @@ function accountUserJSONToTemplate(jsonObj, $template) {
var noAvailableActions = true;
if(isAdmin()) {
buildActionLinkForSubgridItem("Edit User", accountUserActionMap, $actionMenu, $template);
buildActionLinkForSubgridItem("Generate Keys", accountUserActionMap, $actionMenu, $template);
noAvailableActions = false;
@ -533,19 +543,6 @@ var accountActionMap = {
}
};
var accountUserActionMap = {
"Generate Keys": {
api: "registerUserKeys",
isAsyncJob: false,
inProcessText: "Generate Keys....",
afterActionSeccessFn: function(json, id, $subgridItem) {
var jsonObj = json.registeruserkeysresponse.userkeys;
$subgridItem.find("#apikey").text(fromdb(jsonObj.apikey));
$subgridItem.find("#secretkey").text(fromdb(jsonObj.secretkey));
}
}
}
function updateResourceLimitForAccount(domainId, account, type, max) {
$.ajax({
data: createURL("command=updateResourceLimit&domainid="+domainId+"&account="+account+"&resourceType="+type+"&max="+max),
@ -684,4 +681,79 @@ function doEnableAccount($actionLink, $detailsTab, $midmenuItem1) {
$(this).dialog("close");
}
}).dialog("open");
}
var accountUserActionMap = {
"Edit User": {
dialogBeforeActionFn : doEditUser
},
"Generate Keys": {
api: "registerUserKeys",
isAsyncJob: false,
inProcessText: "Generate Keys....",
afterActionSeccessFn: function(json, id, $subgridItem) {
var jsonObj = json.registeruserkeysresponse.userkeys;
$subgridItem.find("#apikey").text(fromdb(jsonObj.apikey));
$subgridItem.find("#secretkey").text(fromdb(jsonObj.secretkey));
}
}
}
function doEditUser($actionLink, $subgridItem) {
var jsonObj = $subgridItem.data("jsonObj");
var id = jsonObj.id;
var $dialogEditUser = $("#dialog_edit_user");
$dialogEditUser.find("#edit_user_username").val($subgridItem.find("#username").text());
if(id==systemUserId || id==adminUserId)
$dialogEditUser.find("#edit_user_username").attr("disabled", true);
else
$dialogEditUser.find("#edit_user_username").attr("disabled", false);
$dialogEditUser.find("#edit_user_email").val($subgridItem.find("#email").text());
$dialogEditUser.find("#edit_user_firstname").val($subgridItem.find("#firstname").text());
$dialogEditUser.find("#edit_user_lastname").val($subgridItem.find("#lastname").text());
$dialogEditUser.find("#edit_user_timezone").val($subgridItem.data("timezone"));
$dialogEditUser
.dialog('option', 'buttons', {
"Save": function() {
var $thisDialog = $(this);
// validate values
var isValid = true;
isValid &= validateString("User name", $thisDialog.find("#edit_user_username"), $thisDialog.find("#edit_user_username_errormsg"), false); //required
isValid &= validateString("Email", $thisDialog.find("#edit_user_email"), $thisDialog.find("#edit_user_email_errormsg"), true); //optional
isValid &= validateString("First name", $thisDialog.find("#edit_user_firstname"), $thisDialog.find("#edit_user_firstname_errormsg"), true); //optional
isValid &= validateString("Last name", $thisDialog.find("#edit_user_lastname"), $thisDialog.find("#edit_user_lastname_errormsg"), true); //optional
if (!isValid)
return;
var username = $thisDialog.find("#edit_user_username").val();
var email = $thisDialog.find("#edit_user_email").val();
var firstname = $thisDialog.find("#edit_user_firstname").val();
var lastname = $thisDialog.find("#edit_user_lastname").val();
var timezone = $thisDialog.find("#edit_user_timezone").val();
$thisDialog.dialog("close");
$.ajax({
data: createURL("command=updateUser&id="+id+"&username="+todb(username)+"&email="+todb(email)+"&firstname="+todb(firstname)+"&lastname="+todb(lastname)+"&timezone="+todb(timezone)),
dataType: "json",
success: function(json) {
$subgridItem.find("#username").text(username);
$subgridItem.find("#email").text(email);
$subgridItem.find("#firstname").text(firstname);
$subgridItem.find("#lastname").text(lastname);
$subgridItem.find("#timezone").text(timezones[timezone]);
$subgridItem.data("timezone", timezone);
}
});
},
"Cancel": function() {
$(this).dialog("close");
}
}).dialog("open");
}