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 01:46 AM
@Ankur Bawiskar - Can you please help me in this issue
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2025 02:04 AM
what's your business requirement here?
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:09 AM - edited 01-07-2025 02:23 AM
The screenshot below is a widget that appears on the click of the 'New Delegate' button..the requirement is
- CC notification checkbox should be auto selected when Approvals checkbox , assignments or meeting invitations checkboxes are selected as emails don’t go out if CC notifications are not selected
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-07-2025 02:11 AM
I am little clueless about where exactly I have to make changes in Widget configuration to make this work