UI Action & UI Page that only Admin role can create, user without admin is unable to perform action.

Max Lin
Tera Contributor

Hi, i have made a UI action button in SCTASK that ask user for assignment group + assignee and when clicked, SCTask is created. 

find_real_file.png

find_real_file.png

When ok is clicked, it will create another SCTask with assigned group and assessor if any. 

Problem:
However, this is working fine if a user has 'admin' role. 
If a user does not have 'admin' role, no SCTask will be created. 

This is really pulling my hair out 😞

Below are my config and script. Appreciate if anyone can help me out please.
Thank you so much in advance! 

 

ui action:
find_real_file.png

function confirmAndProcess() {
var assignment_group = g_form.getReference("assignment_group");
var agroup = g_form.getValue("assignment_group");
var confirm = new GlideDialogWindow('add_assignment_group_page_modify'); //UI Page Name
confirm.setTitle('Select Assignment Group');
	//Check Size
confirm.setSize(400,300);
confirm.setPreference("assignment_group", assignment_group);
confirm.setPreference("agroup", agroup);
confirm.render();
}


UI Page:
html:

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<script>
	addLoadEvent (function(){
	onLoadFunction();
	});
	</script>
	
	
  Assignment Group: <g:ui_reference name="group" id="group" table="sys_user_group" completer="AJAXTableCompleter" query="active=true" onchange="setUserFilter()" style="width:100px" />
	<br />
  Assign to Assessor (Optional): <g:ui_reference name="userRecords" id="userRecords" table="sys_user" completer="AJAXTableCompleter" style="width:100px" />

	<br />
  Additional Notes for Cross Team:	
	<div class="row">
		<div class="form-horizontal">
			<div class="form-group" style="margin-left:16px !important;margin-right:16px !important">
				<textarea id="comments" name="comments" class="form-control" spellcheck="true" style="overflow: hidden; word-wrap: break-word; resize: none;" ></textarea>
			</div>
		</div>
	</div>
	<br />
	<g:dialog_buttons_ok_cancel ok="saveGroups()" cancel_type="button" />

</j:jelly>

client script:

function onLoadFunction() {
    var a = document.getElementById('sys_display.userRecords');
    a.setAttribute('disabled', 'true');
    var b = document.getElementById('lookup.userRecords');
    b.setAttribute('disabled', 'true');
    var c = document.getElementById('comments');
    c.setAttribute('disabled', 'true');

}

function setUserFilter() {
    var groupSysId = gel('group').value;
    var UserLookUp = gel('lookup.userRecords');
    var userArray = [];
    var gr = new GlideRecord("u_assessor");
    gr.addQuery("u_group", groupSysId);
    gr.query();
    while (gr.next()) {
        userArray.push(gr.u_user.toString());
    }

    UserLookUp.setAttribute('onclick', "mousePositionSave(event); reflistOpen( 'userRecords', 'not', 'sys_user', '', 'false','QUERY:active=true',           'sys_idIN" + userArray + "', '')");

    var a = document.getElementById('sys_display.userRecords');
    a.removeAttribute("disabled"); // removing the disabled attribute
    var b = document.getElementById('lookup.userRecords');
    b.removeAttribute("disabled"); // removing the disabled attribute
    var c = document.getElementById('comments');
    c.removeAttribute("disabled"); // removing the disabled attribute

}

function saveGroups() {
    //get the groups that are selected in the UI page.
    var groups = $('group').value; //your value
    var user = $('userRecords').value; //your value
    var comments = $('comments').value; //your value

    if (groups == "") {
        //If groups are empty stop submission
        alert("Please provide assignment group name.");
        return false;
    }

    var newCTask = new GlideRecord('sc_task');
    newCTask.state = '1';
    newCTask.request = g_form.getValue('request');
    newCTask.request_item = g_form.getValue('request_item');
    newCTask.assignment_group = groups;
    newCTask.assigned_to = user;
    newCTask.u_assign_to_assessor = user;

    var rf = g_form.getReference('request', myFunc);

    function myFunc(rf) {
        newCTask.requested_for = rf.requested_for;
    }

    var currentid = g_form.getValue('number');
    var gr = new GlideRecord('sys_user_group');
    gr.addQuery('sys_id', groups);
    gr.query();
    if (gr.next()) {
        gr = gr.getValue('name');
    }

    newCTask.parent = g_form.getValue('request_item');
    newCTask.short_description = 'Assessor for ' + gr + ' to Assess - Cross Team Requested By: ' + currentid;
    newCTask.description = 'Cross Team created by previous Assessor ' + currentid + '. \nAdditional Comments from previous assessor: ' + comments + '\nIf any comments, please contact previous Assessor. You can delete this SCTASK if cross team not required.';
    var id = newCTask.insert();

    //self.location = "sc_task.do?sys_id=" + id;
    alert("New Cross Team SCTask has been created for " + gr + "\nYou can see it later in the RITM. \n\nYou may now continue to assess this task.");

    GlideDialogWindow.get().destroy();
}

 

1 ACCEPTED SOLUTION

suvro
Mega Sage
Mega Sage

Just check whether you have applied admin role in the UI action. This section is at below

find_real_file.png

View solution in original post

6 REPLIES 6

suvro
Mega Sage
Mega Sage

Just check whether you have applied admin role in the UI action. This section is at below

find_real_file.png

Max Lin
Tera Contributor

You triggered me to check ACL rules. and true enough someone removed ITIL role from sc_task create.

Thank you so much!