AnkietyGO/profile-builder/assets/js/jquery-pb-add-ons.js

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 );
}