%PDF- %PDF-
Direktori : /proc/1857783/root/var/www/pn/wp-content/plugins/wp-smushit/_src/js/smush/ |
Current File : //proc/1857783/root/var/www/pn/wp-content/plugins/wp-smushit/_src/js/smush/settings.js |
/* global ajaxurl */ /* global wp_smush_msgs */ /* global WP_Smush */ /* global SUI */ (function ($) { 'use strict'; /** * Bulk compress page. */ $('form#smush-bulk-form').on('submit', function (e) { e.preventDefault(); $('#save-settings-button').addClass('sui-button-onload'); // TODO: this might be a problem, if we can't recalculate on larger installs. saveSettings($(this).serialize(), 'bulk'); runReCheck(); }); /** * Lazy load page. */ $('form#smush-lazy-load-form').on('submit', function (e) { e.preventDefault(); $('#save-settings-button').addClass('sui-button-onload-text'); saveSettings($(this).serialize(), 'lazy-load'); }); /** * CDN page. */ $('form#smush-cdn-form').on('submit', function (e) { e.preventDefault(); $('#save-settings-button').addClass('sui-button-onload-text'); saveSettings($(this).serialize(), 'cdn'); }); /** * Integrations page. */ $('form#smush-integrations-form').on('submit', function (e) { e.preventDefault(); $('#save-settings-button').addClass('sui-button-onload-text'); saveSettings($(this).serialize(), 'integrations'); }); /** * Tools page. */ $('form#smush-tools-form').on('submit', function (e) { e.preventDefault(); $('#save-settings-button').addClass('sui-button-onload-text'); saveSettings($(this).serialize(), 'tools'); }); /** * Settings page. */ $('form#smush-settings-form').on('submit', function (e) { e.preventDefault(); $('#save-settings-button').addClass('sui-button-onload-text'); saveSettings($(this).serialize(), 'settings'); }); /** * Save settings. * * @param {string} settings JSON string of settings. * @param {string} page Settings page. */ function saveSettings(settings, page) { const xhr = new XMLHttpRequest(); xhr.open('POST', ajaxurl + '?action=smush_save_settings', true); xhr.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded' ); xhr.onload = () => { $('#save-settings-button').removeClass( 'sui-button-onload-text sui-button-onload' ); if (200 === xhr.status) { const res = JSON.parse(xhr.response); if ('undefined' !== typeof res.success && res.success) { showSuccessNotice(wp_smush_msgs.settingsUpdated); } else if (res.data && res.data.message) { WP_Smush.helpers.showErrorNotice(res.data.message); } else { WP_Smush.helpers.showErrorNotice('Request failed.'); } } else { WP_Smush.helpers.showErrorNotice( 'Request failed. Returned status of ' + xhr.status ); } }; xhr.send( 'page=' + page + '&' + settings + '&_ajax_nonce=' + wp_smush_msgs.nonce ); } /** * Show successful update notice. * * @param {string} msg Notice message. */ function showSuccessNotice(msg) { const noticeMessage = `<p>${msg}</p>`, noticeOptions = { type: 'success', icon: 'check', }; SUI.openNotice('wp-smush-ajax-notice', noticeMessage, noticeOptions); const loadingButton = document.querySelector('.sui-button-onload'); if (loadingButton) { loadingButton.classList.remove('sui-button-onload'); } } /** * Re-check images from bulk smush and integrations pages. */ function runReCheck() { $('#save-settings-button').addClass('sui-button-onload'); const param = { action: 'scan_for_resmush', wp_smush_options_nonce: $('#wp_smush_options_nonce').val(), type: 'media', }; // Send ajax, Update Settings, And Check For resmush. $.post(ajaxurl, $.param(param)).done(function () { //showSuccessNotice(r.data.notice); $('#save-settings-button').removeClass('sui-button-onload'); }); } /** * Parse remove data change. */ $('input[name=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'); }); /** * Handle auto detect checkbox toggle, to show/hide highlighting notice. */ $('input#detection').on('click', function () { const noticeDiv = $('.smush-highlighting-notice'); const warningDiv = $('.smush-highlighting-warning'); // Setting enabled. if ($(this).is(':checked')) { // Highlighting is already active and setting not saved. if (noticeDiv.length > 0) { noticeDiv.show(); } else { warningDiv.show(); } } else { noticeDiv.hide(); warningDiv.hide(); } }); })(jQuery);