Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/wp-rocket/assets/js/wpr-cpcss.js
Keine Baseline-Datei – Diff nur gegen leer.
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
+