237 lines
7.2 KiB
JavaScript
237 lines
7.2 KiB
JavaScript
|
|
||
|
/*
|
||
|
* Function to download/activate add-ons on button click
|
||
|
*/
|
||
|
jQuery('.wppb-add-on .button').on( 'click', function(e) {
|
||
|
if( jQuery(this).attr('disabled') ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// Activate add-on
|
||
|
if( jQuery(this).hasClass('wppb-add-on-activate') ) {
|
||
|
e.preventDefault();
|
||
|
wppb_add_on_activate( jQuery(this) );
|
||
|
}
|
||
|
|
||
|
// Deactivate add-on
|
||
|
if( jQuery(this).hasClass('wppb-add-on-deactivate') ) {
|
||
|
e.preventDefault();
|
||
|
wppb_add_on_deactivate( jQuery(this) );
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Make deactivate button from Add-On is Active message button
|
||
|
*/
|
||
|
jQuery('.wppb-add-on').on( 'hover', function() {
|
||
|
|
||
|
$button = jQuery(this).find('.wppb-add-on-deactivate');
|
||
|
|
||
|
if( $button.length > 0 ) {
|
||
|
$button
|
||
|
.animate({
|
||
|
opacity: 1
|
||
|
}, 100);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
/*
|
||
|
* Make Add-On is Active message button from deactivate button
|
||
|
*/
|
||
|
jQuery('.wppb-add-on').on( 'mouseleave', function() {
|
||
|
|
||
|
$button = jQuery(this).find('.wppb-add-on-deactivate');
|
||
|
|
||
|
if( $button.length > 0 ) {
|
||
|
$button
|
||
|
.animate({
|
||
|
opacity: 0
|
||
|
}, 100);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Function that activates the add-on
|
||
|
*/
|
||
|
function wppb_add_on_activate( $button ) {
|
||
|
$activate_button = $button;
|
||
|
|
||
|
var fade_in_out_speed = 300;
|
||
|
var plugin = $activate_button.attr('href');
|
||
|
var add_on_index = $activate_button.parents('.wppb-add-on').index('.wppb-add-on');
|
||
|
var nonce = $activate_button.data('nonce');
|
||
|
|
||
|
$activate_button
|
||
|
.attr('disabled', true);
|
||
|
|
||
|
$spinner = $activate_button.siblings('.spinner');
|
||
|
|
||
|
$spinner.animate({
|
||
|
opacity: 0.7
|
||
|
}, 100);
|
||
|
|
||
|
// Remove the current displayed message
|
||
|
wppb_add_on_remove_status_message( $activate_button, fade_in_out_speed);
|
||
|
|
||
|
jQuery.post( ajaxurl, { action: 'wppb_add_on_activate', wppb_add_on_to_activate: plugin, wppb_add_on_index: add_on_index, nonce: nonce }, function( response ) {
|
||
|
|
||
|
add_on_index = response;
|
||
|
|
||
|
$activate_button = jQuery('.wppb-add-on').eq( add_on_index ).find('.button');
|
||
|
|
||
|
$activate_button
|
||
|
.blur()
|
||
|
.removeClass('wppb-add-on-activate')
|
||
|
.addClass('wppb-add-on-deactivate')
|
||
|
.removeAttr('disabled')
|
||
|
.text( jQuery('#wppb-add-on-deactivate-button-text').text() );
|
||
|
|
||
|
$spinner = $activate_button.siblings('.spinner');
|
||
|
|
||
|
$spinner.animate({
|
||
|
opacity: 0
|
||
|
}, 0);
|
||
|
|
||
|
// Set status confirmation message
|
||
|
wppb_add_on_set_status_message( $activate_button, 'dashicons-yes', jQuery('#wppb-add-on-activated-message-text').text(), fade_in_out_speed, 0, true );
|
||
|
wppb_add_on_remove_status_message( $activate_button, fade_in_out_speed, 2000 );
|
||
|
|
||
|
// Set is active message
|
||
|
wppb_add_on_set_status_message( $activate_button, 'dashicons-yes', jQuery('#wppb-add-on-is-active-message-text').html(), fade_in_out_speed, 2000 + fade_in_out_speed );
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Function that deactivates the add-on
|
||
|
*/
|
||
|
function wppb_add_on_deactivate( $button ) {
|
||
|
|
||
|
var fade_in_out_speed = 300;
|
||
|
var plugin = $button.attr('href');
|
||
|
var add_on_index = $button.parents('.wppb-add-on').index('.wppb-add-on');
|
||
|
var nonce = $button.data('nonce');
|
||
|
|
||
|
$button
|
||
|
.removeClass('wppb-add-on-deactivate')
|
||
|
.attr('disabled', true);
|
||
|
|
||
|
$spinner = $button.siblings('.spinner');
|
||
|
|
||
|
$spinner.animate({
|
||
|
opacity: 0.7
|
||
|
}, 100);
|
||
|
|
||
|
// Remove the current displayed message
|
||
|
wppb_add_on_remove_status_message( $button, fade_in_out_speed );
|
||
|
|
||
|
jQuery.post( ajaxurl, { action: 'wppb_add_on_deactivate', wppb_add_on_to_deactivate: plugin, wppb_add_on_index: add_on_index, nonce: nonce }, function( response ) {
|
||
|
|
||
|
add_on_index = response;
|
||
|
|
||
|
$button = jQuery('.wppb-add-on').eq( add_on_index ).find('.button');
|
||
|
|
||
|
$button
|
||
|
.blur()
|
||
|
.removeClass('wppb-add-on-is-active')
|
||
|
.addClass('wppb-add-on-activate')
|
||
|
.attr( 'disabled', false )
|
||
|
.text( jQuery('#wppb-add-on-activate-button-text').text() );
|
||
|
|
||
|
$spinner = $button.siblings('.spinner');
|
||
|
|
||
|
$spinner.animate({
|
||
|
opacity: 0
|
||
|
}, 0);
|
||
|
|
||
|
// Set status confirmation message
|
||
|
wppb_add_on_set_status_message( $button, 'dashicons-yes', jQuery('#wppb-add-on-deactivated-message-text').text(), fade_in_out_speed, 0, true );
|
||
|
wppb_add_on_remove_status_message( $button, fade_in_out_speed, 2000 );
|
||
|
|
||
|
// Set is active message
|
||
|
wppb_add_on_set_status_message( $button, 'dashicons-no-alt', jQuery('#wppb-add-on-is-not-active-message-text').html(), fade_in_out_speed, 2000 + fade_in_out_speed );
|
||
|
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Function used to remove the status message of an add-on
|
||
|
*
|
||
|
* @param object $button - The jQuery object of the add-on box button that was pressed
|
||
|
* @param int fade_in_out_speed - The speed of the fade in and out animations
|
||
|
* @param int delay - Delay removing of the message
|
||
|
*
|
||
|
*/
|
||
|
function wppb_add_on_remove_status_message( $button, fade_in_out_speed, delay ) {
|
||
|
|
||
|
if( typeof( delay ) == 'undefined' ) {
|
||
|
delay = 0;
|
||
|
}
|
||
|
|
||
|
setTimeout( function() {
|
||
|
|
||
|
$button.siblings('.dashicons')
|
||
|
.animate({
|
||
|
opacity: 0
|
||
|
}, fade_in_out_speed );
|
||
|
|
||
|
$button.siblings('.wppb-add-on-message')
|
||
|
.animate({
|
||
|
opacity: 0
|
||
|
}, fade_in_out_speed );
|
||
|
|
||
|
}, delay);
|
||
|
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Function used to remove the status message of an add-on
|
||
|
*
|
||
|
* @param object $button - The jQuery object of the add-on box button that was pressed
|
||
|
* @param string message_icon_class - The string name of the class we want the icon to have
|
||
|
* @param string message_text - The text we want the user to see
|
||
|
* @param int fade_in_out_speed - The speed of the fade in and out animations
|
||
|
* @param bool success - If true adds a class to style the message as a success one, if false adds a class to style the message as a failure
|
||
|
*
|
||
|
*/
|
||
|
function wppb_add_on_set_status_message( $button, message_icon_class, message_text, fade_in_out_speed, delay, success ) {
|
||
|
|
||
|
if( typeof( delay ) == 'undefined' ) {
|
||
|
delay = 0;
|
||
|
}
|
||
|
|
||
|
setTimeout(function() {
|
||
|
|
||
|
$button.siblings('.dashicons')
|
||
|
.css('opacity', 0)
|
||
|
.attr('class', 'dashicons')
|
||
|
.addClass( message_icon_class )
|
||
|
.animate({ opacity: 1}, fade_in_out_speed);
|
||
|
|
||
|
$button.siblings('.wppb-add-on-message')
|
||
|
.css('opacity', 0)
|
||
|
.attr( 'class', 'wppb-add-on-message' )
|
||
|
.html( message_text )
|
||
|
.animate({ opacity: 1}, fade_in_out_speed);
|
||
|
|
||
|
if( typeof( success ) != 'undefined' ) {
|
||
|
if( success == true ) {
|
||
|
$button.siblings('.dashicons')
|
||
|
.addClass('wppb-confirmation-success');
|
||
|
$button.siblings('.wppb-add-on-message')
|
||
|
.addClass('wppb-confirmation-success');
|
||
|
} else if( success == false ) {
|
||
|
$button.siblings('.dashicons')
|
||
|
.addClass('wppb-confirmation-error');
|
||
|
$button.siblings('.wppb-add-on-message')
|
||
|
.addClass('wppb-confirmation-error');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}, delay );
|
||
|
|
||
|
}
|