晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/stando/www/wp-content/plugins/wp-smush-pro/_src/js/modules/ |
Upload File : |
import Smush from '../smush/smush';
const remove_element = function( el, timeout ) {
if ( typeof timeout === 'undefined' ) {
timeout = 100;
}
el.fadeTo( timeout, 0, function() {
el.slideUp( timeout, function() {
el.remove();
} );
} );
};
jQuery( function( $ ) {
'use strict';
/**
* Disable the action links *
*
* @param c_element
*/
const disable_links = function( c_element ) {
const parent = c_element.parent();
//reduce parent opacity
parent.css( { opacity: '0.5' } );
//Disable Links
parent.find( 'a' ).attr( 'disabled', 'disabled' );
};
/**
* Enable the Action Links *
*
* @param c_element
*/
const enable_links = function( c_element ) {
const parent = c_element.parent();
//reduce parent opacity
parent.css( { opacity: '1' } );
//Disable Links
parent.find( 'a' ).removeAttr( 'disabled' );
};
/**
* Restore image request with a specified action for Media Library / NextGen Gallery
*
* @param {Object} e
* @param {string} currentButton
* @param {string} smushAction
* @param {string} action
*/
const process_smush_action = function(
e,
currentButton,
smushAction,
action
) {
// If disabled.
if ( 'disabled' === currentButton.attr( 'disabled' ) ) {
return;
}
e.preventDefault();
// Remove Error.
$( '.wp-smush-error' ).remove();
// Hide stats.
$( '.smush-stats-wrapper' ).hide();
let mode = 'grid';
if ( 'smush_restore_image' === smushAction ) {
if (
$( document ).find( 'div.media-modal.wp-core-ui' ).length > 0
) {
mode = 'grid';
} else {
mode =
window.location.search.indexOf( 'item' ) > -1
? 'grid'
: 'list';
}
}
// Get the image ID and nonce.
const params = {
action: smushAction,
attachment_id: currentButton.data( 'id' ),
mode,
_nonce: currentButton.data( 'nonce' ),
};
// Reduce the opacity of stats and disable the click.
disable_links( currentButton );
currentButton.html(
'<span class="spinner wp-smush-progress">' +
wp_smush_msgs[ action ] +
'</span>'
);
// Restore the image.
$.post( ajaxurl, params, function( r ) {
// Reset all functionality.
enable_links( currentButton );
if ( r.success && 'undefined' !== typeof r.data ) {
// Replace in immediate parent for NextGEN.
if (
'undefined' !== typeof this.data &&
this.data.indexOf( 'nextgen' ) > -1
) {
// Show the smush button, and remove stats and restore option.
currentButton
.parents()
.eq( 1 )
.html( r.data.stats );
} else if ( 'restore' === action ) {
// Show the smush button, and remove stats and restore option.
currentButton
.parents()
.eq( 1 )
.html( r.data.stats );
} else {
currentButton
.parents()
.eq( 1 )
.html( r.data );
}
if ( 'undefined' !== typeof r.data && 'restore' === action ) {
Smush.updateImageStats( r.data.new_size );
}
} else if ( r.data.error_msg ) {
// Show error.
currentButton.parent().append( r.data.error_msg );
}
} );
};
/**
* Validates the Resize Width and Height against the Largest Thumbnail Width and Height
*
* @param wrapper_div jQuery object for the whole setting row wrapper div
* @param width_only Whether to validate only width
* @param height_only Validate only Height
* @return {boolean} All Good or not
*/
const validate_resize_settings = function(
wrapper_div,
width_only,
height_only
) {
const resize_checkbox = wrapper_div.find(
'#wp-smush-resize, #wp-smush-resize-quick-setup'
);
if ( ! height_only ) {
var width_input = wrapper_div.find(
'#wp-smush-resize_width, #quick-setup-resize_width'
);
var width_error_note = wrapper_div.find(
'.sui-notice-info.wp-smush-update-width'
);
}
if ( ! width_only ) {
var height_input = wrapper_div.find(
'#wp-smush-resize_height, #quick-setup-resize_height'
);
var height_error_note = wrapper_div.find(
'.sui-notice-info.wp-smush-update-height'
);
}
let width_error = false;
let height_error = false;
//If resize settings is not enabled, return true
if ( ! resize_checkbox.is( ':checked' ) ) {
return true;
}
//Check if we have localised width and height
if (
'undefined' === typeof wp_smushit_data.resize_sizes ||
'undefined' === typeof wp_smushit_data.resize_sizes.width
) {
//Rely on server validation
return true;
}
//Check for width
if (
! height_only &&
'undefined' !== typeof width_input &&
parseInt( wp_smushit_data.resize_sizes.width ) >
parseInt( width_input.val() )
) {
width_input.parent().addClass( 'sui-form-field-error' );
width_error_note.show( 'slow' );
width_error = true;
} else {
//Remove error class
width_input.parent().removeClass( 'sui-form-field-error' );
width_error_note.hide();
if ( height_input.hasClass( 'error' ) ) {
height_error_note.show( 'slow' );
}
}
//Check for height
if (
! width_only &&
'undefined' !== typeof height_input &&
parseInt( wp_smushit_data.resize_sizes.height ) >
parseInt( height_input.val() )
) {
height_input.parent().addClass( 'sui-form-field-error' );
//If we are not showing the width error already
if ( ! width_error ) {
height_error_note.show( 'slow' );
}
height_error = true;
} else {
//Remove error class
height_input.parent().removeClass( 'sui-form-field-error' );
height_error_note.hide();
if ( width_input.hasClass( 'error' ) ) {
width_error_note.show( 'slow' );
}
}
if ( width_error || height_error ) {
return false;
}
return true;
};
/**
* Update the progress bar width if we have images that needs to be resmushed
*
* @param unsmushed_count
* @return {boolean}
*/
const update_progress_bar_resmush = function( unsmushed_count ) {
if ( 'undefined' === typeof unsmushed_count ) {
return false;
}
const smushed_count = wp_smushit_data.count_total - unsmushed_count;
//Update the Progress Bar Width
// get the progress bar
const $progress_bar = jQuery(
'.bulk-smush-wrapper .wp-smush-progress-inner'
);
if ( $progress_bar.length < 1 ) {
return;
}
const width = ( smushed_count / wp_smushit_data.count_total ) * 100;
// increase progress
$progress_bar.css( 'width', width + '%' );
};
const run_re_check = function( process_settings ) {
const button = $( '.wp-smush-scan' );
// Empty the button text and add loader class.
button
.text( '' )
.addClass( 'sui-button-onload sui-icon-loader sui-loading' )
.blur();
// Check if type is set in data attributes.
let scan_type = button.data( 'type' );
scan_type = 'undefined' === typeof scan_type ? 'media' : scan_type;
// Remove the Skip resmush attribute from button.
$( '.wp-smush-all' ).removeAttr( 'data-smush' );
// Remove notices.
const notices = $( '.sui-notice-top.sui-notice-success' );
notices.slideUp( 100, function() {
notices.remove();
} );
// Disable Bulk smush button and itself.
$( '.wp-smush-all' ).attr( 'disabled', 'disabled' );
// Hide Settings changed Notice.
$( '.wp-smush-settings-changed' ).hide();
// Ajax params.
const params = {
action: 'scan_for_resmush',
type: scan_type,
get_ui: true,
process_settings,
wp_smush_options_nonce: jQuery( '#wp_smush_options_nonce' ).val(),
};
// Send ajax request and get ids if any.
$.get( ajaxurl, params, function( r ) {
// Check if we have the ids, initialize the local variable.
if ( 'undefined' !== typeof r.data ) {
// Update Resmush id list.
if ( 'undefined' !== typeof r.data.resmush_ids ) {
wp_smushit_data.resmush = r.data.resmush_ids;
// Update wp_smushit_data ( Smushed count, Smushed Percent, Image count, Super smush count, resize savings, conversion savings ).
if ( 'undefinied' !== typeof wp_smushit_data ) {
wp_smushit_data.count_smushed =
'undefined' !== typeof r.data.count_smushed
? r.data.count_smushed
: wp_smushit_data.count_smushed;
wp_smushit_data.count_supersmushed =
'undefined' !== typeof r.data.count_supersmushed
? r.data.count_supersmushed
: wp_smushit_data.count_supersmushed;
wp_smushit_data.count_images =
'undefined' !== typeof r.data.count_image
? r.data.count_image
: wp_smushit_data.count_images;
wp_smushit_data.size_before =
'undefined' !== typeof r.data.size_before
? r.data.size_before
: wp_smushit_data.size_before;
wp_smushit_data.size_after =
'undefined' !== typeof r.data.size_after
? r.data.size_after
: wp_smushit_data.size_after;
wp_smushit_data.savings_resize =
'undefined' !== typeof r.data.savings_resize
? r.data.savings_resize
: wp_smushit_data.savings_resize;
wp_smushit_data.savings_conversion =
'undefined' !== typeof r.data.savings_conversion
? r.data.savings_conversion
: wp_smushit_data.savings_conversion;
wp_smushit_data.count_resize =
'undefined' !== typeof r.data.count_resize
? r.data.count_resize
: wp_smushit_data.count_resize;
}
if ( 'nextgen' === scan_type ) {
wp_smushit_data.bytes =
parseInt( wp_smushit_data.size_before ) -
parseInt( wp_smushit_data.size_after );
}
// Hide the Existing wrapper.
const notices = $( '.bulk-smush-wrapper .sui-notice' );
if ( notices.length > 0 ) {
notices.hide();
$( '.wp-smush-pagespeed-recommendation' ).hide();
}
// Remove existing Re-Smush notices.
$( '.wp-smush-resmush-notice' ).remove();
// Show Bulk wrapper.
$( '.wp-smush-bulk-wrapper' ).show();
}
// If content is received, Prepend it.
if ( 'undefined' !== typeof r.data.content ) {
$(
'.bulk-smush-wrapper .sui-box-body > p:first-of-type'
).after( r.data.content );
}
// If we have any notice to show.
if ( 'undefined' !== typeof r.data.notice ) {
let type = 'success';
if ( 'undefined' !== typeof r.data.noticeType ) {
type = r.data.noticeType;
}
window.SUI.openNotice(
'wp-smush-ajax-notice',
'<p>' + r.data.notice + '</p>',
{ type, icon: 'check-tick' }
);
}
// Hide errors.
$( 'div.smush-final-log' ).hide();
// Hide Super Smush notice if it's enabled in media settings.
if (
'undefined' !== typeof r.data.super_smush &&
r.data.super_smush
) {
const enable_lossy = jQuery( '.wp-smush-enable-lossy' );
if ( enable_lossy.length > 0 ) {
enable_lossy.remove();
}
if ( 'undefined' !== r.data.super_smush_stats ) {
$( '.super-smush-attachments .wp-smush-stats' ).html(
r.data.super_smush_stats
);
}
}
Smush.updateStats( scan_type );
}
} ).always( function() {
// Hide the progress bar.
jQuery(
'.bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper'
).hide();
// Add check complete status to button.
button
.text( wp_smush_msgs.resmush_complete )
.removeClass( 'sui-button-onload sui-icon-loader sui-loading' )
.addClass( 'smush-button-check-success' );
// Remove success message from button.
setTimeout( function() {
button
.removeClass( 'smush-button-check-success' )
.html(
'<i class="sui-icon-update" aria-hidden="true"></i>' +
wp_smush_msgs.resmush_check
);
}, 2000 );
$( '.wp-smush-all' ).removeAttr( 'disabled' );
} );
};
// Scroll the element to top of the page.
const goToByScroll = function( selector ) {
// Scroll if element found.
if ( $( selector ).length > 0 ) {
$( 'html, body' ).animate(
{
scrollTop: $( selector ).offset().top - 100,
},
'slow'
);
}
};
const update_cummulative_stats = function( stats ) {
//Update Directory Smush Stats
if ( 'undefined' !== typeof stats.dir_smush ) {
const stats_human = $(
'li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-human'
);
const stats_percent = $(
'li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-percent'
);
// Do not replace if 0 savings.
if ( stats.dir_smush.bytes > 0 ) {
$( '.wp-smush-dir-link' ).addClass( 'sui-hidden' );
// Hide selector.
$(
'li.smush-dir-savings .wp-smush-stats-label-message'
).hide();
//Update Savings in bytes
if ( stats_human.length > 0 ) {
stats_human.html( stats.dir_smush.human );
} else {
var span =
'<span class="wp-smush-stats-human">' +
stats.dir_smush.bytes +
'</span>';
}
//Percentage section
if ( stats.dir_smush.percent > 0 ) {
// Show size and percentage separator.
$(
'li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-sep'
).removeClass( 'sui-hidden' );
//Update Optimisation percentage
if ( stats_percent.length > 0 ) {
stats_percent.html( stats.dir_smush.percent + '%' );
} else {
var span =
'<span class="wp-smush-stats-percent">' +
stats.dir_smush.percent +
'%' +
'</span>';
}
}
} else {
$( '.wp-smush-dir-link' ).removeClass( 'sui-hidden' );
}
}
//Update Combined stats
if (
'undefined' !== typeof stats.combined_stats &&
stats.combined_stats.length > 0
) {
const c_stats = stats.combined_stats;
let smush_percent = ( c_stats.smushed / c_stats.total_count ) * 100;
smush_percent = WP_Smush.helpers.precise_round( smush_percent, 1 );
//Smushed Percent
if ( smush_percent ) {
$(
'div.wp-smush-count-total span.wp-smush-images-percent'
).html( smush_percent );
}
//Update Total Attachment Count
if ( c_stats.total_count ) {
$(
'span.wp-smush-count-total span.wp-smush-total-optimised'
).html( c_stats.total_count );
}
//Update Savings and Percent
if ( c_stats.savings ) {
$( 'span.wp-smush-savings span.wp-smush-stats-human' ).html(
c_stats.savings
);
}
if ( c_stats.percent ) {
$( 'span.wp-smush-savings span.wp-smush-stats-percent' ).html(
c_stats.percent
);
}
}
};
/**
* When 'All' is selected for the Image Sizes setting, select all available sizes.
*
* @since 3.2.1
*/
$( '#all-image-sizes' ).on( 'change', function() {
$( 'input[name^="wp-smush-image_sizes"]' ).prop( 'checked', true );
} );
/**
* Handle re-check api status button click (Settings)
*
* @since 3.2.0.2
*/
$( '#wp-smush-update-api-status' ).on( 'click', function( e ) {
e.preventDefault();
//$(this).prop('disabled', true);
$( this ).addClass( 'sui-button-onload' );
$.post( ajaxurl, { action: 'recheck_api_status' }, function() {
location.reload();
} );
} );
/**
* Handle the Smush Stats link click
*/
$( 'body' ).on( 'click', 'a.smush-stats-details', function( e ) {
//If disabled
if ( 'disabled' == $( this ).attr( 'disabled' ) ) {
return false;
}
// prevent the default action
e.preventDefault();
//Replace the `+` with a `-`
const slide_symbol = $( this ).find( '.stats-toggle' );
$( this )
.parents()
.eq( 1 )
.find( '.smush-stats-wrapper' )
.slideToggle();
slide_symbol.text( slide_symbol.text() == '+' ? '-' : '+' );
} );
/** Handle smush button click **/
$( 'body' ).on( 'click', '.wp-smush-send:not(.wp-smush-resmush)', function(
e
) {
// prevent the default action
e.preventDefault();
new Smush( $( this ), false );
} );
/** Handle show in bulk smush button click **/
$( 'body' ).on( 'click', '.wp-smush-remove-skipped', function( e ) {
e.preventDefault();
const self = $( this );
// Send Ajax request to remove the image from the skip list.
$.post( ajaxurl, {
action: 'remove_from_skip_list',
id: self.attr( 'data-id' ),
} ).done( ( response ) => {
if (
response.success &&
'undefined' !== typeof response.data.links
) {
self.parent()
.parent()
.find( '.smush-status' )
.text( wp_smush_msgs.not_processed );
e.target.closest( '.smush-status-links' ).innerHTML =
response.data.links;
}
} );
} );
/** Handle NextGen Gallery smush button click **/
$( 'body' ).on( 'click', '.wp-smush-nextgen-send', function( e ) {
// prevent the default action
e.preventDefault();
new Smush( $( this ), false, 'nextgen' );
} );
/** Handle NextGen Gallery Bulk smush button click **/
$( 'body' ).on( 'click', '.wp-smush-nextgen-bulk', function( e ) {
// prevent the default action
e.preventDefault();
// Remove existing Re-Smush notices.
$( '.wp-smush-resmush-notice' ).remove();
//Check for ids, if there is none (Unsmushed or lossless), don't call smush function
if (
'undefined' === typeof wp_smushit_data ||
( wp_smushit_data.unsmushed.length === 0 &&
wp_smushit_data.resmush.length === 0 )
) {
return false;
}
jQuery( '.wp-smush-all, .wp-smush-scan' ).attr(
'disabled',
'disabled'
);
$( '.wp-smush-notice.wp-smush-remaining' ).hide();
new Smush( $( this ), true, 'nextgen' );
} );
/** Restore: Media Library **/
$( 'body' ).on( 'click', '.wp-smush-action.wp-smush-restore', function(
e
) {
const current_button = $( this );
process_smush_action(
e,
current_button,
'smush_restore_image',
'restore'
);
} );
/** Resmush: Media Library **/
$( 'body' ).on( 'click', '.wp-smush-action.wp-smush-resmush', function(
e
) {
process_smush_action( e, $( this ), 'smush_resmush_image', 'smushing' );
} );
/** Restore: NextGen Gallery **/
$( 'body' ).on(
'click',
'.wp-smush-action.wp-smush-nextgen-restore',
function( e ) {
process_smush_action(
e,
$( this ),
'smush_restore_nextgen_image',
'restore'
);
}
);
/** Resmush: NextGen Gallery **/
$( 'body' ).on(
'click',
'.wp-smush-action.wp-smush-nextgen-resmush',
function( e ) {
process_smush_action(
e,
$( this ),
'smush_resmush_nextgen_image',
'smushing'
);
}
);
//Scan For resmushing images
$( '.wp-smush-scan' ).on( 'click', function( e ) {
e.preventDefault();
run_re_check( false );
} );
//Dismiss Welcome notice
//@todo: Use it for popup
$( '#wp-smush-welcome-box .smush-dismiss-welcome' ).on( 'click', function(
e
) {
e.preventDefault();
const $el = $( this )
.parents()
.eq( 1 );
remove_element( $el );
//Send a ajax request to save the dismissed notice option
const param = {
action: 'dismiss_welcome_notice',
};
$.post( ajaxurl, param );
} );
//Remove Notice
$( 'body' ).on( 'click', '.wp-smush-notice .icon-fi-close', function( e ) {
e.preventDefault();
const $el = $( this ).parent();
remove_element( $el );
} );
/**
* Parse remove data change.
*/
$( 'input[name=wp-smush-keep_data]' ).on( 'change', function( e ) {
const otherClass =
'keep_data-true' === e.target.id
? 'keep_data-false'
: 'keep_data-true';
e.target.parentNode.classList.add( 'active' );
document
.getElementById( otherClass )
.parentNode.classList.remove( 'active' );
} );
// On Click Update Settings. Check for change in settings.
$( 'button#wp-smush-save-settings' ).on( 'click', function( e ) {
e.preventDefault();
let setting_type = '';
const setting_input = $( 'input[name="setting-type"]' );
// Check if setting type is set in the form.
if ( setting_input.length > 0 ) {
setting_type = setting_input.val();
}
// Show the spinner.
const self = $( this );
self.parent()
.find( 'span.sui-icon-loader.sui-loading' )
.removeClass( 'sui-hidden' );
// Save settings if in network admin.
if ( '' != setting_type && 'network' == setting_type ) {
// Ajax param.
let param = {
action: 'save_settings',
wp_smush_options_nonce: $( '#wp_smush_options_nonce' ).val(),
};
param =
jQuery.param( param ) +
'&' +
jQuery( 'form#wp-smush-settings-form' ).serialize();
// Send ajax, Update Settings, And Check For resmush.
jQuery.post( ajaxurl, param ).done( function() {
jQuery( 'form#wp-smush-settings-form' ).submit();
return true;
} );
} else {
$( '.wp-smush-hex-notice' ).hide();
// Update text.
self.attr( 'disabled', 'disabled' ).addClass( 'button-grey' );
// Update save button text.
if (
'undefined' !== typeof self.attr( 'data-msg' ) &&
self.attr( 'data-msg' ).length > 0
) {
self.html( self.attr( 'data-msg' ) );
} else {
self.html( wp_smush_msgs.checking );
}
// Check if type is set in data attributes.
let scan_type = self.data( 'type' );
scan_type = 'undefined' === typeof scan_type ? 'media' : scan_type;
// Ajax param.
let param = {
action: 'scan_for_resmush',
wp_smush_options_nonce: jQuery(
'#wp_smush_options_nonce'
).val(),
type: scan_type,
};
param =
jQuery.param( param ) +
'&' +
jQuery( 'form#wp-smush-settings-form' ).serialize();
// Send ajax, Update Settings, And Check For resmush.
jQuery.post( ajaxurl, param ).done( function() {
jQuery( 'form#wp-smush-settings-form' ).submit();
return true;
} );
}
} );
// On re-Smush click.
$( 'body' ).on( 'click', '.wp-smush-skip-resmush', function( e ) {
e.preventDefault();
const self = jQuery( this ),
container = self.parents().eq( 1 ),
el = self.parent();
// Remove Parent div.
remove_element( el );
// Remove Settings Notice.
$( '.sui-notice-top.sui-notice-success' ).remove();
// Set button attribute to skip re-smush ids.
container.find( '.wp-smush-all' ).attr( 'data-smush', 'skip_resmush' );
// Update Smushed count.
wp_smushit_data.count_smushed =
parseInt( wp_smushit_data.count_smushed ) +
wp_smushit_data.resmush.length;
wp_smushit_data.count_supersmushed =
parseInt( wp_smushit_data.count_supersmushed ) +
wp_smushit_data.resmush.length;
// Update stats.
if ( wp_smushit_data.count_smushed === wp_smushit_data.count_total ) {
// Show all done notice.
$(
'.wp-smush-notice.wp-smush-all-done, .wp-smush-pagespeed-recommendation'
).show();
// Hide Smush button.
$( '.wp-smush-bulk-wrapper ' ).hide();
}
// Remove re-Smush notice.
$( '.wp-smush-resmush-notice' ).remove();
let type = $( '.wp-smush-scan' ).data( 'type' );
type = 'undefined' === typeof type ? 'media' : type;
const smushed_count =
'undefined' !== typeof wp_smushit_data.count_smushed
? wp_smushit_data.count_smushed
: 0;
let smush_percent =
( smushed_count / wp_smushit_data.count_total ) * 100;
smush_percent = WP_Smush.helpers.precise_round( smush_percent, 1 );
$( '.wp-smush-images-percent' ).html( smush_percent );
// Update the progress bar width. Get the progress bar.
const progress_bar = jQuery(
'.bulk-smush-wrapper .wp-smush-progress-inner'
);
if ( progress_bar.length < 1 ) {
return;
}
// Increase progress.
progress_bar.css( 'width', smush_percent + '%' );
// Show the default bulk smush notice.
$( '.wp-smush-bulk-wrapper' ).show();
$( '.wp-smush-bulk-wrapper .sui-notice' ).show();
const params = {
action: 'delete_resmush_list',
type,
};
//Delete resmush list, @todo: update stats from the ajax response
$.post( ajaxurl, params, function( res ) {
// Remove the whole li element on success
if ( res.success && 'undefined' !== typeof res.data.stats ) {
const stats = res.data.stats;
// Update wp_smushit_data ( Smushed count, Smushed Percent, Image count, Super smush count, resize savings, conversion savings )
if ( 'undefinied' !== typeof wp_smushit_data ) {
wp_smushit_data.count_images =
'undefined' !== typeof stats.count_images
? parseInt( wp_smushit_data.count_images ) +
stats.count_images
: wp_smushit_data.count_images;
wp_smushit_data.size_before =
'undefined' !== typeof stats.size_before
? parseInt( wp_smushit_data.size_before ) +
stats.size_before
: wp_smushit_data.size_before;
wp_smushit_data.size_after =
'undefined' !== typeof stats.size_after
? parseInt( wp_smushit_data.size_after ) +
stats.size_after
: wp_smushit_data.size_after;
wp_smushit_data.savings_resize =
'undefined' !== typeof stats.savings_resize
? parseInt( wp_smushit_data.savings_resize ) +
stats.savings_resize
: wp_smushit_data.savings_resize;
wp_smushit_data.savings_conversion =
'undefined' !== typeof stats.savings_conversion
? parseInt( wp_smushit_data.savings_conversion ) +
stats.savings_conversion
: wp_smushit_data.savings_conversion;
// Add directory smush stats.
if (
'undefined' !==
typeof wp_smushit_data.savings_dir_smush &&
'undefined' !==
typeof wp_smushit_data.savings_dir_smush.orig_size
) {
wp_smushit_data.size_before =
'undefined' !==
typeof wp_smushit_data.savings_dir_smush
? parseInt( wp_smushit_data.size_before ) +
parseInt(
wp_smushit_data.savings_dir_smush
.orig_size
)
: wp_smushit_data.size_before;
wp_smushit_data.size_after =
'undefined' !==
typeof wp_smushit_data.savings_dir_smush
? parseInt( wp_smushit_data.size_after ) +
parseInt(
wp_smushit_data.savings_dir_smush
.image_size
)
: wp_smushit_data.size_after;
}
wp_smushit_data.count_resize =
'undefined' !== typeof stats.count_resize
? parseInt( wp_smushit_data.count_resize ) +
stats.count_resize
: wp_smushit_data.count_resize;
}
// Smush notice.
const remainingCountDiv = $(
'.bulk-smush-wrapper .wp-smush-remaining-count'
);
if (
remainingCountDiv.length &&
'undefined' !== typeof wp_smushit_data.unsmushed
) {
remainingCountDiv.html( wp_smushit_data.unsmushed.length );
}
// If no images left, hide the notice, show all success notice.
if (
'undefined' !== typeof wp_smushit_data.unsmushed ||
wp_smushit_data.unsmushed.length === 0
) {
$( '.wp-smush-bulk-wrapper .sui-notice' ).hide();
$( '.sui-notice-success.wp-smush-all-done' ).show();
}
Smush.updateStats();
}
} );
} );
// Enable super smush on clicking link from stats area.
$( 'a.wp-smush-lossy-enable' ).on( 'click', function( e ) {
e.preventDefault();
// Scroll down to settings area.
goToByScroll( '#column-wp-smush-lossy' );
} );
// Enable resize on clicking link from stats area.
$( '.wp-smush-resize-enable' ).on( 'click', function( e ) {
e.preventDefault();
// Scroll down to settings area.
goToByScroll( '#column-wp-smush-resize' );
} );
// If settings string is found in url, enable and scroll.
if ( window.location.hash ) {
const setting_hash = window.location.hash.substring( 1 );
// Enable and scroll to resize settings.
if ( 'enable-resize' === setting_hash ) {
goToByScroll( '#column-wp-smush-resize' );
} else if ( 'enable-lossy' === setting_hash ) {
// Enable and scroll to lossy settings.
goToByScroll( '#column-wp-smush-lossy' );
}
}
//Trigger Bulk
$( 'body' ).on( 'click', '.wp-smush-trigger-bulk', function( e ) {
e.preventDefault();
//Induce Setting button save click
if (
'undefined' !== typeof e.target.dataset.type &&
'nextgen' === e.target.dataset.type
) {
$( '.wp-smush-nextgen-bulk' ).click();
} else {
$( '.wp-smush-all' ).click();
}
$( 'span.sui-notice-dismiss' ).click();
} );
//Trigger Bulk
$( 'body' ).on( 'click', '#bulk-smush-top-notice-close', function( e ) {
e.preventDefault();
$( this )
.parent()
.parent()
.slideUp( 'slow' );
} );
//Allow the checkboxes to be Keyboard Accessible
$( '.wp-smush-setting-row .toggle-checkbox' ).focus( function() {
//If Space is pressed
$( this ).keypress( function( e ) {
if ( e.keyCode == 32 ) {
e.preventDefault();
$( this )
.find( '.toggle-checkbox' )
.click();
}
} );
} );
// Re-Validate Resize Width And Height.
$( 'body' ).on( 'blur', '.wp-smush-resize-input', function() {
const self = $( this );
const wrapper_div = self.parents().eq( 4 );
// Initiate the check.
validate_resize_settings( wrapper_div, false, false ); // run the validation.
} );
// Handle Resize Checkbox toggle, to show/hide width, height settings.
$( 'body' ).on(
'click',
'#wp-smush-resize, #wp-smush-resize-quick-setup',
function() {
const self = $( this );
const settings_wrap = $( '.wp-smush-resize-settings-wrap' );
if ( self.is( ':checked' ) ) {
settings_wrap.show();
} else {
settings_wrap.hide();
}
}
);
// Handle auto detect checkbox toggle, to show/hide highlighting notice.
$( 'body' ).on( 'click', '#wp-smush-detection', function() {
const self = $( this );
const notice_wrap = $( '.smush-highlighting-notice' );
const warning_wrap = $( '.smush-highlighting-warning' );
// Setting enabled.
if ( self.is( ':checked' ) ) {
// Highlighting is already active and setting not saved.
if ( notice_wrap.length > 0 ) {
notice_wrap.show();
} else {
warning_wrap.show();
}
} else {
notice_wrap.hide();
warning_wrap.hide();
}
} );
// Handle PNG to JPG Checkbox toggle, to show/hide Transparent image conversion settings.
$( '#wp-smush-png_to_jpg' ).click( function() {
const self = $( this );
const settings_wrap = $( '.wp-smush-png_to_jpg-wrap' );
if ( self.is( ':checked' ) ) {
settings_wrap.show();
} else {
settings_wrap.hide();
}
} );
//Handle Re-check button functionality
$( '#wp-smush-revalidate-member' ).on( 'click', function( e ) {
e.preventDefault();
//Ajax Params
const params = {
action: 'smush_show_warning',
};
const link = $( this );
const parent = link.parents().eq( 1 );
parent.addClass( 'loading-notice' );
$.get( ajaxurl, params, function( r ) {
//remove the warning
parent.removeClass( 'loading-notice' ).addClass( 'loaded-notice' );
if ( 0 == r ) {
parent.attr( 'data-message', wp_smush_msgs.membership_valid );
remove_element( parent, 1000 );
} else {
parent.attr( 'data-message', wp_smush_msgs.membership_invalid );
setTimeout( function remove_loader() {
parent.removeClass( 'loaded-notice' );
}, 1000 );
}
} );
} );
if ( $( 'li.smush-dir-savings' ).length > 0 ) {
// Update Directory Smush, as soon as the page loads.
const stats_param = {
action: 'get_dir_smush_stats',
};
$.get( ajaxurl, stats_param, function( r ) {
//Hide the spinner
$( 'li.smush-dir-savings .sui-icon-loader' ).hide();
//If there are no errors, and we have a message to display
if ( ! r.success && 'undefined' !== typeof r.data.message ) {
$( 'div.wp-smush-scan-result div.content' ).prepend(
r.data.message
);
return;
}
//If there is no value in r
if (
'undefined' === typeof r.data ||
'undefined' === typeof r.data.dir_smush
) {
//Append the text
$( 'li.smush-dir-savings span.wp-smush-stats' ).append(
wp_smush_msgs.ajax_error
);
$( 'li.smush-dir-savings span.wp-smush-stats span' ).hide();
} else {
//Update the stats
update_cummulative_stats( r.data );
}
} );
}
//Close Directory smush modal, if pressed esc
$( document ).keyup( function( e ) {
if ( e.keyCode === 27 ) {
const modal = $(
'div.dev-overlay.wp-smush-list-dialog, div.dev-overlay.wp-smush-get-pro'
);
//If the Directory dialog is not visible
if ( ! modal.is( ':visible' ) ) {
return;
}
modal.find( 'div.close' ).click();
}
} );
//Dismiss Smush recommendation
$( 'span.dismiss-recommendation' ).on( 'click', function( e ) {
e.preventDefault();
const parent = $( this ).parent();
//remove div and save preference in db
parent.hide( 'slow', function() {
parent.remove();
} );
$.ajax( {
type: 'POST',
url: ajaxurl,
data: {
action: 'hide_pagespeed_suggestion',
},
} );
} );
/**
* Scroll to resize settings.
*
* @since 3.3.2
*/
$( '#close-resize-update-dialog' ).on( 'click', function( e ) {
e.preventDefault();
window.SUI.dialogs[ 'resizing-update' ].hide();
goToByScroll( '#column-wp-smush-resize' );
} );
} );