/* eslint complexity: ["error", 100] */
jQuery(document).on('click', '.item.extension-inactive', function () {
jQuery('#mainwp-install-extensions-promo-modal').modal('show');
return false;
});
jQuery(document).on('click', '#mainwp-extension-update-check-retry', function () {
let button = jQuery(this);
let status = jQuery('#mainwp-extension-update-check-retry-status');
let failedText = button.data('failed-text');
button.addClass('loading disabled').prop('disabled', true);
status.text('');
jQuery.post(ajaxurl, mainwp_secure_data({
action: 'mainwp_extension_update_check_retry'
}), function (response) {
if (response && response.result === 'SUCCESS') {
location.reload();
return;
}
status.text(response && response.error ? response.error : failedText);
button.removeClass('loading disabled').prop('disabled', false);
}, 'json').fail(function () {
status.text(failedText);
button.removeClass('loading disabled').prop('disabled', false);
});
return false;
});
jQuery(document).on('click', '#mainwp-extensions-show-all', function () {
jQuery(this).addClass('green');
jQuery('#mainwp-extensions-show-extensions').removeClass('green');
jQuery('#mainwp-extensions-show-integrations').removeClass('green');
jQuery('#mainwp-extensions-list').find('.card[extension-model="integration"]').fadeIn(200);
jQuery('#mainwp-extensions-list').find('.card[extension-model="extension"]').fadeIn(200);
});
jQuery(document).on('click', '#mainwp-extensions-show-extensions', function () {
jQuery(this).addClass('green');
jQuery('#mainwp-extensions-show-all').removeClass('green');
jQuery('#mainwp-extensions-show-integrations').removeClass('green');
jQuery('#mainwp-extensions-list').find('.card[extension-model="integration"]').fadeOut(200);
jQuery('#mainwp-extensions-list').find('.card[extension-model="extension"]').fadeIn(200);
});
jQuery(document).on('click', '#mainwp-extensions-show-integrations', function () {
jQuery(this).addClass('green');
jQuery('#mainwp-extensions-show-extensions').removeClass('green');
jQuery('#mainwp-extensions-show-all').removeClass('green');
jQuery('#mainwp-extensions-list').find('.card[extension-model="integration"]').fadeIn(200);
jQuery('#mainwp-extensions-list').find('.card[extension-model="extension"]').fadeOut(200);
});
jQuery(document).on('click', '#mainwp-extensions-manage-toggle-on', function () {
jQuery('#mainwp-manage-add-ons-buttons').hide();
jQuery('#mainwp-manage-license-buttons').removeClass('hidden').show();
jQuery('#mainwp_com_api_key').focus();
return false;
});
jQuery(document).on('click', '#mainwp-extensions-manage-toggle-off', function () {
jQuery('#mainwp-manage-license-buttons').hide();
jQuery('#mainwp-manage-add-ons-buttons').show();
mainwp_extensions_check_activate_button_state();
return false;
});
function mainwp_extensions_check_activate_button_state() {
let api_key = (jQuery('#mainwp_com_api_key').val() || '').trim();
if (api_key === '') {
jQuery('#mainwp-extensions-grabkeys').addClass('disabled').attr('disabled', true);
} else {
jQuery('#mainwp-extensions-grabkeys').removeClass('disabled').attr('disabled', false);
}
}
function mainwp_extensions_update_status_header() {
let api_key = (jQuery('#mainwp_com_api_key').val() || '').trim();
let count_enabled = jQuery('#mainwp-extensions-list .card.mainwp-enabled-extension').length;
let count_not_activated = jQuery('#mainwp-extensions-list .card.mainwp-enabled-extension[license-status="deactivated"]').length;
let count_activated = count_enabled - count_not_activated;
let headerHtml = '';
if (api_key === '') {
headerHtml = '
';
} else if (count_not_activated > 0) {
let title = count_not_activated === 1 ?
count_not_activated + ' add-on not activated' :
count_not_activated + ' add-ons not activated';
headerHtml = '';
} else {
headerHtml = '';
}
jQuery('#mainwp-extensions-status-header').html(headerHtml);
}
// Run a callback after a delay.
function run_after_delay(callback, delay = 3000) {
if (typeof callback !== 'function') {
return;
}
setTimeout(callback, delay);
}
jQuery(document).ready(function () {
mainwp_extensions_check_activate_button_state();
jQuery('#mainwp_com_api_key').on('input', function () {
mainwp_extensions_check_activate_button_state();
});
});
jQuery(document).on('click', '.mainwp-extensions-add-menu', function () {
let extensionSlug = jQuery(this).parents('.plugin-card').attr('extension_slug');
let data = mainwp_secure_data({
action: 'mainwp_extension_add_menu',
slug: extensionSlug
});
jQuery.post(ajaxurl, data, function (response) {
if (response.result == 'SUCCESS')
location.reload();
else if (response.error) {
alert(response.error);
}
}, 'json');
return false;
});
jQuery(document).on('click', '.mainwp-extensions-remove-menu', function () {
let extensionSlug = jQuery(this).parents('.plugin-card').attr('extension_slug');
let data = mainwp_secure_data({
action: 'mainwp_extension_remove_menu',
slug: extensionSlug
});
jQuery.post(ajaxurl, data, function (response) {
if (response.result == 'SUCCESS')
location.reload();
}, 'json');
return false;
});
jQuery(function () { // NOSONAR - levels deep ok.
jQuery(document).on('click', '.mainwp-manage-extension-license', function () {
let currentCard = jQuery(this).closest(".card");
currentCard.find("#mainwp-extensions-api-form").toggle();
if (jQuery(this).attr('api-actived') == '0') {
extensions_activate_next(currentCard, false);
}
return false;
});
jQuery(document).on('click', '.extension-privacy-info-link', function () {
let slug = jQuery(this).attr('base-slug');
let title = '';
if (jQuery('#mainwp-extensions-privacy-info').find("input[base-slug='" + slug + "']").length > 0) {
title = jQuery('#mainwp-extensions-privacy-info').find("input[base-slug='" + slug + "']").attr('extension_title');
} else {
title = jQuery(this).closest('.ui.card').attr('extension-title');
}
let privacy = jQuery('#mainwp-extensions-privacy-info').find("input[base-slug='" + slug + "']").attr('privacy');
let integration = jQuery('#mainwp-extensions-privacy-info').find("input[base-slug='" + slug + "']").attr('integration');
let integration_url = jQuery('#mainwp-extensions-privacy-info').find("input[base-slug='" + slug + "']").attr('integration_url');
let integration_owner = jQuery('#mainwp-extensions-privacy-info').find("input[base-slug='" + slug + "']").attr('integration_owner');
let integration_owner_pp = jQuery('#mainwp-extensions-privacy-info').find("input[base-slug='" + slug + "']").attr('integration_owner_pp');
jQuery('#mainwp-privacy-info-modal').modal({
allowMultiple: true,
onShow: function () {
jQuery('#mainwp-privacy-info-modal').find('.header').html(title + ' Privacy Info');
if (0 == privacy) {
jQuery('#mainwp-privacy-info-modal').find('.content').html('Standalone Add-on. This Add-on does not use any 3rd party plugins or API\'s to integrate with your Dashboard. This add-on falls under the MainWP Plugin Privacy Policy.'); // NOSONAR - noopener - open safe.
} else if (1 == privacy) {
if (slug == 'advanced-uptime-monitor-extension') {
jQuery('#mainwp-privacy-info-modal').find('.content').html('Add-on integrates with a 3rd party API.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: ' + integration + '');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: ' + integration_owner + '');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: Better Uptime API');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: Better Stack, Inc.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: NodePing API');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: NodePing LLC');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: Site24x7 API');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: Zoho Corporation Pvt. Ltd.');
} else if (slug == 'mainwp-vulnerability-checker-extension') {
jQuery('#mainwp-privacy-info-modal').find('.content').html('Add-on integrates with a 3rd party API.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: ' + integration + '');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: ' + integration_owner + '');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: NVD NIST API');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: National Institute of Standards and Technology');
} else if (slug == 'mainwp-api-backups-extension') {
jQuery('#mainwp-privacy-info-modal').find('.content').html('Add-on integrates with a 3rd party API.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: ' + integration + '');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: ' + integration_owner + '');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: GridPane API');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: GridPane Inc.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: Digital Ocean API');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: DigitalOcean, LLC.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: Linode API');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: Akamai Technologies');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: Vultr API');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: Constant Company, LLC.');
} else {
jQuery('#mainwp-privacy-info-modal').find('.content').html('Add-on integrates with a 3rd party API.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: ' + integration + '');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: ' + integration_owner + '');
}
} else if (2 == privacy) {
jQuery('#mainwp-privacy-info-modal').find('.content').html('Add-on integrates with a 3rd party Plugin.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: ' + integration + '');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: ' + integration_owner + '');
} else if (slug == 'mainwp-page-speed-extension') {
jQuery('#mainwp-privacy-info-modal').find('.content').html('Add-on integrates with a 3rd party Plugin.');
jQuery('#mainwp-privacy-info-modal').find('.content').append('');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Integrates with: Insights from Google PageSpeed');
jQuery('#mainwp-privacy-info-modal').find('.content').append('
');
jQuery('#mainwp-privacy-info-modal').find('.content').append('Owned by: Matt Keys');
} else {
jQuery('#mainwp-privacy-info-modal').find('.content').html('This add-on is not developed by MainWP. Privacy info is not available.');
}
},
onHide: function () {
jQuery('#mainwp-privacy-info-modal').find('.header').html('');
jQuery('#mainwp-privacy-info-modal').find('.content').html('');
},
}).modal('show');
return false;
});
jQuery(document).on('click', '.extension-the-plugin-action', function () { // eslint-disable-line unicorn/no-nested-ternary
let parent = jQuery(this).closest(".card");
let slug = jQuery(parent).attr('extension-slug');
let loadingEl = parent.find(".action-feedback");
let whatAct = jQuery(this).attr("plugin-action");
let _callback = function () {
let $btn = jQuery(this); // ✅ store correct context
loadingEl.show();
let msg = MainWP.I18n.t('Disabling add-on...');
if (whatAct === 'active') {
msg = MainWP.I18n.t('Enabling add-on...');
} else if (whatAct === 'remove') {
msg = MainWP.I18n.t('Removing add-on...');
}
loadingEl.find('.ui.text.loader').html(msg);
let data = mainwp_secure_data({
action: 'mainwp_extension_plugin_action',
slug: slug,
what: whatAct,
});
function handleAddonResponse(response) {
$btn.attr('disabled', false); // ✅ correct button
if (!response) {
showError(MainWP.I18n.t('Undefined error'));
return;
}
if (response.result === 'SUCCESS') {
handleSuccess();
return;
}
if (response.error) {
showError(response.error);
return;
}
showError(MainWP.I18n.t('Undefined error'));
}
function handleSuccess() {
let msg = MainWP.I18n.t('Add-on disabled');
if (whatAct === 'active') {
msg = MainWP.I18n.t('Add-on enabled');
} else if (whatAct === 'remove') {
msg = MainWP.I18n.t('Add-on removed');
}
loadingEl.find('.ui.text.loader').html(msg);
run_after_delay(() => {
mainwp_forceReload('admin.php?page=Extensions');
}, 2000);
}
function showError(message) {
loadingEl.find('.ui.text.loader').html(message);
run_after_delay(() => {
loadingEl.hide();
});
}
$btn.attr('disabled', true);
jQuery.post(ajaxurl, data, handleAddonResponse, 'json');
};
if ('remove' === whatAct) {
let msg = MainWP.I18n.t('Are you sure you want to remove this add-on?');
mainwp_confirm(msg, _callback);
} else {
_callback();
}
return false;
});
});
jQuery(document).on('click', '.mainwp-extensions-activate', function () {
mainwp_extensions_activate(this, false);
});
function mainwp_extensions_activate(pObj, retring) {
let apiEl = jQuery(pObj).closest(".card");
let statusEl = apiEl.find(".activate-api-status");
let loadingEl = apiEl.find(".api-feedback");
loadingEl.hide();
if (jQuery(pObj).attr('license-status') == 'activated') {
return;
}
let data = false;
if (retring) {
loadingEl.show();
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Connection error detected. The Verify Certificate option has been switched to NO. Retrying...'));
} else {
let extensionSlug = jQuery(apiEl).attr('extension-slug');
let key = apiEl.find('input[type="text"].extension-api-key').val();
let email = apiEl.find('input[type="text"].extension-api-email').val();
if (key == '')
return;
data = mainwp_secure_data({
action: 'mainwp_extension_api_activate',
slug: extensionSlug,
key: key,
email: email
});
}
loadingEl.show();
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Activating license...'));
jQuery.post(ajaxurl, data, function (response) {
let success = false;
if (response) {
if (response.result == 'SUCCESS') {
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('License activated'));
statusEl.html(' Licensed');
success = true;
} else if (response.error) {
loadingEl.find('.ui.text.loader').html(response.error);
} else if (response.retry_action && response.retry_action == 1) {
jQuery("#mainwp_api_sslVerifyCertificate").val(0);
mainwp_extensions_activate(pObj, true);
return false;
} else {
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Undefined error'));
setTimeout(function () {
loadingEl.hide();
}, 3000);
}
} else {
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Undefined error'));
setTimeout(function () {
loadingEl.hide();
}, 3000);
}
if (success) {
setTimeout(function () {
mainwp_forceReload('admin.php?page=Extensions');
}, 2000);
}
}, 'json');
return false;
}
jQuery(document).on('click', '.mainwp-extension-license-cancel', function () {
let currentCard = jQuery(this).closest(".card");
currentCard.find("#mainwp-extensions-api-form").hide();
return false;
});
jQuery(document).on('click', '.mainwp-extensions-deactivate', function () {
let apiEl = jQuery(this).closest(".card");
let statusEl = apiEl.find(".activate-api-status");
let loadingEl = apiEl.find(".api-feedback");
let formEl = apiEl.find("#mainwp-extensions-api-form");
loadingEl.hide();
formEl.hide();
let extensionSlug = jQuery(apiEl).attr('extension-slug');
let extensionApiKey = jQuery(apiEl).find('.extension-api-key').val();
let data = mainwp_secure_data({
action: 'mainwp_extension_deactivate',
slug: extensionSlug,
api_key: extensionApiKey
});
loadingEl.show();
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Deactivating license...'));
jQuery.post(ajaxurl, data, function (response) {
if (response) {
if (response.result == 'SUCCESS') {
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('License deactivated'));
statusEl.html(' ' + MainWP.I18n.t('Activate License'));
statusEl.attr('api-actived', '0');
} else if (response.error) {
loadingEl.find('.ui.text.loader').html(response.error);
setTimeout(function () {
loadingEl.hide();
}, 3000);
} else {
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Undefined error'));
setTimeout(function () {
loadingEl.hide();
}, 3000);
}
} else {
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Undefined error'));
setTimeout(function () {
loadingEl.hide();
}, 3000);
}
setTimeout(function () {
mainwp_forceReload('admin.php?page=Extensions');
}, 2000);
}, 'json');
});
// Verify mainwp.com login credentials
jQuery(document).on('click', '#mainwp-extensions-savelogin', function () {
let autoTriggerInstall = jQuery(this).attr('data-context') === 'intro-notice';
mainwp_extensions_savelogin(false, autoTriggerInstall);
});
function mainwp_extensions_savelogin(retring, autoTriggerInstall) {
let api_key = jQuery('#mainwp_com_api_key').val() || '';
let statusEl = jQuery(".mainwp-extensions-api-loading");
let data = mainwp_secure_data({
action: 'mainwp_extension_saveextensionapilogin',
api_key: api_key,
saveLogin: jQuery('#extensions_api_savemylogin_chk').is(':checked') ? 1 : 0
});
if (retring) {
statusEl.find('.text').html(MainWP.I18n.t("Connection error detected. The Verify Certificate option has been switched to NO. Retrying...")).fadeIn();
} else {
statusEl.find('.text').html(MainWP.I18n.t('Validating...'));
}
statusEl.show();
jQuery.post(ajaxurl, data, function (response) { // NOSONAR - Complexity.
let undefError = false;
let isSuccess = false;
if (response) {
if (response.saved) {
isSuccess = true;
if (autoTriggerInstall) {
statusEl.find('.text').html(MainWP.I18n.t('Loading add-ons info...'));
mainwp_extension_grab_purchased(false);
} else {
statusEl.find('.text').html('Your API license key has been successfully saved!');
}
} else if (response.result == 'SUCCESS') {
isSuccess = true;
if (autoTriggerInstall) {
statusEl.find('.text').html(MainWP.I18n.t('Loading add-ons info...'));
mainwp_extension_grab_purchased(false);
} else {
statusEl.find('.text').html('API license key verification successful!');
}
} else if (response.error) {
statusEl.find('.text').html(response.error);
} else if (response.retry_action && response.retry_action == 1) {
jQuery("#mainwp_api_sslVerifyCertificate").val(0);
statusEl.fadeOut();
mainwp_extensions_savelogin(true, autoTriggerInstall);
return false;
} else {
undefError = true;
}
} else {
undefError = true;
}
if (undefError) {
statusEl.find('.text').html(MainWP.I18n.t('Undefined error. Please try again.'));
}
if (!autoTriggerInstall || response.error || undefError) {
setTimeout(function () {
statusEl.fadeOut();
if (isSuccess) {
jQuery('#mainwp-manage-license-buttons').hide();
jQuery('#mainwp-manage-add-ons-buttons').show();
mainwp_extensions_check_activate_button_state();
mainwp_extensions_update_status_header();
}
}, 3000);
}
}, 'json');
return false;
}
let maxActivateThreads = 8;
let totalActivateThreads = 0;
let currentActivateThreads = 0;
let finishedActivateThreads = 0;
let countSuccessActivation = 0;
// Bulk grab API keys
jQuery(document).on('click', '#mainwp-extensions-grabkeys', function () {
totalActivateThreads = jQuery('#mainwp-extensions-list .card[status="queue"]').length;
if (totalActivateThreads > 0) {
extensions_loop_next();
}
});
let extensions_loop_next = function () {
let extToActivate = jQuery('#mainwp-extensions-list .card[status="queue"]:first');
while (extToActivate.length > 0 && currentActivateThreads < maxActivateThreads) { // NOSONAR - variable modified outside the function.
extensions_activate_next(extToActivate, true);
extToActivate = jQuery('#mainwp-extensions-list .card[status="queue"]:first');
}
if (finishedActivateThreads == totalActivateThreads) {
if (countSuccessActivation == totalActivateThreads) {
setTimeout(function () {
mainwp_forceReload('admin.php?page=Extensions');
}, 2000);
} else {
mainwp_extensions_update_status_header();
}
}
};
let extensions_activate_next = function (pObj, bulkAct) {
pObj.attr("status", "running");
let apiEl = pObj;
let statusEl = apiEl.find(".activate-api-status");
let loadingEl = apiEl.find(".api-feedback");
let master_api_key = jQuery('#mainwp_com_api_key').val() || '';
let extensionSlug = apiEl.attr('extension-slug');
let data = mainwp_secure_data({
action: 'mainwp_extension_grabapikey',
master_api_key: master_api_key,
slug: extensionSlug
});
currentActivateThreads++;
loadingEl.show();
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Activating license...'));
if (apiEl.attr('license-status') == 'activated') {
finishedActivateThreads++;
currentActivateThreads--;
loadingEl.hide();
countSuccessActivation++;
if (bulkAct) {
extensions_loop_next();
}
return;
}
jQuery.post(ajaxurl, data, function (response) {
finishedActivateThreads++;
currentActivateThreads--;
if (response) {
if (response.result == 'SUCCESS') {
countSuccessActivation++;
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('License activated'));
statusEl.html(' Licensed');
apiEl.attr('license-status', 'activated');
loadingEl.hide();
if (!bulkAct) {
setTimeout(function () {
mainwp_forceReload('admin.php?page=Extensions');
}, 2000);
}
} else if (response.error) {
loadingEl.find('.ui.text.loader').html(response.error);
setTimeout(function () {
loadingEl.hide();
}, 3000);
} else {
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Undefined error'));
setTimeout(function () {
loadingEl.hide();
}, 3000);
}
} else {
loadingEl.find('.ui.text.loader').html(MainWP.I18n.t('Undefined error'));
setTimeout(function () {
loadingEl.hide();
}, 3000);
}
if (bulkAct) {
extensions_loop_next();
}
}, 'json');
};
jQuery(document).on('click', '#mainwp-extensions-bulkinstall, #mainwp-extensions-message-bulkinstall', function () {
let api_key = (jQuery('#mainwp_com_api_key').val() || '').trim();
if (api_key == '') {
mainwp_extension_grab_org_extensions();
} else {
mainwp_extension_grab_purchased(false);
}
})
let mainwp_extension_grab_purchased = function (retring) {
let api_key = (jQuery('#mainwp_com_api_key').val() || '').trim();
let statusEl = jQuery(".mainwp-extensions-api-loading");
let data = mainwp_secure_data({
action: 'mainwp_extension_getpurchased',
api_key: api_key
});
if (api_key == '') {
statusEl.find('.text').html(MainWP.I18n.t("Main API Key is required."));
statusEl.show();
setTimeout(function () {
statusEl.fadeOut();
}, 3000);
} else if (retring) {
statusEl.find('.text').html(MainWP.I18n.t("Connection error detected. The Verify Certificate option has been switched to NO. Retrying..."));
setTimeout(function () {
statusEl.fadeOut();
}, 3000);
} else {
statusEl.show();
statusEl.find('.text').html(MainWP.I18n.t('Loading add-ons info...'));
jQuery.post(ajaxurl, data, function (response) {
let undefError = false;
if (response) {
if (response.result == 'SUCCESS') {
statusEl.hide();
jQuery('#mainwp-get-purchased-extensions-modal').modal({
allowMultiple: true,
closable: false,
onHide: function () {
mainwp_forceReload('admin.php?page=Extensions');
}
}).modal('show');
jQuery('#mainwp-get-purchased-extensions-modal').find('.content').html(response.data);
if (jQuery('#extension_install_ext_slug').length > 0) {
mainwp_extension_select_to_install();
}
} else if (response.error) {
statusEl.find('.text').html(response.error);
} else if (response.retry_action && response.retry_action == 1) {
jQuery("#mainwp_api_sslVerifyCertificate").val(0);
statusEl.fadeOut();
mainwp_extension_grab_purchased(true);
return false;
} else {
undefError = true;
}
} else {
undefError = true;
}
if (undefError) {
statusEl.find('.text').html(MainWP.I18n.t('Undefined error occurred. Please try again.'));
}
setTimeout(function () {
statusEl.fadeOut();
}, 3000);
}, 'json');
}
return false;
}
let mainwp_extension_select_to_install = function () {
let inst_ext = jQuery('.item.extension[slug="' + jQuery('#extension_install_ext_slug').val() + '"]');
if (jQuery(inst_ext).length > 0) {
jQuery('mainwp-installing-extensions .ui.tab').removeClass('active');
let curtab = jQuery(inst_ext[0]).closest('.ui.tab').attr('data-tab');
jQuery('#mainwp-install-extensions-menu .item[data-tab=' + curtab + ']').trigger('click');
let install_chk = jQuery(inst_ext).find('input[type=checkbox]');
if (install_chk.length > 0) {
jQuery(install_chk[0]).trigger('click');
}
}
}
let mainwp_extension_grab_org_extensions = function () {
let statusEl = jQuery(".mainwp-extensions-api-loading");
let data = mainwp_secure_data({
action: 'mainwp_extension_getpurchased',
});
statusEl.removeClass('green');
statusEl.removeClass('yellow');
statusEl.show();
statusEl.find('.text').html(MainWP.I18n.t('Running. Please wait...'));
jQuery.post(ajaxurl, data, function (response) {
let undefError = false;
if (response) {
if (response.result == 'SUCCESS') {
jQuery('#mainwp-get-purchased-extensions-modal').modal({
allowMultiple: true,
closable: false,
onHide: function () {
mainwp_forceReload('admin.php?page=Extensions');
}
}).modal('show');
jQuery('#mainwp-get-purchased-extensions-modal').find('.content').html(response.data);
if (jQuery('#extension_install_ext_slug').length > 0) {
mainwp_extension_select_to_install();
}
statusEl.hide();
} else if (response.error) {
statusEl.addClass('red');
statusEl.find('.text').html(response.error).fadeIn();
} else {
undefError = true;
}
} else {
undefError = true;
}
if (undefError) {
statusEl.addClass('red');
statusEl.find('.text').html(MainWP.I18n.t('Undefined error. Please try again.')).fadeIn();
}
setTimeout(function () {
statusEl.fadeOut();
}, 3000);
}, 'json');
return false;
}
jQuery(document).on('click', '#mainwp-extensions-installnow', function () {
mainwp_extension_bulk_install();
return false;
})
let bulkExtensionsMaxThreads = mainwpParams['maximumInstallUpdateRequests'] == undefined ? 3 : mainwpParams['maximumInstallUpdateRequests'];
let bulkExtensionsCurrentThreads = 0;
let bulkExtensionsTotal = 0;
let bulkExtensionsFinished = 0;
let bulkExtensionsRunning = false;
let mainwp_extension_bulk_install = function () {
if (bulkExtensionsRunning)
return;
jQuery('.mainwp-installing-extensions input[type="checkbox"][status="queue"]:not(:checked)').closest('.extension-to-install').find('.installing-extension[status="queue"]').html('');
bulkExtensionsTotal = jQuery('.mainwp-installing-extensions input[type="checkbox"][status="queue"]:checked').length;
if (bulkExtensionsTotal == 0)
return false;
jQuery('.mainwp-installing-extensions input[type="checkbox"][status="queue"]:checked').closest('.extension-to-install').find('.installing-extension[status="queue"]').html(' ' + MainWP.I18n.t('Queued'));
mainwp_extension_bulk_install_next();
}
let mainwp_extension_bulk_install_next = function () {
while ((extToInstall = jQuery('.mainwp-installing-extensions input[type="checkbox"][status="queue"]:checked:first').closest('.extension-to-install')) && (extToInstall.length > 0) && (bulkExtensionsCurrentThreads < bulkExtensionsMaxThreads)) { // NOSONAR -- modified out side the function.
mainwp_extension_bulk_install_specific(extToInstall);
}
if ((bulkExtensionsTotal > 0) && (bulkExtensionsFinished == bulkExtensionsTotal)) { // NOSONAR -- modified out side the function.
mainwp_extension_bulk_activate();
}
}
let mainwp_extension_bulk_install_specific = function (pExtToInstall) {
bulkExtensionsRunning = true;
pExtToInstall.find('input[type="checkbox"]').attr('status', 'running');
bulkExtensionsCurrentThreads++;
let statusEl = pExtToInstall.find('.installing-extension');
statusEl.html('');
let data = mainwp_secure_data({
action: 'mainwp_extension_downloadandinstall',
download_link: pExtToInstall.attr('download-link'),
plugin_slug: pExtToInstall.attr('plugin-slug')
});
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: data,
success: function () {
return function (res_data) {
bulkExtensionsCurrentThreads--;
bulkExtensionsFinished++;
statusEl.html('');
let matches = res_data.match('(.*)');
let response = '';
if (matches) {
let response_json = matches[1];
response = JSON.parse(response_json);
}
if (response == '') {
statusEl.html('');
} else if (response.result == 'SUCCESS') {
statusEl.html('');
jQuery('.mainwp-installing-extensions').append('')
} else if (response.error) {
statusEl.html('');
} else {
statusEl.html('');
}
mainwp_extension_bulk_install_next();
}
}()
});
return false;
}
let mainwp_extension_bulk_activate = function () {
let plugins = [];
jQuery('.extension-installed-success').each(function () {
plugins.push(jQuery(this).attr('slug'));
});
if (plugins.length == 0) {
mainwp_extension_bulk_install_done();
return;
}
let data = mainwp_secure_data({
action: 'mainwp_extension_bulk_activate',
plugins: plugins
});
let statusEl = jQuery('#mainwp-bulk-activating-extensions-status');
statusEl.html('' + MainWP.I18n.t('Activating add-ons. Please wait...')).show();
jQuery.post(ajaxurl, data, function (response) {
statusEl.html('');
if (response == 'SUCCESS') {
statusEl.addClass('green');
statusEl.html(MainWP.I18n.t('Add-ons have been activated successfully!'));
statusEl.fadeOut(3000);
}
mainwp_extension_bulk_install_done();
});
}
let mainwp_extension_bulk_install_done = function () {
bulkExtensionsRunning = false;
let statusEl = jQuery('#mainwp-bulk-activating-extensions-status');
statusEl.addClass('green');
statusEl.html(MainWP.I18n.t("Installation completed successfully. Page will reload automatically in 3 seconds.")).show();
if (jQuery('.extension-installed-success').length == bulkExtensionsFinished) {
setTimeout(function () {
mainwp_forceReload('admin.php?page=Extensions');
}, 3000);
}
}
// Is this function still in use???
jQuery(document).on('click', '#mainwp-extensions-api-sslverify-certificate', function () {
let parent = jQuery(this).closest(".extension_api_sslverify_loading");
let statusEl = parent.find('span.status');
let loadingEl = parent.find("i");
let data = mainwp_secure_data({
action: 'mainwp_extension_apisslverifycertificate',
api_sslverify: jQuery("#mainwp_api_sslVerifyCertificate").val()
});
statusEl.hide();
loadingEl.show();
jQuery.post(ajaxurl, data, function (response) {
loadingEl.hide();
let undefError = false;
if (response) {
if (response.saved) {
statusEl.css('color', '#0074a2');
statusEl.html('MainWP Main API Key saved!').fadeIn();
setTimeout(function () {
statusEl.fadeOut();
}, 3000);
} else if (response.error) {
statusEl.css('color', 'red');
statusEl.html(response.error).fadeIn();
} else {
undefError = true;
}
} else {
undefError = true;
}
if (undefError) {
statusEl.css('color', 'red');
statusEl.html(' Undefined error').fadeIn();
}
}, 'json');
return false;
});
jQuery(function ($) {
jQuery(document).on('click', '#mainwp-check-all-sync-ext', function () {
$('.sync-ext-row').find("input:checkbox").each(function () {
$(this).attr('checked', true);
});
});
jQuery(document).on('click', '#mainwp-uncheck-all-sync-ext', function () {
$('.sync-ext-row').find("input:checkbox").each(function () {
$(this).attr('checked', false);
});
});
jQuery(document).on('click', '.mainwp-show-extensions', function () {
$('a.mainwp-show-extensions').removeClass('mainwp_action_down');
$(this).addClass('mainwp_action_down');
let gr = $(this).attr('group');
let selectedEl = $('#mainwp-available-extensions-list .mainwp-availbale-extension-holder.group-' + gr);
let installedGroup = $('.installed-group-exts');
installedGroup.hide();
if (gr == 'all') {
$('#mainwp-available-extensions-list .mainwp-availbale-extension-holder').fadeIn(500);
} else {
$('#mainwp-available-extensions-list .mainwp-availbale-extension-holder').hide();
if (selectedEl.length > 0) {
selectedEl.fadeIn(500);
} else {
installedGroup.fadeIn(500);
}
}
return false;
});
});