PluginProbe
WP Reset / 1.83
WP Reset v1.83
trunk 1.0 1.1 1.11 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.77 1.80 1.81 1.82 1.83 1.84 1.85 1.86 1.90 All 42 releases
wp-reset / js / wp-reset.js

wp-reset.js in WP Reset 1.83, at js/wp-reset.js

1,412 lines 42.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * WP Reset
3 * https://wpreset.com/
4 * (c) WebFactory Ltd, 2017-2021
5 */
6
7 jQuery(document).ready(function ($) {
8 // init tabs
9 $('#wp-reset-tabs')
10 .tabs({
11 create: function () {
12 $('#loading-tabs').remove();
13 },
14 activate: function (event, ui) {
15 localStorage.setItem('wp-reset-tabs', $('#wp-reset-tabs').tabs('option', 'active'));
16 },
17 active: localStorage.getItem('wp-reset-tabs') || 0,
18 })
19 .show();
20
21 // helper for swithcing tabs & linking anchors in different tabs
22 $('.tools_page_wp-reset').on('click', '.change-tab', function (e) {
23 e.preventDefault();
24
25 $('#wp-reset-tabs').tabs('option', 'active', $(this).data('tab'));
26
27 // get the link anchor and scroll to it
28 target = this.href.split('#')[1];
29 if (target) {
30 $.scrollTo('#' + target, 500, { offset: { top: -50, left: 0 } });
31 }
32
33 $(this).blur();
34 return false;
35 }); // jump to tab/anchor helper
36
37 // init tooltips
38 $('.tooltip').tooltipster({
39 theme: ['tooltipster-punk', 'tooltipster-wpr'],
40 delay: 0,
41 });
42
43 // helper for scrolling to anchor
44 $('.tools_page_wp-reset').on('click', '.scrollto', function (e) {
45 e.preventDefault();
46
47 // get the link anchor and scroll to it
48 target = this.href.split('#')[1];
49 if (target) {
50 $.scrollTo('#' + target, 500, { offset: { top: -50, left: 0 } });
51 }
52
53 $(this).blur();
54 return false;
55 }); // scroll to anchor helper
56
57 // toggle button dropdown menu
58 $('.tools_page_wp-reset').on('click', '.button.dropdown-toggle', function (e) {
59 e.preventDefault();
60
61 parent_dropdown = $(this).parent('.dropdown');
62 sibling_menu = $(this).siblings('.dropdown-menu');
63
64 $('.dropdown').not(parent_dropdown).removeClass('show');
65 $('.dropdown-menu').not(sibling_menu).removeClass('show');
66
67 $(parent_dropdown).toggleClass('show');
68 $(sibling_menu).toggleClass('show');
69
70 return false;
71 }); // toggle button dropdown menu
72
73 $(document).on('click', ':not(.dropdown-toggle), .dropdown-item', function () {
74 wpr_close_dropdowns();
75 });
76
77 // delete transients
78 $('.tools_page_wp-reset').on('click', '#delete-transients', function (e) {
79 e.preventDefault();
80
81 run_tool(this, 'delete_transients');
82
83 return false;
84 }); // delete transients
85
86 // purge cache
87 $('.tools_page_wp-reset').on('click', '#purge-cache', function (e) {
88 e.preventDefault();
89
90 run_tool(this, 'purge_cache');
91
92 return false;
93 }); // purge cache
94
95 // delete uploads
96 $('.tools_page_wp-reset').on('click', '#delete-uploads', function (e) {
97 e.preventDefault();
98
99 run_tool(this, 'delete_uploads');
100
101 return false;
102 }); // delete uploads
103
104 // reset theme options (mods)
105 $('.tools_page_wp-reset').on('click', '#reset-theme-options', function (e) {
106 e.preventDefault();
107
108 run_tool(this, 'reset_theme_options');
109
110 return false;
111 }); // reset theme options
112
113 // delete themes
114 $('.tools_page_wp-reset').on('click', '#delete-themes', function (e) {
115 e.preventDefault();
116
117 run_tool(this, 'delete_themes');
118
119 return false;
120 }); // delete themes
121
122 // delete plugins
123 $('.tools_page_wp-reset').on('click', '#delete-plugins', function (e) {
124 e.preventDefault();
125
126 var button = this;
127 var confirm_title = $(button).data('confirm-title') || wp_reset.confirm_title;
128
129 var tools = [
130 {
131 tool: 'deactivate_plugins',
132 description: 'Deactivating plugins.',
133 extra_data: { keep_default_theme: 0, keep_current_theme: 0 },
134 },
135 {
136 tool: 'delete_plugins',
137 description: 'Deleting plugins.',
138 extra_data: {
139 keep_wp_reset: 1,
140 silent_deactivate: 0,
141 },
142 },
143 ];
144 var looper = $.Deferred().resolve();
145
146 confirm_action(
147 confirm_title,
148 $(button).data('text-confirm'),
149 $(button).data('btn-confirm') || $(button).text(),
150 wp_reset.cancel_button
151 ).then((result) => {
152 if (!result.value) {
153 return false;
154 }
155
156 wpr_swal.fire({
157 title: $(button).data('text-wait'),
158 text: ' ',
159 type: false,
160 allowOutsideClick: false,
161 allowEscapeKey: false,
162 allowEnterKey: false,
163 showConfirmButton: false,
164 imageUrl: wp_reset.icon_url,
165 onOpen: () => {
166 $(wpr_swal.getImage()).addClass('wpr_rotating');
167 },
168 imageWidth: 100,
169 imageHeight: 100,
170 imageAlt: $(button).data('text-wait'),
171 });
172
173 var failed = false;
174 $.each(tools, function (i, data) {
175 looper = looper.then(function () {
176 if (failed) {
177 return false;
178 }
179 wpr_swal.getContent().querySelector('#swal2-content').textContent =
180 i + 1 + '/' + tools.length + ' - ' + data.description;
181 return $.ajax({
182 data: {
183 action: 'wp_reset_run_tool',
184 _ajax_nonce: wp_reset.nonce_run_tool,
185 tool: data.tool,
186 extra_data: data.extra_data,
187 },
188 url: ajaxurl,
189 })
190 .done(function (response) {
191 if (response.success) {
192 failed = false;
193 if (i == tools.length - 1) {
194 if (response.data == 1) {
195 msg = $(button).data('text-done-singular');
196 } else {
197 msg = $(button).data('text-done').replace('%n', response.data);
198 }
199 wpr_swal_params = { icon: 'success', title: msg };
200
201 wpr_swal.fire(wpr_swal_params);
202 }
203 } else {
204 wpr_swal.close();
205 wpr_swal.fire({
206 icon: 'error',
207 title: wp_reset.documented_error,
208 text: response.data,
209 });
210 failed = true;
211 return false;
212 }
213 })
214 .error(function (response) {
215 wpr_swal.close();
216 wpr_swal.fire({
217 icon: 'error',
218 title: wp_reset.undocumented_error,
219 });
220 failed = true;
221 return false;
222 });
223 });
224 });
225 }); // confirm ok
226
227 return false;
228 }); // delete plugins
229
230 // drop custom tables
231 $('.tools_page_wp-reset').on('click', '#drop-custom-tables', function (e) {
232 e.preventDefault();
233
234 run_tool(this, 'drop_custom_tables');
235
236 return false;
237 }); // drop custom tables
238
239 // truncate custom tables
240 $('.tools_page_wp-reset').on('click', '#truncate-custom-tables', function (e) {
241 e.preventDefault();
242
243 run_tool(this, 'truncate_custom_tables');
244
245 return false;
246 }); // truncate custom tables
247
248 // delete htaccess file
249 $('.tools_page_wp-reset').on('click', '#delete-htaccess', function (e) {
250 e.preventDefault();
251
252 run_tool(this, 'delete_htaccess');
253
254 return false;
255 }); // delete htaccess file
256
257 // delete auth cookies
258 $('.tools_page_wp-reset').on('click', '#delete-wp-cookies', function (e) {
259 e.preventDefault();
260
261 run_tool(this, 'delete_wp_cookies');
262
263 return false;
264 }); // delete auth cookies
265
266 // delete local data
267 $('.tools_page_wp-reset').on('click', '#delete-local-data', function (e) {
268 e.preventDefault();
269 var button = this;
270 var confirm_title = $(button).data('confirm-title') || wp_reset.confirm_title;
271
272 confirm_action(
273 confirm_title,
274 $(button).data('text-confirm'),
275 $(button).data('btn-confirm'),
276 wp_reset.cancel_button
277 ).then((result) => {
278 if (!result.value) {
279 return false;
280 }
281
282 cnt = wpr_clear_local(true, true);
283 if (cnt == 1) {
284 msg = $(button).data('text-done-singular');
285 } else {
286 msg = $(button).data('text-done').replace('%n', cnt);
287 }
288 wpr_swal.fire({ icon: 'success', title: msg });
289 });
290
291 return false;
292 }); // delete local data
293
294 // compare snapshot
295 $('#wpr-snapshots').on('click', '.compare-snapshot', 'click', function (e) {
296 e.preventDefault();
297 uid = $(this).data('ss-uid');
298 button = $(this);
299
300 block_ui($(button).data('wait-msg'));
301 $.get({
302 url: ajaxurl,
303 data: {
304 action: 'wp_reset_run_tool',
305 _ajax_nonce: wp_reset.nonce_run_tool,
306 tool: 'compare_snapshots',
307 extra_data: uid,
308 },
309 })
310 .always(function (data) {
311 wpr_swal.close();
312 })
313 .done(function (data) {
314 if (data.success) {
315 msg = $(button).data('title').replace('%s', $(button).data('name'));
316 wpr_swal.fire({
317 width: '90%',
318 title: msg,
319 html: data.data,
320 showConfirmButton: false,
321 allowEnterKey: false,
322 focusConfirm: false,
323 showCloseButton: true,
324 customClass: 'compare-snapshots',
325 });
326 } else {
327 wpr_swal.fire({
328 icon: 'error',
329 title: wp_reset.documented_error + ' ' + data.data,
330 });
331 }
332 })
333 .fail(function (data) {
334 wpr_swal.fire({ icon: 'error', title: wp_reset.undocumented_error });
335 });
336
337 return false;
338 }); // compare snapshot
339
340 // restore snapshot
341 $('#wpr-snapshots').on('click', '.restore-snapshot', 'click', function (e) {
342 e.preventDefault();
343 uid = $(this).data('ss-uid');
344
345 run_tool(this, 'restore_snapshot', uid);
346
347 return false;
348 }); // restore snapshot
349
350 // download snapshot
351 $('#wpr-snapshots').on('click', '.download-snapshot', 'click', function (e) {
352 e.preventDefault();
353 uid = $(this).data('ss-uid');
354 button = this;
355
356 block_ui($(this).data('wait-msg'));
357 $.get({
358 url: ajaxurl,
359 data: {
360 action: 'wp_reset_run_tool',
361 _ajax_nonce: wp_reset.nonce_run_tool,
362 tool: 'download_snapshot',
363 extra_data: uid,
364 },
365 })
366 .always(function (data) {
367 wpr_swal.close();
368 })
369 .done(function (data) {
370 if (data.success) {
371 msg = $(button).data('success-msg').replace('%s', data.data);
372 wpr_swal.fire({ icon: 'success', title: msg });
373 } else {
374 wpr_swal.fire({
375 icon: 'error',
376 title: wp_reset.documented_error + ' ' + data.data,
377 });
378 }
379 })
380 .fail(function (data) {
381 wpr_swal.fire({ icon: 'error', title: wp_reset.undocumented_error });
382 });
383
384 return false;
385 }); // download snapshot
386
387 // delete snapshot
388 $('#wpr-snapshots').on('click', '.delete-snapshot', 'click', function (e) {
389 e.preventDefault();
390 uid = $(this).data('ss-uid');
391
392 run_tool(this, 'delete_snapshot', uid);
393
394 return false;
395 }); // delete snapshot
396
397 // create snapshot
398 $('.tools_page_wp-reset').on('click', '.create-new-snapshot', function (e) {
399 e.preventDefault();
400
401 description = $(this).data('description') || '';
402
403 wpr_swal
404 .fire({
405 title: wp_reset.snapshot_title,
406 icon: 'question',
407 text: wp_reset.snapshot_text,
408 input: 'text',
409 inputValue: description,
410 inputPlaceholder: wp_reset.snapshot_placeholder,
411 showCancelButton: true,
412 focusConfirm: false,
413 confirmButtonText: wp_reset.snapshot_confirm,
414 cancelButtonText: wp_reset.cancel_button,
415 width: 600,
416 })
417 .then((result) => {
418 if (typeof result.value != 'undefined') {
419 block = block_ui(wp_reset.snapshot_wait);
420 $.get({
421 url: ajaxurl,
422 data: {
423 action: 'wp_reset_run_tool',
424 _ajax_nonce: wp_reset.nonce_run_tool,
425 tool: 'create_snapshot',
426 extra_data: result.value,
427 },
428 })
429 .always(function (data) {
430 wpr_swal.close();
431 })
432 .done(function (data) {
433 if (data.success) {
434 wpr_swal
435 .fire({
436 icon: 'success',
437 title: wp_reset.snapshot_success,
438 timer: 2000,
439 timerProgressBar: true,
440 showConfirmButton: true,
441 })
442 .then((result) => {
443 location.reload();
444 });
445 } else {
446 wpr_swal.fire({
447 icon: 'error',
448 title: wp_reset.documented_error + ' ' + data.data,
449 });
450 }
451 })
452 .fail(function (data) {
453 wpr_swal.fire({
454 icon: 'error',
455 title: wp_reset.undocumented_error,
456 });
457 });
458 } // if confirmed
459 });
460
461 return false;
462 }); // create snapshot
463
464 // show/hide extra table info in snapshot diff
465 $('body.tools_page_wp-reset').on('click', '.header-row', function (e) {
466 e.preventDefault();
467
468 parent = $(this).parents('div.wpr-table-container > table > tbody');
469 $(' > tr:not(.header-row)', parent).toggleClass('hidden');
470
471 $('span.dashicons', parent).toggleClass('dashicons-arrow-down-alt2').toggleClass('dashicons-arrow-up-alt2');
472
473 return false;
474 }); // show hide extra info in diff
475
476 // standard way of running a tool, with confirmation, loading and success message
477 function run_tool(button, tool_name, extra_data) {
478 var confirm_title = $(button).data('confirm-title') || wp_reset.confirm_title;
479
480 wpr_close_dropdowns();
481
482 confirm_action(
483 confirm_title,
484 $(button).data('text-confirm'),
485 $(button).data('btn-confirm'),
486 wp_reset.cancel_button
487 ).then((result) => {
488 if (result.value) {
489 block = block_ui($(button).data('text-wait'));
490 $.get({
491 url: ajaxurl,
492 data: {
493 action: 'wp_reset_run_tool',
494 _ajax_nonce: wp_reset.nonce_run_tool,
495 tool: tool_name,
496 extra_data: extra_data,
497 },
498 })
499 .always(function (data) {
500 wpr_swal.close();
501 })
502 .done(function (data) {
503 if (data.success) {
504 if (data.data == 1) {
505 msg = $(button).data('text-done-singular');
506 } else {
507 msg = $(button).data('text-done').replace('%n', data.data);
508 }
509 wpr_swal
510 .fire({
511 icon: 'success',
512 title: msg,
513 timer: 2000,
514 timerProgressBar: true,
515 })
516 .then(() => {
517 if (tool_name == 'restore_snapshot') {
518 location.reload();
519 }
520 });
521 if (tool_name == 'delete_snapshot') {
522 $('#wpr-ss-' + extra_data).remove();
523 if ($('#wpr-snapshots tr').length <= 1) {
524 $('#wpr-snapshots').hide();
525 $('#ss-no-snapshots').show();
526 }
527 }
528 } else {
529 wpr_swal.fire({
530 icon: 'error',
531 title: wp_reset.documented_error + ' ' + data.data,
532 });
533 }
534 })
535 .fail(function (data) {
536 wpr_swal.fire({
537 icon: 'error',
538 title: wp_reset.undocumented_error,
539 });
540 });
541 } // if confirmed
542 });
543 } // run_tool
544
545 // display a message while an action is performed
546 function block_ui(message) {
547 tmp = wpr_swal.fire({
548 text: message,
549 type: false,
550 imageUrl: wp_reset.icon_url,
551 onOpen: () => {
552 $(wpr_swal.getImage()).addClass('rotating');
553 },
554 imageWidth: 100,
555 imageHeight: 100,
556 imageAlt: message,
557 allowOutsideClick: false,
558 allowEscapeKey: false,
559 allowEnterKey: false,
560 showConfirmButton: false,
561 });
562
563 return tmp;
564 } // block_ui
565
566 // display dialog to confirm action
567 function confirm_action(title, question, btn_confirm, btn_cancel) {
568 tmp = wpr_swal.fire({
569 title: title,
570 icon: 'question',
571 html: question,
572 showCancelButton: true,
573 focusConfirm: false,
574 focusCancel: true,
575 confirmButtonText: btn_confirm,
576 cancelButtonText: btn_cancel,
577 confirmButtonColor: '#dd3036',
578 width: 650,
579 });
580
581 return tmp;
582 } // confirm_action
583
584 $('#wp_reset_form').on('submit', function (e, confirmed) {
585 if (!confirmed) {
586 $('#wp_reset_submit').trigger('click');
587 e.preventDefault();
588 return false;
589 }
590
591 $(this).off('submit').submit();
592 return true;
593 }); // bypass default submit behaviour
594
595 $('#wp_reset_submit').click(function (e) {
596 if ($('#wp_reset_confirm').val() !== 'reset') {
597 wpr_swal.fire({
598 title: wp_reset.invalid_confirmation_title,
599 text: wp_reset.invalid_confirmation,
600 icon: 'error',
601 confirmButtonText: wp_reset.ok_button,
602 });
603
604 e.preventDefault();
605 return false;
606 } // wrong confirmation code
607
608 message = wp_reset.confirm1 + '<br>' + wp_reset.confirm2;
609 wpr_swal
610 .fire({
611 title: wp_reset.confirm_title_reset,
612 icon: 'question',
613 html: message,
614 showCancelButton: true,
615 focusConfirm: false,
616 focusCancel: true,
617 confirmButtonText: wp_reset.confirm_button,
618 cancelButtonText: wp_reset.cancel_button,
619 confirmButtonColor: '#dd3036',
620 width: 600,
621 })
622 .then((result) => {
623 if (result.value === true) {
624 block_ui(wp_reset.doing_reset);
625 $('#wp_reset_form').trigger('submit', true);
626 }
627 });
628
629 e.preventDefault();
630 return false;
631 }); // reset submit
632
633 // collapse / expand card
634 $('.tools_page_wp-reset').on('click', '.toggle-card', function (e, skip_anim) {
635 e.preventDefault();
636
637 card = $(this).parents('.card').toggleClass('collapsed');
638 $('.dashicons', this).toggleClass('dashicons-arrow-up-alt2').toggleClass('dashicons-arrow-down-alt2');
639 $(this).blur();
640
641 if (typeof skip_anim != 'undefined' && skip_anim) {
642 $(card).find('.card-body').toggle();
643 } else {
644 $(card).find('.card-body').slideToggle(500);
645 }
646
647 cards = localStorage.getItem('wp-reset-cards');
648 if (cards == null) {
649 cards = new Object();
650 } else {
651 cards = JSON.parse(cards);
652 }
653
654 card_id = card.attr('id') || $('h4', card).attr('id') || '';
655
656 if (card.hasClass('collapsed')) {
657 cards[card_id] = 'collapsed';
658 } else {
659 cards[card_id] = 'expanded';
660 }
661 localStorage.setItem('wp-reset-cards', JSON.stringify(cards));
662
663 return false;
664 }); // toggle-card
665
666 // handle saved and preset cards' state
667 cards_state = localStorage.getItem('wp-reset-cards');
668 if (cards_state != null) {
669 cards_state = JSON.parse(cards_state);
670 } else {
671 cards_state = new Object();
672 }
673
674 cards = $('.card');
675 $.each(cards, function (index, card) {
676 card_name = $('h4', card).attr('id');
677 if (!card_name) {
678 return;
679 }
680
681 if (typeof cards_state == 'object' && cards_state.hasOwnProperty(card_name)) {
682 if (cards_state[card_name] == 'collapsed') {
683 $('a.toggle-card', card).trigger('click', true);
684 }
685 } else {
686 if ($(card).hasClass('default-collapsed')) {
687 $('a.toggle-card', card).trigger('click', true);
688 }
689 }
690 });
691
692 // dismiss notice / pointer
693 $('.wpr-dismiss-notice').on('click', function (e) {
694 notice_name = $(this).data('notice');
695 if (!notice_name) {
696 return true;
697 }
698
699 if ($(this).data('survey')) {
700 $('#survey-dialog').dialog('close');
701 }
702
703 $.get(ajaxurl, {
704 notice_name: notice_name,
705 _ajax_nonce: wp_reset.nonce_dismiss_notice,
706 action: 'wp_reset_dismiss_notice',
707 });
708
709 $(this).parents('.notice-wrapper').fadeOut();
710
711 e.preventDefault();
712 return false;
713 }); // dismiss notice
714
715 // maybe init survey dialog
716 if (wp_reset.open_survey) {
717 $('#survey-dialog').dialog({
718 dialogClass: 'wp-dialog wpr-dialog wpr-survey-dialog',
719 modal: 1,
720 resizable: false,
721 width: 800,
722 height: 'auto',
723 show: 'fade',
724 hide: 'fade',
725 close: function (event, ui) {},
726 open: function (event, ui) {
727 wpr_fix_dialog_close(event, ui);
728 },
729 autoOpen: true,
730 closeOnEscape: true,
731 });
732 }
733
734 // turn questions into checkboxes
735 $('.question-wrapper').on('click', function (e) {
736 if ($(this).hasClass('selected')) {
737 $(this).removeClass('selected');
738 } else {
739 if ($('.question-wrapper.selected').length >= 2) {
740 wpr_swal.fire({
741 icon: 'error',
742 allowOutsideClick: false,
743 text: 'You can choose only up to 2 features at a time.',
744 });
745 } else {
746 $(this).addClass('selected');
747 }
748 }
749
750 e.preventDefault();
751 return false;
752 });
753
754 // submit and hide survey
755 $('.submit-survey').on('click', function (e) {
756 if ($('.question-wrapper.selected').length != 2 && $('.question-wrapper.selected').length != 1) {
757 wpr_swal.fire({
758 icon: 'error',
759 allowOutsideClick: false,
760 text: 'Please choose 1 or 2 features you would like us to build next.',
761 });
762 return false;
763 }
764
765 if (
766 $('#survey-dialog .custom-input').val() == '' &&
767 $('#survey-dialog .custom-input').parents('div.question-wrapper').hasClass('selected')
768 ) {
769 wpr_swal.fire({
770 icon: 'error',
771 allowOutsideClick: false,
772 text: 'Please describe the custom feature you need.',
773 });
774 return false;
775 }
776
777 answers = '';
778 $('.question-wrapper.selected').each(function (i, el) {
779 answers += $(el).data('value') + ',';
780 });
781
782 $.post(ajaxurl, {
783 survey: 'features',
784 answers: answers,
785 emailme: $('#survey-dialog #emailme:checked').val(),
786 custom_answer: $('#survey-dialog .custom-input').val(),
787 _ajax_nonce: wp_reset.nonce_submit_survey,
788 action: 'wp_reset_submit_survey',
789 });
790
791 $('#survey-dialog').dialog('close');
792 wpr_swal.fire({
793 icon: 'success',
794 text: 'Thank you for your time! We appriciate your input!',
795 });
796
797 e.preventDefault();
798 return false;
799 });
800
801 // todo: not finished
802 $('.tools_page_wp-reset').on('click', '.button-pro-feature, .pro-feature', function (e) {
803 e.preventDefault();
804 this.blur();
805
806 tool_id = $(this).data('feature') || $('.pro-feature', this).data('feature');
807 if (!tool_id) {
808 $('#wp-reset-tabs').tabs('option', 'active', 5);
809 $.scrollTo($('#pro-pricing'), 500, { offset: { top: -50, left: 0 } });
810 return;
811 }
812
813 details = $('#pro-feature-details-' + tool_id);
814 if (details.length != 1) {
815 $('#wp-reset-tabs').tabs('option', 'active', 5);
816 $.scrollTo($('#pro-pricing'), 500, { offset: { top: -50, left: 0 } });
817 return;
818 }
819
820 wpr_swal
821 .fire({
822 title: tool_id,
823 html: 'Dialog content',
824 footer:
825 'See everything WP Reset PRO offers on &nbsp;<a target="_blank" href="https://wpreset.com">wpreset.com</a>',
826 icon: '',
827 showCloseButton: true,
828 focusConfirm: true,
829 confirmButtonText: 'Grab the 30% discount',
830 })
831 .then((result) => {
832 if (result.value) {
833 $('#wp-reset-tabs').tabs('option', 'active', 5);
834 $.scrollTo($('#pro-pricing'), 500, {
835 offset: { top: -50, left: 0 },
836 });
837 }
838 });
839
840 return false;
841 });
842
843 $('#show-table-details').on('click', function (e) {
844 e.preventDefault();
845
846 $.get({
847 url: ajaxurl,
848 data: {
849 action: 'wp_reset_run_tool',
850 _ajax_nonce: wp_reset.nonce_run_tool,
851 tool: 'get_table_details',
852 },
853 })
854 .done(function (data) {
855 if (data.success) {
856 $('#wpr-table-details').html(data.data);
857 } else {
858 wpr_swal.fire({
859 type: 'error',
860 title: wp_reset.documented_error + ' ' + data.data,
861 });
862 }
863 })
864 .fail(function (data) {
865 wpr_swal.fire({ type: 'error', title: wp_reset.undocumented_error });
866 });
867
868 return false;
869 }); // show table details
870
871 $('#wpr-save-license').on('click', function (e) {
872 e.preventDefault();
873
874 button = this;
875 safe_refresh = true;
876
877 block = block_ui($(button).data('text-wait'));
878 wf_licensing_verify_licence_ajax('wpr', $('#wpr-license-key').val(), button);
879
880 return;
881 }); // license activation button
882
883 $('#wpr-keyless-activation').on('click', function (e) {
884 e.preventDefault();
885
886 button = this;
887 safe_refresh = true;
888
889 block = block_ui($(button).data('text-wait'));
890 wf_licensing_verify_licence_ajax('wpr', 'keyless', button);
891
892 return;
893 }); // keyless license activation button
894
895 $('#wpr-deactivate-license').on('click', function (e) {
896 e.preventDefault();
897
898 button = this;
899 safe_refresh = true;
900
901 block = block_ui($(button).data('text-wait'));
902 wf_licensing_deactivate_licence_ajax('wpr', $('#wpr-license-key').val(), button);
903
904 return;
905 }); // deactivate license button
906
907 $('#wpr-license-key').on('keypress', function (e) {
908 if (e.keyCode == 13) {
909 e.preventDefault();
910 $('#wpr-save-license').trigger('click');
911 }
912 }); // trigger license save on enter
913
914 // Collections
915 // for demo purposes only
916 var collections_ajax_queue = [];
917 var collections_ajax_queue_count = 0;
918 var collections_ajax_queue_index = 0;
919 var collections_errors = [];
920 var collections_retried = false;
921 wp_reset.collections = [];
922 wp_reset.collections[1] = {
923 id: 1,
924 name: 'Must-have WordPress Plugins',
925 created: '2020-04-01',
926 items: [],
927 };
928 wp_reset.collections[1].items[10] = {
929 id: '10',
930 type: 'plugin',
931 source: 'repo',
932 note: '',
933 slug: 'eps-301-redirects',
934 name: '301 Redirects',
935 version: '0.4',
936 };
937
938 wp_reset.collections[1].items[11] = {
939 id: '11',
940 type: 'plugin',
941 source: 'repo',
942 note: '',
943 slug: 'classic-editor',
944 name: 'Classic Editor',
945 version: '0.4',
946 };
947
948 wp_reset.collections[1].items[12] = {
949 id: '12',
950 type: 'plugin',
951 source: 'repo',
952 note: '',
953 slug: 'simple-author-box',
954 name: 'Simple Author Box',
955 version: '0.4',
956 };
957
958 wp_reset.collections[1].items[13] = {
959 id: '13',
960 type: 'plugin',
961 source: 'repo',
962 note: '',
963 slug: 'sticky-menu-or-anything-on-scroll',
964 name: 'Sticky Menu (or Anything!) on Scroll',
965 version: '0.4',
966 };
967
968 wp_reset.collections[1].items[14] = {
969 id: '14',
970 type: 'plugin',
971 source: 'repo',
972 note: '',
973 slug: 'under-construction-page',
974 name: 'UnderConstructionPage',
975 version: '0.4',
976 };
977
978 wp_reset.collections[1].items[15] = {
979 id: '15',
980 type: 'plugin',
981 source: 'repo',
982 note: '',
983 slug: 'wp-external-links',
984 name: 'WP External Links',
985 version: '0.4',
986 };
987
988 $(document).on('click', '.install-collection', function (e) {
989 do_delete = $(this).data('delete');
990 do_activate = $(this).data('activate');
991 collection_id = $(this).parents('.card').data('collection-id');
992 show_install_collection(collection_id, do_delete, do_activate);
993 });
994
995 // install collection item
996 $('.tools_page_wp-reset').on('click', '.install-collection-item', function (e) {
997 e.preventDefault();
998
999 wpr_close_dropdowns();
1000
1001 collection_id = $(this).parents('.card').data('collection-id');
1002 collection_item_id = $(this).parents('tr').data('collection-item-id');
1003 do_activate = $(this).data('activate');
1004
1005 item_data = wp_reset.collections[collection_id]['items'][collection_item_id];
1006
1007 wpr_swal
1008 .fire({
1009 title: 'Installing <br />' + item_data['name'],
1010 html: '<div class="wpr-collections-installer"></div>',
1011 width: 600,
1012 onRender: function () {
1013 collections_ajax_queue.push({
1014 slug: item_data.slug,
1015 name: item_data.name,
1016 extra_data: {
1017 source: item_data.source,
1018 collection_id: collection_id,
1019 collection_item_id: collection_item_id,
1020 },
1021 action: 'install_' + item_data.type,
1022 });
1023 collections_ajax_queue.push({
1024 slug: item_data.slug,
1025 name: item_data.name,
1026 action: 'check_install_' + item_data.type,
1027 });
1028
1029 $('.wpr-collections-installer').append(
1030 '<div class="wpr-collections-installer-message" data-action="' +
1031 item_data.slug +
1032 '_install_' +
1033 item_data.type +
1034 '"><span class="dashicons"></span>' +
1035 wp_reset.installing +
1036 ' ' +
1037 item_data.name +
1038 '</div>'
1039 );
1040
1041 if (do_activate) {
1042 collections_ajax_queue.push({
1043 slug: item_data.slug,
1044 name: item_data.name,
1045 action: 'activate_' + item_data.type,
1046 extra_data: {
1047 source: item_data.source,
1048 collection_id: collection_id,
1049 collection_item_id: collection_item_id,
1050 },
1051 });
1052 collections_ajax_queue.push({
1053 slug: item_data.slug,
1054 name: item_data.name,
1055 action: 'check_activate_' + item_data.type,
1056 });
1057
1058 $('.wpr-collections-installer').append(
1059 '<div class="wpr-collections-installer-message" data-action="' +
1060 item_data.slug +
1061 '_activate_' +
1062 item_data.type +
1063 '"><span class="dashicons"></span>' +
1064 wp_reset.activating +
1065 ' ' +
1066 item_data.name +
1067 '</div>'
1068 );
1069 }
1070 collections_do_ajax();
1071 },
1072 allowOutsideClick: false,
1073 allowEscapeKey: false,
1074 allowEnterKey: false,
1075 showCancelButton: true,
1076 confirmButtonText: 'OK',
1077 })
1078 .then((result) => {
1079 collections_ajax_queue = [];
1080 });
1081
1082 return false;
1083 }); // install collection item
1084
1085 // show install collection popup
1086 function show_install_collection(collection_id, do_delete, do_activate) {
1087 wpr_swal
1088 .fire({
1089 title: 'Installing collection<br />' + wp_reset.collections[collection_id]['name'],
1090 html: '<div class="wpr-collections-installer"></div>',
1091 width: 600,
1092 onRender: function () {
1093 install_collection(collection_id, do_activate, do_delete);
1094 },
1095 allowOutsideClick: false,
1096 allowEscapeKey: false,
1097 allowEnterKey: false,
1098 showCancelButton: true,
1099 showConfirmButton: false,
1100 confirmButtonText: 'OK',
1101 })
1102 .then((result) => {
1103 collections_ajax_queue = [];
1104 });
1105 } // show install collection popup
1106
1107 // create install collection queue and add popup content
1108 function install_collection(collection_id, do_activate, do_delete) {
1109 collections_ajax_queue = [];
1110 collections_ajax_queue_count = 0;
1111 collections_ajax_queue_index = 0;
1112 collections_errors = [];
1113
1114 console.log(wp_reset.collections[collection_id]);
1115
1116 for (item in wp_reset.collections[collection_id]['items']) {
1117 item_data = wp_reset.collections[collection_id]['items'][item];
1118 collections_ajax_queue.push({
1119 slug: item_data.slug,
1120 name: item_data.name,
1121 extra_data: {
1122 source: item_data.source,
1123 collection_id: collection_id,
1124 collection_item_id: item_data.id,
1125 },
1126 action: 'install_' + item_data.type,
1127 });
1128 collections_ajax_queue.push({
1129 slug: item_data.slug,
1130 name: item_data.name,
1131 action: 'check_install_' + item_data.type,
1132 });
1133
1134 if (do_activate) {
1135 collections_ajax_queue.push({
1136 slug: item_data.slug,
1137 name: item_data.name,
1138 action: 'activate_' + item_data.type,
1139 extra_data: {
1140 source: item_data.source,
1141 collection_id: collection_id,
1142 collection_item_id: item_data.id,
1143 },
1144 });
1145 collections_ajax_queue.push({
1146 slug: item_data.slug,
1147 name: item_data.name,
1148 action: 'check_activate_' + item_data.type,
1149 });
1150 }
1151 }
1152
1153 for (ci in collections_ajax_queue) {
1154 var message = false;
1155 collections_ajax_queue_count++;
1156
1157 switch (collections_ajax_queue[ci].action) {
1158 case 'deactivate_plugin':
1159 message = wp_reset.deactivating;
1160 break;
1161 case 'delete_plugin':
1162 case 'delete_theme':
1163 message = wp_reset.deleting;
1164 break;
1165 case 'install_plugin':
1166 case 'install_theme':
1167 message = wp_reset.installing;
1168 break;
1169 case 'activate_plugin':
1170 case 'activate_theme':
1171 message = wp_reset.activating;
1172 break;
1173 case 'activate_license_plugin':
1174 case 'activate_license_theme':
1175 message = wp_reset.activating_license;
1176 break;
1177 }
1178
1179 if (message !== false) {
1180 $('.wpr-collections-installer').append(
1181 '<div class="wpr-collections-installer-message" data-action="' +
1182 collections_ajax_queue[ci].slug +
1183 '_' +
1184 collections_ajax_queue[ci].action +
1185 '"><span class="dashicons"></span> ' +
1186 message +
1187 ' ' +
1188 collections_ajax_queue[ci].name +
1189 '</div>'
1190 );
1191 }
1192 }
1193
1194 collections_ajax_queue_count = collections_ajax_queue.length;
1195 collections_do_ajax();
1196 } // create install collection queue
1197
1198 // run collection ajax
1199 function collections_do_ajax() {
1200 collection_item = collections_ajax_queue[collections_ajax_queue_index];
1201 message_id = collection_item.slug + '_' + collection_item.action.replace('check_', '');
1202
1203 $('[data-action="' + message_id + '"]').addClass('wpr-collections-installer-loading');
1204
1205 var query_data_type = 'text';
1206 if (
1207 collection_item.action == 'check_deactivate_plugin' ||
1208 collection_item.action == 'check_delete_plugin' ||
1209 collection_item.action == 'check_install_plugin' ||
1210 collection_item.action == 'check_activate_plugin' ||
1211 collection_item.action == 'check_install_theme' ||
1212 collection_item.action == 'check_activate_theme' ||
1213 collection_item.action == 'check_delete_theme' ||
1214 collection_item.action == 'check_activate_license_plugin' ||
1215 collection_item.action == 'check_activate_license_theme'
1216 ) {
1217 query_data_type = 'json';
1218 }
1219
1220 if (!('extra_data' in collection_item)) {
1221 collection_item.extra_data = {};
1222 }
1223
1224 $.ajax({
1225 url: ajaxurl,
1226 type: 'get',
1227 dataType: query_data_type,
1228 data: {
1229 action: 'wp_reset_run_tool',
1230 _ajax_nonce: wp_reset.nonce_run_tool,
1231 tool: collection_item.action,
1232 slug: collection_item.slug,
1233 extra_data: collection_item.extra_data,
1234 },
1235 complete: function (data) {
1236 if (typeof data.responseJSON == 'undefined') {
1237 data = false;
1238 } else {
1239 data = data.responseJSON;
1240 }
1241 var do_next_called = false;
1242 if (
1243 collection_item.action == 'check_deactivate_plugin' ||
1244 collection_item.action == 'check_delete_plugin' ||
1245 collection_item.action == 'check_install_plugin' ||
1246 collection_item.action == 'check_activate_plugin' ||
1247 collection_item.action == 'check_install_theme' ||
1248 collection_item.action == 'check_activate_theme' ||
1249 collection_item.action == 'check_delete_theme' ||
1250 collection_item.action == 'check_activate_license_plugin' ||
1251 collection_item.action == 'check_activate_license_theme'
1252 ) {
1253 if (data == false && collections_retried == false) {
1254 collections_retried = true;
1255 collections_do_ajax();
1256 return false;
1257 }
1258 if (
1259 (collection_item.action == 'check_deactivate_plugin' && data.data == 'inactive') ||
1260 (collection_item.action == 'check_delete_plugin' && data.data == 'deleted') ||
1261 (collection_item.action == 'check_install_plugin' && (data.data == 'inactive' || data.data == 'active')) ||
1262 (collection_item.action == 'check_activate_plugin' && data.data == 'active') ||
1263 (collection_item.action == 'check_install_theme' && (data.data == 'inactive' || data.data == 'active')) ||
1264 (collection_item.action == 'check_activate_theme' && data.data == 'active') ||
1265 (collection_item.action == 'check_delete_theme' && data.data == 'deleted') ||
1266 (collection_item.action == 'check_activate_license_plugin' && data.data == 'license_active') ||
1267 (collection_item.action == 'check_activate_license_theme' && data.data == 'license_active')
1268 ) {
1269 $('[data-action="' + message_id + '"]').addClass('wpr-collections-installer-success');
1270 } else {
1271 var error = false;
1272 switch (collection_item.action) {
1273 case 'check_deactivate_plugin':
1274 error = wp_reset.deactivate_failed + ' ' + collection_item.name;
1275 break;
1276 case 'check_delete_plugin':
1277 case 'check_delete_theme':
1278 error = wp_reset.delete_failed + ' ' + collection_item.name;
1279 break;
1280 case 'check_install_plugin':
1281 case 'check_install_theme':
1282 if (data.data == 'active') {
1283 error = collection_item.name + ' ' + wp_reset.install_failed_existing;
1284 } else if (data.data == 'deleted') {
1285 error = wp_reset.install_failed + ' ' + collection_item.name;
1286 } else {
1287 error = data.data;
1288 }
1289 break;
1290 case 'check_activate_plugin':
1291 case 'check_activate_theme':
1292 error = wp_reset.activate_failed + ' ' + collection_item.name;
1293 break;
1294 case 'check_activate_license_plugin':
1295 case 'check_activate_license_theme':
1296 if (data.data == 'unknown') {
1297 error = wp_reset.activating_license_unknown + ' ' + collection_item.name;
1298 } else {
1299 error = wp_reset.activating_license_failed + ' ' + collection_item.name;
1300 }
1301 break;
1302 default:
1303 error = false;
1304 }
1305
1306 if (error != false) {
1307 $('[data-action="' + message_id + '"]').append('<div class="wpr-collections-error">' + error + '</div>');
1308 collections_errors.push(error);
1309 }
1310
1311 $('[data-action="' + message_id + '"]').addClass('wpr-collections-installer-error');
1312 }
1313
1314 $('[data-action="' + message_id + '"]').removeClass('wpr-collections-installer-loading');
1315 $('[data-action="' + message_id + '"]').addClass('wpr-collections-installer-done');
1316 }
1317
1318 collections_retried = false;
1319 collections_ajax_queue_index++;
1320
1321 if (collections_ajax_queue.length == 0) {
1322 wpr_swal.close();
1323 return false;
1324 }
1325
1326 if (do_next_called == false && typeof collections_ajax_queue[collections_ajax_queue_index] !== 'undefined') {
1327 if (typeof $('.wpr-collections-installer div.wpr-collections-installer-done:last').offset() !== 'undefined') {
1328 var scroll_top =
1329 $('.wpr-collections-installer div.wpr-collections-installer-done:last').offset().top -
1330 $('.wpr-collections-installer').offset().top +
1331 $('.wpr-collections-installer').scrollTop() -
1332 60;
1333 $('.wpr-collections-installer').animate({ scrollTop: scroll_top }, 600, function () {
1334 collections_do_ajax();
1335 });
1336 } else {
1337 collections_do_ajax();
1338 }
1339 } else {
1340 wpr_swal.close();
1341
1342 $('.wpr-collections-installer').css('padding', '0px 40px');
1343 $('.wpr-collections-installer').css('height', '236px');
1344
1345 if (collections_errors.length > 0) {
1346 var errors_html = '';
1347 for (e in collections_errors) {
1348 errors_html +=
1349 '<div class="wpr-collections-installer-message wpr-collections-installer-error"><span class="dashicons"></span> ' +
1350 collections_errors[e] +
1351 '</div>';
1352 }
1353 wpr_swal
1354 .fire({
1355 icon: 'error',
1356 title: 'Collection was installed, but the following errors occured!',
1357 html: '<div class="wpr-collections-installer-errors">' + errors_html + '</div>',
1358 showConfirmButton: true,
1359 })
1360 .then((result) => {
1361 location.reload();
1362 });
1363 } else {
1364 wpr_swal
1365 .fire({
1366 icon: 'success',
1367 title: 'Collection was installed successfully!',
1368 showConfirmButton: true,
1369 timer: 2000,
1370 timerProgressBar: true,
1371 })
1372 .then((result) => {
1373 location.reload();
1374 });
1375 }
1376 }
1377 },
1378 });
1379 } //run collection ajax
1380 }); // onload
1381
1382 function wpr_fix_dialog_close(event, ui) {
1383 jQuery('.ui-widget-overlay').bind('click', function () {
1384 jQuery('#' + event.target.id).dialog('close');
1385 });
1386 } // wpr_fix_dialog_close
1387
1388 function wpr_clear_local(clear_cookies, clear_storage) {
1389 var cnt = 0;
1390
1391 if (clear_cookies) {
1392 var cookies = Cookies.get();
1393 cnt += Object.keys(cookies).length;
1394 for (cookie in cookies) {
1395 Cookies.remove(cookie);
1396 }
1397 }
1398
1399 if (clear_storage) {
1400 cnt += localStorage.length + sessionStorage.length;
1401 localStorage.clear();
1402 sessionStorage.clear();
1403 }
1404
1405 return cnt;
1406 } // wpr_clear_local
1407
1408 function wpr_close_dropdowns() {
1409 jQuery('.dropdown').removeClass('show');
1410 jQuery('.dropdown-menu').removeClass('show');
1411 } // wpr_close_dropdowns
1412