jQuery(document).ready(function () { wpsc_reset_responsive_style(); jQuery(window).resize(function () { wpsc_reset_responsive_style(true); }); wpsc_document_ready(); // for check there is value in reply box. jQuery(window).on("popstate", function () { if (wpsc_is_description_text()) { if (!confirm(supportcandy.translations.warning_message)) { return; } } }); // Change the element from h1 to h2 if (jQuery('#link-modal-title').length > 0) { jQuery('#link-modal-title').replaceWith(''); } }); /** * Apply responsive styles based on container size */ function wpsc_reset_responsive_style(isWindowResize = false) { var lastContainerWidth = supportcandy.lastContainerWidth ? supportcandy.lastContainerWidth : 0; var containerWidth = jQuery("#wpsc-container").outerWidth(); if (isWindowResize && lastContainerWidth === containerWidth) { return; } supportcandy.lastContainerWidth = containerWidth; jQuery("#wpsc-container").hide(); var style = "xs"; if (containerWidth <= 768) { style = "xs"; } else if (containerWidth > 768 && containerWidth <= 992) { style = "sm"; } else if (containerWidth > 992 && containerWidth <= 1200) { style = "md"; } else { style = "lg"; } supportcandy.responsiveStyle = style; var styleURL = supportcandy.plugin_url + "framework/responsive/" + style + ".css?version=" + supportcandy.version; var styleEl = ''; jQuery("#wpsc-responsive-css").remove(); jQuery("head").append(styleEl); wpsc_apply_responsive_styles(); jQuery("#wpsc-container").show(); } /** * Apply visible elements on screen resize */ function wpsc_el_reset_visible() { jQuery( ".wpsc-visible-xs,.wpsc-visible-sm,.wpsc-visible-md,.wpsc-visible-lg" ).hide(); jQuery(".wpsc-visible-" + supportcandy.responsiveStyle).show(); } /** * Apply hidden elements on screen resize */ function wpsc_el_reset_hidden() { jQuery( ".wpsc-hidden-xs,.wpsc-hidden-sm,.wpsc-hidden-md,.wpsc-hidden-lg" ).show(); jQuery(".wpsc-hidden-" + supportcandy.responsiveStyle).hide(); } /** * Toggle humbargar menu */ function wpsc_toggle_humbargar() { var flag = supportcandy.humbargar ? true : false; if (flag) { jQuery(".wpsc-humbargar-menu").hide( "slide", { direction: "right" }, 200, function () { jQuery(".wpsc-humbargar-overlay").hide(); } ); supportcandy.humbargar = false; } else { jQuery(".wpsc-humbargar-overlay").show(); jQuery(".wpsc-humbargar-menu").show("slide", { direction: "right" }, 200); supportcandy.humbargar = true; } } /** * Close humbargar menu if open */ function wpsc_close_humbargar() { var flag = supportcandy.humbargar ? true : false; if (flag) { jQuery(".wpsc-humbargar-menu").hide(); jQuery(".wpsc-humbargar-overlay").hide(); supportcandy.humbargar = false; } } /** * Bulk selector change */ function wpsc_bulk_select_change() { var checked = jQuery(".wpsc-bulk-selector").is(":checked"); jQuery(".wpsc-bulk-select").prop("checked", checked); } /** * Bulk item selector change */ function wpsc_bulk_item_select_change() { var items = jQuery(".wpsc-bulk-select:checked"); var checked = items.length === 0 ? false : true; jQuery(".wpsc-bulk-selector").prop("checked", checked); } /** * Show modal with loading screen */ function wpsc_show_modal() { jQuery(".wpsc-modal .inner-container").hide(); jQuery(".wpsc-modal .loader").show(); jQuery(".wpsc-modal").show(); } /** * Close modal */ function wpsc_show_modal_inner_container() { jQuery(".wpsc-modal .loader").hide(); jQuery(".wpsc-modal .inner-container").show( "slide", { direction: "up" }, 200 ); } /** * Close modal */ function wpsc_close_modal() { jQuery(".wpsc-modal .inner-container").hide( "slide", { direction: "up" }, 200, function () { jQuery(".wpsc-modal").hide(); } ); } /** * OFF toggle button click */ function wpsc_toggle_off(el) { var off = jQuery(el); var on = jQuery(el).next(); var input = on.next(); if (input.val() === 0) { return; } input.val(0); on.removeClass("active"); off.addClass("active"); } /** * ON toggle button click */ function wpsc_toggle_on(el) { var on = jQuery(el); var off = jQuery(el).prev(); var input = on.next(); if (input.val() === 1) { return; } input.val(1); off.removeClass("active"); on.addClass("active"); } /** * Scroll to top of WPSC component */ function wpsc_scroll_top() { jQuery("html, body").animate( { scrollTop: jQuery("#wpsc-container").offset().top - 42, }, 500 ); } /** * Toggle individual widgets */ function wpsc_toggle_mob_it_widgets() { var status = parseInt( jQuery(".wpsc-it-mob-widgets-inner-container").data("status") ); if (!status) { jQuery(".wpsc-it-mob-widgets-inner-container").slideDown(); jQuery(".wpsc-it-mob-widget-trigger-btn .down").hide(); jQuery(".wpsc-it-mob-widget-trigger-btn .up").show(); jQuery(".wpsc-it-mob-widgets-inner-container").data("status", 1); } else { jQuery(".wpsc-it-mob-widgets-inner-container").slideUp(); jQuery(".wpsc-it-mob-widget-trigger-btn .up").hide(); jQuery(".wpsc-it-mob-widget-trigger-btn .down").show(); jQuery(".wpsc-it-mob-widgets-inner-container").data("status", 0); } } /** * Get refresh current ticket */ function wpsc_it_ab_refresh(ticket_id) { if (wpsc_is_description_text()) { if (confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } wpsc_get_individual_ticket(ticket_id); } /** * Get close current ticket modal UI */ function wpsc_it_close_ticket(ticket_id, nonce) { if (wpsc_is_description_text()) { if (!confirm(supportcandy.translations.warning_message)) return; } var flag = confirm(supportcandy.translations.confirm); if (flag) { if (wpsc_is_description_text()) { wpsc_clear_saved_draft_reply(ticket_id); } } else { return; } var data = { action: "wpsc_it_close_ticket", ticket_id, _ajax_nonce: nonce }; jQuery.post(supportcandy.ajax_url, data, function (response) { wpsc_run_ajax_background_process(); wpsc_after_close_ticket(ticket_id); }); } /** * Get duplicate ticket */ function wpsc_it_get_duplicate_ticket(ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_get_duplicate_ticket", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Set duplicate ticket */ function wpsc_it_set_duplicate_ticket(el, ticket_id) { if (wpsc_is_description_text()) { if (confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } var form = jQuery("form.duplicate")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (response) { wpsc_close_modal(); wpsc_get_individual_ticket(response.ticket_id); }); } /** * Get delete ticket */ function wpsc_it_delete_ticket(ticket_id, nonce) { if (wpsc_is_description_text()) { if (!confirm(supportcandy.translations.warning_message)) { return; } else { var is_tinymce = typeof tinyMCE != "undefined" && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); if (is_tinymce && tinymce.get("description")) { var description = tinyMCE.get("description").setContent(""); } else { var description = jQuery("#description").val(""); } wpsc_clear_saved_draft_reply(ticket_id); } } var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } var data = { action: "wpsc_it_delete_ticket", ticket_id, _ajax_nonce: nonce }; jQuery.post(supportcandy.ajax_url, data, function (response) { wpsc_get_ticket_list(); wpsc_run_ajax_background_process(); }); } /** * Restore ticket */ function wpsc_it_ticket_restore(ticket_id, nonce) { var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } var data = { action: "wpsc_it_ticket_restore", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { wpsc_get_individual_ticket(ticket_id); }); } /** * Delete permanently */ function wpsc_it_delete_permanently(ticket_id, nonce) { var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } var data = { action: "wpsc_it_delete_permanently", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { wpsc_get_ticket_list(); }); } /** * Get edit ticket subject modal UI */ function wpsc_it_get_edit_subject(ticket_id) { wpsc_show_modal(); var data = { action: "wpsc_it_get_edit_subject", ticket_id, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Set edit ticket subject */ function wpsc_it_set_edit_subject(el, ticket_id) { if (wpsc_is_description_text()) { if (!confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } var form = jQuery("form.edit-subject")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_individual_ticket(ticket_id); }); } /** * Get change status modal UI */ function wpsc_it_get_edit_ticket_status(ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_get_edit_ticket_status", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Update ticket status * * @param {*} el */ function wpsc_it_set_edit_ticket_status(el, ticket_id) { if (wpsc_is_description_text()) { if (confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } var form = jQuery("form.frm-edit-ticket-status")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_individual_ticket(ticket_id); wpsc_run_ajax_background_process(); }); } /** * Get additional recipients modal UI */ function wpsc_it_get_add_ar(ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_get_add_ar", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Update additional recipients * * @param {*} el */ function wpsc_it_set_add_ar(el, ticket_id) { if (wpsc_is_description_text()) { if (confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } var form = jQuery("form.additional-recipients")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_individual_ticket(ticket_id); }); } /** * Get assigned agents modal UI */ function wpsc_it_get_edit_assigned_agents(ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_get_edit_assigned_agents", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Update assigned agents * * @param {*} el */ function wpsc_it_set_edit_assigned_agents(el, ticket_id, uniqueId) { if (wpsc_is_description_text()) { if (confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } var form = jQuery("form.change-assignee." + uniqueId)[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); if (res.viewPermission) { wpsc_get_individual_ticket(ticket_id); } else { wpsc_get_ticket_list(); } wpsc_run_ajax_background_process(); }); } /** * Get raised by modal UI */ function wpsc_it_get_edit_raised_by(ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_get_edit_raised_by", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Update raised by * * @param {*} el */ function wpsc_it_set_edit_raised_by(el, ticket_id, uniqueId) { if (wpsc_is_description_text()) { if (confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } var type = jQuery(".type." + uniqueId).val(); if (type == "new") { var name = jQuery(".name." + uniqueId) .val() .trim(); var email = jQuery(".email." + uniqueId) .val() .trim(); if (!name || !email) { return; } if (!validateEmail(email)) { alert(supportcandy.translations.raisedByEditWidget.invalidEmail); return; } } var form = jQuery("form.change-raised-by." + uniqueId)[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_individual_ticket(ticket_id); }); } /** * Get ticket fields modal UI */ function wpsc_it_get_edit_ticket_fields(ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_get_edit_ticket_fields", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Update ticket fields * * @param {*} el */ function wpsc_it_set_edit_ticket_fields(el, ticket_id) { if (wpsc_is_description_text()) { if (confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } var form = jQuery("form.change-ticket-fields")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_individual_ticket(ticket_id); }); } /** * Get agent only filds modal UI */ function wpsc_it_get_edit_agentonly_fields(ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_get_edit_agentonly_fields", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Update agent only fields * * @param {*} el */ function wpsc_it_set_edit_agentonly_fields(el, ticket_id) { if (wpsc_is_description_text()) { if (confirm(supportcandy.translations.warning_message)) { wpsc_clear_saved_draft_reply(ticket_id); } else { return; } } var form = jQuery("form.change-agentonly-fields")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_individual_ticket(ticket_id); }); } /** * Get edit thread */ function wpsc_it_get_edit_thread(el, ticket_id, thread_id, nonce) { var thread = jQuery(el).closest(".wpsc-thread"); thread.html(supportcandy.loader_html); var data = { action: "wpsc_it_get_edit_thread", ticket_id, thread_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (res) { thread.html(res); }); } /** * Set edit thread */ function wpsc_it_set_edit_thread(el, uniqueId) { var form = jQuery("form.edit-thread")[0]; var dataform = new FormData(form); var is_tinymce = typeof tinyMCE != "undefined" && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); var description = is_tinymce && tinymce.get(uniqueId) ? tinyMCE.get(uniqueId).getContent() : jQuery("#" + uniqueId) .val() .trim(); if (!description) { return; } dataform.append("thread_content", description); var thread = jQuery(el).closest(".wpsc-thread"); thread.html(supportcandy.loader_html); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { if (thread.next().length > 0) { thread.next().before(res); } else { thread.parent().append(res); } thread.remove(); }); } /** * Delete thread */ function wpsc_it_thread_delete(el, ticket_id, thread_id, nonce) { var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } var thread = jQuery(el).closest(".wpsc-thread"); thread.html(supportcandy.loader_html); var data = { action: "wpsc_it_thread_delete", ticket_id, thread_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (res) { if (res.trim()) { if (thread.next().length > 0) { thread.next().before(res); } else { thread.parent().append(res); } } thread.remove(); }); } /** * Get thread html */ function wpsc_it_get_thread(el, ticket_id, thread_id, _ajax_nonce) { var thread = jQuery(el).closest(".wpsc-thread"); thread.html(supportcandy.loader_html); var data = { action: "wpsc_it_get_thread", ticket_id, thread_id, _ajax_nonce, }; jQuery.post(supportcandy.ajax_url, data, function (res) { if (thread.next().length > 0) { thread.next().before(res); } else { thread.parent().append(res); } thread.remove(); }); } /** * View thread log */ function wpsc_it_view_thread_log(ticket_id, thread_id, log_id, _ajax_nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_view_thread_log", ticket_id, thread_id, log_id, _ajax_nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * View thread */ function wpsc_it_view_deleted_thread(ticket_id, thread_id, _ajax_nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_view_deleted_thread", ticket_id, thread_id, _ajax_nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Restore thread */ function wpsc_it_restore_thread(ticket_id, thread_id, _ajax_nonce) { var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } wpsc_close_modal(); var thread = jQuery(".wpsc-thread." + thread_id); thread.html(supportcandy.loader_html); var data = { action: "wpsc_it_restore_thread", ticket_id, thread_id, _ajax_nonce, }; jQuery.post(supportcandy.ajax_url, data, function (res) { if (thread.next().length > 0) { thread.next().before(res); } else { thread.parent().append(res); } thread.remove(); }); } /** * Restore thread */ function wpsc_it_thread_delete_permanently(ticket_id, thread_id, _ajax_nonce) { var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } wpsc_close_modal(); var thread = jQuery(".wpsc-thread." + thread_id); thread.html(supportcandy.loader_html); var data = { action: "wpsc_it_thread_delete_permanently", ticket_id, thread_id, _ajax_nonce, }; jQuery.post(supportcandy.ajax_url, data, function (res) { thread.remove(); }); } /** * Get macros modal UI */ function wpsc_get_macros() { wpsc_show_modal(); var data = { action: "wpsc_get_macros", }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); jQuery("input[type=text]").focus(); }); } /** * Add and condition item * @param {*} el * @param {*} uniqueId */ function wpsc_add_and_condition(el, uniqueId) { var container = jQuery(el) .closest(".wpsc-form-filter-container") .find(".and-container"); container.append(jQuery(".and-template." + uniqueId).html()); container = container.find(".and-item:last-child .or-container"); container.append(jQuery(".or-template." + uniqueId).html()); container.find("select").selectWoo(); } /** * Add and condition item * @param {*} el * @param {*} uniqueId */ function wpsc_add_or_condition(el, uniqueId) { var container = jQuery(el).closest(".and-item").find(".or-container"); container.append(jQuery(".or-template." + uniqueId).html()); container.find(":last-child").find("select").selectWoo(); } /** * Remove condition item * @param {*} el */ function wpsc_remove_condition_item(el) { var andItem = jQuery(el).closest(".and-item"); jQuery(el).closest(".wpsc-form-filter-item").remove(); if (andItem.find(".or-container").children().length === 0) { jQuery(andItem).remove(); } } /** * Get JSON string for the condition input of given name * @param {*} name */ function wpsc_get_condition_json(name) { var conditions = []; jQuery(".wpsc-form-filter-container." + name + " .and-item").each( function () { var andCondition = []; jQuery(this) .find(".wpsc-form-filter-item") .each(function () { var slug = jQuery(this).find("select.filter").first().val(); if (!slug) { return; } var operator = jQuery(this).find("select.operator").first().val(); if (!operator) { return; } var operand_val_1 = jQuery(this).find(".operand_val_1").first().val(); if (!operand_val_1) { return; } var filter = { slug, operator, operand_val_1 }; if (operator === "BETWEEN") { var operand_val_2 = jQuery(this) .find(".operand_val_2") .first() .val(); if (!operand_val_2) { return; } filter.operand_val_2 = operand_val_2; } andCondition.push(filter); }); conditions.push(andCondition); } ); return conditions; } /** * Get form filter oprators */ function wpsc_get_ticket_filter_operators(el, nonce) { var content = jQuery(el).closest(".content"); var slug = jQuery(el).val().trim(); content.find(".conditional, .wpsc-inline-loader").remove(); if (!slug) { return; } content.append(supportcandy.inline_loader); var data = { action: "wpsc_get_ticket_filter_operators", slug: slug, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { content.find(".wpsc-inline-loader").remove(); content.append(response); }); } /** * Get ticket filter value input(s) */ function wpsc_get_ticket_filter_operands(el, id, nonce) { var content = jQuery(el).closest(".content"); var operator = jQuery(el).val().trim(); content.find(".conditional.operand, .wpsc-inline-loader").remove(); if (!operator) { return; } content.append(supportcandy.inline_loader); var data = { action: "wpsc_get_ticket_filter_operands", operator, id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { content.find(".wpsc-inline-loader").remove(); content.append(response); }); } /** * Single file attachment upload handler */ function wpsc_set_attach_single(el, uniqueId, slug) { var fileAttachment = el.files[0]; wpsc_file_upload(fileAttachment, uniqueId, slug, true); jQuery(el).val(""); } /** * Myltiple file attachment upload handler */ function wpsc_set_attach_multiple(el, uniqueId, slug) { jQuery.each(el.files, function (index, fileAttachment) { wpsc_file_upload(fileAttachment, uniqueId, slug); }); jQuery(el).val(""); } /** * Trigger description attachments */ function wpsc_trigger_desc_attachments(uniqueId) { jQuery("input." + uniqueId).trigger("click"); } /** * Remove an attachment */ function wpsc_remove_attachment(el) { var single = jQuery(el).data("single"); var uniqueId = jQuery(el).data("uniqueid"); jQuery(el).closest(".wpsc-editor-attachment").remove(); if (single) { jQuery("input." + uniqueId).show(); } } /** * Attachment upload progess update */ function wpscAttachmentUploadProgress(e) { if (e.lengthComputable) { var max = e.total; var current = e.loaded; var progrss = current / max; e.currentTarget.attachment .find(".attachment-waiting") .circleProgress("value", progrss); } } /** * Change raised by or create ticket as */ function wpsc_get_change_create_as(nonce) { wpsc_show_modal(); var data = { action: "wpsc_get_change_create_as", _ajax_nonce: nonce }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Change create as */ function wpsc_set_change_create_as(uniqueId, _ajax_nonce) { var name = jQuery("input.name." + uniqueId) .val() .trim(); var email = jQuery("input.email." + uniqueId) .val() .trim(); if (!name || !email) { alert(supportcandy.translations.req_fields_missing); return; } if (!validateEmail(email)) { alert(supportcandy.translations.invalidEmail); return; } var data = { action: "wpsc_add_new_create_as", name, email, _ajax_nonce }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery("input.name").val(response.name); jQuery("input.email").val(response.email); // add option and select. if (jQuery("select.create-as").val() != response.id) { var newOption = new Option(response.label, response.id, false, false); jQuery("select.create-as").append(newOption); jQuery("select.create-as").val(response.id).trigger("change"); } wpsc_close_modal(); wpsc_after_change_create_as(); }); } /** * Check visibility conditions */ function wpsc_check_tff_visibility() { var conditionalFields = jQuery(".wpsc-tff.conditional"); if (conditionalFields.length === 0) { return; } jQuery('#wpsc-ct-submit').attr( 'disabled', true ); jQuery('.wpsc-ct-loader').html( supportcandy.inline_loader ); jQuery("select.create-as").attr( "disabled", true ); var form = jQuery("form.wpsc-create-ticket")[0]; var dataform = new FormData(form); var is_tinymce = typeof tinyMCE != "undefined" && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); if (is_tinymce && tinymce.get("description")) { var description = tinyMCE.get("description").getContent(); } else { var description = jQuery("#description").val(); } dataform.append("description", description); dataform.append("action", "wpsc_check_tff_visibility"); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (results) { jQuery.each(results, function (key, val) { if (parseInt(val) === 0) { jQuery(".wpsc-tff." + key).addClass("wpsc-hidden"); jQuery(".wpsc-tff." + key).removeClass("wpsc-visible"); } else { jQuery(".wpsc-tff." + key).removeClass("wpsc-hidden"); jQuery(".wpsc-tff." + key).addClass("wpsc-visible"); } }); jQuery('#wpsc-ct-submit').removeAttr("disabled"); jQuery('.wpsc-ct-loader').html(''); jQuery("select.create-as").removeAttr( "disabled" ); }).fail(function(xhr, status, error) { console.error('AJAX request failed:', status, error); jQuery('#wpsc-ct-submit').removeAttr("disabled"); jQuery('.wpsc-ct-loader').html(''); jQuery("select.create-as").removeAttr( "disabled" ); }); } /** * Validate input for email address */ function validateEmail(email) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); } /** * Validate input for URL */ function validateURL(url) { var re = /^(?:(?:https?|ftp):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/; return re.test(url); } /** * Validate input for number */ function validateNumber(number) { var re = /^[0-9]+$/; return re.test(number); } /** * Change event for filter */ function wpsc_tl_filter_change(el) { supportcandy.prevFilter = supportcandy.ticketList.filters.filterSlug; var filterSlug = jQuery(el).val().trim(); if (filterSlug != "custom") { var filters = { filterSlug }; supportcandy.ticketList.filters = filters; wpsc_get_tickets(); } else { wpsc_tl_get_custom_filter(); } } /** * Change ticket list page */ function wpsc_tl_set_page(page) { switch (page) { case "first": if (supportcandy.ticketList.pagination.current_page == 1) { return; } supportcandy.ticketList.filters.page_no = 1; break; case "prev": if (supportcandy.ticketList.pagination.current_page < 2) { return; } supportcandy.ticketList.filters.page_no = supportcandy.ticketList.pagination.current_page - 1; break; case "next": if (!supportcandy.ticketList.pagination.has_next_page) { return; } supportcandy.ticketList.filters.page_no = supportcandy.ticketList.pagination.current_page + 1; break; case "last": if ( supportcandy.ticketList.pagination.current_page == supportcandy.ticketList.pagination.total_pages ) { return; } supportcandy.ticketList.filters.page_no = supportcandy.ticketList.pagination.total_pages; break; } wpsc_get_tickets(); } /** * Reset ticket list filters */ function wpsc_tl_reset_filter() { var filters = { filterSlug: "" }; supportcandy.ticketList.filters = filters; wpsc_get_tickets(); } /** * Search input keyup */ function wpsc_tl_search_keyup(e, el) { if (e.keyCode !== 13) { return; } var search = jQuery(el).val().trim(); supportcandy.ticketList.filters.search = search; supportcandy.ticketList.filters.page_no = 1; wpsc_get_tickets(); } /** * Apply filters */ function wpsc_tl_apply_filter_btn_click() { supportcandy.ticketList.filters.search = jQuery("input.wpsc-search-input") .val() .trim(); supportcandy.ticketList.filters.orderby = jQuery( "select.wpsc-input-sort-by" ).val(); supportcandy.ticketList.filters.order = jQuery( "select.wpsc-input-sort-order" ).val(); supportcandy.ticketList.filters.page_no = 1; wpsc_get_tickets(); } /** * Get custom filter UI */ function wpsc_tl_get_custom_filter() { wpsc_show_modal(); var data = { action: "wpsc_get_tl_custom_filter", _ajax_nonce: supportcandy.nonce, }; if (supportcandy.ticketList.filters.filterSlug == "custom") { data.filters = supportcandy.ticketList.filters; } jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Apply custom filter */ function wpsc_tl_apply_custom_filter(el) { var filters = wpsc_get_condition_json("custom_filters"); if ( filters.length === 0 || (filters.length === 1 && filters[0].length === 0) ) { alert(supportcandy.translations.req_fields_missing); return; } filters = { filterSlug: "custom", "parent-filter": jQuery( ".wpsc-tl-custom-filter select[name=parent-filter]" ).val(), filters: JSON.stringify(filters), orderby: jQuery(".wpsc-tl-custom-filter select[name=sort-by]").val(), order: jQuery(".wpsc-tl-custom-filter select[name=sort-order]").val(), page_no: 1, }; supportcandy.ticketList.filters = filters; wpsc_close_modal(); wpsc_get_tickets(); } /** * Edit ticket list filter */ function wpsc_tl_edit_filter() { if (supportcandy.ticketList.filters.filterSlug == "custom") { wpsc_tl_get_custom_filter(); } else { wpsc_tl_get_edit_saved_filter(); } } /** * Add saved filter */ function wpsc_tl_add_saved_filter() { var filters = wpsc_get_condition_json("custom_filters"); if ( filters.length === 0 || (filters.length === 1 && filters[0].length === 0) ) { alert(supportcandy.translations.req_fields_missing); return; } filters = { "parent-filter": jQuery( ".wpsc-tl-custom-filter select[name=parent-filter]" ).val(), filters: JSON.stringify(filters), orderby: jQuery(".wpsc-tl-custom-filter select[name=sort-by]").val(), order: jQuery(".wpsc-tl-custom-filter select[name=sort-order]").val(), }; supportcandy.tempFilters = filters; wpsc_close_modal(); setTimeout(function () { wpsc_tl_get_add_saved_filter(); }, 500); } /** * Get add saved filter ui */ function wpsc_tl_get_add_saved_filter() { wpsc_show_modal(); var data = { action: "wpsc_tl_get_add_saved_filter" }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Save and apply custom filter */ function wpsc_tl_set_add_saved_filter(el, nonce) { var label = jQuery("input.wpsc-cf-label").val().trim(); if (!label) { alert(supportcandy.translations.req_fields_missing); return; } jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); var data = { action: "wpsc_tl_set_add_saved_filter", filters: supportcandy.tempFilters, _ajax_nonce: nonce, }; data.filters.label = label; jQuery.post(supportcandy.ajax_url, data, function (response) { supportcandy.ticketList.filters = { filterSlug: response.slug }; wpsc_close_modal(); wpsc_get_ticket_list(); }); } /** * Get edit saved filter modal */ function wpsc_tl_get_edit_saved_filter() { wpsc_show_modal(); var data = { action: "wpsc_tl_get_edit_saved_filter", filterSlug: supportcandy.ticketList.filters.filterSlug, _ajax_nonce: supportcandy.nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Set edit saved filter */ function wpsc_tl_set_edit_saved_filter(el) { var label = jQuery("input.wpsc-cf-label").val().trim(); if (!label) { alert(supportcandy.translations.req_fields_missing); return; } var filters = wpsc_get_condition_json("custom_filters"); if ( filters.length === 0 || (filters.length === 1 && filters[0].length === 0) ) { alert(supportcandy.translations.req_fields_missing); return; } jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); var form = jQuery(".wpsc-tl-custom-filter")[0]; var dataform = new FormData(form); dataform.append("filters", JSON.stringify(filters)); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_ticket_list(); }); } /** * Delete saved filter */ function wpsc_tl_delete_saved_filter() { var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } var data = { action: "wpsc_tl_delete_saved_filter", slug: supportcandy.ticketList.filters.filterSlug, _ajax_nonce: supportcandy.nonce, }; jQuery.post(supportcandy.ajax_url, data, function (res) { supportcandy.ticketList.filters = { filterSlug: "" }; wpsc_get_ticket_list(); }); } /** * Close custom filter modal */ function wpsc_tl_close_custom_filter_modal() { jQuery("select.wpsc-input-filter").val(supportcandy.prevFilter); wpsc_close_modal(); } /** * Get form filter oprators */ function wpsc_tc_get_operators(el, nonce) { var content = jQuery(el).closest(".content"); var slug = jQuery(el).val().trim(); content.find(".conditional, .wpsc-inline-loader").remove(); if (!slug) { return; } content.append(supportcandy.inline_loader); var data = { action: "wpsc_tc_get_operators", slug: slug, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { content.find(".wpsc-inline-loader").remove(); content.append(response); }); } /** * Get email notification condition operands */ function wpsc_tc_get_operand(el, slug, nonce) { var content = jQuery(el).closest(".content"); var operator = jQuery(el).val().trim(); content.find(".conditional.operand, .wpsc-inline-loader").remove(); if (!operator) { return; } content.append(supportcandy.inline_loader); var data = { action: "wpsc_tc_get_operand", operator, slug, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { content.find(".wpsc-inline-loader").remove(); content.append(response); }); } /** * Add image to editor * * @param {*} editor */ function wpsc_add_custom_image_tinymce(editor, nonce) { wpsc_show_modal(); var data = { action: "wpsc_add_custom_image_tinymce", editor_id: editor.id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Check whether given url has image or not * * @param {*} url */ function isValidImageURL(url) { if (typeof url !== "string") { return false; } return !!url.match(/\w+\.(jpg|jpeg|gif|png|tiff|bmp)$/gi); } /** * Upload image to tinymce editor * * @param {*} el */ function wpsc_insert_editor_img(ed) { if ( jQuery("#wpsc-tinymce-image-url").val().trim() === "" && validateURL(jQuery("#wpsc-tinymce-image-url").val().trim()) && isValidImageURL(jQuery("#wpsc-tinymce-image-url").val().trim()) ) { alert(supportcandy.translations.req_fields_error); return; } if (jQuery("#wpsc-tinymce-image-width").val().trim() === "") { alert(supportcandy.translations.req_fields_error); return; } if (jQuery("#wpsc-tinymce-image-height").val().trim() === "") { alert(supportcandy.translations.req_fields_error); return; } var is_tinymce = typeof tinyMCE != "undefined" && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); if (!is_tinymce) { return; } wpsc_close_modal(); var source = jQuery("#wpsc-tinymce-image-url").val().trim(); var height = jQuery("#wpsc-tinymce-image-height").val().trim(); var width = jQuery("#wpsc-tinymce-image-width").val().trim(); tinymce .get(ed) .execCommand( "mceInsertContent", false, '' ); } /** * Add image to editor * * @param {*} editor */ function wpsc_edit_custom_image_tinymce(editor, image_obj, nonce) { if (!(editor && image_obj)) { alert(supportcandy.translations.req_fields_error); return; } wpsc_show_modal(); var data = { action: "wpsc_edit_custom_image_tinymce", editor_id: editor.id, height: image_obj.height, width: image_obj.width, src: image_obj.src, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Get create ticket from thread */ function wpsc_it_thread_new_ticket(el, ticket_id, thread_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_thread_new_ticket", ticket_id, thread_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Get thread info * * @param {*} thread_id */ function wpsc_it_thread_info(el, ticket_id, thread_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_it_thread_info", thread_id, ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Set thread new ticket */ function wpsc_it_set_thread_new_ticket(el, thread_id, nonce) { var form = jQuery("form.new_ticket_from_thread")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (response) { wpsc_close_modal(); wpsc_get_individual_ticket(response.ticket_id); }); } /** * Get customer other tickets */ function wpsc_get_rb_other_tickets(el, ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_get_rb_other_tickets", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Get raised by info */ function wpsc_get_rb_info(el, ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_get_rb_info", ticket_id, _ajax_nonce: nonce }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Thread expander */ function wpsc_ticket_thread_expander_toggle(el) { var height = parseInt(jQuery(el).parent().find(".thread-text").height()); if (height === 100) { jQuery(el).parent().find(".thread-text").height("auto"); jQuery(el).text(supportcandy.translations.view_less); } else { jQuery(el).parent().find(".thread-text").height(100); jQuery(el).text(supportcandy.translations.view_more); } } /** * Get change bulk status */ function wpsc_bulk_change_status(nonce) { var items = jQuery(".wpsc-bulk-select:checked"); var checked = items.length === 0 ? false : true; jQuery(".wpsc-bulk-selector").prop("checked", checked); if (items.length != 0) { var ticket_ids = jQuery(".wpsc-bulk-select:checked") .map(function () { return this.value; }) .get(); wpsc_show_modal(); var data = { action: "wpsc_bulk_change_status", ticket_ids, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } } /** * Load older threads */ function wpsc_load_older_threads(el, ticket_id) { if (supportcandy.reply_form_position === "top") { jQuery(".wpsc-it-thread-section-container").append( supportcandy.loader_html ); } else { jQuery(".wpsc-it-thread-section-container").prepend( supportcandy.loader_html ); } var oldBtnContainer = jQuery(el).parent(); oldBtnContainer.hide(); var data = { action: "wpsc_load_older_threads", ticket_id, last_thread: supportcandy.threads.last_thread, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-it-thread-section-container").find(".wpsc-loader").remove(); // add threads. if (supportcandy.reply_form_position === "top") { jQuery(".wpsc-it-thread-section-container").append(response.threads); } else { var scrollHeightBody = jQuery("body").prop("scrollHeight"); var windowScrollTop = jQuery(window).scrollTop(); jQuery(".wpsc-it-thread-section-container").prepend(response.threads); var scrollDiff = jQuery("body").prop("scrollHeight") - scrollHeightBody; jQuery(window).scrollTop(windowScrollTop + scrollDiff); } // show btn if there are more threads available. if (response.has_next_page) { supportcandy.threads.last_thread = response.last_thread; oldBtnContainer.show(); } }); } /** * Set change bulk status */ function wpsc_set_bulk_change_status(el) { var form = jQuery("form.frm-edit-bulk-status")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_ticket_list(); wpsc_run_ajax_background_process(); }); } /** * Get bulk assign agent */ function wpsc_bulk_assign_agents(nonce) { var items = jQuery(".wpsc-bulk-select:checked"); var checked = items.length === 0 ? false : true; jQuery(".wpsc-bulk-selector").prop("checked", checked); if (items.length != 0) { var ticket_ids = jQuery(".wpsc-bulk-select:checked") .map(function () { return this.value; }) .get(); wpsc_show_modal(); var data = { action: "wpsc_bulk_assign_agents", ticket_ids, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } } /** * Set change assign agent */ function wpsc_set_bulk_assign_agent(el) { var form = jQuery("form.frm-bulk-assign-agent")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_ticket_list(); wpsc_run_ajax_background_process(); }); } /** * Get bulk assign tags */ function wpsc_bulk_assign_tags(nonce) { var items = jQuery(".wpsc-bulk-select:checked"); var checked = items.length === 0 ? false : true; jQuery(".wpsc-bulk-selector").prop("checked", checked); if (items.length != 0) { var ticket_ids = jQuery(".wpsc-bulk-select:checked") .map(function () { return this.value; }) .get(); wpsc_show_modal(); var data = { action: "wpsc_bulk_assign_tags", ticket_ids, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } } /** * Set change assign tags */ function wpsc_set_bulk_assign_tag(el) { var form = jQuery("form.frm-bulk-assign-tags")[0]; var dataform = new FormData(form); var tags = dataform.getAll("tags[]"); if (!tags.length) { return; } jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); wpsc_get_ticket_list(); wpsc_run_ajax_background_process(); }); } /** * Get bulk delete ticket */ function wpsc_bulk_delete_tickets(nonce) { var items = jQuery(".wpsc-bulk-select:checked"); var checked = items.length === 0 ? false : true; jQuery(".wpsc-bulk-selector").prop("checked", checked); if (items.length != 0) { var ticket_ids = jQuery(".wpsc-bulk-select:checked") .map(function () { return this.value; }) .get(); var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } var data = { action: "wpsc_bulk_delete_tickets", ticket_ids, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { wpsc_get_ticket_list(); wpsc_run_ajax_background_process(); }); } } /** * Set agent working hrs */ function wpsc_set_agent_wh_hrs(el) { const form = jQuery(".wpsc-frm-agent-wh")[0]; const dataform = new FormData(form); jQuery(el).text(supportcandy.translations.please_wait); jQuery(".wpsc-section-container").html(supportcandy.loader_html); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { window.location.reload(); }); } /** * Set add agent exception */ function wpsc_set_add_agent_wh_exception(el) { var title = jQuery("input[name=title]").val(); var from_date = jQuery("input[name=exception_date]").val(); if (!title || !from_date) { alert(supportcandy.translations.req_fields_missing); return; } const form = jQuery(".wpsc-frm-add-agent-exception")[0]; const dataform = new FormData(form); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { window.location.reload(); }); } /** * Update agent working hour exception */ function wpsc_set_edit_agent_wh_exception(el) { var title = jQuery("input[name=title]").val(); var from_date = jQuery("input[name=exception_date]").val(); if (!title || !from_date) { alert(supportcandy.translations.req_fields_missing); return; } const form = jQuery(".wpsc-frm-edit-agent-exception")[0]; const dataform = new FormData(form); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { window.location.reload(); }); } /** * Get agent profile holiday actions */ function wpsc_get_ap_leaves_actions(dateSelected, nonce) { supportcandy.temp.dateSelected = dateSelected; wpsc_show_modal(); var data = { action: "wpsc_get_ap_leaves_actions", dateSelected, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { // Set to modal. jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); // Display modal. wpsc_show_modal_inner_container(); }); } /** * Set agent profile holiday actions */ function wpsc_set_ap_leaves_actions(el) { const form = jQuery(".wpsc-frm-ap-holiday-actions")[0]; const dataform = new FormData(form); dataform.append("dateSelected", supportcandy.temp.dateSelected); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (response) { jQuery.each(supportcandy.temp.dateSelected, function (index, value) { if (response.action == "add" && response.is_recurring == 1) { jQuery("td") .find("[data-date=" + value + "]") .css({ "background-color": "#eb4d4b" }); } else if (response.action == "add" && response.is_recurring == 0) { jQuery("td") .find("[data-date=" + value + "]") .css({ "background-color": "#f0932b" }); } else { jQuery("td") .find("[data-date=" + value + "]") .css("background-color", "unset"); } }); supportcandy.temp.holidayList = response.holidayList; wpsc_close_modal(); }); } /** * Restore bulk tickets */ function wpsc_bulk_restore_tickets(nonce) { var items = jQuery(".wpsc-bulk-select:checked"); var checked = items.length === 0 ? false : true; jQuery(".wpsc-bulk-selector").prop("checked", checked); if (items.length != 0) { var ticket_ids = jQuery(".wpsc-bulk-select:checked") .map(function () { return this.value; }) .get(); var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } var data = { action: "wpsc_bulk_restore_tickets", ticket_ids, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { wpsc_get_ticket_list(); }); } } /** * Deletes bulk ticket permanentaly */ function wpsc_bulk_delete_tickets_permanently(nonce) { var items = jQuery(".wpsc-bulk-select:checked"); var checked = items.length === 0 ? false : true; jQuery(".wpsc-bulk-selector").prop("checked", checked); if (items.length != 0) { var ticket_ids = jQuery(".wpsc-bulk-select:checked") .map(function () { return this.value; }) .get(); var flag = confirm(supportcandy.translations.confirm); if (!flag) { return; } var data = { action: "wpsc_bulk_delete_tickets_permanently", ticket_ids, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { wpsc_get_ticket_list(); }); } } /** * Clear dates */ function wpsc_clear_date(el) { jQuery(el).prev().val(""); var conditionalFields = jQuery(".wpsc-tff.conditional"); if (conditionalFields.length !== 0) { wpsc_check_tff_visibility(); } } /** * Check whether there is text in reply box */ function wpsc_is_description_text() { var is_tinymce = typeof tinyMCE != "undefined" && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); if (is_tinymce && tinymce.get("description")) { var description = tinyMCE.get("description").getContent(); } else { var description = jQuery("#description").val(); } var flag = false; if (description && description.length != 0) { flag = true; } return flag; } /** * Get Edit customer info * * @param {Int} ticket_id */ function wpsc_get_edit_rb_info(el, ticket_id, nonce) { wpsc_show_modal(); var data = { action: "wpsc_get_edit_rb_info", ticket_id, _ajax_nonce: nonce }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Set edit customer info * * @param {object} el * @param {Int} ticket_id */ function wpsc_set_edit_rb_info(el, ticket_id, nonce) { var form = jQuery("form.frm-edit-rb-info")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery .ajax({ url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, }) .done(function (res) { wpsc_close_modal(); setTimeout(function () { wpsc_get_rb_info(el, ticket_id, nonce); }, 500); }); } /** * Get tickets based on filter set */ function wpsc_get_tickets() { jQuery(".wpsc-bulk-selector").prop("checked", false); jQuery(".wpsc-ticket-list").html(supportcandy.loader_html); var data = { action: "wpsc_get_tickets", _ajax_nonce: supportcandy.nonce, is_frontend : supportcandy.is_frontend }; if ( typeof supportcandy.ticketList != "undefined" && typeof supportcandy.ticketList.filters != "undefined" ) { data.filters = supportcandy.ticketList.filters; } jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-filter-actions").html(response.filter_actions); jQuery(".wpsc-ticket-bulk-actions").html(response.bulk_actions); jQuery(".wpsc-ticket-list").html(response.tickets); jQuery(".wpsc-pagination-txt").text(response.pagination_str); jQuery("select.wpsc-input-filter").val(response.filters.filterSlug); jQuery("select.wpsc-input-sort-by").val(response.filters.orderby); jQuery("select.wpsc-input-sort-order").val(response.filters.order); jQuery("input.wpsc-search-input").val(response.filters.search); if (response.pagination.total_pages > 1) { jQuery(".wpsc-pagination-btn").show(); } else { jQuery(".wpsc-pagination-btn").hide(); } supportcandy.ticketList = { filters: response.filters, pagination: response.pagination, }; }); } /** * Copy ticket url * * @param {int} ticket_id */ function wpsc_it_copy_url(ticket_id) { var temp = jQuery(""); jQuery("body").append(temp); temp.val(jQuery("#wpsc-ticket-url").text()).select(); document.execCommand("copy"); temp.remove(); alert(supportcandy.translations.copy_url); } /** * Open auto-refresh toggle */ function wpsc_get_tl_auto_refresh() { wpsc_show_modal(); // Get modal parts from static modals. var headerText = jQuery( ".wpsc-tl_snippets .auto-refresh .modal-header" ).text(); var bodyHTML = jQuery(".wpsc-tl_snippets .auto-refresh .modal-body").html(); var footerHTML = jQuery( ".wpsc-tl_snippets .auto-refresh .modal-footer" ).html(); // Set them to modal. jQuery(".wpsc-modal-header").text(headerText); jQuery(".wpsc-modal-body").html(bodyHTML); jQuery(".wpsc-modal-footer").html(footerHTML); // Set current status. var status = supportcandy.tl_auto_refresh ? supportcandy.tl_auto_refresh : 0; var el = status ? jQuery(".wpsc-modal .toggle-on") : jQuery(".wpsc-modal .toggle-off"); jQuery(".wpsc-modal-body input").val(status); status ? wpsc_toggle_on(el) : wpsc_toggle_off(el); // Display modal. wpsc_show_modal_inner_container(); } /** * Set auto-refresh settings */ function wpsc_set_tl_auto_refresh(el) { jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); var status = parseInt(jQuery(".wpsc-modal-body input").val()); wpsc_close_modal(); if (supportcandy.tl_auto_refresh !== status) { supportcandy.tl_auto_refresh = status; if (status === 1) { wpsc_tl_auto_refresh(); } } } /** * Auto refresh */ function wpsc_tl_auto_refresh() { if ( supportcandy.current_section === "ticket-list" && !supportcandy.ticketListIsIndividual && supportcandy.tl_auto_refresh === 1 && !( jQuery(".wpsc-bulk-select:checked").length || jQuery(".wpsc-search-input").is(":focus") ) ) { wpsc_get_tickets(); if ( typeof supportcandy.tl_auto_refresh_schedule !== "undefined" && supportcandy.tl_auto_refresh_schedule == true ) { return; } supportcandy.tl_auto_refresh_schedule = true; setTimeout(function () { supportcandy.tl_auto_refresh_schedule = false; wpsc_tl_auto_refresh(); }, 60000); } } /** * User logout */ function wpsc_user_logout(el, nonce) { jQuery(el).text(supportcandy.translations.please_wait); var data = { action: "wpsc_user_logout", _ajax_nonce: nonce }; jQuery.post(supportcandy.ajax_url, data, function (res) { window.location.reload(); }); } /** * Close model popup on escape key. */ jQuery(document).keydown(function (e) { if (e.keyCode == 27) { wpsc_close_modal(); } }); /** * Get customer info */ function wpsc_view_customer_info(customer_id, _ajax_nonce) { wpsc_show_modal(); var data = { action: "wpsc_view_customer_info", customer_id, _ajax_nonce }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Get edit customer info */ function wpsc_get_edit_customer_info(customer_id, _ajax_nonce) { wpsc_show_modal(); var data = { action: "wpsc_get_edit_customer_info", customer_id, _ajax_nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * Set edit customer info */ function wpsc_set_edit_customer_info(el, id, nonce) { var form = jQuery("form.frm-edit-customer-info")[0]; var dataform = new FormData(form); jQuery(".wpsc-modal-footer button").attr("disabled", true); jQuery(el).text(supportcandy.translations.please_wait); jQuery.ajax( { url: supportcandy.ajax_url, type: "POST", data: dataform, processData: false, contentType: false, } ).done(function (res) { wpsc_close_modal(); wpsc_scroll_top(); wpsc_view_customer_detailed_info( res.customer_id, res.nonce ); }); } /** * Get customer logs */ function wpsc_view_customer_logs(customer_id, _ajax_nonce) { wpsc_show_modal(); var data = { action: "wpsc_view_customer_logs", customer_id, _ajax_nonce }; jQuery.post(supportcandy.ajax_url, data, function (response) { jQuery(".wpsc-modal-header").text(response.title); jQuery(".wpsc-modal-body").html(response.body); jQuery(".wpsc-modal-footer").html(response.footer); wpsc_show_modal_inner_container(); }); } /** * * @param {*} ticket */ function wpsc_clear_saved_draft_reply(ticket_id) { var draft_replies = JSON.parse(localStorage.getItem("wpsc_auto_draft")) || {}; var is_tinymce = typeof tinyMCE != "undefined" && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); if (is_tinymce && tinymce.get("description")) { tinyMCE.get("description").setContent(""); } jQuery("#description").val(""); if (!ticket_id) return; delete draft_replies[ticket_id]; localStorage.setItem("wpsc_auto_draft", JSON.stringify(draft_replies)); } /** * Run background processes. */ function wpsc_run_ajax_background_process() { var data = { action: "wpsc_run_ajax_background_process" }; jQuery.post(supportcandy.ajax_url, data, function (response) {}); } /** * Assign ticket to self */ function wpsc_self_assign_ticket(ticket_id, nonce) { var data = { action: "wpsc_self_assign_ticket", ticket_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { wpsc_get_individual_ticket(ticket_id); }); } /** * Delete wpsc_auto_draft localStorage after 24 hr */ function wpsc_delete_auto_draft() { var draft_cron_time = localStorage.getItem("wpsc_draft_cron_time"); if (!draft_cron_time) { localStorage.setItem("wpsc_draft_cron_time", new Date().getTime()); } var diff = new Date().getTime() - draft_cron_time; if (diff < 3600000) { return; } var draft_replies = JSON.parse(localStorage.getItem("wpsc_auto_draft")) || {}; Object.keys(draft_replies).forEach((ticket_id) => { var timeDifference = new Date() - new Date(draft_replies[ticket_id].date_updated); if (timeDifference > 86400000) { delete draft_replies[ticket_id]; } }); localStorage.setItem("wpsc_auto_draft", JSON.stringify(draft_replies)); localStorage.setItem("wpsc_draft_cron_time", new Date().getTime()); } /** * Delete customer */ function wpsc_delete_customer(customer_id, nonce) { if (!confirm(supportcandy.translations.customer_delete_warn)) { return; } var data = { action: "wpsc_delete_customer", customer_id, _ajax_nonce: nonce, }; jQuery.post(supportcandy.ajax_url, data, function (response) { window.location.reload(); }); } /** * Dashboard - Get filter from and to dates based on duration slug */ function wpsc_db_set_filter_duration_dates(duration) { let dateStr = ''; let date = new Date(); let from_date, to_date; switch (duration) { case 'today': dateStr = date.toISOString().split('T')[0]; date_from_to = { 'from': dateStr, 'to': dateStr }; break; case 'yesterday': date.setDate(date.getDate() - 1); dateStr = date.toISOString().split('T')[0]; date_from_to = { 'from': dateStr, 'to': dateStr }; break; case 'this-week': let firstDayOfWeek = date.getDay() === 0 ? 6 : date.getDay() - 1; date.setDate(date.getDate() - firstDayOfWeek); from_date = date.toISOString().split('T')[0]; date.setDate(date.getDate() + 6); to_date = date.toISOString().split('T')[0]; date_from_to = { 'from': from_date, 'to': to_date }; break; case 'last-week': let firstDayOfLastWeek = date.getDay() === 0 ? 7 : date.getDay(); date.setDate(date.getDate() - firstDayOfLastWeek - 6); from_date = date.toISOString().split('T')[0]; date.setDate(date.getDate() + 6); to_date = date.toISOString().split('T')[0]; date_from_to = { 'from': from_date, 'to': to_date }; break; case 'last-7': date.setDate(date.getDate() - 1); // Exclude today to_date = date.toISOString().split('T')[0]; date.setDate(date.getDate() - 6); // Last 7 days from yesterday from_date = date.toISOString().split('T')[0]; date_from_to = { 'from': from_date, 'to': to_date }; break; case 'last-30-days': date.setDate(date.getDate() - 1); // Exclude today to_date = date.toISOString().split('T')[0]; date.setDate(date.getDate() - 29); // Last 30 days from yesterday from_date = date.toISOString().split('T')[0]; date_from_to = { 'from': from_date, 'to': to_date }; break; case 'this-month': let this_month_starts = new Date(date.getFullYear(), date.getMonth(), 1); let this_month_ends = new Date(date.getFullYear(), date.getMonth() + 1, 0); date_from_to = { 'from': `${this_month_starts.getFullYear()}-${(this_month_starts.getMonth() + 1).toString().padStart(2, '0')}-${this_month_starts.getDate().toString().padStart(2, '0')}`, 'to': `${this_month_ends.getFullYear()}-${(this_month_ends.getMonth() + 1).toString().padStart(2, '0')}-${this_month_ends.getDate().toString().padStart(2, '0')}` }; break; case 'last-month': date.setMonth(date.getMonth() - 1); let last_month_starts = new Date(date.getFullYear(), date.getMonth(), 1); let last_month_ends = new Date(date.getFullYear(), date.getMonth() + 1, 0); date_from_to = { 'from': `${last_month_starts.getFullYear()}-${(last_month_starts.getMonth() + 1).toString().padStart(2, '0')}-${last_month_starts.getDate().toString().padStart(2, '0')}`, 'to': `${last_month_ends.getFullYear()}-${(last_month_ends.getMonth() + 1).toString().padStart(2, '0')}-${last_month_ends.getDate().toString().padStart(2, '0')}` }; break; case 'this-quarter': let this_quarter_month_starts = Math.floor(date.getMonth() / 3) * 3; let quarter_start = new Date(date.getFullYear(), this_quarter_month_starts, 1); let quarter_end = new Date(date.getFullYear(), this_quarter_month_starts + 3, 0); date_from_to = { 'from': `${quarter_start.getFullYear()}-${(quarter_start.getMonth() + 1).toString().padStart(2, '0')}-${quarter_start.getDate().toString().padStart(2, '0')}`, 'to': `${quarter_end.getFullYear()}-${(quarter_end.getMonth() + 1).toString().padStart(2, '0')}-${quarter_end.getDate().toString().padStart(2, '0')}` }; break; case 'last-quarter': let last_quarter_month_ends = Math.floor(date.getMonth() / 3) * 3 - 1; // End month of last quarter let last_quarter_month_starts = last_quarter_month_ends - 2; // Start month of last quarter if (last_quarter_month_ends < 0) { last_quarter_month_ends += 12; last_quarter_month_starts += 12; } let last_quarter_start = new Date(date.getFullYear(), last_quarter_month_starts, 1); let last_quarter_end = new Date(date.getFullYear(), last_quarter_month_ends + 1, 0); date_from_to = { 'from': `${last_quarter_start.getFullYear()}-${(last_quarter_start.getMonth() + 1).toString().padStart(2, '0')}-${last_quarter_start.getDate().toString().padStart(2, '0')}`, 'to': `${last_quarter_end.getFullYear()}-${(last_quarter_end.getMonth() + 1).toString().padStart(2, '0')}-${last_quarter_end.getDate().toString().padStart(2, '0')}` }; break; case 'this-year': date_from_to = { 'from': `${date.getFullYear()}-01-01`, 'to': `${date.getFullYear()}-12-31` }; break; case 'last-year': date_from_to = { 'from': `${date.getFullYear() - 1}-01-01`, 'to': `${date.getFullYear() - 1}-12-31` }; break; } return date_from_to; } /** * Get batches for async report loading */ function wpsc_rp_get_baches(fromDate, toDate) { let diffTime = Math.abs( toDate - fromDate ); let diffDays = Math.ceil( diffTime / (1000 * 60 * 60 * 24) ) + 1; let batches = []; let batchData = []; if (diffDays == 1) { // one day. for (var i = 0; i <= 23; i++) { var hr = String( i ); hr = hr.length == 1 ? '0' + hr : hr; batchData.push( { fromDate: fromDate.toISOString().split('T')[0] + ' ' + hr + ':00:00', toDate: fromDate.toISOString().split('T')[0] + ' ' + hr + ':59:59', durationType: 'day' } ); } } else if (diffDays <= 31) { // days. do { batchData.push( { fromDate: fromDate.toISOString().split('T')[0] + ' 00:00:00', toDate: fromDate.toISOString().split('T')[0] + ' 23:59:59', durationType: 'days' } ); fromDate.setDate( fromDate.getDate() + 1 ); } while (fromDate <= toDate); } else if (diffDays <= 180) { // weeks. var from = fromDate.toISOString().split('T')[0]; fromDate.setDate( fromDate.getDate() + (7 - fromDate.getDay()) ); batchData.push( { fromDate: from + ' 00:00:00', toDate: fromDate.toISOString().split('T')[0] + ' 23:59:59', durationType: 'weeks' } ); do { fromDate.setDate( fromDate.getDate() + 1 ); var from = new Date( fromDate.toLocaleDateString( 'en-CA' ) ); fromDate.setDate( fromDate.getDate() + 6 ); var to = new Date( fromDate.toLocaleDateString( 'en-CA' ) ); to = toDate < to ? new Date( toDate.toLocaleDateString( 'en-CA' ) ) : to; batchData.push( { fromDate: from.toISOString().split('T')[0] + ' 00:00:00', toDate: to.toISOString().split('T')[0] + ' 23:59:59', durationType: 'weeks' } ); } while (fromDate < toDate); } else if (diffDays <= 720) { // months. // convert toDate from local to UTC. toDate = new Date( toDate.getFullYear(), toDate.getMonth(), toDate.getDate() ); var from = fromDate.toISOString().split('T')[0]; if (fromDate.getMonth() == 11) { fromDate = new Date( fromDate.getFullYear(), 11, 31 ); } else { fromDate = new Date( fromDate.getFullYear(), fromDate.getMonth() + 1, 0 ); } batchData.push( { fromDate: from + ' 00:00:00', toDate: fromDate.toISOString().split('T')[0] + ' 23:59:59', durationType: 'months' } ); do { fromDate.setDate( fromDate.getDate() + 1 ); var from = new Date( fromDate.toLocaleDateString( 'en-CA' ) ); if (fromDate.getMonth() == 11) { fromDate = new Date( fromDate.getFullYear(), 11, 31 ); } else { fromDate = new Date( fromDate.getFullYear(), fromDate.getMonth() + 1, 0 ); } var to = new Date( fromDate.toLocaleDateString( 'en-CA' ) ); to = toDate < to ? new Date( toDate.toLocaleDateString( 'en-CA' ) ) : to; batchData.push( { fromDate: from.toISOString().split('T')[0] + ' 00:00:00', toDate: to.toISOString().split('T')[0] + ' 23:59:59', durationType: 'months' } ); } while (fromDate < toDate); } else { // years. // convert toDate from local to UTC. toDate = new Date( toDate.getFullYear(), toDate.getMonth(), toDate.getDate() ); var from = fromDate.toISOString().split('T')[0]; fromDate = new Date( fromDate.getFullYear(), 11, 31 ); batchData.push( { fromDate: from + ' 00:00:00', toDate: fromDate.toISOString().split('T')[0] + ' 23:59:59', durationType: 'years' } ); do { fromDate.setDate( fromDate.getDate() + 1 ); var from = new Date( fromDate.toLocaleDateString( 'en-CA' ) ); fromDate = new Date( fromDate.getFullYear(), 11, 31 ); var to = new Date( fromDate.toLocaleDateString( 'en-CA' ) ); to = toDate < to ? new Date( toDate.toLocaleDateString( 'en-CA' ) ) : to; batchData.push( { fromDate: from.toISOString().split('T')[0] + ' 00:00:00', toDate: to.toISOString().split('T')[0] + ' 23:59:59', durationType: 'years' } ); } while (fromDate < toDate); } // devide into batches of 5. var batchLength = batchData.length; for (var i = 0; i < batchLength; i = i + 5) { var batch = []; var counter = 0; do { var index = i + counter; if (index == batchLength) { break; } batch.push( batchData[index] ); counter++; } while (counter < 5); batches.push( batch ); } return batches; } function wpsc_generate_random_color() { var minLuminance = 0.7; do { var color = Math.floor(Math.random() * 16777216); // 0x000000 to 0xFFFFFF var red = (color >> 16) & 0xFF; var green = (color >> 8) & 0xFF; var blue = color & 0xFF; // Calculate luminance (brightness). var luminance = (0.299 * red + 0.587 * green + 0.114 * blue) / 255; } while (luminance < minLuminance); return '#' + color.toString(16).toUpperCase(); } // onclick load respective card ticket list function wpsc_get_dbc_ticket_list(element, card) { var count = parseInt( jQuery( element ).find('.wpsc-dbc-count').text(), 10); if ( count === 0 ) { return; } var data = { action: 'wpsc_dash_card_count_filter', card : card, view: supportcandy.is_frontend, _ajax_nonce: supportcandy.nonce }; jQuery.post( supportcandy.ajax_url, data, function (response) { if( response.url ) { window.location = response.url; } } ); } // onclick load respective card ticket list function wpsc_get_agent_status_ticket_list(agent_id, status_id, nonce) { var data = { action: 'wpsc_get_agent_status_ticket_list', agent_id : agent_id, status_id : status_id, view: supportcandy.is_frontend, _ajax_nonce: nonce }; jQuery.post( supportcandy.ajax_url, data, function (response) { if( response.url ) { window.location = response.url; } } ); } /** * Refresh tags list */ function wpsc_it_refresh_tags(ticket_id) { jQuery( '.wpsc-it-tag-body' ).html( supportcandy.loader_html ); var data = { action: 'wpsc_it_refresh_tags', ticket_id }; jQuery.post( supportcandy.ajax_url, data, function (res) { jQuery( '.wpsc-it-tag-body' ).html( res ); } ); }