Current File : /home/kelaby89/cartel.express/wp-content/plugins/trx_updater/assets/js/trx_updater-admin.js |
/* global jQuery:false */
/* global TRX_UPDATER_STORAGE:false */
jQuery( document ).ready( function() {
"use strict";
// Screen 'Dashboard - Update'
//-----------------------------------------------------------
// Update theme components from 'update-core' screen
var need_update = false,
update_buttons = jQuery( '.trx_updater_upgrade_button,.trx_updater_backups_button,#upgrade,#upgrade-plugins,#upgrade-plugins-2,#upgrade-themes,#upgrade-themes-2' );
// Add the description after the link "Check again"
if ( typeof TRX_UPDATER_STORAGE != 'undefined' && typeof TRX_UPDATER_STORAGE['upgrade_force_check'] != 'undefined' && TRX_UPDATER_STORAGE['upgrade_force_check'] != '' ) {
jQuery( '.update-last-checked' ).after( '<p class="trx_updater_force_check_description">' + TRX_UPDATER_STORAGE['upgrade_force_check'] + '</p>' );
}
// Add the attention message to the theme on the 'update-core' screen
if ( typeof TRX_UPDATER_STORAGE != 'undefined' && typeof TRX_UPDATER_STORAGE['upgrade_theme_attention'] != 'undefined' && TRX_UPDATER_STORAGE['upgrade_theme_attention'] != '' ) {
var attention = '<span class="trx_updater_attention">' + TRX_UPDATER_STORAGE['upgrade_theme_attention'] + '</span>';
jQuery( '#update-themes-table strong' ).each( function() {
var $target = jQuery( this );
if ( $target.text() == TRX_UPDATER_STORAGE['upgrade_theme_title'] ) {
$target.parent().append( attention );
}
} );
jQuery( '.theme-browser .theme[data-slug="' + TRX_UPDATER_STORAGE['upgrade_theme_slug'] + '"]' ).each( function() {
var $self = jQuery( this );
// Add attention to the upgrade msg on the theme-item
var $msg = $self.find( '.update-message p' );
if ( $msg.length === 0 ) {
$msg = $self.find( '.update-message' );
}
if ( $msg.length ) {
$msg.append( attention );
}
// Add attention to the upgrade msg on the theme-details
$self.find( '.more-details' ).on( 'click', function() {
setTimeout( function() {
jQuery( '.theme-overlay .theme-info .notice' ).append( '<p>' + attention + '</p>' );
}, 500 );
} );
} );
}
jQuery( '.trx_updater_upgrade_button:not([disabled]),.trx_updater_backups_button:not([disabled])' ).on(
'click', function(e) {
var button = jQuery(this),
action = button.hasClass( 'trx_updater_upgrade_button' )
? 'update'
: ( button.hasClass( 'trx_updater_restore_backups_button' )
? 'restore'
: ( button.hasClass( 'trx_updater_delete_backups_button' )
? 'delete'
: ''
)
),
wrapper = button.parents( '.trx_updater_upgrade,.trx_updater_backups' ),
checked = wrapper.find( 'input[name="checked[]"]:checked' );
if ( action !== '' ) {
if ( checked.length > 0 ) {
if ( action == 'update' || need_update !== false || confirm( TRX_UPDATER_STORAGE['msg_options_' + action] + ( action == 'delete' ? "\n" + TRX_UPDATER_STORAGE['msg_irreversable'] : '' ) ) ) {
if ( need_update === false ) {
need_update = checked.length;
//wrapper.find( '.trx_updater_upgrade_button,.trx_updater_backups_button' ).attr( 'disabled', 'disabled' )
update_buttons.attr( 'disabled', 'disabled' );
if ( wrapper.next().hasClass( 'trx_updater_info_box' ) ) {
wrapper.next().remove();
}
}
var chk = checked.eq(0);
if ( ! chk.next().hasClass( 'trx_updater_upgrade_status_wrap' ) ) {
chk.hide();
chk.after(
'<div class="trx_updater_upgrade_status_wrap">'
+ '<span class="trx_updater_upgrade_status trx_updater_upgrade_status_progress"></span>'
+ '</div>'
);
}
var status = chk.next().find('.trx_updater_upgrade_status');
// Add to URL parameter 'activate-multi' to prevent 'welcome screen' from some plugins
var url = trx_updater_add_to_url( chk.data( action + '-url' ), { 'trx_updater': need_update, 'activate-multi': 1 } );
// Update current plugin
jQuery.get(url)
.done( function(response) {
var result = false;
if ( action == 'update' ) {
if ( chk.data( 'update-result' ) !== undefined ) {
result = chk.data( 'update-result' );
} else {
if ( ! response ) {
response = '';
result = false;
} else {
if ( response.indexOf( '<html' ) < 0 ) {
response = '<div>' + response + '</div>'; // Wrap response if it contain only div.wrap
}
result = jQuery(response).find('.wrap > iframe').length > 0
|| jQuery(response).find('.wrap > script').text().indexOf( 'wp.updates.decrementCount(' ) > 0;
}
}
if ( chk.data( 'activate-url' ) ) {
chk.data( 'update-url', chk.data( 'activate-url' ) );
chk.data( 'activate-url', false );
chk.removeAttr( 'activate-url' );
chk.data( 'update-result', result );
} else {
chk.data( 'update-url', false );
chk.removeAttr( 'update-url' );
}
if ( ! chk.data( 'update-url' ) && window.wp && window.wp.updates && window.wp.updates.decrementCount ) {
window.wp.updates.decrementCount( "plugin" );
}
} else {
var rez = {};
if ( response === '' || response === 0 ) {
rez = { error: TRX_UPDATER_STORAGE['msg_ajax_error'] };
} else {
try {
rez = JSON.parse(response);
} catch (e) {
rez = { error: TRX_UPDATER_STORAGE['msg_ajax_error'] };
console.log(response);
}
}
result = rez.error == '';
}
if ( action != 'update' || ! chk.data( 'update-url' ) ) {
status.addClass( 'trx_updater_upgrade_status_' + ( ! result ? 'error' : 'success' ) );
}
setTimeout( function() { button.trigger( 'click' ); }, 10 );
} )
.fail( function() {
status.addClass( 'trx_updater_upgrade_status_error' );
chk.data( 'update-url', false );
chk.removeAttr( 'update-url' );
setTimeout( function() { button.trigger( 'click' ); }, 10 );
} )
.always( function() {
if ( action != 'update' || ! chk.data( 'update-url' ) ) {
need_update--;
chk.get(0).checked = false;
chk.removeAttr('checked');
status.removeClass( 'trx_updater_upgrade_status_progress' );
}
} );
}
} else {
if ( need_update === 0 && wrapper.find( '.trx_updater_upgrade_status' ).length > 0 ) {
wrapper.after(
'<div class="trx_updater_info_box trx_updater_info_box_' + ( wrapper.find( '.trx_updater_upgrade_status_error' ).length > 0 ? 'error' : 'success' ) + '">'
+ ( wrapper.find( '.trx_updater_upgrade_status_error' ).length > 0
? TRX_UPDATER_STORAGE['msg_'+action+'_error']
: TRX_UPDATER_STORAGE['msg_'+action+'_success']
)
+ '<br>' + TRX_UPDATER_STORAGE['msg_page_reload']
+ '</div>'
);
//wrapper.find( '.trx_updater_upgrade_button,.trx_updater_backups_button' ).removeAttr( 'disabled' );
update_buttons.removeAttr( 'disabled' );
need_update = false;
setTimeout( function() {
location.reload();
}, 3000 );
}
}
}
e.preventDefault();
return false;
}
);
// Settings page
//----------------------------------------------------------------------
// Show/Hide backups on checkbox changed
jQuery( 'input[type="checkbox"][name="trx_updater_backups_enable"]' ).on(
'change', function(e) {
if ( jQuery(this).get(0).checked ) {
jQuery('.trx_updater_option_backups_list_row').show();
} else {
jQuery('.trx_updater_option_backups_list_row').hide();
}
e.preventDefault();
return false;
}
);
// Restore or Delete selected backups
jQuery( 'input[type="button"][name="trx_updater_backups_restore"],input[type="button"][name="trx_updater_backups_delete"]' ).on(
'click', function(e) {
var action = jQuery(this).attr('name') == 'trx_updater_backups_restore' ? 'restore' : 'delete';
if ( confirm( TRX_UPDATER_STORAGE['msg_options_' + action] ) ) {
var checked = trx_updater_get_checklist_values( jQuery( '.trx_updater_option_backups_list' ) );
if ( checked.length > 0 ) {
var td = jQuery(this).parents('td').addClass( 'trx_updater_loading' );
jQuery
.post(
TRX_UPDATER_STORAGE['ajax_url'],
{
nonce: TRX_UPDATER_STORAGE['ajax_nonce'],
action: 'trx_updater_' + action + '_backups',
backups: checked.join(',')
}
)
.done( function(response) {
var rez = {};
if (response==='' || response===0) {
rez = { error: TRX_UPDATER_STORAGE['msg_ajax_error'] };
} else {
try {
rez = JSON.parse(response);
} catch (e) {
rez = { error: TRX_UPDATER_STORAGE['msg_ajax_error'] };
console.log(response);
}
}
for (var i=0; i<checked.length; i++) {
jQuery('input[type="checkbox"][name="trx_updater_backups_item_'+checked[i]+'"]').each( function() {
jQuery(this).parent().remove();
});
}
if ( jQuery( '.trx_updater_option_backups_list_row input[type="checkbox"]' ).length == 0 ) {
jQuery( '.trx_updater_option_backups_list_row' ).hide();
}
td.removeClass( 'trx_updater_loading' );
alert( ( typeof rez.error != 'undefined' && rez.error != '' ? rez.error + "\n\n" : '')
+ ( typeof rez.success != 'undefined' && rez.success != '' ? rez.success : '')
);
} );
} else {
alert( TRX_UPDATER_STORAGE['msg_options_select'] );
}
}
e.preventDefault();
return false;
}
);
// Utilities
//-------------------------------------------------------------
// Collect values of checkboxes inside the specified container
function trx_updater_get_checklist_values( cont ) {
var values = [];
jQuery( cont ).find( 'input[type="checkbox"]:checked' ).each( function() {
values.push( jQuery(this).val() );
} );
return values;
}
// Add/Change arguments to the url address
function trx_updater_add_to_url(loc, prm) {
var ignore_empty = arguments[2] !== undefined ? arguments[2] : true;
var q = loc.indexOf('?');
var attr = {};
if (q > 0) {
var qq = loc.substr(q+1).split('&');
var parts = '';
for (var i=0; i < qq.length; i++) {
parts = qq[i].split('=');
attr[parts[0]] = parts.length>1 ? parts[1] : '';
}
}
for (var p in prm) {
attr[p] = prm[p];
}
loc = (q > 0 ? loc.substr(0, q) : loc) + '?';
var i = 0;
for (p in attr) {
if (ignore_empty && attr[p] === '') continue;
loc += (i++ > 0 ? '&' : '') + p + '=' + attr[p];
}
return loc;
}
} );