File "cdn.js"
Full path: /home/satitravel/public_html/wp-content/plugins/wp-smushit/_src/js/smush/cdn.js
File
size: 4.14 B
MIME-type: text/plain
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
/* global WP_Smush */
/* global ajaxurl */
/**
* CDN functionality.
*
* @since 3.0
*/
(function() {
"use strict";
WP_Smush.CDN = {
cdnEnableButton: document.getElementById("smush-enable-cdn"),
cdnDisableButton: document.getElementById("smush-cancel-cdn"),
cdnStatsBox: document.querySelector(".smush-cdn-stats"),
init() {
/**
* Handle "Get Started" button click on disabled CDN page.
*/
if (this.cdnEnableButton) {
this.cdnEnableButton.addEventListener("click", e => {
e.currentTarget.classList.add("sui-button-onload");
// Force repaint of the spinner.
const loader = e.currentTarget.querySelector(".sui-icon-loader");
loader.style.display = "none";
loader.style.display = "flex";
this.toggle_cdn(true);
});
}
/**
* Handle "Deactivate' button click on CDN page.
*/
if (this.cdnDisableButton) {
this.cdnDisableButton.addEventListener("click", e => {
e.preventDefault();
this.toggle_cdn(false);
});
}
this.updateStatsBox();
},
/**
* Toggle CDN.
*
* @since 3.0
*
* @param {boolean} enable
*/
toggle_cdn(enable) {
const nonceField = document.getElementsByName("wp_smush_options_nonce");
const xhr = new XMLHttpRequest();
xhr.open("POST", ajaxurl + "?action=smush_toggle_cdn", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onload = () => {
if (200 === xhr.status) {
const res = JSON.parse(xhr.response);
if ("undefined" !== typeof res.success && res.success) {
location.reload();
} else if ("undefined" !== typeof res.data.message) {
this.showNotice(res.data.message);
}
} else {
this.showNotice("Request failed. Returned status of " + xhr.status);
}
};
xhr.send("param=" + enable + "&_ajax_nonce=" + nonceField[0].value);
},
/**
* Show message (notice).
*
* @since 3.0
*
* @param {string} message
*/
showNotice(message) {
if ("undefined" === typeof message) {
return;
}
const notice = document.getElementById("wp-smush-ajax-notice");
notice.classList.add("sui-notice-error");
notice.innerHTML = `<p>${message}</p>`;
if (this.cdnEnableButton) {
this.cdnEnableButton.classList.remove("sui-button-onload");
}
notice.style.display = "block";
setTimeout(() => {
notice.style.display = "none";
}, 5000);
},
/**
* Update the CDN stats box in summary meta box. Only fetch new data when on CDN page.
*
* @since 3.0
*/
updateStatsBox() {
if ("undefined" === typeof this.cdnStatsBox || !this.cdnStatsBox) {
return;
}
// Only fetch the new stats, when user is on CDN page.
if (!window.location.search.includes("view=cdn")) {
return;
}
this.toggleElements();
const xhr = new XMLHttpRequest();
xhr.open("POST", ajaxurl + "?action=get_cdn_stats", true);
xhr.onload = () => {
if (200 === xhr.status) {
const res = JSON.parse(xhr.response);
if ("undefined" !== typeof res.success && res.success) {
this.toggleElements();
} else if ("undefined" !== typeof res.data.message) {
this.showNotice(res.data.message);
}
} else {
this.showNotice("Request failed. Returned status of " + xhr.status);
}
};
xhr.send();
},
/**
* Show/hide elements during status update in the updateStatsBox()
*
* @since 3.1 Moved out from updateStatsBox()
*/
toggleElements() {
const spinner = this.cdnStatsBox.querySelector(".sui-icon-loader");
const elements = this.cdnStatsBox.querySelectorAll(
".wp-smush-stats > :not(.sui-icon-loader)"
);
for (let i = 0; i < elements.length; i++) {
elements[i].classList.toggle("sui-hidden");
}
spinner.classList.toggle("sui-hidden");
}
};
WP_Smush.CDN.init();
})();