diff --git a/src/sunstone/public/js/plugins/users-tab.js b/src/sunstone/public/js/plugins/users-tab.js
index bb5e20eda2..a9d35c164f 100644
--- a/src/sunstone/public/js/plugins/users-tab.js
+++ b/src/sunstone/public/js/plugins/users-tab.js
@@ -186,6 +186,13 @@ var user_actions = {
error: onError
},
+ "User.showinfo" : {
+ type: "single",
+ call: OpenNebula.User.show,
+ callback: updateUserInfo,
+ error: onError
+ },
+
"User.delete" : {
type: "multiple",
call: OpenNebula.User.delete,
@@ -285,7 +292,14 @@ var user_buttons = {
type: "confirm",
text: tr("Delete")
}
-}
+};
+
+var user_info_panel = {
+ "user_info_tab" : {
+ title: tr("User information"),
+ content:""
+ },
+};
var users_tab = {
title: tr("Users"),
@@ -295,6 +309,7 @@ var users_tab = {
Sunstone.addActions(user_actions);
Sunstone.addMainTab('users_tab',users_tab);
+Sunstone.addInfoPanel("user_info_panel",user_info_panel);
function userElements(){
return getSelectedNodes(dataTable_users);
@@ -312,8 +327,21 @@ function userElementArray(user_json){
user.GNAME,
user.AUTH_DRIVER
]
-}
+};
+function userInfoListener(){
+ $('#tbodyusers tr',dataTable_users).live("click",function(e){
+ //do nothing if we are clicking a checkbox!
+ if ($(e.target).is('input')) return true;
+ var aData = dataTable_users.fnGetData(this);
+ var id = $(aData[0]).val();
+ if (!id) return true;
+
+ popDialogLoading();
+ Sunstone.runAction("User.showinfo",id);
+ return false;
+ });
+};
function updateUserSelect(){
users_select = makeSelectOptions(dataTable_users,
@@ -354,7 +382,42 @@ function updateUsersView(request,users_list){
updateView(user_list_array,dataTable_users);
updateDashboard("users",users_list);
updateUserSelect();
-}
+};
+
+function updateUserInfo(request,user){
+ var user_info = user.USER;
+
+ var info_tab = {
+ title : tr("User information"),
+ content :
+ '
\
+ \
+ ' + tr("User information") + ' - '+user_info.NAME+' |
\
+ \
+ \
+ \
+ ' + tr("id") + ' | \
+ '+user_info.ID+' | \
+
\
+ \
+ ' + tr("Group") + ' | \
+ '+user_info.GNAME+' | \
+
\
+ \
+ ' + tr("Authentication driver") + ' | \
+ '+user_info.AUTH_DRIVER+' | \
+
\
+ \
+
\
+ \
+ ' + tr("User template") + ' |
'+
+ prettyPrintJSON(user_info.TEMPLATE)+
+ '
'
+ };
+
+ Sunstone.updateInfoPanelTab("user_info_panel","user_info_tab",info_tab);
+ Sunstone.popUpInfoPanel("user_info_panel");
+};
// Prepare the user creation dialog
function setupCreateUserDialog(){
@@ -461,7 +524,7 @@ $(document).ready(function(){
],
"oLanguage": (datatable_lang != "") ?
{
- sUrl: "locale/"+lang+"/"+datatable_lang
+ sUrl: "locale/"+lang+"/"+datatable_lang
} : ""
});
dataTable_users.fnClearTable();
@@ -478,5 +541,5 @@ $(document).ready(function(){
initCheckAllBoxes(dataTable_users);
tableCheckboxesListener(dataTable_users);
//shortenedInfoFields('#datatable_users');
-
-})
+ userInfoListener();
+});
diff --git a/src/sunstone/public/locale/en_US/en_US.js b/src/sunstone/public/locale/en_US/en_US.js
index abd23e3ef1..91db79fee5 100644
--- a/src/sunstone/public/locale/en_US/en_US.js
+++ b/src/sunstone/public/locale/en_US/en_US.js
@@ -431,9 +431,11 @@ locale={
"Used Mem (real)":"",
"Useful for power management, for example, normally required for graceful shutdown to work":"",
"User":"",
+ "User information":"",
"Username":"",
"User name and password must be filled in":"",
"Users":"",
+ "User template":"",
"Value":"",
"Value of the context variable":"",
"Value of the custom variable":"",