From 746df9067086bf746a062e6f698c4c663e6cd741 Mon Sep 17 00:00:00 2001
From: GHSayak25 <59216790+GHSayak25@users.noreply.github.com>
Date: Sun, 12 Oct 2025 21:33:43 +0530
Subject: [PATCH 1/2] Add button creation on Risks related list on Issue form
---
.../UI Actions/Add Button in Related List/README.md | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 Client-Side Components/UI Actions/Add Button in Related List/README.md
diff --git a/Client-Side Components/UI Actions/Add Button in Related List/README.md b/Client-Side Components/UI Actions/Add Button in Related List/README.md
new file mode 100644
index 0000000000..c45708ae5a
--- /dev/null
+++ b/Client-Side Components/UI Actions/Add Button in Related List/README.md
@@ -0,0 +1,5 @@
+Create a "Add" button on Risks Related List on Issue form, clicking on the button will open an interface where we can see all the Risk records to choose from.
+
+
+
+
From e93e212204c125e11638cced7b6ab641d9d5327a Mon Sep 17 00:00:00 2001
From: GHSayak25 <59216790+GHSayak25@users.noreply.github.com>
Date: Sun, 12 Oct 2025 21:40:38 +0530
Subject: [PATCH 2/2] Add button script to add related risks under issue
records
---
.../addButtoninRL.js | 85 +++++++++++++++++++
1 file changed, 85 insertions(+)
create mode 100644 Client-Side Components/UI Actions/Add Button in Related List/addButtoninRL.js
diff --git a/Client-Side Components/UI Actions/Add Button in Related List/addButtoninRL.js b/Client-Side Components/UI Actions/Add Button in Related List/addButtoninRL.js
new file mode 100644
index 0000000000..48373d5ff8
--- /dev/null
+++ b/Client-Side Components/UI Actions/Add Button in Related List/addButtoninRL.js
@@ -0,0 +1,85 @@
+//Condition for the UI Action to be visible/available to admin users
+RP.isRelatedList()&&gs.hasRole('admin')&&new sn_grc.addButtonsIssueCustom().isRisk(RP.getListControl().getControlID())
+
+//The Script for OnClick function is written below-
+function addRiskToIssue() {
+ var handleClick = function(ids) {
+ CustomEvent.un(eventName, handleClick);
+ var ajax = new GlideAjax('sn_grc.issueAssociationinRL');
+ ajax.addParam('sysparm_item_ids', ids);
+ ajax.addParam('sysparm_issue_id', g_form.getUniqueValue());
+ ajax.addParam('sysparm_name', 'createRisk');
+ ajax.getXMLAnswer(function(answerStr) {
+ var answer = JSON.parse(answerStr);
+ if (answer.error) {
+ g_form.addErrorMessage(answer.error);
+ riskoverlay.close();
+ return;
+ }
+
+ g_form.clearMessages();
+
+ if (answer.count) {
+ g_form.addInfoMessage(answer.count + " risks got associated with this issue record.");
+ riskoverlay.close();
+ }
+
+ });
+ };
+
+ var afterClose = function() {
+ CustomEvent.un(eventName, handleClick);
+
+ for (var key in GlideLists2) {
+ if (!key)
+ continue;
+ GlideList2.get(key).setFilterAndRefresh('');
+ }
+ };
+
+ var currentTableName = g_form.getTableName();
+ var eventName = 'create_risks';
+ var listTableName = 'sn_risk_risk';
+ var actionName = getMessage('Add Risks');
+ var popup_plural = getMessage('Risks');
+ var issue = g_form.getUniqueValue();
+ var query = 'active=true^sys_idNOT INjavascript:new sn_grc.getAlreadyAssociatedRecords().getSysIdsItem("' + issue + '");';
+ var parameters = 'sysparm_click_event_name=' + eventName + '&';
+ parameters += 'sysparm_nostack=true&';
+ parameters += 'sysparm_table=' + listTableName + '&';
+ parameters += 'sysparm_ui_action_name=' + actionName + '&';
+ parameters += 'sysparm_omit_filter=true&';
+ parameters += 'sysparm_plural=' + popup_plural + '&';
+ parameters += 'sysparm_show_close=false&';
+ var options = {
+ id: 'show_risks',
+ closeOnEscape: true,
+ showClose: true,
+ onAfterClose: afterClose,
+ onAfterLoad: resizeIframe,
+ height: '90%',
+ width: '90%',
+ title: 'Choose Risks to Associate',
+ iframe: '$sn_grc_show_list.do?' + parameters
+ };
+
+ if (g_scratchpad.popup_list_version == 3) {
+ parameters += "sysparm_query=" + '&';
+ parameters += "sysparm_fixed_query=" + query + '&';
+ options.iframe = "$sn_grc_show_list.do?" + parameters;
+ } else {
+ parameters += "sysparm_query=" + query + '&';
+ options.iframe = "sn_grc_show_list.do?" + parameters;
+ }
+ var riskoverlay = new GlideOverlay(options);
+ riskoverlay.center();
+ riskoverlay.render();
+ CustomEvent.on(eventName, handleClick);
+}
+
+function resizeIframe() {
+ var x = g_glideBoxes.show_risks;
+ x.autoDimension();
+ x.autoPosition();
+ x._createIframeShim();
+}