- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 03-23-2017 03:55 AM
I have created a small widget that allows a user to add or remove themself from a group.
This is in large part borrowed from Create custom action buttons in Service Portal - ServicePortal.io - Service Portal, CMS, and Custom ...
The reason I add it to the community is that I found an interesting "feature" in ServiceNow that may confuse some.
When removing themselves from a group, regardless if this means changes in rolls and skills, the user will see the RoleManager Script Include info messages.
I fixed this by adding gs.flushMessages(); to the remove part.
Code for page:
<div class="panel panel-default">
<div class="panel-heading">Group membership</div>
<div class="panel-body">
<button type="button" class="btn btn-primary btn-block" ng-click="c.uiAction('add')">Add me</button>
<button type="button" class="btn btn-default btn-block" ng-click="c.uiAction('remove')">Remove me</button>
</div>
</div>
Code for Client:
function() {
var c = this;
c.uiAction = function(action) {
c.data.action = action;
c.server.update().then(function() {
c.data.action = undefined;
})
}
}
Code for server:
(function() {
//Get user sys_id
var me = gs.getUserID();
//If input from button, get which input
if (input && input.action) {
var action = input.action;
//If Add, check that user is not member and then add them
if (action == 'add') {
var nydi = new GlideRecord('sys_user_grmember');
nydi.addQuery('user',me);
nydi.addQuery('group','sys_id of group');
nydi.query();
if(!nydi.next())
{
nydi.initialize();
nydi.user = me;
nydi.group = 'sys_id of group';
nydi.insert();
gs.addInfoMessage('You have been added to the group.');
}
}
//If remove, check that user is member of the group then remove them.
if (action == 'remove') {
var hardi = new GlideRecord('sys_user_grmember');
hardi.addQuery('user',me);
hardi.addQuery('group','sys_id of group');
hardi.query();
while(hardi.next())
{
hardi.deleteRecord();
gs.flushMessages();
gs.addInfoMessage('You are no longer a member of the group.');
}
}
}
})();
- 968 Views