J
ust a quick post today about something that I end up dealing with on most deployments. The requirement often comes to me as this…
How do I hide this form icon for some users but not others?
This request can apply to different types of icons, but is often asked about the ‘Search Knowledge’ (KB Search) icon that shows up in a default Service-now installation next to the ‘Short Description’ field. This article shows how you can remove this icon (or any other icon image) selectively using client scripts.
Here’s the script. This example is designed to be used in an ‘onLoad’ client script on the ‘Incident’ table. The main point of the script is to find the icon and hide it if the user does not have the ‘itil’ role. For a lot of HTML elements you can use a specific element ID to target and hide the element directly. In this case (and in the case of most icons in Service-now) the element in question doesn’t have a specific ID attribute so you have to go about your task a little bit differently.
The script goes through the entire page and finds any ‘A’ tags on the page (indicating an HTML link). Then it examines all of these elements one-by-one to see if any of them contain an ‘innerHTML’ attribute containing ‘knowledge.gifx’ — the image name of our icon. Once we’ve done that we know we’ve found our element and we can hide it with this code…
ref.style.display = ‘none’; //’ref’ refers to the found ‘A’ tag containing the icon
You can easily customize this script to hide an icon for different roles or a different icon completely by modifying the ‘g_user.hasRole’ and ‘knowledge.gifx’ sections below.
//Hide the kb icon for users that do not have the itil role
var isITIL = g_user.hasRole('itil'); //Check if user has itil role
if(!isITIL){
//Knowledge icon does not have an id
//Get all of the A tag elements in the document
var refs = document.getElementsByTagName('a');
if (refs){
for(var i=0; i < refs.length; i++){
//Check for the name of the icon image
if (refs[i]innerHTML.indexOf('knowledge.gifx') > 0){
//Hide the element
refs[i].style.display = 'none';
}
}
}
}
}
If you know that the KB icon will be the only (or first) KB icon on the form, you could accomplish the same thing in one line of code…
Comments
Posted On
Nov 15, 2011Posted By
Jared RomaineAnybody know how to take the code that executes when you click the “Search Knowledge” button and add it to the “Submit” button when users submit incidents via Self-Service? Basically we would like a popup to appear after the user clicks “Submit” that shows Knowledge articles that may apply. At the bottom of the popup we would have a “Did these suggestions resolve your issue?” message. If they choose “Yes” the incident is auto-closed, if they choose “No” the incident is created. Any suggestions?
Posted On
Nov 15, 2011Posted By
Mark StangerHey Jared,
I haven’t ever seen that done that way before and I don’t have any immediate idea of how to accomplish that. Typically, if you’re doing something like this it flows from the knowledge article to the incident screen. Users search knowledge, view an article, and then determine if they still need to open an incident. That flow is built into the tool. You might consider asking this on the ServiceNow forums to see if anybody there has done something like this. I’ll reply here if I come up with anything.
Mark