Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/wp-rocket/assets/js/wpr-cpcss.js

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + let checkCPCSSGenerationCall;
2 + let checkCPCSSMobileGenerationCall;
3 + let cpcsssGenerationPending = 0;
4 + let cpcsssMobileGenerationPending = 0;
5 + const rocketDeleteCPCSSbtn = document.getElementById( 'rocket-delete-post-cpss' );
6 + const rocketGenerateCPCSSbtn = document.getElementById( 'rocket-generate-post-cpss' );
7 + const rocketCPCSSGenerate = document.querySelectorAll( '.cpcss_generate' );
8 + const rocketCPCSSReGenerate = document.querySelectorAll( '.cpcss_regenerate' );
9 +
10 + if ( null !== rocketDeleteCPCSSbtn ) {
11 + rocketDeleteCPCSSbtn.addEventListener( 'click', e => {
12 + e.preventDefault();
13 + deleteCPCSS();
14 + } );
15 + }
16 +
17 + if ( null !== rocketGenerateCPCSSbtn ) {
18 + rocketGenerateCPCSSbtn.addEventListener( 'click', e => {
19 + e.preventDefault();
20 + rocketGenerateCPCSSbtn.disabled = true;
21 + checkCPCSSGeneration( null, false );
22 + if ( rocket_cpcss.wprMobileCpcssEnabled ) {
23 + checkCPCSSGeneration( null, true );
24 + }
25 + } );
26 + }
27 +
28 + const checkCPCSSGeneration = ( timeout = null, is_mobile = false ) => {
29 + const spinner = rocketGenerateCPCSSbtn.querySelector( '.spinner' );
30 + spinner.style.display = 'block';
31 + spinner.style.visibility = 'visible';
32 +
33 + const xhttp = new XMLHttpRequest();
34 + xhttp.onload = () => {
35 + if ( 200 !== xhttp.status ) {
36 + return;
37 + }
38 +
39 + const cpcss_response = JSON.parse( xhttp.response );
40 + if ( 200 !== cpcss_response.data.status ) {
41 + stopCPCSSGeneration( spinner );
42 + if ( ! is_mobile ) {
43 + cpcssNotice( cpcss_response.message, 'error' );
44 + }
45 + rocketGenerateCPCSSbtn.disabled = false;
46 + return;
47 + }
48 +
49 + if ( 200 === cpcss_response.data.status &&
50 + 'cpcss_generation_pending' !== cpcss_response.code ) {
51 + stopCPCSSGeneration( spinner, is_mobile );
52 + if ( ! is_mobile ) {
53 + cpcssNotice( cpcss_response.message, 'success' );
54 + }
55 +
56 + // Revert view to Regenerate.
57 + rocketGenerateCPCSSbtn.querySelector( '.rocket-generate-post-cpss-btn-txt' ).innerHTML = rocket_cpcss.regenerate_btn;
58 + rocketDeleteCPCSSbtn.style.display = 'block';
59 + rocketGenerateCPCSSbtn.disabled = false;
60 + rocketCPCSSGenerate.forEach( item => item.style.display = 'none' );
61 + rocketCPCSSReGenerate.forEach( item => item.style.display = 'block' );
62 + return;
63 + }
64 +
65 + if ( is_mobile ) {
66 + cpcsssMobileGenerationPending++;
67 + if ( cpcsssMobileGenerationPending > 10 ) {
68 + stopCPCSSGeneration( spinner, is_mobile );
69 + cpcsssMobileGenerationPending = 0;
70 + checkCPCSSGeneration( true, true );
71 + return;
72 + }
73 + checkCPCSSMobileGenerationCall = setTimeout( () => {
74 + checkCPCSSGeneration( null, true );
75 + }, 3000 );
76 + } else {
77 + cpcsssGenerationPending++;
78 + if ( cpcsssGenerationPending > 10 ) {
79 + stopCPCSSGeneration( spinner, is_mobile );
80 + cpcsssGenerationPending = 0;
81 + checkCPCSSGeneration( true, false );
82 + return;
83 + }
84 +
85 + checkCPCSSGenerationCall = setTimeout( () => {
86 + checkCPCSSGeneration( null, false );
87 + }, 3000 );
88 + }
89 + };
90 +
91 + xhttp.open( 'POST', rocket_cpcss.rest_url, true );
92 + xhttp.setRequestHeader( 'Content-Type', 'application/json' );
93 + xhttp.setRequestHeader( 'X-WP-Nonce', rocket_cpcss.rest_nonce );
94 + xhttp.send( JSON.stringify( { timeout: timeout, is_mobile: is_mobile } ) );
95 + }
96 +
97 + const stopCPCSSGeneration = ( spinner, is_mobile ) => {
98 + spinner.style.display = 'none';
99 + if ( is_mobile ) {
100 + clearTimeout( checkCPCSSMobileGenerationCall );
101 + } else {
102 + clearTimeout( checkCPCSSGenerationCall );
103 + }
104 + }
105 +
106 + const deleteCPCSS = () => {
107 + rocketDeleteCPCSSbtn.disabled = true;
108 +
109 + const xhttp = new XMLHttpRequest();
110 + xhttp.onload = () => {
111 + if ( 200 !== xhttp.status ) {
112 + return;
113 + }
114 +
115 + rocketDeleteCPCSSbtn.disabled = false;
116 + const cpcss_response = JSON.parse( xhttp.response );
117 +
118 + if ( 200 !== cpcss_response.data.status ) {
119 + cpcssNotice( cpcss_response.message, 'error' );
120 + return;
121 + }
122 + cpcssNotice( cpcss_response.message, 'success' );
123 +
124 + // Revert view to Generate.
125 + rocketGenerateCPCSSbtn.querySelector( '.rocket-generate-post-cpss-btn-txt' ).innerHTML = rocket_cpcss.generate_btn;
126 + rocketDeleteCPCSSbtn.style.display = 'none';
127 + rocketCPCSSReGenerate.forEach( item => item.style.display = 'none' );
128 + rocketCPCSSGenerate.forEach( item => item.style.display = 'block' );
129 + };
130 +
131 + xhttp.open( 'DELETE', rocket_cpcss.rest_url, true );
132 + xhttp.setRequestHeader( 'Content-Type', 'application/json' );
133 + xhttp.setRequestHeader( 'X-WP-Nonce', rocket_cpcss.rest_nonce );
134 + xhttp.send();
135 + }
136 +
137 + const cpcssNotice = ( msg, type ) => {
138 + /* Add notice class */
139 + const cpcssNotice = document.getElementById( 'cpcss_response_notice' );
140 + cpcssNotice.innerHTML = '';
141 + cpcssNotice.classList.remove( 'hidden', 'notice', 'is-warning', 'notice-error', 'notice-success', 'is-error', 'is-success' );
142 + cpcssNotice.classList.add( 'notice', 'notice-' + type, 'is-' + type );
143 +
144 + /* create paragraph element to hold message */
145 + const p = document.createElement( 'p' );
146 + p.appendChild( document.createTextNode( msg ) );
147 +
148 + /* Add the whole message to notice div */
149 + cpcssNotice.appendChild( p );
150 + }
151 +