PageSourceSearch

https://www.discountschoolsupply.com/_ui/addons/customerticketinga…/common/js/customerticketingaddon.js?v=S530

js discountschoolsupply.com collected 2026-09-25 18:19:03 UTC 9,666 bytes, 271 lines download raw bytes

1/*
2 * Copyright (c) 2025 SAP SE or an SAP affiliate company. All rights reserved.
3 */
4ACC.customerticketingaddon = {
5
6	_autoload: [
7		"toggleSubmitButton",
8		"onStatusChange",
9		"bindMessageArea",
10		"toggleAllMessages",
11		"postNewMessage",
12		"onFileChosen",
13		"bindTicketAddActions",
14		"bindTicketUpdateActions"
15	],
16
17
18	disableMessage: function(_this){
19		var currentTicketStatus = $('input[id="currentTicketStatus"]').val();
20		var selectedStatus = $(_this).val();
21
22		if((currentTicketStatus === 'COMPLETED' && selectedStatus === 'COMPLETED') || (currentTicketStatus === 'CLOSED' && selectedStatus === 'CLOSED')) {
23			$('textarea[id="message"]').attr('disabled','disabled');
24			$('button[id="updateTicket"]').attr('disabled','disabled');
25		} else {
26			$('textarea[id="message"]').removeAttr('disabled');
27		}
28	},
29
30	onStatusChange: function () {
31        $(document).on('change', '.js-add-message-status', function () {
32            ACC.customerticketingaddon.disableMessage(this);
33		});
34	},
35
36    onFileChosen: function () {
37        $(document).on('change', '#supportTicketForm input[name=files]', function () {
38            ACC.customerticketingaddon.clearAlerts();
39            var selectedFile = document.getElementById('attachmentFiles');
40            if (!ACC.customerticketingaddon.isSelectedFilesValid(selectedFile))
41            {
42                var message = "<span style='color:red'>" + $('#file-too-large-message').text() + "</span>";
43                $("#supportTicketForm").find(".js-file-upload__file-name").html(ACC.sanitizer.sanitize(message));
44            }
45            ACC.customerticketingaddon.toggleSubmitButton();
46        });
47    },
48
49    toggleSubmitButton: function() {
50        var selectedFile = document.getElementById('attachmentFiles');
51        if ($('#updateTicket').length === 0) {
52            return;
53        }
54        if (!ACC.customerticketingaddon.isSelectedFilesValid(selectedFile) || $('textarea[id="message"]').val().length === 0)
55        {
56            $('#updateTicket').attr('disabled','disabled')
57        }
58        else
59        {
60            $('#updateTicket').prop('disabled',false)
61        }
62    },
63
64    bindMessageArea: function () {
65        $(document).on('keyup', '.js-add-message', function () {
66            if($(this).val().length > 0) {
67                $('#NotEmpty-supportTicketForm-message').hide();
68            }
69            ACC.customerticketingaddon.toggleSubmitButton();
70        });
71    },
72
73	toggleAllMessages: function() {
74		$('#ct-toggle-all-messages').on('click touchstart', function() {
75			$('.cts-msg-history-item:not(.ct-msg-visible)').show();
76			$(this).hide();
77		});
78	},
79
80	postNewMessage: function () {
81		var title = $('#ct-overlay-title').html();
82		$('.ct-add-new-msg-btn').on('click touchstart', function(e) {
83			e.preventDefault();
84			$.colorbox({
85				href: "#ct-add-new-msg",
86				maxWidth:"100%",
87				width: 525,
88				opacity:0.7,
89				title: title,
90				inline: true,
91                close: '<span class="glyphicon glyphicon-remove"></span>',
92                onOpen: function () {
93                    $('#ct-add-new-msg').fadeIn();                   
94                },
95                onComplete: function () {                	
96                    ACC.customerticketingaddon.disableMessage($('.js-add-message-status'));
97                    
98                    if (!$("#message").val().trim()) {
99                    	  $('button[id="updateTicket"]').attr('disabled', 'disabled');
100                    }                                    
101                  
102                    ACC.csvimport.changeFileUploadAppearance();
103                },
104                onCleanup: function () {       	
105                  $('#ct-add-new-msg').hide();
106                }
107            });
108        });
109    },
110
111    isSelectedFilesValid: function (selectedFiles) {
112        if (window.File && window.Blob) {
113            var fileMaxSize = $('.js-file-upload__input').data('max-upload-size');
114            var totalSize = 0;
115
116            for (var i = 0; i < selectedFiles.files.length; ++i){
117                totalSize += selectedFiles.files[i].size;
118            }
119
120            if (!isNaN(fileMaxSize) && !isNaN(parseFloat(fileMaxSize)) && totalSize > parseFloat(fileMaxSize)) {
121                return false;
122            }
123        }
124
125        return true;
126    },
127
128    displayCustomerTicketingAlert: function (options) {
129        var alertTemplateSelector;
130
131        switch (options.type) {
132            case 'error':
133                alertTemplateSelector = '#global-alert-danger-template';
134                break;
135            case 'warning':
136                alertTemplateSelector = '#global-alert-warning-template';
137                break;
138            default:
139                alertTemplateSelector = '#global-alert-info-template';
140        }
141
142        if (typeof options.message !== 'undefined') {
143            $('#customer-ticketing-alerts').append($(alertTemplateSelector).tmpl({message: options.message}));
144        }
145
146        if (typeof options.messageId !== 'undefined') {
147            $('#customer-ticketing-alerts').append($(alertTemplateSelector).tmpl({message: $('#' + options.messageId).text()}));
148        }
149    },
150
151    displayGlobalAlert: function (options) {
152        var alertTemplateSelector;
153
154        switch (options.type) {
155            case 'error':
156                alertTemplateSelector = '#global-alert-danger-template';
157                break;
158            case 'warning':
159                alertTemplateSelector = '#global-alert-warning-template';
160                break;
161            default:
162                alertTemplateSelector = '#global-alert-info-template';
163        }
164
165        if (typeof options.message !== 'undefined') {
166            $('#global-alerts').append($(alertTemplateSelector).tmpl({message: options.message}));
167        }
168
169        if (typeof options.messageId !== 'undefined') {
170            $('#global-alerts').append($(alertTemplateSelector).tmpl({message: $('#' + options.messageId).text()}));
171        }
172    },
173
174    bindTicketAddActions: function () {
175        $(document).on('click', '#addTicket',
176            function (event) {
177                event.preventDefault();
178                $('#addTicket').prop('disabled',true);
179                ACC.customerticketingaddon.formPostAction("support-tickets?ticketAdded=true");
180            });
181    },
182
183    bindTicketUpdateActions: function () {
184        $(document).on('click', '#updateTicket',
185            function (event) {        	
186                event.preventDefault();
187                $('#updateTicket').prop('disabled',true);
188                ACC.customerticketingaddon.formPostAction('?ticketUpdated=true');
189            });
190    },
191
192    formPostAction: function (successRedirectUrl) {
193
194        ACC.customerticketingaddon.clearAlerts();
195
196        var form = document.getElementById("supportTicketForm");
197        var formData = new window.FormData(form);
198        var associatedTo = formData.get('associatedTo');
199
200        if (associatedTo !== null && !(associatedTo.includes('Cart') || associatedTo.includes('Order'))) {
201            formData.delete('associatedTo');
202        }
203
204        var selectedFile = document.getElementById('attachmentFiles');
205        if (!ACC.customerticketingaddon.isSelectedFilesValid(selectedFile)) {
206            ACC.customerticketingaddon.displayCustomerTicketingAlert({
207                type: 'error',
208                messageId: 'attachment-file-max-size-exceeded-error-message'
209            });
210            $(form).find(':submit').prop('disabled',false);
211            return;
212        }
213
214        $.ajax({
215            url: form.action,
216            type: 'POST',
217            data: formData,
218            contentType: false,
219            processData: false,
220            success: function () {
221                window.location.replace(successRedirectUrl);
222            },
223            error: function (jqXHR) {
224                $(form).find(':submit').prop('disabled',false);
225                ACC.customerticketingaddon.processErrorResponse(jqXHR);
226            }
227        });
228    },
229
230    processErrorResponse: function (jqXHR) {
231        ACC.customerticketingaddon.clearAlerts();
232        if (jqXHR.status === 400 && jqXHR.responseJSON) {
233
234            $.each(jqXHR.responseJSON, function() {
235                $.each(this, function(k, v) {
236                    var target = '#' + k;
237                    $(target).show();
238                    $(target).text(v);
239                    if (k === 'NotEmpty-supportTicketForm-subject'
240                        || k === 'Size-supportTicketForm-subject'
241                        || k === 'NotEmpty-supportTicketForm-message'
242                        || k === 'Size-supportTicketForm-message') {
243                        ACC.customerticketingaddon.addHasErrorClass();
244                    }
245                    else {
246                        ACC.customerticketingaddon.displayGlobalAlert({type: 'error', message: v});
247                    }
248                });
249            });
250
251            return;
252        }
253
254        ACC.customerticketingaddon.displayCustomerTicketingAlert({type: 'error', messageId: 'supporttickets-tryLater'});
255    },
256
257    addHasErrorClass: function () {
258        $('#createTicket-message').parent().addClass('has-error');
259    },
260
261    clearAlerts: function () {
262        $('#customer-ticketing-alerts').empty();
263        $('#global-alerts').empty();
264        $('#NotEmpty-supportTicketForm-subject').hide();
265        $('#Size-supportTicketForm-message').hide();
266        $('#Size-supportTicketForm-subject').hide();
267        $('#createTicket-subject').parent().removeClass('has-error');
268        $('#NotEmpty-supportTicketForm-message').hide();
269        $('#createTicket-message').parent().removeClass('has-error');
270    }
271};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.