When Approvals, assignments or meeting invitations are True then CC notification should also be true
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2025 12:50 AM
When Approvals, assignments, or meeting invitations are True, then CC notification should also be true in the Delegate Form. Could someone please help me, since I don't have much hands-on Service Portal ? How can I achieve this?
Below is the HTML code :
<div class="panel-body">
<table>
<tr>
<td class="form-field-td">
<table>
<tr>
<td>
<div class="row form-group">
<label class="field-label" title="">
<span class="field-decorations">
<span class="fa fa-asterisk mandatory ng-scope" ng-class="{'mandatory-filled': c.user_filled()}" style="padding-right: .25em"></span></span>
<span style="padding-right: .25em" class="ng-binding" title="">User</span>
</label>
<sn-record-picker id="user" mandatory="true" ng-change="c.onUser()" field="user" table="'sys_user'" default-query="'active=true'" sn-disabled="c.data.user_readonly" display-field="'name'" value-field="'sys_id'" search-fields="'name'" page-size="100" autofocus></sn-record-picker>
</div>
</td>
</tr>
<tr>
<td>
<div class="row form-group">
<label class="field-label" title="">
<span class="field-decorations">
<span class="fa fa-asterisk mandatory ng-scope" ng-class="{'mandatory-filled': c.delegate_filled()}" style="padding-right: .25em"></span></span>
<span style="padding-right: .25em" class="ng-binding" title="">Delegate</span>
</label>
<sn-record-picker id="delegate" ng-change="c.onDelegate()" field="delegateUser" table="'sys_user'" default-query="'active=true'" display-field="'name'" value-field="'sys_id'" search-fields="'name'" page-size="100"></sn-record-picker>
</div>
</td>
</tr>
<tr>
<td>
<div class="row form-group">
<label class="field-label" title="">
<span class="field-decorations">
<span class="fa fa-asterisk mandatory ng-scope" ng-class="{'mandatory-filled': c.starts_filled()}" style="padding-right: .25em"></span></span>
<span style="padding-right: .25em" class="ng-binding" title="">Starts</span>
</label>
<sp-date-picker field="starts" ng-model="c.starts" ng-model-options="{getterSetter: true}" sn-change="c.onStarts()" sn-include-time="true"></sp-date-picker>
</div>
</td>
</tr>
<tr>
<td>
<div class="row form-group">
<label class="field-label" title="">
<span class="field-decorations">
<span class="fa fa-asterisk mandatory ng-scope" ng-class="{'mandatory-filled': c.ends_filled()}" style="padding-right: .25em"></span></span>
<span style="padding-right: .25em" class="ng-binding" title="">Ends</span>
</label>
<sp-date-picker field="ends" ng-model="c.ends" ng-model-options="{getterSetter: true}" sn-change="c.onEnds()" sn-include-time="true"></sp-date-picker>
</div>
</td>
</tr>
</table>
</td>
<td class="assignments form-field-td" style="padding-left:15%;padding-top:2%;">
<table>
<tr>
<td>
<div class="row form-group">
<label class="checkbox-inline">
<input id="approvals" name="approvals" type="checkbox" ng-change="c.onApprovals()" ng-model="c.approvals">Approvals
</label>
</div>
</td>
</tr>
<tr>
<td>
<div class="row form-group">
<label class="checkbox-inline">
<input type="checkbox" ng-change="c.onAssignments()" ng-model="c.assignments ">Assignments
</label>
</div>
</td>
</tr>
<tr>
<td>
<div class="row form-group">
<label class="checkbox-inline">
<input type="checkbox" ng-change="c.onNotifications()" ng-model="c.notifications">CC notifications
</label>
</div>
</td>
</tr>
<tr>
<td>
<div class="row form-group">
<label class="checkbox-inline">
<input type="checkbox" ng-change="c.onInvitations()" ng-model="c.invitations">Meeting invitations
</label>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
Client Script for the Widget :
api.controller = function($scope) {
/* widget controller */
var c = this;
// get Share data from parent widget
var shareData = c.widget.options.shared;
var delegate = null;
// default object to be returned to parent widget via Share data
var newData = {
user: null,
delegateUser: null,
starts: null,
ends: null,
approvals: null,
assignments: null,
notifications: null,
meetings: null
};
c.starts = '';
c.ends = '';
//c.data.user_readonly = true;
// When is an UPDATE load current Delegate data to the model
if (shareData.update) {
shareData.modifiedDelegateData = newData;
delegate = shareData.currentDelegateData;
c.approvals = delegate.approvals == '1';
c.assignments = delegate.assignments == '1';
c.notifications = delegate.notifications == '1';
c.invitations = delegate.invitations == '1';
c.starts = delegate.starts;
c.ends = delegate.ends;
}
// When is a NEW Delegate
else {
shareData.newDelegateData = newData;
c.approvals = false;
c.assignments = false;
c.notifications = false;
c.invitations = false;
}
$scope.user = {
displayValue: delegate ? delegate.user_dv : $scope.data.cur_user_dv,
value: delegate ? delegate.user_id : $scope.data.cur_user_id,
name: 'user'
};
$scope.delegateUser = {
displayValue: delegate ? delegate.delegate_dv : '',
value: delegate ? delegate.delegate_id : '',
name: 'delegateUser'
};
$scope.starts = {
displayValue: delegate ? delegate.starts : '',
value: delegate ? delegate.starts : '',
name: 'starts'
};
$scope.ends = {
displayValue: delegate ? delegate.ends : '',
value: delegate ? delegate.ends : '',
name: 'ends'
};
c.onUser = function() {
shareData.modifiedDelegateData.user = $scope.user.value;
};
c.onDelegate = function() {
if (shareData.update) shareData.modifiedDelegateData.delegateUser = $scope.delegateUser.value;
else shareData.newDelegateData.delegateUser = $scope.delegateUser.value;
};
c.onStarts = function() {
if (shareData.update) shareData.modifiedDelegateData.starts = c.starts;
else shareData.newDelegateData.starts = c.starts;
};
c.onEnds = function() {
if (shareData.update) shareData.modifiedDelegateData.ends = c.ends;
else shareData.newDelegateData.ends = c.ends;
};
c.onApprovals = function() {
if (shareData.update) {
shareData.modifiedDelegateData.approvals = c.approvals;
//shareData.modifiedDelegateData.notifications = true;
}
else{
shareData.newDelegateData.approvals = c.approvals;
}
};
c.onAssignments = function() {
if (shareData.update)
{
shareData.modifiedDelegateData.assignments = c.assignments;
//shareData.modifiedDelegateData.notifications = true;
}
else
{
shareData.newDelegateData.assignments = c.assignments;
}
};
c.onNotifications = function() {
if (shareData.update)
{
shareData.modifiedDelegateData.notifications = c.notifications;
}
else{
shareData.newDelegateData.notifications = c.notifications;
}
};
c.onInvitations = function() {
if (shareData.update)
{
shareData.modifiedDelegateData.invitations = c.invitations;
//shareData.modifiedDelegateData.notifications = true;
}
else{
shareData.newDelegateData.invitations = c.invitations;
}
};
c.user_filled = function() {
return $scope.user.value != '';
};
c.delegate_filled = function() {
return $scope.delegateUser.value != '';
};
c.starts_filled = function() {
return c.starts != '';
};
c.ends_filled = function() {
return c.ends != '';
};
};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2025 03:57 AM
@Ankur Bawiskar - I made the changes advised above in the script ..but CC Notification checkbox is not getting autocheked when selecting Approvals , assignmnets and invitation checkbox
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2025 04:08 AM
you will have to debug further
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2025 02:42 AM
I can provide you the logic
The onApprovals()
, onAssignments()
, and onInvitations()
methods should automatically set the c.notifications
model to true
(i.e., select the "CC notifications" checkbox) if any of these checkboxes are checked.
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2025 02:50 AM
@Ankur Bawiskar - Thanks, Let me try and get back