Files
wrapartamenty.pl/wp-content/plugins/wp-optimize-premium/js/power-tweaks.js
Roman Pyrih d6241cfa7a first commit
2024-12-19 15:27:13 +01:00

102 lines
2.4 KiB
JavaScript

(function($, send_command) {
/**
* Store the tweaks
*/
var tweaks = [];
/**
* Tweak object
*
* @param {jQuery object} $el - The tweak container
*/
var Tweak = function( $el ) {
var tweak = $el.data('tweak');
/**
* Run the tweak
*
* @param {string} action THe action: run, activate, deactivate
* @return {jQuery.ajax}
*/
this.run = function(action) {
$el.addClass('running');
return send_command(
'power_tweak',
{
sub_action: action,
data: {
tweak: tweak
}
},
this.on_run_complete
);
};
/**
*
* @param {object} response The ajax query response, JSON-decoded
*/
this.on_run_complete = function(response) {
var updated;
$el.removeClass('running');
// display message
if (response.success && response.message) {
updated = $('<div class="notice updated"><p>' + response.message + '</p></div>').insertAfter($el.find('h4'));
} else if (!response.success && response.errors) {
updated = $('<div class="notice notice-error"></div>').insertAfter($el.find('h4'));
$.each(response.errors, function(index, error) {
updated.append($('<p>' + error + '</p>'));
});
}
if (updated) {
setTimeout(function() {
updated.slideUp(300, function() {
updated.remove()
});
}, 2000);
}
// Show last update status
if (response.hasOwnProperty('last_updated')) {
$el.find('.last-updated .date').html(response.last_updated);
$el.find('button.run-tweak').prop('disabled', true).text(wpoptimize.post_meta_tweak_completed);
}
};
/**
* Event handler
*
* @param {Event} e
*/
this.on_run_action = function(e) {
var action;
if (!tweak) alert('No tweak ID found');
if ($(e.target).is('.run-tweak')) action = 'run';
if ($(e.target).is('.enable-tweak')) action = $(e.target).is(':checked') ? 'activate' : 'deactivate';
this.run(action);
}
// Add the events
$el.on('click', 'button.run-tweak', this.on_run_action.bind(this));
$el.on('change', 'input.enable-tweak', this.on_run_action.bind(this));
$el.on('click', '.show-details', function(e) {
e.preventDefault();
$el.find('.details').toggleClass('hidden');
})
}
// Document ready
$(function () {
$('.wpo-power-tweak').each(function(index, el) {
tweaks.push(new Tweak($(el)));
});
});
wp_optimize.power_tweaks = {
tweaks: tweaks
};
})(jQuery, wp_optimize.send_command);