187 lines
5.4 KiB
JavaScript
187 lines
5.4 KiB
JavaScript
|
|
// ====================
|
|
// Start Support Ticket
|
|
// ====================
|
|
|
|
$(document).ready(function () {
|
|
|
|
var $application = $("#APPLICATION_MNEMONIC").val(),
|
|
$sessionStorage = JSON.parse(sessionStorage.getItem($application) || "{}"),
|
|
$CKEditor;
|
|
|
|
// ----------------------
|
|
// Initialize the Editor.
|
|
// ----------------------
|
|
|
|
ClassicEditor
|
|
.create(document.querySelector('#supportticket_message'), {
|
|
toolbar: {
|
|
items: [
|
|
'heading',
|
|
'|',
|
|
'bold',
|
|
'italic',
|
|
'underline',
|
|
'link',
|
|
'bulletedList',
|
|
'numberedList',
|
|
'|',
|
|
'fontColor',
|
|
'fontSize',
|
|
'fontFamily',
|
|
'|',
|
|
'indent',
|
|
'outdent',
|
|
'alignment',
|
|
'|',
|
|
'horizontalLine',
|
|
'insertTable',
|
|
'|',
|
|
'undo',
|
|
'redo',
|
|
'|'
|
|
]},
|
|
link: {
|
|
addTargetToExternalLinks: true,
|
|
defaultProtocol: "http://"
|
|
|
|
}
|
|
})
|
|
.then(editor => {
|
|
$CKEditor = editor;
|
|
})
|
|
.catch(error => {
|
|
console.error('CK-Editor error...');
|
|
console.error(error);
|
|
});
|
|
|
|
// -----------
|
|
// Save Button
|
|
// -----------
|
|
|
|
$(".btnSubmit").on("click", function (e) {
|
|
|
|
e.preventDefault();
|
|
|
|
$("#startSupportTicket").submit();
|
|
|
|
});
|
|
|
|
// --------------
|
|
// Cancel Button.
|
|
// --------------
|
|
|
|
$(".btnCancel").on("click", function () {
|
|
|
|
$sessionStorage.action = $sessionStorage.startSupportTicket || "";
|
|
|
|
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
|
|
|
formSubmit($sessionStorage);
|
|
|
|
});
|
|
|
|
// ---------------------
|
|
// Show "Other Category"
|
|
// ---------------------
|
|
|
|
$('#supportticket_category').on('change', function () {
|
|
|
|
const isOther =
|
|
$(this).find('option:selected').data('tokens') === 'Other';
|
|
|
|
$('.other_catagory').toggleClass('d-none', !isOther);
|
|
|
|
if (!isOther) {
|
|
$('#supportticket_category_other').val('');
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// ---------------
|
|
// Validate Inputs
|
|
// ---------------
|
|
|
|
$("#startSupportTicket").submit(function (e) {
|
|
|
|
var supportticket_subject = $("#supportticket_subject"),
|
|
supportticket_category = $("#supportticket_category"),
|
|
supportticket_category_other = $("#supportticket_category_other"),
|
|
supportticket_message = $("#supportticket_message");
|
|
|
|
clearInputErrors();
|
|
|
|
supportticket_subject.val(supportticket_subject.val().replace(/\s+/g, " ").trim());
|
|
supportticket_category.val(supportticket_category.val().replace(/\s+/g, " ").trim());
|
|
|
|
if (isBlank(supportticket_subject)) {
|
|
createInputError(supportticket_subject, "Subject is required");
|
|
return false;
|
|
}
|
|
|
|
if ($("option:selected", supportticket_category).val() === "") {
|
|
createInputError(supportticket_category, "Catagory is required");
|
|
return false;
|
|
}
|
|
|
|
if ($("option:selected", supportticket_category).data('tokens') === "Other" && isBlank(supportticket_category_other)) {
|
|
createInputError(supportticket_category_other, "Other Catagory is required");
|
|
return false;
|
|
}
|
|
|
|
// Make sure editor is ready
|
|
const html = ($CKEditor) ? $CKEditor.getData() : "";
|
|
|
|
// Convert HTML -> plain text and trim (handles <p> </p> etc.)
|
|
const text = html
|
|
.replace(/<[^>]*>/g, " ")
|
|
.replace(/ /g, " ")
|
|
.replace(/\s+/g, " ")
|
|
.trim();
|
|
|
|
if (!text) {
|
|
// highlight editor UI (not just hidden textarea)
|
|
const editableEl = $CKEditor?.ui?.view?.editable?.element;
|
|
if (editableEl)
|
|
$(editableEl).addClass("is-invalid");
|
|
|
|
createInputError(supportticket_message, "Message is required");
|
|
return false;
|
|
}
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
$CKEditor.updateSourceElement();
|
|
|
|
// show spinner + prevent double submit
|
|
$("#ticketSending").removeClass("d-none");
|
|
$(".btnSubmit, .btnCancel").prop("disabled", true);
|
|
|
|
|
|
$.post("./", $(this).serialize())
|
|
.done(function () {
|
|
|
|
$sessionStorage.action = $sessionStorage.startSupportTicket || "";
|
|
sessionStorage.setItem($application, JSON.stringify($sessionStorage));
|
|
formSubmit($sessionStorage);
|
|
|
|
})
|
|
.fail(function () {
|
|
|
|
// show a friendly message (optional)
|
|
alert("Something went wrong sending the ticket. Please try again.");
|
|
|
|
})
|
|
.always(function () {
|
|
|
|
// hide spinner + re-enable buttons
|
|
$("#ticketSending").addClass("d-none");
|
|
$(".btnSubmit, .btnCancel").prop("disabled", false);
|
|
|
|
});
|
|
});
|
|
|
|
}); |