From f298a04079c6fa8292ecf4d301b307f2ae6a6250 Mon Sep 17 00:00:00 2001 From: Sumanth Dosapati Date: Sat, 11 Oct 2025 19:52:20 +0530 Subject: [PATCH 1/6] Create reminders.html --- .../My Reminders/reminders.html | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Modern Development/Service Portal Widgets/My Reminders/reminders.html diff --git a/Modern Development/Service Portal Widgets/My Reminders/reminders.html b/Modern Development/Service Portal Widgets/My Reminders/reminders.html new file mode 100644 index 0000000000..9688cb7ca0 --- /dev/null +++ b/Modern Development/Service Portal Widgets/My Reminders/reminders.html @@ -0,0 +1,85 @@ +
+
+

My Reminders

+
+
+
+ You have no active reminders. +
+ +
    +
  • +

    {{reminder.subject}}

    +

    + Task: {{reminder.task_display || 'N/A'}}
    + Action: Send an {{reminder.using}} {{reminder.remind_me}} minutes before {{reminder.field_display}}. +

    +

    Notes: {{reminder.notes}}

    +
  • +
+ +
+ +
+

Create a New Reminder

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+ + +
+ +
+ +
+
+
+
+
From de02965361724c2f36b81198f9c5b377c11b4681 Mon Sep 17 00:00:00 2001 From: Sumanth Dosapati Date: Sat, 11 Oct 2025 19:52:43 +0530 Subject: [PATCH 2/6] Create reminders.scss --- .../My Reminders/reminders.scss | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Modern Development/Service Portal Widgets/My Reminders/reminders.scss diff --git a/Modern Development/Service Portal Widgets/My Reminders/reminders.scss b/Modern Development/Service Portal Widgets/My Reminders/reminders.scss new file mode 100644 index 0000000000..29ddb182ab --- /dev/null +++ b/Modern Development/Service Portal Widgets/My Reminders/reminders.scss @@ -0,0 +1,29 @@ +.reminder-item { + border-left: 4px solid #337ab7; + margin-bottom: 10px; + padding: 10px 15px; +} + +.reminder-item h4 { + margin-top: 0; + font-weight: bold; + color: #333; +} + +.reminder-item p { + margin-bottom: 5px; +} + +.reminder-form-container { + margin-top: 20px; + padding-top: 15px; + border-top: 1px solid #eee; +} + +.form-group { + margin-bottom: 15px; +} + +.panel-heading + .panel-body { + padding-top: 20px; +} From aba93e9b32e78e124623b211abf20d48f4aed72e Mon Sep 17 00:00:00 2001 From: Sumanth Dosapati Date: Sat, 11 Oct 2025 19:53:19 +0530 Subject: [PATCH 3/6] Create reminders_client.js --- .../My Reminders/reminders_client.js | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Modern Development/Service Portal Widgets/My Reminders/reminders_client.js diff --git a/Modern Development/Service Portal Widgets/My Reminders/reminders_client.js b/Modern Development/Service Portal Widgets/My Reminders/reminders_client.js new file mode 100644 index 0000000000..2718887094 --- /dev/null +++ b/Modern Development/Service Portal Widgets/My Reminders/reminders_client.js @@ -0,0 +1,42 @@ +function($scope) { + var c = this; + + // Object to hold data for the new reminder form + c.newReminder = {}; + + // Special object for the sn-record-picker directive + c.taskField = { + displayValue: '', + value: '', + name: 'task' + }; + + // Function to submit the new reminder + c.createReminder = function() { + // Check if the form is valid before submitting + if ($scope.reminderForm.$invalid) { + return; + } + + // Set the task sys_id from the record picker into our submission object + c.newReminder.task = c.taskField.value; + c.data.newReminder = c.newReminder; + + // Set an action for the server to identify the request + c.data.action = 'create_reminder'; + + // Call the server script to insert the record + c.server.update().then(function(response) { + // Clear the action and the form model after successful submission + c.data.action = undefined; + c.newReminder = {}; + c.taskField.displayValue = ''; + c.taskField.value = ''; + + // Refresh the reminder list by reloading server data + c.server.get().then(function(response) { + c.data = response.data; + }); + }); + }; +} From 922f2a3a163685ed3c95399136401494c3b321b7 Mon Sep 17 00:00:00 2001 From: Sumanth Dosapati Date: Sat, 11 Oct 2025 19:53:41 +0530 Subject: [PATCH 4/6] Create reminders_server.js --- .../My Reminders/reminders_server.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Modern Development/Service Portal Widgets/My Reminders/reminders_server.js diff --git a/Modern Development/Service Portal Widgets/My Reminders/reminders_server.js b/Modern Development/Service Portal Widgets/My Reminders/reminders_server.js new file mode 100644 index 0000000000..4c8dfe0d90 --- /dev/null +++ b/Modern Development/Service Portal Widgets/My Reminders/reminders_server.js @@ -0,0 +1,38 @@ +(function() { + + var currentUserId = gs.getUserID(); + data.reminders = []; + + + if (input && input.action === 'create_reminder') { + var newReminder = new GlideRecord('reminder'); + newReminder.initialize(); + newReminder.setValue('user', currentUserId); + newReminder.setValue('task', input.newReminder.task); + newReminder.setValue('subject', input.newReminder.subject); + newReminder.setValue('notes', input.newReminder.notes); + newReminder.setValue('remind_me', input.newReminder.remind_me); + newReminder.setValue('field', input.newReminder.field); + newReminder.setValue('using', input.newReminder.using); + newReminder.insert(); + } + + + var reminderGR = new GlideRecord('reminder'); + reminderGR.addQuery('user', currentUserId); + reminderGR.orderByDesc('sys_created_on'); // Show newest first + reminderGR.query(); + + while (reminderGR.next()) { + var reminderObj = {}; + reminderObj.sys_id = reminderGR.getUniqueValue(); + reminderObj.subject = reminderGR.getValue('subject'); + reminderObj.notes = reminderGR.getValue('notes'); + reminderObj.remind_me = reminderGR.getValue('remind_me'); + reminderObj.field_display = reminderGR.getDisplayValue('field'); // Get user-friendly display value + reminderObj.using = reminderGR.getValue('using'); + reminderObj.task_display = reminderGR.getDisplayValue('task'); // Get task number/display value + data.reminders.push(reminderObj); + } + +})(); From fb4ba0a63e7e77f5fdd78c1e73645b093b9692ad Mon Sep 17 00:00:00 2001 From: Sumanth Dosapati Date: Sat, 11 Oct 2025 19:59:38 +0530 Subject: [PATCH 5/6] Create README.md --- .../My Reminders/README.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Modern Development/Service Portal Widgets/My Reminders/README.md diff --git a/Modern Development/Service Portal Widgets/My Reminders/README.md b/Modern Development/Service Portal Widgets/My Reminders/README.md new file mode 100644 index 0000000000..3e351220c2 --- /dev/null +++ b/Modern Development/Service Portal Widgets/My Reminders/README.md @@ -0,0 +1,26 @@ +# Service Portal Reminder Widget + +A simple custom ServiceNow Service Portal widget for viewing and creating personal reminders. + +## Features + +- This uses **ServiceNow's OOB Reminder table**. Table name : 'reminder' +- Displays a list of reminders for the current user. +- Provides a form to create new reminders. +- Allows associating reminders with any Task record. +- Auto-refreshes the list after a new reminder is created. + + +## How to create + +1. Navigate to **Service Portal > Widgets**. +2. Click **Create a new widget**. +3. Set the **Widget Name** (e.g. 'My Reminders') and **ID** (e.g., 'reminder-widget'). +4. Copy and paste the provided HTML, CSS, Client Script, and Server Script into their respective tabs. +5. Save the widget. + +## How to Use + +1. Open your target portal page in the Service Portal Designer. +2. Find your widget in the "Widgets" filter on the left. +3. Drag and dropp the widget onto the page. From 69a1a4f1aa66ee0d3961d0432455dc56e1f56fb4 Mon Sep 17 00:00:00 2001 From: Sumanth Dosapati Date: Sat, 11 Oct 2025 20:01:21 +0530 Subject: [PATCH 6/6] Update README.md Added screenshots --- .../Service Portal Widgets/My Reminders/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Modern Development/Service Portal Widgets/My Reminders/README.md b/Modern Development/Service Portal Widgets/My Reminders/README.md index 3e351220c2..39b217f69b 100644 --- a/Modern Development/Service Portal Widgets/My Reminders/README.md +++ b/Modern Development/Service Portal Widgets/My Reminders/README.md @@ -24,3 +24,8 @@ A simple custom ServiceNow Service Portal widget for viewing and creating person 1. Open your target portal page in the Service Portal Designer. 2. Find your widget in the "Widgets" filter on the left. 3. Drag and dropp the widget onto the page. + +## Screenshots +image +image +