diff --git a/Client-Side Components/Catalog Client Script/Catalog Approval/Readme.md b/Client-Side Components/Catalog Client Script/Catalog Approval/Readme.md new file mode 100644 index 0000000000..cb49be2676 --- /dev/null +++ b/Client-Side Components/Catalog Client Script/Catalog Approval/Readme.md @@ -0,0 +1 @@ +This project adds a dynamic preview feature to Service Catalog items, allowing users to see the full approval chain before submitting a request. It improves transparency, reduces confusion, and helps users understand who will be involved in the approval process based on their selections. diff --git a/Client-Side Components/Catalog Client Script/Catalog Approval/client script.js b/Client-Side Components/Catalog Client Script/Catalog Approval/client script.js new file mode 100644 index 0000000000..d5af4a33d6 --- /dev/null +++ b/Client-Side Components/Catalog Client Script/Catalog Approval/client script.js @@ -0,0 +1,10 @@ +function onLoad() { + var ga = new GlideAjax('ApprovalChainHelper'); + ga.addParam('sysparm_name', 'getApprovers'); + ga.addParam('sysparm_item_id', g_form.getUniqueValue()); + ga.getXMLAnswer(function(response) { + var approvers = JSON.parse(response); + var message = 'This request will be approved by: ' + approvers.join(', '); + g_form.showFieldMsg('requested_for', message, 'info'); + }); +} diff --git a/Client-Side Components/Catalog Client Script/Catalog Approval/script include.js b/Client-Side Components/Catalog Client Script/Catalog Approval/script include.js new file mode 100644 index 0000000000..db94b99438 --- /dev/null +++ b/Client-Side Components/Catalog Client Script/Catalog Approval/script include.js @@ -0,0 +1,20 @@ +var ApprovalChainHelper = Class.create(); +ApprovalChainHelper.prototype = Object.extendsObject(AbstractAjaxProcessor, { + getApprovers: function() { + var itemId = this.getParameter('sysparm_item_id'); + var userId = gs.getUserID(); + + var approvers = []; + + // Example logic: fetch approval rules based on item and user + var ruleGR = new GlideRecord('sysapproval_approver'); + ruleGR.addQuery('document_id', 80f8920bc3e4b2105219daec050131e3); + ruleGR.query(); + + while (ruleGR.next()) { + approvers.push(ruleGR.approver.name.toString()); + } + + return JSON.stringify(approvers); + } +});