797 lines
31 KiB
JavaScript
797 lines
31 KiB
JavaScript
/**
|
|
* MainWP Clients.page
|
|
*/
|
|
/* eslint-disable complexity */
|
|
let import_client_current = 0;
|
|
let import_client_total = 0;
|
|
let import_client_count_success = 0;
|
|
let import_client_count_fails = 0;
|
|
let import_client_stop_by_user = false;
|
|
jQuery(function () {
|
|
|
|
// Delete single client.
|
|
jQuery(document).on('click', '.client_deleteitem', function () {
|
|
let confirmation = confirm('Are you sure you want to proceed?');
|
|
if (confirmation) {
|
|
let parent = jQuery(this).closest('div.menu');
|
|
let rowElement = jQuery(this).parents('tr');
|
|
let clientid = parent.attr('clientid');
|
|
let data = mainwp_secure_data({
|
|
action: 'mainwp_clients_delete_client',
|
|
clientid: clientid,
|
|
});
|
|
jQuery.post(ajaxurl, data, function (response) {
|
|
if (response.success) {
|
|
rowElement.html('<td colspan="8"><i class="green check icon"></i> ' + response.result + '</td>');
|
|
}
|
|
}, 'json');
|
|
}
|
|
|
|
return false;
|
|
});
|
|
|
|
jQuery(document).on('click', '.client-suspend-unsuspend-sites', function () {
|
|
let new_status = jQuery(this).attr('suspend-status') == '0' ? 1 : 0;
|
|
let clientid = jQuery(this).closest('.mainwp-widget-footer').attr('client-id');
|
|
let bt = this;
|
|
|
|
let data = mainwp_secure_data({
|
|
action: 'mainwp_clients_suspend_client',
|
|
clientid: clientid,
|
|
suspend_status: new_status
|
|
});
|
|
jQuery(bt).attr('disabled', true);
|
|
jQuery.post(ajaxurl, data, function (response) {
|
|
jQuery(bt).attr('disabled', false);
|
|
if (response == 'success') {
|
|
jQuery(bt).text(new_status == 0 ? __('Suspend Sites') : __('Unsuspend Sites'));
|
|
jQuery(bt).attr('suspend-status', new_status);
|
|
}
|
|
});
|
|
});
|
|
|
|
jQuery('#mainwp_edit_clients_icon_select').dropdown({
|
|
onChange: function (val) {
|
|
jQuery('#client_fields\\[default_field\\]\\[selected_icon\\]').val(val);
|
|
jQuery('#client_fields\\[default_field\\]\\[selected_icon\\]').trigger('change');
|
|
}
|
|
});
|
|
|
|
jQuery('.mainwp-edit-clients-select-contact-icon').dropdown({
|
|
onChange: function (val) {
|
|
let parent = jQuery(this).closest('.mainwp_edit_clients_contact_icon_wrapper');
|
|
let inname = parent.attr('input-name');
|
|
if (undefined !== inname) {
|
|
jQuery(parent).find('#client_fields\\[' + inname + '\\]\\[selected_icon\\]\\[\\]').val(val);
|
|
jQuery(parent).find('#client_fields\\[' + inname + '\\]\\[selected_icon\\]\\[\\]').trigger('change');
|
|
}
|
|
}
|
|
});
|
|
|
|
jQuery(document).on('click', '.mainwp-client-add-contact', function () {
|
|
let templ = jQuery(this).attr('add-contact-temp');
|
|
jQuery('.after-add-contact-field').after(templ);
|
|
let justAdded = jQuery('.after-add-contact-field').next().next().next().next().next().next();
|
|
jQuery(justAdded).find('.mainwp-edit-clients-select-contact-icon').dropdown({
|
|
onChange: function (val) {
|
|
let parent = jQuery(this).closest('.mainwp_edit_clients_contact_icon_wrapper');
|
|
let inname = parent.attr('input-name');
|
|
if (undefined !== inname) {
|
|
jQuery(parent).find('#client_fields\\[' + inname + '\\]\\[selected_icon\\]\\[\\]').val(val);
|
|
jQuery(parent).find('#client_fields\\[' + inname + '\\]\\[selected_icon\\]\\[\\]').trigger('change');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
jQuery(document).on('click', '.mainwp-client-remove-contact', function () {
|
|
|
|
if (jQuery(this).attr('contact-id') > 0) {
|
|
jQuery('.after-add-contact-field').before('<input type="hidden" value="' + jQuery(this).attr('contact-id') + '" name="client_fields[delele_contacts][]">'); // to delete contact when submit the client.
|
|
}
|
|
|
|
let parent = jQuery(this).closest('.remove-contact-field-parent');
|
|
let limit = 0;
|
|
while (!parent.prev().hasClass('top-contact-fields')) {
|
|
limit++;
|
|
parent.prev().remove(); // prev contact field.
|
|
if (limit > 50) break;
|
|
}
|
|
if (parent.prev().hasClass('top-contact-fields')) {
|
|
parent.prev().remove();
|
|
}
|
|
if (parent.next().hasClass('bottom-contact-fields')) {
|
|
parent.next().remove();
|
|
}
|
|
parent.remove();
|
|
});
|
|
|
|
// Handel Modal import client
|
|
import_client_total = jQuery('#mainwp_manageclients_total_import').val();
|
|
if (jQuery('#mainwp_manageclients_do_import').val() == 1) {
|
|
mainwp_manageclient_import_client();
|
|
}
|
|
|
|
jQuery(document).on('click', '#mainwp_manageclients_btn_import', function () {
|
|
if (!import_client_stop_by_user) {
|
|
import_client_stop_by_user = true;
|
|
jQuery('#mainwp_manageclients_import_logging .log').append(__('Paused import by user.') + "\n");
|
|
jQuery('#mainwp_manageclients_btn_import').val(__('Continue'));
|
|
} else {
|
|
import_client_stop_by_user = false;
|
|
jQuery('#mainwp_manageclients_import_logging .log').append(__('Continue import.') + "\n");
|
|
jQuery('#mainwp_manageclients_btn_import').val(__('Pause'));
|
|
mainwp_manageclient_import_client();
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
|
|
let bulkManageClientsMaxThreads = mainwpParams['maximumInstallUpdateRequests'] == undefined ? 3 : mainwpParams['maximumInstallUpdateRequests'];
|
|
let bulkManageClientsCurrentThreads = 0;
|
|
let bulkManageClientsTotal = 0;
|
|
let bulkManageClientsFinished = 0;
|
|
let bulkManageClientsTaskRunning = false;
|
|
|
|
|
|
// Trigger Manage Bulk Actions
|
|
jQuery(document).on('click', '#mainwp-do-clients-bulk-actions', function () {
|
|
let action = jQuery("#mainwp-clients-bulk-actions-menu").dropdown("get value");
|
|
if (action) {
|
|
mainwp_manageclients_doaction(action);
|
|
}
|
|
return false;
|
|
});
|
|
|
|
|
|
let mainwp_manageclients_doaction = function (action) {
|
|
if (action && !bulkManageClientsTaskRunning) {
|
|
let confirmMsg = '';
|
|
if (action === 'delete') {
|
|
confirmMsg = __("You are about to remove the selected clients from your MainWP Dashboard?");
|
|
}
|
|
mainwp_confirm(confirmMsg, function () { mainwp_manageclients_doaction_process(action); });
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
let mainwp_manageclients_doaction_process = function (action) {
|
|
|
|
manageclients_bulk_init();
|
|
|
|
bulkManageClientsTotal = jQuery('#mainwp-manage-sites-body-table .check-column INPUT:checkbox:checked[status="queue"]').length;
|
|
bulkManageClientsTaskRunning = true;
|
|
|
|
if (action == 'delete') {
|
|
mainwp_manageclients_bulk_remove_next();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
let mainwp_manageclients_bulk_remove_next = function () {
|
|
while ((checkedBox = jQuery('#mainwp-manage-sites-body-table .check-column INPUT:checkbox:checked[status="queue"]:first')) && (checkedBox.length > 0) && (bulkManageClientsCurrentThreads < bulkManageClientsMaxThreads)) { // NOSONAR -- modified out side the function.
|
|
mainwp_manageclients_bulk_remove_specific(checkedBox);
|
|
}
|
|
if ((bulkManageClientsTotal > 0) && (bulkManageClientsFinished == bulkManageClientsTotal)) { // NOSONAR -- modified out side the function.
|
|
setHtml('#mainwp-message-zone-client', __("Process completed. Reloading page..."));
|
|
setTimeout(function () {
|
|
window.location.reload()
|
|
}, 3000);
|
|
}
|
|
}
|
|
|
|
let mainwp_manageclients_bulk_remove_specific = function (pCheckedBox) {
|
|
|
|
pCheckedBox.attr('status', 'running');
|
|
let rowObj = pCheckedBox.closest('tr');
|
|
bulkManageClientsCurrentThreads++;
|
|
|
|
let id = rowObj.attr('clientid');
|
|
|
|
rowObj.html('<td colspan="999"><i class="notched circle loading icon"></i> ' + 'Removing ...' + '</td>');
|
|
|
|
let data = mainwp_secure_data({
|
|
action: 'mainwp_clients_delete_client',
|
|
clientid: id
|
|
});
|
|
jQuery.post(ajaxurl, data, function (response) {
|
|
bulkManageClientsCurrentThreads--;
|
|
bulkManageClientsFinished++;
|
|
rowObj.html('<td colspan="999"></td>');
|
|
let result = '';
|
|
let error = '';
|
|
if (response.error != undefined) {
|
|
error = response.error;
|
|
} else if (response.success == 'SUCCESS') {
|
|
result = __('The client has been removed.');
|
|
}
|
|
|
|
if (error != '') {
|
|
rowObj.html('<td colspan="999"><i class="red times icon"></i> ' + error + '</td>');
|
|
} else {
|
|
rowObj.html('<td colspan="999"><i class="green check icon"></i> ' + result + '</td>');
|
|
}
|
|
setTimeout(function () {
|
|
jQuery('tr[clientid=' + id + ']').fadeOut(1000);
|
|
}, 3000);
|
|
|
|
mainwp_manageclients_bulk_remove_next();
|
|
}, 'json');
|
|
};
|
|
|
|
let manageclients_bulk_init = function () {
|
|
mainwp_set_message_zone('#mainwp-message-zone-client');
|
|
if (!bulkManageClientsTaskRunning) {
|
|
bulkManageClientsMaxThreads = mainwpParams['maximumInstallUpdateRequests'] == undefined ? 3 : mainwpParams['maximumInstallUpdateRequests'];
|
|
bulkManageClientsCurrentThreads = 0;
|
|
bulkManageClientsTotal = 0;
|
|
bulkManageClientsFinished = 0;
|
|
jQuery('#mainwp-manage-sites-body-table .check-column INPUT:checkbox').each(function () {
|
|
jQuery(this).attr('status', 'queue')
|
|
});
|
|
}
|
|
};
|
|
|
|
// Handle tab QSW add client
|
|
const mainwp_add_client_onvisible_callback = function (obj_item) {
|
|
const tab = jQuery(obj_item).attr("data-tab");
|
|
if (tab === 'multiple-client') {
|
|
jQuery('#bulk_add_createclient').hide();
|
|
jQuery('#mainwp_qsw_add_client_continue_button').show();
|
|
} else if (tab === 'single-client') {
|
|
jQuery('#mainwp_qsw_add_client_continue_button').show();
|
|
jQuery('#bulk_add_multi_create_client').hide();
|
|
}
|
|
}
|
|
|
|
// Handle remove row client
|
|
const mainwp_qsw_add_client_delete_row = function (index) {
|
|
const row = jQuery("#mainwp-qsw-add-client-row-" + index);
|
|
row.remove();
|
|
return false;
|
|
}
|
|
// Handle show more input òn client multi client.
|
|
const mainwp_qsw_add_client_more_row = function (index) {
|
|
jQuery(".mainwp-qsw-add-client-column-more-" + index).fadeToggle("slow");
|
|
jQuery("#icon-visible-" + index).toggle();
|
|
jQuery("#icon-hidden-" + index).toggle();
|
|
return false;
|
|
}
|
|
|
|
// Track keyup events on Client Name and Client Email inputs.
|
|
jQuery(document).on('keyup change', '.mainwp-qsw-add-client-client-name, .mainwp-qsw-add-client-client-email, input[name^="client_fields"][name$="[client.contact.name][]"], input[name^="client_fields"][name$="[contact.email][]"]', function () {
|
|
const current_row = jQuery(this).closest('.mainwp-qsw-add-client-rows');
|
|
const client_name = current_row.find('.mainwp-qsw-add-client-client-name').val().trim();
|
|
const client_email = current_row.find('.mainwp-qsw-add-client-client-email').val().trim();
|
|
|
|
// If at least one of the two inputs Client Name or Client Email has data
|
|
if (client_name !== '' || client_email !== '') {
|
|
jQuery('#bulk_add_multi_create_client').show(); // Display Add Multi Client button.
|
|
jQuery('#mainwp_qsw_add_client_continue_button').hide(); // Hide Continue button.
|
|
} else {
|
|
// If all fields are empty, hide the Add Multi Client button.
|
|
let all_empty = true;
|
|
jQuery('.mainwp-qsw-add-client-client-name, .mainwp-qsw-add-client-client-email, input[name^="client_fields"][name$="[client.contact.name][]"], input[name^="client_fields"][name$="[contact.email][]"]').each(function () {
|
|
if (jQuery(this).val().trim() !== '') {
|
|
all_empty = false;
|
|
}
|
|
});
|
|
|
|
if (all_empty) {
|
|
jQuery('#bulk_add_multi_create_client').hide(); // Hide Add Multi Client button.
|
|
jQuery('#mainwp_qsw_add_client_continue_button').show(); // Display Continue button.
|
|
}
|
|
}
|
|
});
|
|
|
|
// Handle event click button Add Multi Client
|
|
jQuery(document).on('click', '#bulk_add_multi_create_client', function (e) {
|
|
let all_rows_valid = true;
|
|
let errors = []; // Array declaration containing error messages.
|
|
let form_data = []; // Initialize array containing form data
|
|
// eslint-disable-next-line complexity
|
|
jQuery('.mainwp-qsw-add-client-rows').each(function () { //phpcs:ignore -- NOSONAR -- complex
|
|
let website_id = null;
|
|
const row_index = jQuery(this).attr('id').replace('mainwp-qsw-add-client-row-', '');
|
|
|
|
if (jQuery('#mainwp-qsw-add-client-website-id-' + row_index).length > 0) {
|
|
website_id = jQuery('#mainwp-qsw-add-client-website-id-' + row_index)?.val().trim();
|
|
}
|
|
const site_url = jQuery('#mainwp-qsw-add-client-site-url-' + row_index).val().trim();
|
|
const client_name = jQuery('#mainwp-qsw-add-client-client-name-' + row_index).val().trim();
|
|
const client_email = jQuery('#mainwp-qsw-add-client-client-email-' + row_index).val().trim();
|
|
const contact_name = jQuery('input[name="client_fields[' + row_index + '][new_contacts_field][client.contact.name][]"]').val().trim();
|
|
const contact_email = jQuery('input[name="client_fields[' + row_index + '][new_contacts_field][contact.email][]"]').val().trim();
|
|
const contact_role = jQuery('input[name="client_fields[' + row_index + '][new_contacts_field][contact.role][]"]').val().trim();
|
|
|
|
|
|
// Check if the line has Client Name or Client Email, but is missing data.
|
|
if (client_name !== '' || client_email !== '') {
|
|
if (site_url === '' || client_name === '' || client_email === '') {
|
|
all_rows_valid = false;
|
|
errors.push(`The data in row ${(parseInt(row_index) + 1)} is incomplete!`);
|
|
}
|
|
|
|
if (contact_name !== '' || contact_email !== '') {
|
|
if (contact_name === '' || contact_email === '') {
|
|
all_rows_valid = false;
|
|
errors.push(`The data in row ${(parseInt(row_index) + 1)} is incomplete!`);
|
|
}
|
|
}
|
|
|
|
if ((!mainwp_validate_email(client_email) && client_email !== '') || (contact_email !== '' && !mainwp_validate_email(contact_email))) {
|
|
all_rows_valid = false;
|
|
errors.push(`Field email in row ${(parseInt(row_index) + 1)} is invalid!`);
|
|
}
|
|
|
|
// If All rows valid then add data to form_data
|
|
if (all_rows_valid) {
|
|
form_data.push({
|
|
website_id: website_id,
|
|
website_url: site_url,
|
|
client_name: client_name,
|
|
client_email: client_email,
|
|
contacts_field: {
|
|
contact_name: contact_name,
|
|
contact_email: contact_email,
|
|
contact_role: contact_role
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
// If there is a column with missing data, prevent submission and display a message.
|
|
if (!all_rows_valid) {
|
|
e.preventDefault(); //Prevent form submission or further processing.
|
|
mainwp_set_message_zone('#mainwp-message-zone', errors.join('<br />'), 'red');
|
|
return false;
|
|
} else {
|
|
let msg = __('Creating the client. Please wait...');
|
|
jQuery('#mainwp-message-zone').html('').hide(); // Hide message error
|
|
mainwp_set_message_zone('#mainwp-message-zone-client', '<i class="notched circle loading icon"></i> ' + msg); // show message creating.
|
|
jQuery('#bulk_add_multi_create_client').attr('disabled', 'disabled'); // disable button
|
|
|
|
const data = mainwp_secure_data({
|
|
action: "mainwp_clients_add_multi_client",
|
|
data: form_data,
|
|
});
|
|
jQuery.post(ajaxurl, data, function (response) {
|
|
if (response?.success) {
|
|
window.location.href = 'admin.php?page=mainwp-setup&step=monitoring&message=1';
|
|
} else if (response?.error) {
|
|
mainwp_set_message_zone('#mainwp-message-zone', response.error, 'red');
|
|
} else {
|
|
mainwp_set_message_zone('#mainwp-message-zone', __('Undefined error. Please try again.'), 'red');
|
|
}
|
|
jQuery('#bulk_add_multi_create_client').attr('disabled', false); // enable button
|
|
});
|
|
return true;
|
|
}
|
|
});
|
|
|
|
jQuery(document).on('click', '#bulk_add_createclient', function () {
|
|
let currPage = jQuery(this).attr('current-page');
|
|
mainwp_createclient(currPage);
|
|
});
|
|
|
|
let mainwp_createclient = function (currPage) {
|
|
if (jQuery('input[name="client_fields[default_field][client.name]"]').val() == '') {
|
|
feedback('mainwp-message-zone-client', __('Client name field is required! Please enter a Client name.'), 'yellow');
|
|
return;
|
|
}
|
|
|
|
let valid_contact = true;
|
|
jQuery('input[name="client_fields[new_contacts_field][client.contact.name][]"]').each(function () {
|
|
if (jQuery(this).val() == '') {
|
|
valid_contact = false;
|
|
}
|
|
});
|
|
jQuery('input[name="client_fields[new_contacts_field][contact.email][]"]').each(function () {
|
|
if (jQuery(this).val() == '') {
|
|
valid_contact = false;
|
|
}
|
|
});
|
|
|
|
|
|
jQuery('input[name="client_fields[contacts_field][client.contact.name][]"]').each(function () {
|
|
if (jQuery(this).val() == '') {
|
|
valid_contact = false;
|
|
}
|
|
});
|
|
jQuery('input[name="client_fields[contacts_field][client.contact.email][]"]').each(function () {
|
|
if (jQuery(this).val() == '') {
|
|
valid_contact = false;
|
|
}
|
|
});
|
|
|
|
|
|
if (!valid_contact) {
|
|
feedback('mainwp-message-zone-client', __('Contact Name and Contact Email are required. Please enter a Contact Name and Contact Email.'), 'yellow');
|
|
return;
|
|
}
|
|
|
|
let selected_sites = [];
|
|
jQuery("input[name='selected_sites[]']:checked").each(function () {
|
|
selected_sites.push(jQuery(this).val());
|
|
});
|
|
|
|
if (jQuery('#select_by').val() == 'site') {
|
|
selected_sites = [];
|
|
jQuery("input[name='selected_sites[]']:checked").each(function () {
|
|
selected_sites.push(jQuery(this).val());
|
|
});
|
|
}
|
|
|
|
let is_first_client = false;
|
|
if (jQuery("input[name=selected_first_site]").length > 0) {
|
|
selected_sites.push(jQuery("input[name=selected_first_site]").val());
|
|
is_first_client = true;
|
|
}
|
|
|
|
mainwp_set_message_zone('#mainwp-message-zone-client');
|
|
let msg = __('Creating the client. Please wait...');
|
|
if (jQuery('input[name="client_fields[client_id]"]').val() != 0) {
|
|
msg = __('Updating the client. Please wait...');
|
|
}
|
|
mainwp_set_message_zone('#mainwp-message-zone-client', '<i class="notched circle loading icon"></i> ' + msg);
|
|
jQuery('#bulk_add_createclient').attr('disabled', 'disabled');
|
|
|
|
//Add user via ajax!!
|
|
let formdata = new FormData(jQuery('#createclient_form')[0]);
|
|
formdata.append("action", 'mainwp_clients_add_client');
|
|
formdata.append("select_by", jQuery('#select_by').val());
|
|
formdata.append("selected_sites[]", selected_sites);
|
|
formdata.append("is_first_client", is_first_client);
|
|
formdata.append("security", security_nonces['mainwp_clients_add_client']);
|
|
|
|
jQuery.ajax({
|
|
type: 'POST',
|
|
url: ajaxurl,
|
|
data: formdata,
|
|
success: function (response) {
|
|
mainwp_set_message_zone('#mainwp-message-zone-client');
|
|
jQuery('#bulk_add_createclient').prop("disabled", false);
|
|
if (response?.success) {
|
|
if ('add-new' == currPage) {
|
|
window.location.href = "admin.php?page=ManageClients";
|
|
} else if ('qsw-add' == currPage) {
|
|
window.location.href = 'admin.php?page=mainwp-setup&step=monitoring&message=1';
|
|
} else {
|
|
window.location.href = location.href;
|
|
}
|
|
} else if (response?.error) {
|
|
feedback('mainwp-message-zone-client', response.error, 'red');
|
|
} else {
|
|
feedback('mainwp-message-zone-client', __('Undefined error. Please try again.'), 'red');
|
|
}
|
|
},
|
|
error: function () {
|
|
},
|
|
contentType: false,
|
|
cache: false,
|
|
processData: false,
|
|
enctype: 'multipart/form-data',
|
|
dataType: 'json'
|
|
});
|
|
|
|
};
|
|
|
|
// Trigger new client fields modal
|
|
jQuery(document).on('click', '#mainwp-clients-new-custom-field-button', function () {
|
|
let parent = jQuery(this).parents('#mainwp-clients-custom-field-modal');
|
|
jQuery(parent).find('input[name="field-name"]').val('');
|
|
jQuery(parent).find('input[name="field-description"]').val('');
|
|
jQuery(parent).find('input[name="field-id"]').val(0);
|
|
jQuery('#mainwp-clients-custom-field-modal').modal({
|
|
closable: false,
|
|
}).modal('show');
|
|
});
|
|
|
|
// Edit client custom fields.
|
|
jQuery(document).on('click', '#mainwp-clients-edit-custom-field', function () {
|
|
let parent = jQuery(this).closest('.mainwp-field');
|
|
let field_name = parent.find('.field-name').html();
|
|
let field_desc = parent.find('.field-description').html();
|
|
let field_id = parent.attr('field-id');
|
|
|
|
field_name = field_name.replace(/\[|\]/gi, ""); // NOSONAR.
|
|
|
|
jQuery('#mainwp-clients-custom-field-modal input[name="field-name"]').val(field_name);
|
|
jQuery('#mainwp-clients-custom-field-modal input[name="field-description"]').val(field_desc);
|
|
jQuery('#mainwp-clients-custom-field-modal input[name="field-id"]').val(field_id);
|
|
|
|
jQuery('#mainwp-clients-custom-field-modal').modal({
|
|
closable: false,
|
|
}).modal('show');
|
|
return false;
|
|
});
|
|
|
|
// Save/Update custom fields
|
|
jQuery(document).on('click', '#mainwp-clients-save-new-custom-field', function () {
|
|
mainwp_clients_update_custom_field(this);
|
|
return false;
|
|
});
|
|
|
|
let mainwp_clients_update_custom_field = function (me) {
|
|
let parent = jQuery(me).parents('#mainwp-clients-custom-field-modal');
|
|
let errors = [];
|
|
let client_id = jQuery(me).attr('client-id');
|
|
|
|
if (parent.find('input[name="field-name"]').val().trim() == '') {
|
|
errors.push('Field name is required.');
|
|
}
|
|
|
|
if (parent.find('input[name="field-description"]').val().trim() == '') {
|
|
errors.push('Field description is required.');
|
|
}
|
|
|
|
if (errors.length > 0) {
|
|
parent.find('.ui.message').html(errors.join('<br />')).show();
|
|
return false;
|
|
}
|
|
|
|
let fields = mainwp_secure_data({
|
|
field_name: parent.find('input[name="field-name"]').val(),
|
|
field_desc: parent.find('input[name="field-description"]').val(),
|
|
field_id: parent.find('input[name="field-id"]').val(),
|
|
client_id: client_id,
|
|
action: 'mainwp_clients_save_field',
|
|
});
|
|
|
|
parent.find('.ui.message').html('<i class="notched circle loading icon"></i> Saving field. Please wait...').show().removeClass('yellow');
|
|
|
|
jQuery.post(ajaxurl, fields, function (response) {
|
|
if (response) {
|
|
if (response.success) {
|
|
window.location.href = location.href;
|
|
} else if (response.error) {
|
|
parent.find('.ui.message').html(response.error).show().removeClass('yellow').addClass('red');
|
|
} else {
|
|
parent.find('.ui.message').html('Undefined error occurred. Please try again.').show().removeClass('yellow').addClass('red');
|
|
}
|
|
} else {
|
|
parent.find('.ui.message').html('Undefined error occurred. Please try again.').show().removeClass('yellow').addClass('red');
|
|
}
|
|
}, 'json');
|
|
}
|
|
|
|
// Delete Custom field
|
|
jQuery(document).on('click', '#mainwp-clients-delete-general-field', function () {
|
|
if (confirm(__('Are you sure you want to delete this field?'))) {
|
|
|
|
let parent = jQuery(this).closest('.mainwp-field');
|
|
jQuery.post(ajaxurl, mainwp_secure_data({
|
|
action: 'mainwp_clients_delete_general_field',
|
|
field_id: parent.attr('field-id'),
|
|
}), function (data) {
|
|
mainwp_set_message_zone('#mainwp-message-zone-client');
|
|
if (data?.success) {
|
|
parent.html('<td colspan="3"><i class="green check icon"></i> ' + __('Field has been deleted successfully.') + '</td>').fadeOut(3000);
|
|
} else {
|
|
mainwp_set_message_zone('#mainwp-message-zone-client', __('Field can not be deleted.'), 'red');
|
|
}
|
|
}, 'json');
|
|
}
|
|
return false;
|
|
});
|
|
|
|
// Delete Custom field
|
|
jQuery(document).on('click', '#mainwp-clients-delete-individual-field', function () {
|
|
if (confirm(__('Are you sure you want to delete this field?'))) {
|
|
|
|
let parent = jQuery(this).closest('.mainwp-field');
|
|
|
|
jQuery.post(ajaxurl, mainwp_secure_data({
|
|
action: 'mainwp_clients_delete_field',
|
|
field_id: parent.attr('field-id'),
|
|
client_id: jQuery(this).attr('client-id'),
|
|
}), function (data) {
|
|
if (data?.success) {
|
|
parent.html('<td colspan="3"><i class="green check icon"></i> ' + __('Field has been deleted successfully.') + '</td>').fadeOut(3000);
|
|
} else {
|
|
mainwp_set_message_zone('#mainwp-message-zone-client', __('Field can not be deleted.'), 'red');
|
|
}
|
|
}, 'json');
|
|
}
|
|
return false;
|
|
});
|
|
|
|
|
|
jQuery(document).on('click', '.mainwp-edit-client-note', function () {
|
|
let id = jQuery(this).attr('id').substring(13);
|
|
let note = jQuery('#mainwp-notes-' + id + '-note').html();
|
|
jQuery('#mainwp-notes-html').html(note == '' ? __('No saved notes. Click the Edit button to edit site notes.') : note);
|
|
jQuery('#mainwp-notes-note').val(note);
|
|
jQuery('#mainwp-notes-itemid').val(id);
|
|
jQuery('#mainwp-which-note').val('client'); // to fix conflict.
|
|
mainwp_notes_show(true);
|
|
return false;
|
|
});
|
|
|
|
|
|
let mainwp_notes_client_save = function () {
|
|
let normalid = jQuery('#mainwp-notes-itemid').val();
|
|
let newnote = jQuery('#mainwp-notes-note').val();
|
|
newnote = newnote.replace(/(?:\r\n|\r|\n)/g, '<br>');
|
|
let data = mainwp_secure_data({
|
|
action: 'mainwp_clients_notes_save',
|
|
clientid: normalid,
|
|
note: newnote
|
|
});
|
|
|
|
jQuery('#mainwp-notes-status').html('<i class="notched circle loading icon"></i> ' + __('Saving note. Please wait...')).show();
|
|
|
|
jQuery.post(ajaxurl, data, function (response) {
|
|
if (response.error != undefined) {
|
|
jQuery('#mainwp-notes-status').html(response.error).addClass('red');
|
|
} else if (response.result == 'SUCCESS') {
|
|
jQuery('#mainwp-notes-status').html(__('Note saved successfully.')).addClass('green');
|
|
if (jQuery('#mainwp-notes-' + normalid + '-note').length > 0) {
|
|
jQuery('#mainwp-notes-' + normalid + '-note').html(response?.esc_note_content??'');
|
|
jQuery('#mainwp-notes-html').html(response?.esc_note_content??'');
|
|
}
|
|
} else {
|
|
jQuery('#mainwp-notes-status').html(__('Undefined error occured while saving your note!')).addClass('red');
|
|
}
|
|
}, 'json');
|
|
|
|
setTimeout(function () {
|
|
jQuery('#mainwp-notes-status').fadeOut(300);
|
|
}, 3000);
|
|
|
|
jQuery('#mainwp-notes-html').show();
|
|
jQuery('#mainwp-notes-editor').hide();
|
|
jQuery('#mainwp-notes-save').hide();
|
|
jQuery('#mainwp-notes-edit').show();
|
|
|
|
};
|
|
|
|
// Handle import client for csv.
|
|
// eslint-disable-next-line complexity
|
|
const mainwp_manageclient_import_client = function () { // NOSONAR
|
|
if (import_client_stop_by_user)
|
|
return;
|
|
|
|
jQuery('#mainwp-importing-clients').hide();
|
|
import_client_current++;
|
|
if (import_client_current > import_client_total) {
|
|
jQuery('#mainwp-import-clients-status-message').hide();
|
|
jQuery('#mainwp_manageclients_btn_import').attr('disabled', 'true'); //Disable
|
|
if (import_client_count_success < import_client_total) {
|
|
jQuery('#mainwp_manageclients_btn_save_csv').prop("disabled", false); //Enable
|
|
}
|
|
|
|
if (import_client_count_fails == 0) {
|
|
jQuery('#mainwp_manageclients_import_logging .log').html('<div style="text-align:center;margin:50px 0;"><h2 class="ui icon header"><i class="green check icon"></i><div class="content">Congratulations!<div class="sub header">' + import_client_count_success + ' clients imported successfully.</div></div></h2></div>');
|
|
jQuery('#mainwp_manageclients_btn_import').hide();
|
|
setTimeout(function () {
|
|
location.reload();
|
|
}, 2000);
|
|
} else {
|
|
jQuery('#mainwp_manageclients_import_logging .log').append('<div class="ui yellow message">Process completed with errors. ' + import_client_count_fails + ' client(s) failed to import. Please review logs to resolve problems and try again.</div>');
|
|
jQuery('#mainwp_manageclients_btn_import').hide();
|
|
jQuery('#mainwp-import-clients-modal-try-again').show();
|
|
jQuery('#mainwp-import-clients-modal-continue').show();
|
|
}
|
|
|
|
jQuery('#mainwp_manageclients_import_logging').scrollTop(jQuery('#mainwp_manageclients_import_logging .log').height());
|
|
return;
|
|
}
|
|
|
|
let import_client_data = jQuery('#mainwp_manageclients_import_csv_line_' + import_client_current).attr('encoded-data');
|
|
let import_client_line_orig = jQuery('#mainwp_manageclients_import_csv_line_' + import_client_current).attr('original');
|
|
let decoded_client_val = JSON.parse(import_client_data);
|
|
|
|
let import_city = decoded_client_val['client.city'];
|
|
let import_address_1 = decoded_client_val['client.contact.address.1'];
|
|
let import_address_2 = decoded_client_val['client.contact.address.2'];
|
|
let import_country = decoded_client_val['client.country'];
|
|
let import_email = decoded_client_val['client.email'];
|
|
let import_name = decoded_client_val['client.name'];
|
|
let import_state = decoded_client_val['client.state'];
|
|
let import_suspended = decoded_client_val['client.suspended'];
|
|
let import_zip = decoded_client_val['client.zip'];
|
|
let import_url = decoded_client_val['client.url'];
|
|
|
|
if (typeof (import_city) == "undefined")
|
|
import_city = '';
|
|
if (typeof (import_address_1) == "undefined")
|
|
import_address_1 = '';
|
|
if (typeof (import_address_2) == "undefined")
|
|
import_address_2 = '';
|
|
if (typeof (import_country) == "undefined")
|
|
import_country = '';
|
|
if (typeof (import_email) == "undefined")
|
|
import_email = '';
|
|
if (typeof (import_name) == "undefined") {
|
|
import_name = '';
|
|
}
|
|
if (typeof (import_state) == "undefined") {
|
|
import_state = '';
|
|
}
|
|
if (typeof (import_suspended) == "undefined") {
|
|
import_suspended = '';
|
|
}
|
|
if (typeof (import_zip) == "undefined") {
|
|
import_zip = '';
|
|
}
|
|
if (typeof (import_url) == "undefined") {
|
|
import_url = [];
|
|
}
|
|
|
|
jQuery('#mainwp_manageclients_import_logging .log').append('<strong>[' + import_client_current + '] << ' + import_client_line_orig + '</strong><br/>');
|
|
|
|
let errors = [];
|
|
|
|
if (import_name == '') {
|
|
errors.push(__('Please enter the client name.'));
|
|
}
|
|
|
|
if (import_url == '') {
|
|
errors.push(__('Please enter the site URL.'));
|
|
}
|
|
|
|
if (import_email == '') {
|
|
errors.push(__('Please enter email of the client.'));
|
|
}
|
|
|
|
if (errors.length > 0) {
|
|
jQuery('#mainwp_manageclients_import_logging .log').append('[' + import_client_current + '] >> Error - ' + errors.join(" ") + '<br/>');
|
|
jQuery('#mainwp_manageclients_import_fail_logging').append('<span>' + import_client_line_orig + '</span>');
|
|
import_client_count_fails++;
|
|
mainwp_manageclient_import_client();
|
|
return;
|
|
}
|
|
|
|
// Checking client exist yet
|
|
let data_check_client = mainwp_secure_data({
|
|
action: 'mainwp_clients_check_client',
|
|
email: import_email,
|
|
});
|
|
jQuery.post(ajaxurl, data_check_client, function (response) {
|
|
if (response.success) {
|
|
// Create new client.
|
|
let data = mainwp_secure_data({
|
|
action: 'mainwp_clients_import_client',
|
|
name: import_name,
|
|
email: import_email,
|
|
urls: import_url,
|
|
city: import_city,
|
|
address_1: import_address_1,
|
|
address_2: import_address_2,
|
|
country: import_country,
|
|
state: import_state,
|
|
suspended: import_suspended,
|
|
zip: import_zip,
|
|
});
|
|
jQuery.post(ajaxurl, data, function (res_client) {
|
|
let add_result = 'Create a new [' + import_name + '] >> ';
|
|
if (res_client.success) {
|
|
import_client_count_success++;
|
|
} else {
|
|
jQuery('#mainwp_manageclients_import_fail_logging').append('<span>' + import_client_line_orig + '</span>');
|
|
import_client_count_fails++;
|
|
}
|
|
jQuery('#mainwp_manageclients_import_logging .log').append(add_result + res_client.data.message + "<br/>");
|
|
mainwp_manageclient_import_client();
|
|
});
|
|
} else {
|
|
let check_result = response?.data?.error;
|
|
errors.push(check_result);
|
|
}
|
|
|
|
if (errors.length > 0) {
|
|
jQuery('#mainwp_manageclients_import_fail_logging').append('<span>' + import_client_line_orig + '</span>');
|
|
jQuery('#mainwp_manageclients_import_logging .log').append(errors.join("\n") + '<br/>');
|
|
import_client_count_fails++;
|
|
mainwp_manageclient_import_client();
|
|
}
|
|
jQuery('#mainwp_manageclients_import_logging').scrollTop(jQuery('#mainwp_manageclients_import_logging .log').height());
|
|
}, 'json');
|
|
} |