From 31d7cdd0f9dd2a5526aca747329f78877aab1237 Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Wed, 22 Oct 2025 20:02:59 +0530 Subject: [PATCH 01/11] Add script to display user mentions in Service Portal This script retrieves and displays the top 5 records where the logged-in user is mentioned, providing links to those records. --- .../My Mentioned Items/server.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Modern Development/Service Portal Widgets/My Mentioned Items/server.js diff --git a/Modern Development/Service Portal Widgets/My Mentioned Items/server.js b/Modern Development/Service Portal Widgets/My Mentioned Items/server.js new file mode 100644 index 0000000000..c7acf63dc1 --- /dev/null +++ b/Modern Development/Service Portal Widgets/My Mentioned Items/server.js @@ -0,0 +1,21 @@ +(function() { + /* + This code will get display the records wher user is mentioned. + This will also provide the link to record. + Only top 5 mentions will be displayed. + */ + data.mentionArr = []; // array to store mentions. + var mentionRec = new GlideRecord('live_notification'); + mentionRec.addEncodedQuery('user=' + gs.getUserID()); // get only logged-in user's records + mentionRec.orderBy('sys_created_on'); // get by created date. + mentionRec.setLimit(5); + mentionRec.query(); + while (mentionRec.next()) { + tempval = {}; // temp object. + tempval.record = mentionRec.getValue('title'); + tempval.user = mentionRec.user.name.toString(); + tempval.user_from = mentionRec.user_from.name.toString(); + tempval.url = '/' + $sp.getValue('url_suffix') + '?id=ticket&sys_id=' + mentionRec.getValue('document') + '&table=' + mentionRec.getValue('table'); + data.mentionArr.push(tempval); + } +})(); From c06f8741cbef5176d513c8080f60be3d67354a6f Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Wed, 22 Oct 2025 20:18:48 +0530 Subject: [PATCH 02/11] Delete Modern Development/Service Portal Widgets/My Mentioned Items directory --- .../My Mentioned Items/server.js | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 Modern Development/Service Portal Widgets/My Mentioned Items/server.js diff --git a/Modern Development/Service Portal Widgets/My Mentioned Items/server.js b/Modern Development/Service Portal Widgets/My Mentioned Items/server.js deleted file mode 100644 index c7acf63dc1..0000000000 --- a/Modern Development/Service Portal Widgets/My Mentioned Items/server.js +++ /dev/null @@ -1,21 +0,0 @@ -(function() { - /* - This code will get display the records wher user is mentioned. - This will also provide the link to record. - Only top 5 mentions will be displayed. - */ - data.mentionArr = []; // array to store mentions. - var mentionRec = new GlideRecord('live_notification'); - mentionRec.addEncodedQuery('user=' + gs.getUserID()); // get only logged-in user's records - mentionRec.orderBy('sys_created_on'); // get by created date. - mentionRec.setLimit(5); - mentionRec.query(); - while (mentionRec.next()) { - tempval = {}; // temp object. - tempval.record = mentionRec.getValue('title'); - tempval.user = mentionRec.user.name.toString(); - tempval.user_from = mentionRec.user_from.name.toString(); - tempval.url = '/' + $sp.getValue('url_suffix') + '?id=ticket&sys_id=' + mentionRec.getValue('document') + '&table=' + mentionRec.getValue('table'); - data.mentionArr.push(tempval); - } -})(); From 1e5fce571bccf37ba3b70002c29737f99afcff02 Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Wed, 22 Oct 2025 20:22:42 +0530 Subject: [PATCH 03/11] Create script.js --- .../My Mentioned Items/script.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Modern Development/Service Portal Widgets/My Mentioned Items/script.js diff --git a/Modern Development/Service Portal Widgets/My Mentioned Items/script.js b/Modern Development/Service Portal Widgets/My Mentioned Items/script.js new file mode 100644 index 0000000000..c7acf63dc1 --- /dev/null +++ b/Modern Development/Service Portal Widgets/My Mentioned Items/script.js @@ -0,0 +1,21 @@ +(function() { + /* + This code will get display the records wher user is mentioned. + This will also provide the link to record. + Only top 5 mentions will be displayed. + */ + data.mentionArr = []; // array to store mentions. + var mentionRec = new GlideRecord('live_notification'); + mentionRec.addEncodedQuery('user=' + gs.getUserID()); // get only logged-in user's records + mentionRec.orderBy('sys_created_on'); // get by created date. + mentionRec.setLimit(5); + mentionRec.query(); + while (mentionRec.next()) { + tempval = {}; // temp object. + tempval.record = mentionRec.getValue('title'); + tempval.user = mentionRec.user.name.toString(); + tempval.user_from = mentionRec.user_from.name.toString(); + tempval.url = '/' + $sp.getValue('url_suffix') + '?id=ticket&sys_id=' + mentionRec.getValue('document') + '&table=' + mentionRec.getValue('table'); + data.mentionArr.push(tempval); + } +})(); From f368a8d2e60e996cf904d69ac8dabb6cbae9c622 Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Wed, 22 Oct 2025 20:22:52 +0530 Subject: [PATCH 04/11] Delete Modern Development/Service Portal Widgets/My Mentioned Items directory --- .../My Mentioned Items/script.js | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 Modern Development/Service Portal Widgets/My Mentioned Items/script.js diff --git a/Modern Development/Service Portal Widgets/My Mentioned Items/script.js b/Modern Development/Service Portal Widgets/My Mentioned Items/script.js deleted file mode 100644 index c7acf63dc1..0000000000 --- a/Modern Development/Service Portal Widgets/My Mentioned Items/script.js +++ /dev/null @@ -1,21 +0,0 @@ -(function() { - /* - This code will get display the records wher user is mentioned. - This will also provide the link to record. - Only top 5 mentions will be displayed. - */ - data.mentionArr = []; // array to store mentions. - var mentionRec = new GlideRecord('live_notification'); - mentionRec.addEncodedQuery('user=' + gs.getUserID()); // get only logged-in user's records - mentionRec.orderBy('sys_created_on'); // get by created date. - mentionRec.setLimit(5); - mentionRec.query(); - while (mentionRec.next()) { - tempval = {}; // temp object. - tempval.record = mentionRec.getValue('title'); - tempval.user = mentionRec.user.name.toString(); - tempval.user_from = mentionRec.user_from.name.toString(); - tempval.url = '/' + $sp.getValue('url_suffix') + '?id=ticket&sys_id=' + mentionRec.getValue('document') + '&table=' + mentionRec.getValue('table'); - data.mentionArr.push(tempval); - } -})(); From df002e468c73339b41a6a708fb9e821a47f61dd6 Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Thu, 23 Oct 2025 23:22:16 +0530 Subject: [PATCH 05/11] Create script.js --- .../Retire Rating 1 Articles/script.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles/script.js diff --git a/Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles/script.js b/Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles/script.js new file mode 100644 index 0000000000..916255ec35 --- /dev/null +++ b/Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles/script.js @@ -0,0 +1,21 @@ +/* +This schedule job will run daily EOD PST time. +This Job will look for articles which have been rated 1 three times and will retire those articles. + +*/ +var kbFeed = new GlideAggregate('kb_feedback'); +kbFeed.addEncodedQuery('rating=1'); // get articles with rating 1. +kbFeed.addAggregate('COUNT', 'article'); +kbFeed.groupBy('user'); +kbFeed.query(); +while (kbFeed.next()) { + + if (kbFeed.getAggregate('COUNT', 'article') >= 3) { + var updateArt = new GlideRecord('kb_knowledge'); + updateArt.get(kbFeed.article.sys_id); + if (updateArt.workflow_state == 'published') { + updateArt.workflow_state = 'retired'; + updateArt.update(); + } + } +} From 31be0ba0034e507585f31663e8e81b905ea66577 Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Thu, 23 Oct 2025 23:22:30 +0530 Subject: [PATCH 06/11] Delete Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles directory --- .../Retire Rating 1 Articles/script.js | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles/script.js diff --git a/Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles/script.js b/Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles/script.js deleted file mode 100644 index 916255ec35..0000000000 --- a/Server-Side Components/Scheduled Jobs/Retire Rating 1 Articles/script.js +++ /dev/null @@ -1,21 +0,0 @@ -/* -This schedule job will run daily EOD PST time. -This Job will look for articles which have been rated 1 three times and will retire those articles. - -*/ -var kbFeed = new GlideAggregate('kb_feedback'); -kbFeed.addEncodedQuery('rating=1'); // get articles with rating 1. -kbFeed.addAggregate('COUNT', 'article'); -kbFeed.groupBy('user'); -kbFeed.query(); -while (kbFeed.next()) { - - if (kbFeed.getAggregate('COUNT', 'article') >= 3) { - var updateArt = new GlideRecord('kb_knowledge'); - updateArt.get(kbFeed.article.sys_id); - if (updateArt.workflow_state == 'published') { - updateArt.workflow_state = 'retired'; - updateArt.update(); - } - } -} From f942d1f52775c2a9741ede0bc583e577fb1bd37f Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Mon, 27 Oct 2025 22:49:08 +0530 Subject: [PATCH 07/11] Update favCopy.js --- .../Copy favourite to other users/favCopy.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js b/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js index a6cb18a644..6a0d3024a7 100644 --- a/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js +++ b/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js @@ -1,9 +1,12 @@ var srcFav = ""; // Add the sys_id of the favourite to copy, from sys_ui_bookmark table +var portalFav = ""; // Add the sys_id of the favourite to copy, from sp_favorite table var userCriteria = ""; // Add an encoded query of users from sys_user table - var fav = new GlideRecord("sys_ui_bookmark"); fav.get(srcFav); +var portalFav = new GlideRecord("sp_favorite"); +portalFav.get(portalFav); + var users = new GlideRecord("sys_user"); users.addEncodedQuery(userCriteria); users.query(); @@ -18,4 +21,17 @@ while(users.next()) { newFav.setValue("url",fav.url); newFav.setValue("user",users.sys_id); newFav.insert(); + + createPortalFav(users); +} +function createPortalFav(userRec){ + var newPortalFav = new GlideRecord("sp_favorite"); + newPortalFav.initialize(); + newPortalFav.setValue('user',portalFav.user); + newPortalFav.setValue('reference_table',portalFav.reference_table); + newPortalFav.setValue('reference_document',portalFav.reference_document); + newPortalFav.insert(); } + + + From b70fb02a741f2a9b0829f48d2f85a4ee257f1c04 Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Mon, 27 Oct 2025 23:04:12 +0530 Subject: [PATCH 08/11] Update favCopy.js --- .../Fix scripts/Copy favourite to other users/favCopy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js b/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js index 6a0d3024a7..14c142d604 100644 --- a/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js +++ b/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js @@ -1,5 +1,5 @@ var srcFav = ""; // Add the sys_id of the favourite to copy, from sys_ui_bookmark table -var portalFav = ""; // Add the sys_id of the favourite to copy, from sp_favorite table +var portalFav = ""; // Add the sys_id of the favourite to copy, from sp_favorite table. var userCriteria = ""; // Add an encoded query of users from sys_user table var fav = new GlideRecord("sys_ui_bookmark"); fav.get(srcFav); From 736cc7585d1171b0d98da03e3bc19831fdb7a220 Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Mon, 27 Oct 2025 23:34:58 +0530 Subject: [PATCH 09/11] Update favCopy.js --- .../Copy favourite to other users/favCopy.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js b/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js index 14c142d604..2a3e91abfc 100644 --- a/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js +++ b/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js @@ -4,8 +4,8 @@ var userCriteria = ""; // Add an encoded query of users from sys_user table var fav = new GlideRecord("sys_ui_bookmark"); fav.get(srcFav); -var portalFav = new GlideRecord("sp_favorite"); -portalFav.get(portalFav); +var portalFavRec = new GlideRecord("sp_favorite"); +portalFavRec.get(portalFav); var users = new GlideRecord("sys_user"); users.addEncodedQuery(userCriteria); @@ -22,14 +22,15 @@ while(users.next()) { newFav.setValue("user",users.sys_id); newFav.insert(); - createPortalFav(users); + createPortalFav(users); // function to create portal favorites } function createPortalFav(userRec){ var newPortalFav = new GlideRecord("sp_favorite"); newPortalFav.initialize(); - newPortalFav.setValue('user',portalFav.user); - newPortalFav.setValue('reference_table',portalFav.reference_table); - newPortalFav.setValue('reference_document',portalFav.reference_document); + newPortalFav.setValue('user',userRec.user); + newPortalFav.setValue('reference_table',portalFavRec.reference_table); + newPortalFav.setValue('reference_document',portalFavRec.reference_document); + newPortalFav.setWorkflow(false); // OOB Sscript include take the logged-in user to check the duplicate records so workflow false restricts the SI to run. newPortalFav.insert(); } From 935aadad62459b967bd2f5ce39f0dd17a5153575 Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Mon, 27 Oct 2025 23:35:40 +0530 Subject: [PATCH 10/11] Update favCopy.js --- .../Fix scripts/Copy favourite to other users/favCopy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js b/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js index 2a3e91abfc..867b1f993d 100644 --- a/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js +++ b/Specialized Areas/Fix scripts/Copy favourite to other users/favCopy.js @@ -5,7 +5,7 @@ var fav = new GlideRecord("sys_ui_bookmark"); fav.get(srcFav); var portalFavRec = new GlideRecord("sp_favorite"); -portalFavRec.get(portalFav); +portalFavRec.get(portalFav); // glide record of favorite record. var users = new GlideRecord("sys_user"); users.addEncodedQuery(userCriteria); From f908dc634325bd81f1eb8057ad213e3a960a763e Mon Sep 17 00:00:00 2001 From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com> Date: Mon, 27 Oct 2025 23:37:58 +0530 Subject: [PATCH 11/11] Update README.md --- .../Fix scripts/Copy favourite to other users/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Specialized Areas/Fix scripts/Copy favourite to other users/README.md b/Specialized Areas/Fix scripts/Copy favourite to other users/README.md index acbe6b7361..4067de50fc 100644 --- a/Specialized Areas/Fix scripts/Copy favourite to other users/README.md +++ b/Specialized Areas/Fix scripts/Copy favourite to other users/README.md @@ -1,3 +1,7 @@ +**Enhancement** +1. This code will create the sp favorites of the selected users along with the sys_ui_bookmarks. +2. The entry will be made in "sp_favorite" through new **createPortalFav** function. + You can use this script to take an existing favaourite from the sys_ui_bookmark table and create a copy of it for any number of users. Can be useful when onboarding new staff, doing testing, etc.