PluginProbe
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript / 4.0.24
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript v4.0.24
4.1.16 4.1.15 4.1.14 4.1.13 4.1.12 4.1.11 4.1.10 4.0.30 4.0.29 4.0.28 4.0.27 4.0.26 4.0.24 4.0.25 4.0.23 4.0.22 4.0.21 4.0.19 4.0.18 4.0.17 4.0.16 1.9.3 1.9.4 1.9.5 1.9.6 All 170 releases
searchpro / admin / admin-page.php

admin-page.php in BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript 4.0.24, at admin/admin-page.php

551 lines 31.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if (!defined('ABSPATH'))
3 exit;
4
5 $cached_pages = bwp_cached_pages_count();
6 $plugin_name = defined('BERQWP_PLUGIN_NAME') ? BERQWP_PLUGIN_NAME : 'BerqWP';
7 $berqconfigs = berqConfigs::getInstance();
8 $configs = $berqconfigs->get_configs();
9 $berqwp_can_use_cloud = berqwp_can_use_cloud();
10 ?>
11 <!--<link href="https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;500;600;&display=swap" rel="stylesheet">-->
12 <!--<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" rel="stylesheet">-->
13 <!--<link href="<?php echo esc_attr(optifer_URL . '/admin/css/dataTables.dataTables.min.css?v=' . BERQWP_VERSION); ?>" rel="stylesheet">-->
14 <!--<link rel="stylesheet" href="<?php echo esc_attr(optifer_URL . '/admin/css/style.css?v=' . BERQWP_VERSION); ?>">-->
15 <!--<link rel="stylesheet" href="<?php echo esc_attr(optifer_URL . '/admin/css/bootstrap-slider.min.css?v=' . BERQWP_VERSION); ?>">-->
16 <!--<link rel="stylesheet" href="<?php echo esc_attr(optifer_URL . '/admin/css/bootstrap.min.css?v=' . BERQWP_VERSION); ?>">-->
17
18 <div class="wrap1">
19 <!-- <h1 style="display:none">BerqWP</h1>
20 <div></div> -->
21 <div class="berqwp-dashbaord">
22 <div class="berqwp-header">
23 <img src="<?php
24
25 if (defined('BERQWP_LOGO')) {
26 echo esc_attr(BERQWP_LOGO);
27 } else {
28 echo esc_attr(optifer_URL . '/admin/img/logo.png');
29 }
30
31 ?>" alt="BerqWP Logo">
32 <div class="berqwp-header-right">
33 <?php if (empty(berqwp_get_license_key()) || true) { ?>
34 <a class="bwp-action-btn light bwp-upgrade-btn" href="https://berqwp.com/pricing/?referrer=plugin-installation" target="_blank">
35 <div class="icon">
36 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rocket-icon lucide-rocket"><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09"/><path d="M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05"/></svg>
37 </div>
38 Try Premium (Free Trial)
39 </a>
40 <?php } ?>
41 <div class="optimization-methods-switch <?php echo esc_attr($configs['optimization_method'])?>" title="Optimization method">
42 <a class="method-local" href="<?php echo esc_attr(wp_nonce_url(admin_url('admin-post.php?action=switch_optimization_method_local'), 'switch_optimization_method_local_action')); ?>">
43 <div class="icon">
44 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-server-icon lucide-server">
45 <rect width="20" height="8" x="2" y="2" rx="2" ry="2" />
46 <rect width="20" height="8" x="2" y="14" rx="2" ry="2" />
47 <line x1="6" x2="6.01" y1="6" y2="6" />
48 <line x1="6" x2="6.01" y1="18" y2="18" />
49 </svg>
50 </div>
51 Local (free)
52
53 </a>
54
55 <a class="method-cloud" href="<?php echo esc_attr(wp_nonce_url(admin_url('admin-post.php?action=switch_optimization_method_cloud'), 'switch_optimization_method_cloud_action')); ?>">
56 <div class="icon">
57 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cloudy-icon lucide-cloudy">
58 <path d="M17.5 12a1 1 0 1 1 0 9H9.006a7 7 0 1 1 6.702-9z" />
59 <path d="M21.832 9A3 3 0 0 0 19 7h-2.207a5.5 5.5 0 0 0-10.72.61" />
60 </svg>
61 </div>
62 BerqWP Cloud
63 </a>
64 </div>
65
66 <a class="bwp-action-btn light" href="<?php echo esc_attr(wp_nonce_url(admin_url('admin-post.php?action=clear_cache'), 'clear_cache_action')); ?>">
67 <div class="icon">
68 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-brush-cleaning-icon lucide-brush-cleaning"><path d="m16 22-1-4"/><path d="M19 14a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v1a1 1 0 0 0 1 1"/><path d="M19 14H5l-1.973 6.767A1 1 0 0 0 4 22h16a1 1 0 0 0 .973-1.233z"/><path d="m8 22 1-4"/></svg>
69 </div>
70 Flush cache
71 </a>
72
73 <?php if ($berqwp_can_use_cloud) { ?>
74 <a class="bwp-action-btn" href="<?php echo esc_attr(wp_nonce_url(admin_url('admin-post.php?action=warmup_cache'), 'warmup_cache_action')); ?>">
75
76 <div class="icon">
77 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-ccw-icon lucide-refresh-ccw"><path d="M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"/><path d="M16 16h5v5"/></svg>
78 </div>
79 Warmup cache
80 </a>
81 <?php } ?>
82
83 <?php if (bwp_show_docs()) { ?>
84 <!--<a href="https://wordpress.org/support/plugin/searchpro/reviews/#new-post" target="_blank"
85 class="berqwp-support">
86 <?php esc_html_e('Write a review', 'searchpro'); ?>
87 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
88 <path
89 d="M11.0001 3C10.7349 3 10.4805 3.10536 10.293 3.29289C10.1054 3.48043 10.0001 3.73478 10.0001 4C10.0001 4.26522 10.1054 4.51957 10.293 4.70711C10.4805 4.89464 10.7349 5 11.0001 5H13.5861L7.29308 11.293C7.19757 11.3852 7.12139 11.4956 7.06898 11.6176C7.01657 11.7396 6.98898 11.8708 6.98783 12.0036C6.98668 12.1364 7.01198 12.2681 7.06226 12.391C7.11254 12.5139 7.18679 12.6255 7.28069 12.7194C7.37458 12.8133 7.48623 12.8875 7.60913 12.9378C7.73202 12.9881 7.8637 13.0134 7.99648 13.0123C8.12926 13.0111 8.26048 12.9835 8.38249 12.9311C8.50449 12.8787 8.61483 12.8025 8.70708 12.707L15.0001 6.414V9C15.0001 9.26522 15.1054 9.51957 15.293 9.70711C15.4805 9.89464 15.7349 10 16.0001 10C16.2653 10 16.5197 9.89464 16.7072 9.70711C16.8947 9.51957 17.0001 9.26522 17.0001 9V4C17.0001 3.73478 16.8947 3.48043 16.7072 3.29289C16.5197 3.10536 16.2653 3 16.0001 3H11.0001Z"
90 fill="#465774" />
91 <path
92 d="M5 5C4.46957 5 3.96086 5.21071 3.58579 5.58579C3.21071 5.96086 3 6.46957 3 7V15C3 15.5304 3.21071 16.0391 3.58579 16.4142C3.96086 16.7893 4.46957 17 5 17H13C13.5304 17 14.0391 16.7893 14.4142 16.4142C14.7893 16.0391 15 15.5304 15 15V12C15 11.7348 14.8946 11.4804 14.7071 11.2929C14.5196 11.1054 14.2652 11 14 11C13.7348 11 13.4804 11.1054 13.2929 11.2929C13.1054 11.4804 13 11.7348 13 12V15H5V7H8C8.26522 7 8.51957 6.89464 8.70711 6.70711C8.89464 6.51957 9 6.26522 9 6C9 5.73478 8.89464 5.48043 8.70711 5.29289C8.51957 5.10536 8.26522 5 8 5H5Z"
93 fill="#465774" />
94 </svg>
95
96 </a>-->
97 <?php } ?>
98
99 </div>
100 </div>
101 <div class="berqwp-dashbord-body">
102 <div class="berqwp-tabs">
103 <div class="berqwp-tab <?php bwp_is_tab_nav('dashboard'); ?>" data-tab="dashboard">
104 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard-icon lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"/><rect width="7" height="5" x="14" y="3" rx="1"/><rect width="7" height="9" x="14" y="12" rx="1"/><rect width="7" height="5" x="3" y="16" rx="1"/></svg></div>
105 <?php esc_html_e('Dashboard', 'searchpro'); ?>
106 </div>
107 <div class="berqwp-tab <?php bwp_is_tab_nav('cache-management'); ?>" data-tab="cache-management">
108 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gauge-icon lucide-gauge"><path d="m12 14 4-4"/><path d="M3.34 19a10 10 0 1 1 17.32 0"/></svg></div>
109 <?php esc_html_e('Cache Management', 'searchpro'); ?>
110 </div>
111 <div class="berqwp-tab <?php bwp_is_tab_nav('css-javascript'); ?>" data-tab="css-javascript">
112 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-code-icon lucide-code"><path d="m16 18 6-6-6-6"/><path d="m8 6-6 6 6 6"/></svg></div>
113 <?php esc_html_e('CSS & JavaScript', 'searchpro'); ?>
114 </div>
115 <div class="berqwp-tab <?php bwp_is_tab_nav('media-optimization'); ?>" data-tab="media-optimization">
116 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-images-icon lucide-images"><path d="m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16"/><path d="M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2"/><circle cx="13" cy="7" r="1" fill="currentColor"/><rect x="8" y="2" width="14" height="14" rx="2"/></svg></div>
117 <?php esc_html_e('Media Optimization', 'searchpro'); ?>
118 </div>
119 <div class="berqwp-tab <?php bwp_is_tab_nav('content-delivery-network'); ?>" data-tab="content-delivery-network">
120 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-earth-icon lucide-earth"><path d="M21.54 15H17a2 2 0 0 0-2 2v4.54"/><path d="M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17"/><path d="M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05"/><circle cx="12" cy="12" r="10"/></svg></div>
121 <?php esc_html_e('CDN', 'searchpro'); ?>
122 </div>
123 <!--<div class="berqwp-tab <?php bwp_is_tab_nav('image-optimization'); ?>" data-tab="image-optimization">
124 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-images-icon lucide-images"><path d="m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16"/><path d="M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2"/><circle cx="13" cy="7" r="1" fill="currentColor"/><rect x="8" y="2" width="14" height="14" rx="2"/></svg></div>
125 <?php esc_html_e('Image Optimization', 'searchpro'); ?>
126 </div>
127 <div class="berqwp-tab <?php bwp_is_tab_nav('script-manager'); ?>" data-tab="script-manager">
128 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-code-corner-icon lucide-file-code-corner"><path d="M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35"/><path d="M14 2v5a1 1 0 0 0 1 1h5"/><path d="m5 16-3 3 3 3"/><path d="m9 22 3-3-3-3"/></svg></div>
129 <?php esc_html_e('Script Manager', 'searchpro'); ?>
130 </div>-->
131 <div class="berqwp-tab <?php bwp_is_tab_nav('integration'); ?>" data-tab="integration">
132 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-blocks-icon lucide-blocks"><path d="M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2"/><rect x="14" y="2" width="8" height="8" rx="1"/></svg></div>
133 <?php esc_html_e('Integration', 'searchpro'); ?>
134 </div>
135 <?php if ($berqwp_can_use_cloud) { ?>
136 <div class="berqwp-tab <?php bwp_is_tab_nav('activate-license'); ?>" data-tab="activate-license">
137 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings2-icon lucide-settings-2"><path d="M14 17H5"/><path d="M19 7h-9"/><circle cx="17" cy="17" r="3"/><circle cx="7" cy="7" r="3"/></svg></div>
138 <?php esc_html_e('License', 'searchpro'); ?>
139 </div>
140 <?php } ?>
141 <a class="berqwp-tab tab-link" target="_blank" href="https://www.facebook.com/groups/1660827728253423">
142 <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" width="24"><!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 440 146.7 540.8 258.2 568.5L258.2 398.2L205.4 398.2L205.4 320L258.2 320L258.2 286.3C258.2 199.2 297.6 158.8 383.2 158.8C399.4 158.8 427.4 162 438.9 165.2L438.9 236C432.9 235.4 422.4 235 409.3 235C367.3 235 351.1 250.9 351.1 292.2L351.1 320L434.7 320L420.3 398.2L351 398.2L351 574.1C477.8 558.8 576 450.9 576 320z"/></svg></svg></div>
143 <?php esc_html_e('Join BerqWP Community', 'searchpro'); ?>
144 </a>
145 </div>
146 <div class="berqwp-tab-content">
147 <?php do_action('berqwp_notices'); ?>
148 <form action="" method="post">
149 <?php
150 wp_nonce_field('berqwp_save_settings', 'berqwp_save_nonce');
151 ?>
152 <input type="hidden" name="bwp_current_tab_id" value="<?php echo !empty($_GET['tab_id']) ? sanitize_text_field($_GET['tab_id']) : 'dashboard'; ?>">
153 <?php
154 require_once optifer_PATH . '/admin/tabs/dashboard.php';
155 require_once optifer_PATH . '/admin/tabs/cache-management.php';
156 require_once optifer_PATH . '/admin/tabs/content-delivery-network.php';
157 require_once optifer_PATH . '/admin/tabs/css-javascript.php';
158 // require_once optifer_PATH . '/admin/tabs/image-optimization.php';
159 require_once optifer_PATH . '/admin/tabs/media-optimization.php';
160 // require_once optifer_PATH . '/admin/tabs/script-manager.php';
161 require_once optifer_PATH . '/admin/tabs/integration.php';
162
163 if ($berqwp_can_use_cloud) {
164 require_once optifer_PATH . '/admin/tabs/activate-license.php';
165 }
166
167 ?>
168 </form>
169 </div>
170 </div>
171 </div>
172 </div>
173 <!-- <p class="below-settings-panel">Explore <a href="https://berqier.com" target="_blank">Berqier Ltd</a>, the creators of
174 BerqWP. Want to know more? Reach out—we love talking WordPress!</p> -->
175 <!--<script src="<?php echo esc_attr(optifer_URL . '/admin/js/bootstrap-slider.js?v=' . BERQWP_VERSION); ?>"></script>-->
176 <!--<script src="<?php echo esc_attr(optifer_URL . '/admin/js/dataTables.min.js?v=' . BERQWP_VERSION); ?>"></script>-->
177 <script>
178 (function($) {
179 $(document).ready(function() {
180 const bwp_controllers = [];
181 // $('.bwp_feedback').hide();
182 let berq_nounce = '<?php echo esc_html(wp_create_nonce('wp_rest')); ?>';
183
184 window.addEventListener('beforeunload', () => {
185 bwp_controllers.forEach(c => c.abort());
186 });
187
188
189 function numberWithCommas(x) {
190 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
191 }
192
193 function init_opt_slider() {
194 let opt_slider = new Slider('#berq_opt_mode', {
195 // min: 5,
196 // max: 30,
197 value: '<?php echo esc_html(get_option('berq_opt_mode', 4)); ?>',
198 ticks_labels: ['Basic', 'Medium', 'Blaze', 'Aggressive'],
199 ticks: [1, 2, 3, 4],
200 // ticks_positions: [0, 50, 100],
201 ticks_snap_bounds: 20,
202 tooltip_position: 'bottom',
203 // formatter: function (value) {
204 // if (value == 1) {
205 // // return '<div class="tooltip-title">Basic (stable)</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>';
206 // $("div.tooltip-inner").html('<div class="tooltip-title">Basic (stable)</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>')
207
208 // return '';
209 // }
210 // },
211 ticks_tooltip: true,
212 // ticks_tooltip: true,
213 // lock_to_ticks: true,
214 // step: 1
215 });
216
217 $(".optimzation-slider").mousemove(function(event) {
218 let val = $("#berq_opt_mode").val();
219
220 if ($(".slider-tick:nth-child(1)").is(":hover") || $('.tooltip-inner').html() == '1') {
221 $("div.tooltip-inner").html('<div class="tooltip-title">Basic</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache, URL prefectch etc.</div>')
222 }
223
224 if ($(".slider-tick:nth-child(2)").is(":hover") || $('.tooltip-inner').html() == '2') {
225 $("div.tooltip-inner").html('<div class="tooltip-title">Medium</div> <div class="tooltip-content">Highly stable optimization mode for many cases.</div>')
226 }
227
228 if ($(".slider-tick:nth-child(3)").is(":hover") || $('.tooltip-inner').html() == '3') {
229 $("div.tooltip-inner").html('<div class="tooltip-title">Blaze</div> <div class="tooltip-content">Balance between optimization and stability.</div>')
230 }
231
232 if ($(".slider-tick:nth-child(4)").is(":hover") || $('.tooltip-inner').html() == '4') {
233 $("div.tooltip-inner").html('<div class="tooltip-title">Aggressive</div> <div class="tooltip-content">Provide the best possible speed scores.</div>')
234 }
235 })
236
237 $("#berq_opt_mode").on("slide slideStop", function(slideEvt) {
238 let val = $("#berq_opt_mode").val();
239
240 if (val == 1) {
241 $("div.tooltip-inner").html('<div class="tooltip-title">Basic (stable)</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>')
242 }
243
244 if (val == 2) {
245 $("div.tooltip-inner").html('<div class="tooltip-title">Medium (stable)</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>')
246 }
247
248 if (val == 3) {
249 $("div.tooltip-inner").html('<div class="tooltip-title">Blaze</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>')
250 }
251
252 if (val == 4) {
253 $("div.tooltip-inner").html('<div class="tooltip-title">Aggressive</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>')
254 }
255 })
256 }
257
258 function berq_clear_cache() {
259 $.ajax({
260 url: '<?php echo esc_html(get_site_url()); ?>/wp-json/optifer/v1/clear-cache',
261 method: 'POST',
262 beforeSend: function(xhr) {
263 xhr.setRequestHeader('X-WP-Nonce', berq_nounce);
264 },
265 success: function(response) {
266
267 }
268 })
269 }
270
271 function berq_refresh_cache_stats() {
272 const controller = new AbortController();
273 bwp_controllers.push(controller);
274
275 $.ajax({
276 url: ajaxurl,
277 type: 'POST',
278 data: {
279 action: 'berqwp_refresh_cache_stats',
280 nonce: berq_nounce,
281 },
282 signal: controller.signal,
283 beforeSend: function(xhr) {
284 xhr.setRequestHeader('X-WP-Nonce', berq_nounce);
285 },
286 success: function(data) {
287
288 if (data.success) {
289
290 $('.cache-percentage').html(`${data.data.cache_percentage}% (${data.data.cache_count}) of your pages are currently cached.`);
291
292 $('.cached-pages-bar .progress-bar').css('width', `${data.data.cache_percentage}%`);
293
294 // if (data.data.server_queue > 0) {
295 // $('.bwp-pending-optimization').html(`${data.data.server_queue} pending optimization`);
296
297 // } else {
298 // $('.bwp-pending-optimization').html('');
299 // }
300 }
301
302 },
303 error: function() {
304 console.log('Error in AJAX request.');
305 }
306 });
307 }
308
309 // init_opt_slider();
310
311 $('.berqwp-tab[data-tab]').click(function() {
312 let tab = $(this).attr('data-tab');
313 $("html, body").animate({
314 scrollTop: $(".berqwp-dashbaord").offset().top - 30
315 }, 200);
316
317 $('.berqwp-tab-content > form > div').css({
318 'visibility': 'hidden',
319 'opacity': 0,
320 'height': '0px',
321 'overflow': 'hidden'
322 });
323 $('.berqwp-tab').removeClass('active');
324 $(this).addClass('active');
325 // $(`.berqwp-tab-content #${tab}`).show();
326 $(`.berqwp-tab-content #${tab}`).css({
327 'visibility': 'visible',
328 'opacity': 1,
329 'height': 'auto'
330 });
331
332 let tab_id = $(`.berqwp-tab-content #${tab}`).attr('id');
333 $('input[name="bwp_current_tab_id"]').val(tab_id);
334
335
336 // Get the current URL and its parts
337 const url = new URL(window.location.href);
338
339 // Check if 'tab_id' is present
340 if (url.searchParams.has('tab_id')) {
341 // Update the 'tab_id' parameter value
342 url.searchParams.set('tab_id', tab_id);
343
344 // Update the address bar with the new URL (without reloading the page)
345 window.history.replaceState(null, null, url.toString());
346 }
347
348
349
350 })
351
352 // let tab_id = $('input[name="bwp_current_tab_id"]').val();
353 // $(`.berqwp-tab[data-tab="${tab_id}"]`).trigger('click');
354 let is_admin_page_active = true;
355
356 // Visibility tracking - pause when tab hidden
357 document.addEventListener('visibilitychange', function() {
358 is_admin_page_active = !document.hidden;
359 });
360
361 // berq_refresh_cache_stats();
362
363 // setInterval(function() {
364
365 // if (!is_admin_page_active) return;
366
367 // berq_refresh_cache_stats();
368
369 // }, 10000)
370
371
372 })
373 })(jQuery)
374 </script>
375 <?php
376 if (function_exists('pll_current_language')) {
377 $lang = !empty(pll_current_language()) ? pll_current_language() : 'all';
378 echo "<script>ajaxurl = ajaxurl + '?lang=$lang';</script>";
379 }
380 ?>
381 <script>
382 (function($) {
383 // $(document).ready(function () {
384 // let table = new DataTable('.optimized-pages > table', {
385 // // "paging": false, // Disable pagination
386 // "searching": false, // Disable the search box
387 // "pageLength": 5,
388 // "info": false, // Disable the info text (e.g., "Showing 1 to 10 of 57 entries")
389 // "lengthChange": false
390 // });
391 // })
392
393
394 jQuery(document).ready(function($) {
395 var dataTable = $('.optimized-pages > table').DataTable({
396 ordering: false,
397 paging: true,
398 searching: true,
399 processing: true,
400 serverSide: true,
401 info: false,
402 lengthChange: false,
403 pageLength: 5,
404 ajax: function(data, callback, settings) {
405 var start = settings._iDisplayStart;
406 var length = settings._iDisplayLength;
407
408 $.ajax({
409 url: ajaxurl, // WordPress AJAX URL
410 type: 'POST',
411 data: {
412 action: 'berqwp_get_optimized_pages',
413 start: start,
414 length: length,
415 search: data.search.value
416 },
417 success: function(response) {
418 if (response.success) {
419 callback({
420 draw: data.draw,
421 recordsTotal: response.data.total_entries, // Total number of records
422 recordsFiltered: response.data.records_filtered, // Total after filtering
423 data: response.data.optimized_pages // Data for the current page
424 });
425 } else {
426 console.error("Error fetching data:", response);
427 }
428 },
429 error: function(error) {
430 console.error("AJAX error:", error);
431 }
432 });
433 },
434 columns: [{
435 data: 'url',
436 title: "Page URL"
437 }, // Map 'url' to the first column
438 {
439 data: 'status',
440 title: "Cache Status"
441 }, // Map 'status' to the second column
442 {
443 data: 'last_modified',
444 title: "Last Optimized Date"
445 } // Map 'last_modified' to the third column
446 ]
447 });
448 });
449
450 $('[name="berqwp_lazyload_youtube_embed"]').on('change', function() {
451 if ($(this).is(':checked')) {
452 $('[name="berqwp_preload_yt_poster"]').parent().show();
453 } else {
454 $('[name="berqwp_preload_yt_poster"]').parent().hide();
455 }
456 });
457
458 // $(document).ready(function () {
459 // const stickyDiv = $('.berqwp-dashbaord');
460 // const offset = stickyDiv.offset().top;
461
462 // $(window).on('scroll', function () {
463 // if ($(this).scrollTop() + 30 >= offset) {
464 // stickyDiv.addClass('sticky');
465 // stickyDiv.parent().css('paddingBottom', '100vh');
466 // setTimeout(function() {
467 // var resizeEvent = new Event('resize');
468 // window.dispatchEvent(resizeEvent);
469 // document.dispatchEvent(resizeEvent);
470 // }, 300)
471 // } else {
472 // stickyDiv.removeClass('sticky');
473 // stickyDiv.parent().css('paddingBottom', '0vh');
474 // setTimeout(function() {
475 // var resizeEvent = new Event('resize');
476 // window.dispatchEvent(resizeEvent);
477 // document.dispatchEvent(resizeEvent);
478 // }, 300)
479 // }
480 // });
481 // });
482
483
484
485
486
487
488
489 })(jQuery)
490 </script>
491 <script>
492 (function($) {
493 $(document).ready(function() {
494 let cache_lifespan_options = $('input[name="berqwp_cache_lifespan"], input[name="berq_opt_mode"]');
495
496 cache_lifespan_options.change(function() {
497 cache_lifespan_options.parent('label').removeClass('selected');
498 $('input[name="berqwp_cache_lifespan"]:checked, input[name="berq_opt_mode"]:checked').parent('label').addClass('selected');
499 })
500
501 $('input[name="berqwp_cache_lifespan"]:checked, input[name="berq_opt_mode"]:checked').parent('label').addClass('selected');
502 })
503 })(jQuery)
504 </script>
505 <script>
506 (function($) {
507 $(document).ready(function() {
508 let enable_compression_btn = $('a.berqwp-enable-page-compression');
509 let berq_nounce = '<?php echo esc_html(wp_create_nonce('wp_rest')); ?>';
510
511 enable_compression_btn.click(function(e) {
512 e.preventDefault();
513
514 let loader = enable_compression_btn.find('.berqwp-loader');
515 $.ajax({
516 url: ajaxurl,
517 type: 'POST',
518 data: {
519 action: 'berqwp_enable_page_compression',
520 nonce: berq_nounce,
521 },
522 beforeSend: function(xhr) {
523 xhr.setRequestHeader('X-WP-Nonce', berq_nounce);
524 loader.show();
525 },
526 success: function(data) {
527 loader.hide();
528
529 if (data.success === true) {
530 let currentUrl = window.location.href;
531 let url = new URL(currentUrl);
532 let params = new URLSearchParams(url.search);
533 params.set('berqwp_page_compression_enabled', '');
534 url.search = params.toString();
535 window.location.href = url.toString();
536 } else {
537 alert("Page compression test failed: Your web server doesn't support Gzip compression.");
538 }
539
540
541 },
542 error: function() {
543 loader.hide();
544 alert("Page compression test failed: Please check your internet connection.");
545 }
546 });
547 })
548 })
549 })(jQuery)
550 </script>
551