PluginProbe ʕ •ᴥ•ʔ
10Web Booster – Website speed optimization, Cache & Page Speed optimizer / trunk
10Web Booster – Website speed optimization, Cache & Page Speed optimizer vtrunk
2.33.0 2.30.5 2.30.7 2.30.9 2.31.10 2.31.8 2.32.11 2.32.21 2.32.3 2.32.4 2.32.7 2.6.31 2.6.40 2.6.42 2.6.7 2.7.37 2.7.44 2.7.47 2.8.18 2.8.19 2.8.32 2.8.34 2.8.35 2.9.23 2.9.24 2.9.25 2.9.27 v2.27.4 trunk 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.17 2.0.18 2.0.21 2.0.22 2.0.25 2.0.26 2.0.27 2.0.3 2.0.7 2.0.9 2.10.46 2.10.65 2.10.66 2.10.68 2.11.41 2.11.42 2.11.43 2.12.15 2.12.21 2.12.22 2.12.23 2.12.26 2.13.37 2.13.40 2.13.41 2.13.42 2.13.44 2.13.45 2.13.47 2.14.49 2.14.50 2.15.18 2.17.21 2.17.23 2.18.17 2.19.44 2.19.45 2.19.46 2.19.49 2.2.12 2.2.15 2.2.16 2.2.18 2.2.8 2.20.31 2.20.32 2.20.33 2.21.11 2.21.12 2.21.16 2.21.25 2.22.32 2.23.13 2.23.15 2.23.16 2.23.18 2.24.12 2.24.14 2.24.18 2.25.14 2.26.6 2.28.10 2.28.13 2.28.14 2.28.7 2.29.1 2.29.2 2.29.3 2.3.0 2.3.1 2.3.2 2.3.3 2.30.18
tenweb-speed-optimizer / assets / js / two_admin.js
tenweb-speed-optimizer / assets / js Last commit date
gutenberg 3 years ago gutenbergComponents 3 years ago autoupdate_banner.js 3 years ago banner_main.js 3 years ago circle-progress.js 3 years ago datatables.min.js 4 years ago jquery.multi-select.js 4 years ago jquery.tagsinput.min.js 4 years ago referral_program.js 3 years ago sidebar-plugin.js 3 years ago speed.js 3 years ago two_admin.js 1 year ago two_admin_bar.js 4 years ago two_bf_countdown.js 3 years ago two_deactivate_plugin.js 3 years ago two_elementor_editor.js 2 years ago two_preview.js 3 years ago two_update_white_label.js 1 year ago two_white_label.js 2 years ago
two_admin.js
1140 lines
1 var two_table_critical;
2 jQuery("document").ready(function () {
3 jQuery('#two_delay_js_exclusions').multiSelect();
4 jQuery('#two_async_css,#two_exclude_lazyload,#two_exclude_images_for_optimize,#two_exclude_delay_js,#two_disabled_delay_all_js_pages, ' +
5 '#two_exclude_css,#two_exclude_js,#two_disable_css,#two_delayed_js_execution_list,#two_load_excluded_js_normally,' +
6 '#two_fonts_to_preload, #two_disabled_speed_optimizer_pages, #two_fonts_to_preconnect, #two_non_optimizable_speed_optimizer_pages').tagsInput({
7 width: 'auto',
8 'defaultText': 'add an item',
9 interactive: true,
10 autocomplete: {
11 delay: 100,
12 disabled: false,
13 minInputWidth: '200px'
14 },
15 });
16 var two_table = jQuery('#two_page_css_table').DataTable({"paging": false,});
17
18
19 jQuery("#enable_lazyload, #enable_bg_lazyload, #enable_video_lazyload, #enable_iframe_lazyload").change(function () {
20 if (jQuery("#enable_iframe_lazyload").is(":checked")) {
21 jQuery(".two_elemrntor_video_iframe").css({
22 'display': 'block',
23 });
24 jQuery(".two_delay_iframe_lazyload").css({
25 'display': 'block',
26 });
27 } else {
28 jQuery(".two_elemrntor_video_iframe").css({
29 'display': 'none',
30 });
31 jQuery(".two_delay_iframe_lazyload").css({
32 'display': 'none',
33 });
34 }
35
36 if (this.checked) {
37 jQuery(".two_exclude_lazyload").css({
38 'display': 'block',
39 });
40 } else {
41 if (jQuery("#enable_lazyload").is(":checked") || jQuery("#enable_bg_lazyload").is(":checked") || jQuery("#enable_iframe_lazyload").is(":checked") || jQuery("#enable_video_lazyload").is(":checked")) {
42 return;
43 }
44 jQuery(".two_exclude_lazyload").css({
45 'display': 'none',
46 });
47 }
48 });
49
50 jQuery("#do_not_optimize_images").change(function () {
51 if (this.checked) {
52 jQuery(".two_exclude_images_for_optimize").css({
53 'display': 'none',
54 });
55
56 } else {
57 if (jQuery("#exclude_images_for_optimize").is(":checked")) {
58 return;
59 }
60 jQuery(".two_exclude_images_for_optimize").css({
61 'display': 'block',
62 });
63 }
64 });
65
66
67 jQuery("#two_async_all").change(function () {
68 if (this.checked) {
69 jQuery(".two_async_css").css({
70 'display': 'none',
71 });
72 } else {
73 jQuery(".two_async_css").css({
74 'display': 'block',
75 });
76 }
77 });
78 jQuery("#two_critical").change(function () {
79 if (this.checked) {
80 jQuery("#two_critical_options").css({
81 'display': 'block',
82 });
83 } else {
84 jQuery("#two_critical_options").css({
85 'display': 'none',
86 });
87 }
88 });
89
90 jQuery("#two_delay_js_execution").change(function () {
91 if (this.checked) {
92 jQuery(".two_delayed_js_load_libs_first, .two_delayed_js_execution_list").css({
93 'display': 'block',
94 });
95 } else {
96 jQuery(".two_delayed_js_load_libs_first, .two_delayed_js_execution_list").css({
97 'display': 'none',
98 });
99 }
100 });
101
102 jQuery("#lazy_load_type").change(function () {
103 if (this.value === "browser") {
104 jQuery(".enable_youtube_vimeo_iframe_lazyload").addClass("two_hidden");
105 jQuery(".two_bg_lazyload_cont, .two_img_in_viewport_lazyload_cont").css({
106 "display": "none"
107 });
108 } else {
109 jQuery(".enable_youtube_vimeo_iframe_lazyload").removeClass("two_hidden");
110 jQuery(".two_bg_lazyload_cont, .two_img_in_viewport_lazyload_cont").css({
111 "display": "block"
112 });
113 }
114 });
115
116 jQuery("#enable_lazyload").change(function() {
117 if (this.checked) {
118 jQuery(".two_add_noscript").css({
119 'display': 'block',
120 });
121 } else {
122 jQuery(".two_add_noscript").css({
123 'display': 'none',
124 });
125 }
126 });
127
128 jQuery("#two_serve_gzip").change(function() {
129 if (this.checked) {
130 jQuery(".two_empty_encoding_serve_gzip").css({
131 'display': 'block',
132 });
133 } else {
134 jQuery(".two_empty_encoding_serve_gzip").css({
135 'display': 'none',
136 });
137 }
138 });
139
140 jQuery(".two_clear_cache").click(function (e) {
141 clear_messages();
142 e.preventDefault();
143 jQuery.ajax({
144 type: "POST",
145 url: two_admin_vars.ajaxurl,
146 dataType: 'json',
147 data: {
148 action: "two_settings",
149 task: "clear_cache",
150 nonce: two_admin_vars.ajaxnonce,
151 }
152 }).done(function (data) {
153 if (data.success) {
154 jQuery(".two_success_message").css({
155 'display': 'block'
156 });
157 } else {
158 jQuery(".two_error_message").css({
159 'display': 'block'
160 });
161 }
162 });
163 });
164 jQuery(".two_finish_flow").click(function (e) {
165 jQuery.ajax({
166 type: "POST",
167 url: two_admin_vars.ajaxurl,
168 dataType: 'json',
169 data: {
170 action: "two_finish_flow",
171 nonce: two_admin_vars.ajaxnonce,
172 }
173 }).done(function (data) {
174 jQuery(".two_finish_flow").remove();
175 });
176 });
177
178 jQuery(".two_webp_action").click(function (e) {
179 clear_messages();
180 e.preventDefault();
181 let task = jQuery(this).attr('data-action');
182 let url_list = jQuery('#two_create_webp_list').val();
183 jQuery.ajax({
184 type: "POST",
185 url: two_admin_vars.ajaxurl,
186 dataType: 'json',
187 data: {
188 action: "two_settings",
189 task: task,
190 url_list: url_list,
191 nonce: two_admin_vars.ajaxnonce,
192 }
193 }).done(function (data) {
194 if ( 'success' == data.status ) {
195 jQuery(".two_webp_success_message").css({
196 'display': 'block'
197 });
198 jQuery('#two_create_webp_list').val( '' );
199 } else {
200 jQuery(".two_webp_error_message").css({
201 'display': 'block'
202 });
203 }
204 });
205 });
206
207 jQuery(".two_regenerate_critical").click(function (e) {
208 clear_messages();
209 e.preventDefault();
210 jQuery(".two_generate_critical").addClass("two_disabled");
211 jQuery(".two_critical_pages .spinner").addClass("is-active");
212 jQuery.ajax({
213 type: "POST",
214 url: two_admin_vars.ajaxurl,
215 dataType: 'json',
216 data: {
217 action: "two_settings",
218 task: "regenerate_critical",
219 nonce: two_admin_vars.ajaxnonce,
220 }
221 }).done(function (data) {
222 if (data.success) {
223 jQuery(".two_success_message").css({
224 'display': 'block'
225 });
226 } else {
227 jQuery(".two_error_message").css({
228 'display': 'block'
229 });
230 }
231 });
232 });
233 jQuery("#enable_lazyload").change(function () {
234 var checked = 0;
235 if (jQuery(this).is(':checked')) {
236 checked = 1;
237 }
238
239 });
240
241
242 jQuery("#enable_js_aggregate").change(function () {
243 if (this.checked) {
244 jQuery(".two_include_inline_js, .two_use_extended_exception_list_js").css({
245 'display': 'block'
246 });
247 } else {
248 jQuery(".two_include_inline_js, .two_use_extended_exception_list_js").css({
249 'display': 'none'
250 });
251
252 }
253 });
254
255 jQuery("#two_include_inline_js").change(function () {
256 if (this.checked) {
257 jQuery(".two_use_extended_exception_list_js").css({
258 'display': 'block'
259 });
260 } else {
261 jQuery(".two_use_extended_exception_list_js").css({
262 'display': 'none'
263 });
264 }
265 });
266
267 jQuery("#enable_css_aggregate").change(function () {
268 if (this.checked) {
269 jQuery(".two_include_inline_css").css({
270 'display': 'block'
271 });
272 } else {
273 jQuery(".two_include_inline_css").css({
274 'display': 'none'
275 });
276
277 }
278 });
279 jQuery("#two_page_cache").change(function () {
280 if (this.checked) {
281 jQuery("#two_page_cache_life_time, #two_page_cache_user").parent().css({
282 'display': 'block'
283 });
284 } else {
285 jQuery("#two_page_cache_life_time, #two_page_cache_user").parent().css({
286 'display': 'none'
287 });
288
289 }
290 });
291 jQuery("#two_delay_all_js_execution").change(function () {
292 if (this.checked) {
293 jQuery(".two_js_options").css({
294 'display': 'none'
295 });
296 jQuery(".two_exclude_delay_js,.two_delay_custom_js_new,.two_disabled_delay_all_js_pages").css({
297 'display': 'block'
298 });
299 jQuery(".two_timeout_js_load, .two_load_excluded_js_via_worker,.two_exclude_rev,.two_exclude_slider_by_10web,.two_exclude_elementor_scripts,.two_exclude_photo_gallery_by_10web,.two_exclude_amp_plugin_cdn").css({
300 'display': 'block'
301 });
302 jQuery(".two_load_excluded_js_normally").css({
303 'display': 'block'
304 });
305 jQuery(".two_plugins_to_exclude").css({
306 'display': 'block'
307 });
308 } else {
309 jQuery(".two_plugins_to_exclude").css({
310 'display': 'none'
311 });
312 jQuery(".two_js_options").css({
313 'display': 'block'
314 });
315 jQuery(".two_exclude_delay_js,.two_delay_custom_js_new,.two_disabled_delay_all_js_pages").css({
316 'display': 'none'
317 });
318 jQuery(".two_timeout_js_load, .two_load_excluded_js_via_worker,.two_exclude_rev,.two_exclude_slider_by_10web,.two_exclude_elementor_scripts,.two_exclude_photo_gallery_by_10web,.two_exclude_amp_plugin_cdn").css({
319 'display': 'none'
320 });
321 jQuery(".two_load_excluded_js_normally").css({
322 'display': 'none'
323 });
324 }
325 });
326
327 jQuery("#two_load_excluded_js_via_worker").change(function () {
328 if (this.checked) {
329 jQuery(".two_load_excluded_js_normally").css({
330 'display': 'block'
331 });
332 } else {
333 jQuery(".two_load_excluded_js_normally").css({
334 'display': 'none'
335 });
336 }
337 });
338
339 jQuery(".two_save_settings").click(function (e) {
340 clear_messages();
341 e.preventDefault();
342
343 var async_css_list_page = {};
344 var disabled_css_list_page = {};
345
346 jQuery("#two_page_css_table tbody tr").each(function () {
347 var two_load_type = jQuery(this).find(".two_load_type").text();
348 var two_url = jQuery(this).find(".two_url").text();
349 var two_css_name = jQuery(this).find(".two_css_name").text();
350 if (typeof two_url !== "undefined" && typeof two_css_name !== "undefined") {
351 if (two_url.length !== 0 && two_css_name.length !== 0) {
352 if (two_load_type === "Async") {
353 if (typeof async_css_list_page[two_url] !== "undefined") {
354 async_css_list_page[two_url] = async_css_list_page[two_url] + "," + two_css_name;
355 } else {
356 async_css_list_page[two_url] = two_css_name;
357 }
358
359 } else if (two_load_type === "Disabled") {
360 if (typeof disabled_css_list_page[two_url] !== "undefined") {
361 disabled_css_list_page[two_url] = disabled_css_list_page[two_url] + "," + two_css_name;
362 } else {
363 disabled_css_list_page[two_url] = two_css_name;
364 }
365 }
366 }
367 }
368 });
369 var two_critical_url_args = jQuery("#two_critical_url_args").val();
370 var two_critical_sizes = two_get_critical_sizes();
371 var two_critical_pages = two_two_critical_pages('front_page');
372 var two_critical_status = jQuery("#two_critical").is(':checked');
373 var two_critical_remove = jQuery("#two_critical_remove").is(':checked');
374 var two_critical_font_status = jQuery("#two_critical_font").is(':checked');
375 var two_delay_js_exclusions = jQuery('#two_delay_js_exclusions').val();
376 var two_events_after_load = jQuery('#two_events_after_load').val();
377 var two_generate_ccss_on_load = jQuery('#two_generate_ccss_on_load').val();
378 var two_font_actions = jQuery('#two_font_actions').val();
379 var ajax_data = {
380 'action': 'two_settings',
381 'task': 'settings',
382 'two_async_page': async_css_list_page,
383 'two_disable_page': disabled_css_list_page,
384 'two_critical_pages': two_critical_pages,
385 'two_critical_url_args': two_critical_url_args,
386 'two_critical_sizes': two_critical_sizes,
387 'two_critical_status': two_critical_status,
388 'two_critical_remove': two_critical_remove,
389 'two_critical_font_status': two_critical_font_status,
390 'two_font_actions': two_font_actions,
391 'nonce': two_admin_vars.ajaxnonce
392 };
393 var two_form_data = jQuery('.two_settings_form').serializeArray();
394 jQuery.each(two_form_data, function (key, val) {
395 if (val.name === "two_delay_js_exclusions" && two_delay_js_exclusions !== null) {
396 ajax_data["two_delay_js_exclusions"] = two_delay_js_exclusions;
397 } else if (val.name === "two_events_after_load" && two_events_after_load !== null) {
398 ajax_data["two_events_after_load"] = two_events_after_load;
399 } else if (val.name === "two_generate_ccss_on_load" && two_generate_ccss_on_load !== null) {
400 ajax_data["two_generate_ccss_on_load"] = two_generate_ccss_on_load;
401 } else {
402 ajax_data[val.name] = val.value;
403 }
404 });
405
406 jQuery('.two_save_settings').attr('disabled', 1);
407 jQuery('.wd-left-side .spinner').addClass('is-active');
408 jQuery.ajax({
409 type: "POST",
410 dataType: 'json',
411 url: two_admin_vars.ajaxurl,
412 data: ajax_data,
413 }).done(function (data) {
414 if (data.success) {
415 jQuery('.wd-left-side .spinner').removeClass('is-active');
416 jQuery('.two_save_settings').removeAttr('disabled');
417 jQuery(".two_success_message p").text( data.message );
418 if ( true == data.webp_delivery_status ) {
419 jQuery("#two_webp_delivery_working").removeClass('two_hidden');
420 jQuery(".two_enable_picture_webp_delivery").addClass('two_hidden');
421 }
422 else {
423 jQuery("#two_webp_delivery_working").addClass('two_hidden');
424 jQuery(".two_enable_picture_webp_delivery").removeClass('two_hidden');
425 }
426 if ( 'nginx_webp_delivery' == data.code ) {
427 jQuery( '#two_enable_nginx_webp_delivery' ).prop( 'checked', !jQuery( '#two_enable_nginx_webp_delivery' ).prop( 'checked' ) );
428 jQuery(".two_success_message").removeClass('notice-success').addClass('notice-warning');
429 }
430 jQuery(".two_success_message").css({
431 'display': 'block'
432 });
433 } else {
434 jQuery(".two_error_message").css({
435 'display': 'block'
436 });
437 }
438 });
439 });
440
441 jQuery('.two_tab_two_logs .button').on("click", function (e) {
442 let btn = this;
443
444 let log_type = btn.getAttribute("data-log-type");
445 if(!log_type){
446 return;
447 }
448
449 let btn_text = btn.textContent;
450 btn.textContent = "Deleting";
451
452 jQuery.ajax({
453 type: "POST",
454 url: two_admin_vars.ajaxurl,
455 dataType: 'json',
456 data: {
457 action: "two_settings",
458 task: "delete_logs",
459 log_type: log_type,
460 nonce: two_admin_vars.ajaxnonce,
461 }
462 }).done(function (data) {
463 btn.textContent = btn_text;
464
465 if (data.success) {
466 jQuery("table[data-log-type='"+log_type+"'] tbody th").each(function(i, el){
467 el.remove();
468 });
469 } else {
470 alert("Something went wrong");
471 }
472 });
473 });
474
475 jQuery("body").on("click", ".two_delete_element", function () {
476 two_table
477 .row(jQuery(this).parents('tr'))
478 .remove()
479 .draw();
480 });
481
482
483 /*edit and add disabled or async table */
484
485
486 jQuery("body").on("click", ".two_edit_element", function () {
487 var task = jQuery(this).data("task");
488 var delete_task = jQuery(this).data("delete-task");
489 var name = jQuery(this).data("name");
490 var url = jQuery(this).data("url");
491 if (task === "edit") {
492 jQuery(this).data('task', "save");
493 jQuery(this).removeClass("dashicons-edit");
494
495 jQuery(this).addClass("two_save_element");
496 jQuery(this).addClass("dashicons-saved");
497 var $row = jQuery(this).closest("tr").off("mousedown");
498 var $tds = $row.find("td").not(':last');
499 jQuery.each($tds, function (i, el) {
500 var txt = jQuery(this).text();
501 if (jQuery(this).hasClass("two_load_type")) {
502 var options_list = "<option value='Disabled'>Disabled</option><option value='Async' selected>Async</option>";
503 if (txt === "Disabled") {
504 options_list = "<option value='Disabled' selected>Disabled</option><option value='Async'>Async</option>";
505 }
506 jQuery(this).html("").append("<select>" + options_list + "</select>");
507 } else {
508 jQuery(this).html("").append("<input type='text' value=\"" + txt + "\">");
509 }
510 });
511 } else {
512 jQuery(this).addClass("dashicons-edit");
513 jQuery(this).removeClass("dashicons-saved");
514 jQuery(this).data('task', "edit");
515 var $row = jQuery(this).closest("tr");
516 var $tds = $row.find("td").not(':last');
517
518 jQuery.each($tds, function (i, el) {
519 if (jQuery(this).hasClass("two_load_type")) {
520 var txt = jQuery(this).find("select").val();
521 } else {
522 var txt = jQuery(this).find("input").val();
523 }
524 jQuery(this).html(txt);
525 });
526 }
527 });
528
529 jQuery('<div><button id="two_add_new_element">Add New Row</button></div>').insertAfter('#two_page_css_table');
530 jQuery('#two_add_new_element').click(function () {
531 var two_new_row_html = get_two_new_row_html();
532 two_table.row.add(jQuery(two_new_row_html)).draw();
533 });
534 jQuery("body").on("click", ".two_duplicate_element", function () {
535 //two_css_name, two_url , two_load_type
536 var row_tr = jQuery(this).closest("tr");
537 var two_css_name = row_tr.find(".two_css_name").html();
538 var two_url = row_tr.find(".two_url").html();
539 var two_load_type = row_tr.find(".two_load_type").html();
540 var two_duplicate_html = get_two_duplicate_html(two_css_name, two_url, two_load_type);
541 two_table.row.add(jQuery(two_duplicate_html)).draw();
542 });
543 /*-----------------------------------------------------*/
544
545
546 jQuery(".two_tab_menus .two_tab_menu").click(function () {
547 jQuery(".two_tab_menus .two_tab_menu").removeClass("active");
548 jQuery(".two_settings_tab").removeClass("active");
549 var data_tab = jQuery(this).data("tab");
550 jQuery(".two_tab_" + data_tab).addClass("active");
551 jQuery(this).addClass("active");
552 });
553
554
555 /*critical css */
556 //jQuery('.two_critical_sizes_select').multiSelect();
557 two_table_critical = jQuery('#two_critical_pages').DataTable({"paging": false,});
558 var two_table_sizes = jQuery('#two_critical_sizes').DataTable({"paging": false,});
559 jQuery("#two_page_for_critical").select2({
560 templateResult: formatState,
561 templateSelection: formatState,
562 ajax: {
563 url: ajaxurl,
564 dataType: 'json',
565 delay: 250,
566 data: function (params) {
567 return {
568 q: params.term,
569 action: 'two_get_posts_for_critical',
570 nonce: two_admin_vars.ajaxnonce,
571 };
572 },
573 processResults: function( data ) {
574 var options = [];
575 if ( data ) {
576 jQuery.each( data, function( index, text ) {
577 options.push( { id: text[0], text: text[1], url: text[2], flag_url: text[3] } );
578 });
579 }
580 return {
581 results: options
582 };
583 },
584 cache: true
585 }
586 });
587 jQuery("#two_events_after_load").select2({
588 templateResult: formatState,
589 templateSelection: formatState,
590 width: 300,
591 placeholder: jQuery("#two_events_after_load").attr('placeholder'),
592 });
593 jQuery("#two_generate_ccss_on_load").select2({
594 templateResult: formatState,
595 templateSelection: formatState,
596 width: 300,
597 placeholder: jQuery("#two_generate_ccss_on_load").attr('placeholder'),
598 });
599 function formatState(opt){
600 if (!opt.id || !opt.flag_url) {
601 return opt.text;
602 }
603
604 return jQuery('<span>' + '<img src="' + opt.flag_url + '" class="two_flag"/>' + opt.text + '</span>');
605 }
606
607 jQuery(".two_add_critical_css_row").click(function () {
608 var data = jQuery("#two_page_for_critical").select2('data')[0];
609 if (data) {
610 var url = data.url;
611 var title = data.text;
612 var id = data.id;
613 var flag_url = data.flag_url;
614 // Avoid dublicates.
615 if (two_table_critical.rows('[data-page_id=' + id + ']')[0].length == 0) {
616 jQuery('#two_critical_pages').addClass( 'loading' );
617 two_table_critical.row.add( jQuery( get_two_table_critical_html( url, id, title, flag_url) ) ).draw();
618 //let two_critical_sizes_select = jQuery('tr[data-page_id=' + id + '] .two_critical_sizes_select option').prop('selected', true);
619
620 var two_critical_pages = two_two_critical_pages(id);
621 var ajax_data = {
622 'action': 'two_critical',
623 'data': {
624 page_id: id,
625 task: "insert/update",
626 'two_critical_pages': two_critical_pages,
627 },
628 'nonce': two_admin_vars.ajaxnonce,
629 };
630 jQuery.ajax({
631 type: "POST",
632 dataType: 'json',
633 url: two_admin_vars.ajaxurl,
634 data: ajax_data,
635 }).done(function (data) {
636 jQuery('#two_critical_pages').removeClass( 'loading' );
637 });
638 }
639 }
640 });
641
642 jQuery("body").on("change", "td.critical_page_sizes>select, td.critical_page_load_actions>select, td.critical_page_wait_until>select, td.use_uncritical>input",function () {
643 var id = jQuery(this).closest('tr').attr('data-page_id');
644 if ( id ) {
645 jQuery('#two_critical_pages').addClass( 'loading' );
646 var two_critical_pages = two_two_critical_pages(id);
647 var ajax_data = {
648 'action': 'two_critical',
649 'data': {
650 page_id: id,
651 task: "insert/update",
652 'two_critical_pages': two_critical_pages,
653 },
654 'nonce': two_admin_vars.ajaxnonce,
655 };
656 jQuery.ajax({
657 type: "POST",
658 dataType: 'json',
659 url: two_admin_vars.ajaxurl,
660 data: ajax_data,
661 }).done(function (data) {
662 jQuery('#two_critical_pages').removeClass( 'loading' );
663 });
664 }
665 });
666
667 jQuery("body").on("change", "td.critical_page_sizes_default>select, td.critical_page_load_actions_default>select, td.critical_page_wait_until_default>select, td.use_uncritical_default>input",function () {
668 jQuery('#two_critical_pages').addClass( 'loading' );
669 let two_critical_default_settings = get_two_critical_default_settings();
670 var ajax_data = {
671 'action': 'two_critical',
672 'data': {
673 task: "update_defaults",
674 "default_settings":two_critical_default_settings
675 },
676 'nonce': two_admin_vars.ajaxnonce,
677 };
678 jQuery.ajax({
679 type: "POST",
680 dataType: 'json',
681 url: two_admin_vars.ajaxurl,
682 data: ajax_data,
683 }).done(function (data) {
684 jQuery('#two_critical_pages').removeClass( 'loading' );
685 });
686 });
687
688
689
690 jQuery('<div><button id="two_add_new_critical_size">Add New Size</button></div>').insertAfter('#two_critical_sizes');
691 jQuery("#two_add_new_critical_size").click(function () {
692 two_table_sizes.row.add(jQuery(get_two_table_sizes_html())).draw();
693 });
694 jQuery("body").on("click", ".two_add_critical_size", function () {
695 var $row = jQuery(this).closest("tr");
696 var uid = $row.data("uid");
697 var $tds = $row.find("td").not(':last');
698 var new_size_width = 0;
699 var new_size_height = 0;
700 var critical_size_media_input = jQuery(this).find(".critical_size_media_input").val();
701 jQuery.each($tds, function (i, el) {
702 var critical_page_size_input = jQuery(this).find(".critical_page_size_input");
703 var txt = critical_page_size_input.val();
704 if (critical_page_size_input.hasClass("critical_page_width_input")) {
705 new_size_width = txt;
706 }
707 if (critical_page_size_input.hasClass("critical_page_height_input")) {
708 new_size_height = txt;
709 }
710 jQuery(this).html(txt);
711 });
712
713 var new_option = new Option(new_size_width + "/" + new_size_height);
714 jQuery(new_option).data("width", new_size_width);
715 jQuery(new_option).data("height", new_size_height);
716 jQuery(new_option).data("uid", uid);
717 jQuery(new_option).data("media", critical_size_media_input);
718 jQuery(new_option).html(new_size_width + "/" + new_size_height);
719 jQuery(".two_critical_sizes_select").append(new_option);
720
721 jQuery(this).remove();
722 });
723 jQuery("body").on("click", ".two_delete_critical_size", function () {
724 two_table_sizes
725 .row(jQuery(this).parents('tr'))
726 .remove()
727 .draw();
728 });
729 jQuery("body").on("click", ".two_delete_critical_page", function () {
730 two_table_critical
731 .row(jQuery(this).parents('tr'))
732 .remove()
733 .draw();
734
735 var page_id = jQuery(this).data("page_id");
736 var ajax_data = {
737 'action': 'two_critical',
738 'data': {
739 page_id: page_id,
740 task: "delete",
741 },
742 'nonce': two_admin_vars.ajaxnonce,
743 };
744 jQuery.ajax({
745 type: "POST",
746 dataType: 'json',
747 url: two_admin_vars.ajaxurl,
748 data: ajax_data,
749 }).done(function (data) {
750
751 });
752 });
753
754 jQuery("body").on("click", ".two_clear_cloudflare_cache", function () {
755 let page_url = jQuery(this).data("page_url");
756 let ajax_data = {
757 'action': 'two_clear_cloudflare_cache',
758 page_url: page_url,
759 'nonce': two_admin_vars.ajaxnonce,
760 };
761 let el = jQuery(this).parents('tr');
762 let spinner = el.find(".spinner");
763 spinner.addClass("is-active");
764 jQuery.ajax({
765 type: "POST",
766 dataType: 'json',
767 url: two_admin_vars.ajaxurl,
768 data: ajax_data,
769 }).done(function (data) {
770 spinner.removeClass("is-active");
771 });
772 });
773
774
775 jQuery("body").on("click", ".two_generate_critical", function () {
776 jQuery(".two_generate_critical").addClass("two_disabled_timeout");
777 let two_generate_critical_button = jQuery(this);
778 two_generate_critical(two_generate_critical_button);
779 });
780
781
782 let two_critical_generation_flag = true;
783 function two_generate_critical(_this){
784 two_critical_generation_flag = false;
785 two_check_critical_restart();
786 _this.addClass("two_disabled");
787 var el = _this.parents('tr');
788 var spinner = el.find(".spinner");
789 el.find(".two_critical_page_status").val("in_progress");
790 spinner.addClass("is-active");
791 var data = two_get_critical_page_data(el);
792 data.task = "generate";
793 var two_critical_sizes = two_get_critical_sizes();
794 var two_critical_pages = two_two_critical_pages(data['page_id']);
795 var ajax_data = {
796 'action': 'two_critical',
797 'data': data,
798 'two_critical_pages': two_critical_pages,
799 'two_critical_sizes': two_critical_sizes,
800 'nonce': two_admin_vars.ajaxnonce,
801 };
802 jQuery.ajax({
803 type: "POST",
804 dataType: 'json',
805 url: two_admin_vars.ajaxurl,
806 data: ajax_data,
807 }).done(function (data) {
808 if (data.success) {
809 if (_this.hasClass("dashicons-database-add")) {
810 //two_generate_critical_button.removeClass("dashicons-database-add");
811 //two_generate_critical_button.addClass("dashicons-database-view");
812 }
813 }
814 });
815 }
816
817
818
819
820
821 function get_two_new_row_html() {
822 var two_new_row_html = '<tr>\n' +
823 ' <td class="two_css_name"><input type="text" value=""></td>\n' +
824 ' <td class="two_url"><input type="text" value=""></td>\n' +
825 ' <td class="two_load_type"><select><option value="Disabled">Disabled</option><option value="Async" selected>Async</option></select></td>\n' +
826 ' <td>\n' +
827 ' <span data-task="save"class="two_edit_element dashicons dashicons-edit-large two_save_element dashicons-saved"></span>\n' +
828 ' <span data-task="duplicate" class="two_duplicate_element dashicons dashicons-admin-page"></span>\n ' +
829 ' <span class="two_delete_element dashicons dashicons-trash"></span>\n' +
830 ' </td>\n' +
831 ' </tr>';
832 return two_new_row_html;
833 }
834
835 function get_two_duplicate_html(two_css_name, two_url, two_load_type) {
836 var two_new_duplicate_row_html = '<tr>\n' +
837 ' <td class="two_css_name">' + two_css_name + '</td>\n' +
838 ' <td class="two_url">' + two_url + '</td>\n' +
839 ' <td class="two_load_type">' + two_load_type + '</td>\n' +
840 ' <td>\n' +
841 ' <span data-task="edit"class="two_edit_element dashicons dashicons-edit-large"></span>\n' +
842 ' <span data-task="duplicate" class="two_duplicate_element dashicons dashicons-admin-page"></span>\n ' +
843 ' <span class="two_delete_element dashicons dashicons-trash"></span>\n' +
844 ' </td>\n' +
845 ' </tr>';
846 return two_new_duplicate_row_html;
847 }
848
849 function get_two_table_critical_html(url, id, title, flag_url) {
850 let two_critical_wait_untils = two_critical_options.critical_wait_until;
851 let two_uncritical_load_types = two_critical_options.uncritical_load_types;
852
853
854 let two_critical_default_settings = get_two_critical_default_settings();
855 let default_sizes = two_critical_default_settings.default_sizes
856 let load_type = two_critical_default_settings.load_type
857 let use_uncritical = two_critical_default_settings.use_uncritical
858 let wait_until = two_critical_default_settings.wait_until
859
860 let generate_class = ""
861 if(two_critical_generation_flag == false && two_table_critical.rows().count()>0){
862 generate_class = "two_disabled_timeout";
863 }
864 var critical_sizes = two_get_critical_sizes();
865
866
867 let uncritical_load_html = "";
868
869 jQuery.each(two_uncritical_load_types, function (key, val){
870 var two_selected_load_type = "";
871 if(key === load_type){
872 two_selected_load_type = "selected";
873 }
874 uncritical_load_html += "<option "+two_selected_load_type+" value='"+key+"'>"+val+"</option>";
875 });
876
877
878 let critical_wait_until_html = "";
879
880 jQuery.each(two_critical_wait_untils, function (key, val){
881 var two_selected_wait_until = "";
882 if(key === wait_until){
883 two_selected_wait_until = "selected";
884 }
885 critical_wait_until_html += " <option "+two_selected_wait_until+" value='"+key+"'>"+val+"</option>";
886 });
887
888 var critical_sizes_select = '<select multiple class="two_critical_sizes_select">';
889 let selected_size_selected = "";
890
891 jQuery.each(critical_sizes, function (uid, size) {
892 selected_size_selected = "";
893 if(default_sizes.includes(uid)){
894 selected_size_selected = "selected";
895 }
896 critical_sizes_select += '<option '+selected_size_selected+' data-uid="' + uid + '" data-width="' + size.width + '" data-height="' + size.height + '" data-media="' + size.media + '">' + size.width + '/' + size.height + '</option>'
897 });
898 critical_sizes_select += "</select>";
899 let two_use_uncritical_check = "";
900 if(use_uncritical){
901 two_use_uncritical_check = "checked";
902 }
903 let flag_img = "";
904 if(flag_url){
905 flag_img = '<img src="' + flag_url + '" class="two_flag"/>';
906 }
907
908 var two_new_row_html = '<tr data-page_id="'+id+'">\n' +
909 ' <td class="critical_page_url" data-page_url="' + url + '" data-page_id="' + id + '"><a href="' + url + '" target="_blank">' + flag_img + title + '</a></td>\n' +
910 ' <td class="critical_page_sizes">\n' +
911 critical_sizes_select +
912 ' </td>\n' +
913 ' <td class="critical_page_load_actions">' +
914 ' <select>'+uncritical_load_html+'</select>\n'+
915 ' </td>\n' +
916 ' <td class="critical_page_wait_until">' +
917 ' <select>'+critical_wait_until_html+'</select>\n' +
918 ' </td>\n' +
919 ' <td class="use_uncritical">\n' +
920 ' <input '+two_use_uncritical_check+' type="checkbox" name="use_uncritical">\n' +
921 ' </td>\n'+
922 ' <td>\n' +
923 ' <span></span>\n' +
924 ' </td>\n'+
925 ' <td>\n' +
926 ' <span data-task="edit" class="two_generate_critical dashicons dashicons-database-add '+generate_class+'"></span>\n' +
927 ' <span class="two_delete_critical_page dashicons dashicons-trash" data-page_id="' + id + '"></span>\n' +
928 ' <span class="spinner"></span>\n' +
929 ' <input type="hidden" value="not_started" class="two_critical_page_status">\n' +
930 ' </td>\n' +
931 ' </tr>';
932 return two_new_row_html;
933 }
934
935 function get_two_table_sizes_html() {
936 var size_uid = two_generate_uid();
937 var two_new_row_html = '<tr class="' + size_uid + '" data-uid="' + size_uid + '">\n' +
938 ' <td class="critical_page_width"><input class="critical_page_size_input critical_page_width_input" type="number" value=""></td>\n' +
939 ' <td class="critical_page_height"><input class="critical_page_size_input critical_page_height_input" type="number" value=""></td>\n' +
940 ' <td class="critical_size_media"><input type="text" name="critical_size_media" class="critical_size_media_input" value=""></td>\n' +
941 ' <td>' +
942 '<span data-task="edit" class="two_add_critical_size dashicons dashicons-saved"></span>' +
943 '<span class="two_delete_critical_size dashicons dashicons-trash"></span>' +
944 '</td>\n' +
945 ' </tr>';
946 return two_new_row_html;
947 }
948
949
950 function get_two_critical_default_settings(){
951 var selector = "#two_critical_pages .two_critical_defaults";
952 var load_type = jQuery(selector).find(".critical_page_load_actions_default select").val();
953 var wait_until = jQuery(selector).find(".critical_page_wait_until_default select").val();
954 var use_uncritical = jQuery(selector).find(".use_uncritical_default input").is(":checked");
955 var default_sizes = jQuery(selector).find(".critical_page_sizes_default select option:selected").map(function () {
956 var uid = jQuery(this).data("uid");
957 var data = [uid];
958 return data;
959 }).get();
960 return {
961 "load_type" : load_type,
962 "wait_until" :wait_until,
963 "use_uncritical" : use_uncritical,
964 "default_sizes": default_sizes,
965 }
966
967 }
968 });
969
970
971 function clear_messages() {
972 jQuery(".two_error_message, .two_success_message, .two_webp_success_message, .two_webp_error_message").css({
973 'display': 'none'
974 });
975 }
976
977 function two_get_critical_page_data(el) {
978 var critical_page_url = el.find(".critical_page_url").data("page_url");
979 var critical_page_id = el.find(".critical_page_url").data("page_id");
980 var critical_page_wait_until = el.find(".critical_page_wait_until select").val();
981 var critical_page_sizes = el.find(".critical_page_sizes .two_critical_sizes_select option:selected").map(function () {
982 var uid = jQuery(this).data("uid");
983 var data = two_get_critical_size(uid);
984 return data;
985 }).get();
986 var return_data = {
987 page_url: critical_page_url,
988 page_id: critical_page_id,
989 page_sizes: critical_page_sizes,
990 wait_until: critical_page_wait_until,
991 url_query: jQuery("#two_critical_url_args").val(),
992 }
993 return return_data;
994 }
995
996 function two_get_critical_sizes() {
997 var critical_sizes = {};
998 jQuery("#two_critical_sizes tbody tr").each(function () {
999 var data_id = jQuery(this).data("uid");
1000 var critical_page_width = jQuery(this).find(".critical_page_width").text();
1001 var critical_page_height = jQuery(this).find(".critical_page_height").text();
1002 var critical_size_media = jQuery(this).find(".critical_size_media_input").val();
1003 if (typeof critical_page_width !== "undefined" && typeof critical_page_height !== "undefined") {
1004 var data = {
1005 width: critical_page_width,
1006 height: critical_page_height,
1007 media: critical_size_media,
1008 uid: data_id
1009 }
1010 critical_sizes[data_id] = data;
1011 }
1012 });
1013 return critical_sizes;
1014 }
1015
1016 function two_get_critical_size(id) {
1017 var el = jQuery("." + id);
1018 var critical_page_width = el.find(".critical_page_width").text();
1019 var critical_page_height = el.find(".critical_page_height").text();
1020 var critical_size_media = el.find(".critical_size_media_input").val();
1021 var data = {
1022 width: critical_page_width,
1023 height: critical_page_height,
1024 media: critical_size_media,
1025 uid: id
1026 }
1027 return data;
1028 }
1029
1030 function two_two_critical_pages(page_id) {
1031 var two_critical_pages = {};
1032 var selector = "#two_critical_pages tbody tr";
1033 if (undefined != page_id) {
1034 selector += "[data-page_id=" + page_id + "]";
1035 }
1036 jQuery(selector).each(function () {
1037 var critical_page_title = jQuery(this).find(".critical_page_url a").text();
1038 var critical_page_url = jQuery(this).find(".critical_page_url").data("page_url");
1039 var critical_page_id = jQuery(this).find(".critical_page_url").data("page_id");
1040 var two_critical_page_status = jQuery(this).find(".two_critical_page_status").val();
1041 var load_type = jQuery(this).find(".critical_page_load_actions select").val();
1042 var wait_until = jQuery(this).find(".critical_page_wait_until select").val();
1043 var use_uncritical = jQuery(this).find(".use_uncritical input").is(":checked");
1044 var result = jQuery(this).find(".critical_page_sizes .two_critical_sizes_select option:selected").map(function () {
1045 var width = jQuery(this).data("width");
1046 var height = jQuery(this).data("height");
1047 var uid = jQuery(this).data("uid");
1048 var media = jQuery("." + uid + " .critical_size_media input").val();
1049 var data = [uid];
1050 return data;
1051 }).get();
1052 var critical_page_sizes = result;
1053
1054
1055 if (typeof critical_page_url !== "undefined" && typeof critical_page_sizes !== "undefined") {
1056 var data = {
1057 title: critical_page_title,
1058 url: critical_page_url,
1059 id: critical_page_id,
1060 sizes: critical_page_sizes,
1061 load_type: load_type,
1062 wait_until: wait_until,
1063 status: two_critical_page_status,
1064 use_uncritical: use_uncritical,
1065 }
1066 two_critical_pages[critical_page_id] = data;
1067 }
1068 });
1069 return two_critical_pages;
1070 }
1071
1072 function two_generate_uid() {
1073 var u_date = Date.now();
1074 var unique_id = "two_" + u_date;
1075 return unique_id;
1076 }
1077
1078
1079 function two_check_critical_statuses(){
1080 jQuery.ajax({
1081 type: "POST",
1082 dataType: 'json',
1083 url: two_admin_vars.ajaxurl,
1084 data: {
1085 'action': 'two_critical_statuses',
1086 'nonce': two_admin_vars.ajaxnonce,
1087 },
1088 }).done(function (data) {
1089 if(data.status != "1"){
1090 two_critical_generation_flag = true;
1091 jQuery(".two_generate_critical").removeClass("two_disabled_timeout");
1092 }
1093 let data_pages = data.pages;
1094 data_pages.forEach((elem) => {
1095 let spinner =jQuery("#two_critical_pages tr[data-page_id='"+elem.page_id+"']").find(".spinner");
1096 let two_generate_critical_button =jQuery("#two_critical_pages tr[data-page_id='"+elem.page_id+"']").find(".two_generate_critical");
1097 let two_critical_page_status =jQuery("#two_critical_pages tr[data-page_id='"+elem.page_id+"']").find(".two_critical_page_status");
1098 if(elem.status == "success"){
1099 jQuery(".two_critical_error").addClass("two_critical_blocked");
1100 two_generate_critical_button.removeClass("two_disabled");
1101 spinner.removeClass("is-active");
1102 two_generate_critical_button.addClass("dashicons-database-view");
1103 two_generate_critical_button.removeClass("dashicons-database-add");
1104 two_critical_page_status.val("success");
1105 }else if(elem.status == "in_progress"){
1106 spinner.addClass("is-active");
1107 two_critical_page_status.val("in_progress");
1108 two_generate_critical_button.addClass("two_disabled");
1109 }else if(elem.status == "error"){
1110 jQuery(".two_critical_error").removeClass("two_critical_blocked");
1111 spinner.removeClass("is-active");
1112 two_generate_critical_button.addClass("dashicons-database-add");
1113 two_generate_critical_button.removeClass("dashicons-database-view");
1114 two_generate_critical_button.removeClass("two_disabled");
1115 two_critical_page_status.val("error");
1116 }else{
1117 spinner.removeClass("is-active");
1118 two_generate_critical_button.addClass("dashicons-database-add");
1119 two_generate_critical_button.removeClass("dashicons-database-view");
1120 two_generate_critical_button.removeClass("two_disabled");
1121 two_critical_page_status.val("not_started");
1122 }
1123 })
1124 });
1125 }
1126
1127
1128 let two_check_critical_interval = false;
1129 function two_check_critical_restart() {
1130 if(two_check_critical_interval != false){
1131 clearInterval(two_check_critical_interval);
1132 }
1133 two_check_critical_interval = setInterval(function (){
1134 two_check_critical_statuses();
1135 },7000);
1136 }
1137 two_check_critical_restart();
1138
1139
1140