Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to show workflow stage in ticket widget RITM Service Portal?

zulhiyatiuwi
Tera Expert

Hello, how can i add information about stage in ticket page portal?

I want to show this stage from RITM list to portal

find_real_file.png

Portal, how can i do this? Please help...

find_real_file.png

 

1 ACCEPTED SOLUTION

zulhiyatiuwi
Tera Expert

Hello, I have found way to show stage in ticket. I cloned Request Items widget and change script in Server Script line 9 and 31

(function() {
	/*var rec = $sp.getRecord();
	if (rec != null && rec.isValid())
		data.conversation_title = rec.getDisplayValue();
	if (!data.conversation_title)
		data.conversation_title = gs.getMessage("Request");*/
	
	data.title = options.title || gs.getMessage("Stage");
	var gr = new GlideRecord("sc_req_item"); // does ACL checking for us
	gr.addQuery("sys_id", $sp.getParameter("sys_id"));//gr.addQuery("request", $sp.getParameter("sys_id"));

	options.secondary_fields = options.secondary_fields || "number";
	options.secondary_fields = options.secondary_fields.split(",");

	if (options.order_direction == "asc")
		gr.orderBy(options.order_by);
	else
		gr.orderByDesc(options.order_by);

	if (options.maximum_entries > 0)
		gr.setLimit(options.maximum_entries);
	gr.query();

	data.actions = [];
	data.list = [];
	while (gr.next()) {
		if (!gr.canRead())
			continue;
      
		if (gr.getRowCount() == 1)
			data.conversation_title = gr.getValue("short_description");//data.conversation_title = gr.getDisplayValue() + " - " + gr.getValue("short_description");

		var record = {};

		record.sys_id = gr.sys_id.getDisplayValue();
		if (options.image_field) {
			record.image_field = gr.getDisplayValue(options.image_field);
			if (!record.image_field)
				record.image_field = "/noimage.pngx";
		}
		if (options.display_field)
			record.display_field = gr.getDisplayValue(options.display_field);

		record.secondary_fields = [];
		options.secondary_fields.forEach(function(f) {
			var secondaryField = getField(gr, f);
			if (secondaryField != null)
				record.secondary_fields.push(secondaryField);
		});

		if (options.sp_page_dv)
			record.url = "?id="+options.sp_page_dv+"&table="+options.table+"&sys_id="+record.sys_id+"&view=sp";
		else
			record.url = "";

		record.stage = gr.getValue("stage");

		// get appropriate Stage choices for this requested item
		record.stageWidget = $sp.getWidget("cb6631d39f2003002899d4b4232e7030", {req_item_id: record.sys_id, onload_expand_request_item_stages: options.auto_expand_request_item_stages});

		data.list.push(record);
	}

	if (gr.getRowCount() > 1)
		data.conversation_title = gr.request.getDisplayValue() + " - " + gr.getRowCount() + " items";

	function getField(gr, name) {
		var f = {};
		f.display_value = gr.getDisplayValue(name);
		f.value = gr.getValue(name);
		var ge = gr.getElement(name);
		if (ge == null)
			return null;

		f.type = ge.getED().getInternalType();
		f.label = ge.getLabel();
		return f;
	}

})();

And now, stage is show in ticket field, actually there is error like this after i add the new widget

find_real_file.png

 

But after reload it, its gone. I dont know why 😞find_real_file.png

 

View solution in original post

5 REPLIES 5

zulhiyatiuwi
Tera Expert

Hello, I have found way to show stage in ticket. I cloned Request Items widget and change script in Server Script line 9 and 31

(function() {
	/*var rec = $sp.getRecord();
	if (rec != null && rec.isValid())
		data.conversation_title = rec.getDisplayValue();
	if (!data.conversation_title)
		data.conversation_title = gs.getMessage("Request");*/
	
	data.title = options.title || gs.getMessage("Stage");
	var gr = new GlideRecord("sc_req_item"); // does ACL checking for us
	gr.addQuery("sys_id", $sp.getParameter("sys_id"));//gr.addQuery("request", $sp.getParameter("sys_id"));

	options.secondary_fields = options.secondary_fields || "number";
	options.secondary_fields = options.secondary_fields.split(",");

	if (options.order_direction == "asc")
		gr.orderBy(options.order_by);
	else
		gr.orderByDesc(options.order_by);

	if (options.maximum_entries > 0)
		gr.setLimit(options.maximum_entries);
	gr.query();

	data.actions = [];
	data.list = [];
	while (gr.next()) {
		if (!gr.canRead())
			continue;
      
		if (gr.getRowCount() == 1)
			data.conversation_title = gr.getValue("short_description");//data.conversation_title = gr.getDisplayValue() + " - " + gr.getValue("short_description");

		var record = {};

		record.sys_id = gr.sys_id.getDisplayValue();
		if (options.image_field) {
			record.image_field = gr.getDisplayValue(options.image_field);
			if (!record.image_field)
				record.image_field = "/noimage.pngx";
		}
		if (options.display_field)
			record.display_field = gr.getDisplayValue(options.display_field);

		record.secondary_fields = [];
		options.secondary_fields.forEach(function(f) {
			var secondaryField = getField(gr, f);
			if (secondaryField != null)
				record.secondary_fields.push(secondaryField);
		});

		if (options.sp_page_dv)
			record.url = "?id="+options.sp_page_dv+"&table="+options.table+"&sys_id="+record.sys_id+"&view=sp";
		else
			record.url = "";

		record.stage = gr.getValue("stage");

		// get appropriate Stage choices for this requested item
		record.stageWidget = $sp.getWidget("cb6631d39f2003002899d4b4232e7030", {req_item_id: record.sys_id, onload_expand_request_item_stages: options.auto_expand_request_item_stages});

		data.list.push(record);
	}

	if (gr.getRowCount() > 1)
		data.conversation_title = gr.request.getDisplayValue() + " - " + gr.getRowCount() + " items";

	function getField(gr, name) {
		var f = {};
		f.display_value = gr.getDisplayValue(name);
		f.value = gr.getValue(name);
		var ge = gr.getElement(name);
		if (ge == null)
			return null;

		f.type = ge.getED().getInternalType();
		f.label = ge.getLabel();
		return f;
	}

})();

And now, stage is show in ticket field, actually there is error like this after i add the new widget

find_real_file.png

 

But after reload it, its gone. I dont know why 😞find_real_file.png