User action in ESC?

CCSF-Syd
Tera Expert

Hi,

We’d like to create a user action (like a button) available in “My Requests” to uses in the ESC - what are our options?

Requirements:
- When a Case of HR Service X is in state “review in progress”, show a ui action that says “request reconsideration”
- Clicking that ui action/button changes the state to “reconsideration requested”

Thanks in advance!

1 REPLY 1

Shruti
Mega Sage
Mega Sage

Hi,

1. Navigate to Standard Ticket -> Standard Ticket Configuration

2. Open HR case ticket configuration

Shruti_0-1753163838133.png

 

3. Open the action widget and clone it

Shruti_1-1753163866687.png

 

4. Add below code to the action widget

HTML 

<div class="action-header-item" ng-if="data.showAcceptanceOptions">
    <button class="btn btn-primary" data-toggle="modal" data-target="#resolutionModal">
    ${Accept/reject resolution}
    </button>
</div>
<div class="action-header-item">
    <div class="dropdown" id="child-case-tabs">
        <button type="button" ng-if="data.isActionAvailable" class="btn btn-default action-btn" data-toggle="dropdown" aria-haspopup="true">
        ${Actions}
        <span class="caret"></span>
        </button>
        <ul class="dropdown-menu align-left" id="actionList" role="menubar">
          <li class="ask-question" role="presentation">
                <a ng-if="data.showRequestReconsideration" ng-click="showRequestReconsideration()" tabindex="0" role="menuitem">${Request Reconsideration}</a>
            </li>
            <li role="presentation">
                <a ng-if="data.isCaseCancellable" ng-click="$event.stopPropagation();cancelCase()" tabindex="0" role="menuitem">${Cancel Request}</a>
            </li>
            <li class="ask-question" role="presentation">
                <a ng-if="data.showTab" ng-click="showChat()" tabindex="0" role="menuitem">${Ask a Question}</a>
            </li>
          <div ng-if="data.showActionsSeperator" class = "actionSeparatorPadding"></div>
          <div ng-if="data.showActionsSeperator" class = "actionsSeperator"></div>
          <div ng-if="data.showActionsSeperator" class = "actionSeparatorPadding"></div>

          <li ng-if= "data.isLECase" ng-repeat="employeeRequest in data.employeeRequests track by $index " role="presentation">
            <a href=""class ="employee-request-link" tabindex="-1" ng-click="c.openOverlay(employeeRequest.catalogItemId,employeeRequest.employeeRequestId,employeeRequest.table,employeeRequest.title)" role="menuitem">{{employeeRequest.title}}</a>
		  </li>
        </ul>
    </div>
    <div ng-show="showChatWindow" class="chat-container">
        <div class="arrow"></div>
        <div id="chatWindow" class="chat-widget-wrapper">
            <sp-widget widget="data.chatWidget"></sp-widget>
        </div>
    </div>
</div>
<div class="modal fade" id="resolutionModal" tabindex="-1" role="dialog" aria-label="${Reject Resolution Modal}" aria-hidden="false">
    <div class="modal-dialog" role="document">
        <div class="modal-content rectangle-copy-15">
            <div class="modal-header">
                <button data-dismiss="GlideModal" class="btn btn-icon close icon-cross" data-dismiss="modal">
                <span class="sr-only">${Close}</span>
                </button>
                <h1 class="modal-title">${Do you accept or reject the resolution?}</h1>
            </div>
            <div class="modal-body">
                <label class="controls-radio">
                ${Yes, I accept the resolution. Close this request.}
                <input class="" type="radio" name="resolutionAction" value="accept" ng-model="resolutionAction">
                <span class="checkmark"></span>
                </label>
                <label class="controls-radio">
                ${No, I do not accept the resolution. I still need help.}
                <input class="" type="radio" name="resolutionAction" value="reject" ng-model="resolutionAction">
                <span class="checkmark"></span>
                </label>
                <textarea maxlength="4000" ng-show="resolutionAction=='reject'" placeholder="${Please tell us what help you need?}" id="rejectResolutionNote" class="form-control" rows="4" ng-model="rejectResolutionNote"></textarea>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">${Cancel}</button>
                <button type="button" class="btn btn-primary" ng-disabled="resolutionAction == 'reject' && !rejectResolutionNote" ng-click="resolveCase()">${ {{resolutionAction == "accept" ? "Accept": "Reject"}} resolution}</button>
            </div>
        </div>
    </div>
</div>

 

Server script

Add below logic to the server script

data.showRequestReconsideration = false;
    if (grCase.state == '10') {        //Replace '10' with 'review in progress' state value
        data.showRequestReconsideration = true;
    }
    if (input && input.action == 'Request Reconsideration') {
        grCase.state = 7;             //replace 7 with 'Request Reconsideration' state value
        grCase.update();
    }
 
Add below code to the client script
   $scope.showRequestReconsideration = function() {
            $scope.data.action = "Request Reconsideration";
            $scope.server.update();
        },
 
5. Update the new/cloned action widget on HR case standard ticket configuration