var ImpersonateUser = Class.create();
ImpersonateUser.prototype = {
/**
* Pass in the id of the span that the impersonate user button is in along with the field
* that will hold the impersonating user's name.
*/
initialize: function(span_name, toggle_field_name) {
this.span = gel(span_name);
this.toggle_field_name = toggle_field_name;
this.toggle_field = gel(toggle_field_name);
registerLoginChangeCallback("impersonate_user", this.updateImpersonateForLoginChange.bind(this));
},
/**
* Login/logout handler
*/
updateImpersonateForLoginChange: function(loggedIn, roles) {
if (loggedIn==false) {
this.toggle_field.value = "";
hideObject(this.span);
return;
}
var got_it = false;
if (typeof(roles)!='undefined') {
if (roles.length > 0) {
for (var i=0; i<roles.length; i++) {
if (roles[i]=="admin") {
got_it = true;
}
}
}
else {
if (roles == "admin")
got_it = true;
}
}
if(this.toggle_field.value != "")
got_it = true;
if (!got_it) {
hideObject(this.span);
return;
}
showObjectInline(this.span);
},
impersonateUser: function() {
var gDialog = new GlideDialogWindow("dialog_imp_user");
gDialog.setPreference('table', 'impersonate_dialog');
gDialog.setTitle('Impersonate User');
gDialog.render();
},
unimpersonateUser: function() {
var gDialog = new GlideDialogWindow("dialog_imp_user");
gDialog.setPreference('table', 'unimpersonate_user');
gDialog.setTitle('Unimpersonate User');
gDialog.render();
}
};
