PluginProbe
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript / 4.0.30
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript v4.0.30
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.30, at admin/admin-page.php

554 lines 32.2 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()) || $this->key_response->product_ref == 'Free Account') { ?>
34 <a class="bwp-action-btn light bwp-upgrade-btn" href="https://berqwp.com/dashboard/?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 <?php esc_html_e('Upgrade to Premium', 'searchpro'); ?>
39 </a>
40 <?php } ?>
41
42 <?php if ($this->is_key_verified) { ?>
43 <div class="optimization-methods-switch <?php echo esc_attr($configs['optimization_method'])?>" title="Optimization method">
44 <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')); ?>">
45 <div class="icon">
46 <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">
47 <rect width="20" height="8" x="2" y="2" rx="2" ry="2" />
48 <rect width="20" height="8" x="2" y="14" rx="2" ry="2" />
49 <line x1="6" x2="6.01" y1="6" y2="6" />
50 <line x1="6" x2="6.01" y1="18" y2="18" />
51 </svg>
52 </div>
53 Self-hosted
54
55 </a>
56
57 <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')); ?>">
58 <div class="icon">
59 <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">
60 <path d="M17.5 12a1 1 0 1 1 0 9H9.006a7 7 0 1 1 6.702-9z" />
61 <path d="M21.832 9A3 3 0 0 0 19 7h-2.207a5.5 5.5 0 0 0-10.72.61" />
62 </svg>
63 </div>
64 BerqWP Cloud
65 </a>
66 </div>
67
68 <?php } ?>
69
70 <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')); ?>">
71 <div class="icon">
72 <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>
73 </div>
74 Flush cache
75 </a>
76
77 <?php if ($berqwp_can_use_cloud) { ?>
78 <a class="bwp-action-btn" href="<?php echo esc_attr(wp_nonce_url(admin_url('admin-post.php?action=warmup_cache'), 'warmup_cache_action')); ?>">
79
80 <div class="icon">
81 <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>
82 </div>
83 Warmup cache
84 </a>
85 <?php } ?>
86
87 <?php if (bwp_show_docs()) { ?>
88 <!--<a href="https://wordpress.org/support/plugin/searchpro/reviews/#new-post" target="_blank"
89 class="berqwp-support">
90 <?php esc_html_e('Write a review', 'searchpro'); ?>
91 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
92 <path
93 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"
94 fill="#465774" />
95 <path
96 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"
97 fill="#465774" />
98 </svg>
99
100 </a>-->
101 <?php } ?>
102
103 </div>
104 </div>
105 <div class="berqwp-dashbord-body">
106 <div class="berqwp-tabs">
107 <div class="berqwp-tab <?php bwp_is_tab_nav('dashboard'); ?>" data-tab="dashboard">
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-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>
109 <?php esc_html_e('Dashboard', 'searchpro'); ?>
110 </div>
111 <div class="berqwp-tab <?php bwp_is_tab_nav('cache-management'); ?>" data-tab="cache-management">
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-gauge-icon lucide-gauge"><path d="m12 14 4-4"/><path d="M3.34 19a10 10 0 1 1 17.32 0"/></svg></div>
113 <?php esc_html_e('Cache Management', 'searchpro'); ?>
114 </div>
115 <div class="berqwp-tab <?php bwp_is_tab_nav('css-javascript'); ?>" data-tab="css-javascript">
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-code-icon lucide-code"><path d="m16 18 6-6-6-6"/><path d="m8 6-6 6 6 6"/></svg></div>
117 <?php esc_html_e('CSS & JavaScript', 'searchpro'); ?>
118 </div>
119 <div class="berqwp-tab <?php bwp_is_tab_nav('media-optimization'); ?>" data-tab="media-optimization">
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-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>
121 <?php esc_html_e('Media Optimization', 'searchpro'); ?>
122 </div>
123 <div class="berqwp-tab <?php bwp_is_tab_nav('content-delivery-network'); ?>" data-tab="content-delivery-network">
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-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>
125 <?php esc_html_e('CDN', 'searchpro'); ?>
126 </div>
127 <!--<div class="berqwp-tab <?php bwp_is_tab_nav('image-optimization'); ?>" data-tab="image-optimization">
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-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>
129 <?php esc_html_e('Image Optimization', 'searchpro'); ?>
130 </div>
131 <div class="berqwp-tab <?php bwp_is_tab_nav('script-manager'); ?>" data-tab="script-manager">
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-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>
133 <?php esc_html_e('Script Manager', 'searchpro'); ?>
134 </div>-->
135 <div class="berqwp-tab <?php bwp_is_tab_nav('integration'); ?>" data-tab="integration">
136 <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>
137 <?php esc_html_e('Integration', 'searchpro'); ?>
138 </div>
139 <div class="berqwp-tab <?php bwp_is_tab_nav('activate-license'); ?>" data-tab="activate-license">
140 <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>
141 <?php esc_html_e('License', 'searchpro'); ?>
142 </div>
143 <a class="berqwp-tab tab-link" target="_blank" href="https://www.facebook.com/groups/1660827728253423">
144 <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>
145 <?php esc_html_e('Join BerqWP Community', 'searchpro'); ?>
146 </a>
147 </div>
148 <div class="berqwp-tab-content">
149 <?php do_action('berqwp_notices'); ?>
150 <form action="" method="post">
151 <?php
152 wp_nonce_field('berqwp_save_settings', 'berqwp_save_nonce');
153 ?>
154 <input type="hidden" name="bwp_current_tab_id" value="<?php echo !empty($_GET['tab_id']) ? esc_attr(sanitize_text_field(wp_unslash($_GET['tab_id']))) : 'dashboard'; ?>">
155 <?php
156 require_once optifer_PATH . '/admin/tabs/dashboard.php';
157 require_once optifer_PATH . '/admin/tabs/cache-management.php';
158 require_once optifer_PATH . '/admin/tabs/content-delivery-network.php';
159 require_once optifer_PATH . '/admin/tabs/css-javascript.php';
160 // require_once optifer_PATH . '/admin/tabs/image-optimization.php';
161 require_once optifer_PATH . '/admin/tabs/media-optimization.php';
162 // require_once optifer_PATH . '/admin/tabs/script-manager.php';
163 require_once optifer_PATH . '/admin/tabs/integration.php';
164 require_once optifer_PATH . '/admin/tabs/activate-license.php';
165
166 ?>
167 </form>
168 </div>
169 </div>
170 </div>
171 </div>
172 <!-- <p class="below-settings-panel">Explore <a href="https://berqier.com" target="_blank">Berqier Ltd</a>, the creators of
173 BerqWP. Want to know more? Reach out—we love talking WordPress!</p> -->
174 <!--<script src="<?php echo esc_attr(optifer_URL . '/admin/js/bootstrap-slider.js?v=' . BERQWP_VERSION); ?>"></script>-->
175 <!--<script src="<?php echo esc_attr(optifer_URL . '/admin/js/dataTables.min.js?v=' . BERQWP_VERSION); ?>"></script>-->
176 <script>
177 (function($) {
178 $(document).ready(function() {
179 const bwp_controllers = [];
180 // $('.bwp_feedback').hide();
181 let berq_nounce = '<?php echo esc_html(wp_create_nonce('wp_rest')); ?>';
182 let bwp_pages_nonce = '<?php echo esc_html(wp_create_nonce('berqwp_get_optimized_pages_nonce')); ?>';
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 'display': 'none',
320 'opacity': 0,
321 'height': '0px',
322 'overflow': 'hidden'
323 });
324 $('.berqwp-tab').removeClass('active');
325 $(this).addClass('active');
326 // $(`.berqwp-tab-content #${tab}`).show();
327 $(`.berqwp-tab-content #${tab}`).css({
328 'visibility': 'visible',
329 'display': 'block',
330 'opacity': 1,
331 'height': 'auto'
332 });
333
334 let tab_id = $(`.berqwp-tab-content #${tab}`).attr('id');
335 $('input[name="bwp_current_tab_id"]').val(tab_id);
336
337
338 // Get the current URL and its parts
339 const url = new URL(window.location.href);
340
341 // Check if 'tab_id' is present
342 if (url.searchParams.has('tab_id')) {
343 // Update the 'tab_id' parameter value
344 url.searchParams.set('tab_id', tab_id);
345
346 // Update the address bar with the new URL (without reloading the page)
347 window.history.replaceState(null, null, url.toString());
348 }
349
350
351
352 })
353
354 // let tab_id = $('input[name="bwp_current_tab_id"]').val();
355 // $(`.berqwp-tab[data-tab="${tab_id}"]`).trigger('click');
356 let is_admin_page_active = true;
357
358 // Visibility tracking - pause when tab hidden
359 document.addEventListener('visibilitychange', function() {
360 is_admin_page_active = !document.hidden;
361 });
362
363 // berq_refresh_cache_stats();
364
365 // setInterval(function() {
366
367 // if (!is_admin_page_active) return;
368
369 // berq_refresh_cache_stats();
370
371 // }, 10000)
372
373
374 })
375 })(jQuery)
376 </script>
377 <?php
378 if (function_exists('pll_current_language')) {
379 $lang = !empty(pll_current_language()) ? pll_current_language() : 'all';
380 echo "<script>ajaxurl = ajaxurl + '?lang=$lang';</script>";
381 }
382 ?>
383 <script>
384 (function($) {
385 // $(document).ready(function () {
386 // let table = new DataTable('.optimized-pages > table', {
387 // // "paging": false, // Disable pagination
388 // "searching": false, // Disable the search box
389 // "pageLength": 5,
390 // "info": false, // Disable the info text (e.g., "Showing 1 to 10 of 57 entries")
391 // "lengthChange": false
392 // });
393 // })
394
395
396 jQuery(document).ready(function($) {
397 var dataTable = $('.optimized-pages > table').DataTable({
398 ordering: false,
399 paging: true,
400 searching: true,
401 processing: true,
402 serverSide: true,
403 info: false,
404 lengthChange: false,
405 pageLength: 5,
406 ajax: function(data, callback, settings) {
407 var start = settings._iDisplayStart;
408 var length = settings._iDisplayLength;
409
410 $.ajax({
411 url: ajaxurl, // WordPress AJAX URL
412 type: 'POST',
413 data: {
414 action: 'berqwp_get_optimized_pages',
415 nonce: bwp_pages_nonce,
416 start: start,
417 length: length,
418 search: data.search.value
419 },
420 success: function(response) {
421 if (response.success) {
422 callback({
423 draw: data.draw,
424 recordsTotal: response.data.total_entries, // Total number of records
425 recordsFiltered: response.data.records_filtered, // Total after filtering
426 data: response.data.optimized_pages // Data for the current page
427 });
428 } else {
429 console.error("Error fetching data:", response);
430 }
431 },
432 error: function(error) {
433 console.error("AJAX error:", error);
434 }
435 });
436 },
437 columns: [{
438 data: 'url',
439 title: "Page URL"
440 }, // Map 'url' to the first column
441 {
442 data: 'status',
443 title: "Cache Status"
444 }, // Map 'status' to the second column
445 {
446 data: 'last_modified',
447 title: "Last Optimized Date"
448 } // Map 'last_modified' to the third column
449 ]
450 });
451 });
452
453 $('[name="berqwp_lazyload_youtube_embed"]').on('change', function() {
454 if ($(this).is(':checked')) {
455 $('[name="berqwp_preload_yt_poster"]').parent().show();
456 } else {
457 $('[name="berqwp_preload_yt_poster"]').parent().hide();
458 }
459 });
460
461 // $(document).ready(function () {
462 // const stickyDiv = $('.berqwp-dashbaord');
463 // const offset = stickyDiv.offset().top;
464
465 // $(window).on('scroll', function () {
466 // if ($(this).scrollTop() + 30 >= offset) {
467 // stickyDiv.addClass('sticky');
468 // stickyDiv.parent().css('paddingBottom', '100vh');
469 // setTimeout(function() {
470 // var resizeEvent = new Event('resize');
471 // window.dispatchEvent(resizeEvent);
472 // document.dispatchEvent(resizeEvent);
473 // }, 300)
474 // } else {
475 // stickyDiv.removeClass('sticky');
476 // stickyDiv.parent().css('paddingBottom', '0vh');
477 // setTimeout(function() {
478 // var resizeEvent = new Event('resize');
479 // window.dispatchEvent(resizeEvent);
480 // document.dispatchEvent(resizeEvent);
481 // }, 300)
482 // }
483 // });
484 // });
485
486
487
488
489
490
491
492 })(jQuery)
493 </script>
494 <script>
495 (function($) {
496 $(document).ready(function() {
497 let cache_lifespan_options = $('input[name="berqwp_cache_lifespan"], input[name="berq_opt_mode"]');
498
499 cache_lifespan_options.change(function() {
500 cache_lifespan_options.parent('label').removeClass('selected');
501 $('input[name="berqwp_cache_lifespan"]:checked, input[name="berq_opt_mode"]:checked').parent('label').addClass('selected');
502 })
503
504 $('input[name="berqwp_cache_lifespan"]:checked, input[name="berq_opt_mode"]:checked').parent('label').addClass('selected');
505 })
506 })(jQuery)
507 </script>
508 <script>
509 (function($) {
510 $(document).ready(function() {
511 let enable_compression_btn = $('a.berqwp-enable-page-compression');
512 let berq_nounce = '<?php echo esc_html(wp_create_nonce('wp_rest')); ?>';
513
514 enable_compression_btn.click(function(e) {
515 e.preventDefault();
516
517 let loader = enable_compression_btn.find('.berqwp-loader');
518 $.ajax({
519 url: ajaxurl,
520 type: 'POST',
521 data: {
522 action: 'berqwp_enable_page_compression',
523 nonce: berq_nounce,
524 },
525 beforeSend: function(xhr) {
526 xhr.setRequestHeader('X-WP-Nonce', berq_nounce);
527 loader.show();
528 },
529 success: function(data) {
530 loader.hide();
531
532 if (data.success === true) {
533 let currentUrl = window.location.href;
534 let url = new URL(currentUrl);
535 let params = new URLSearchParams(url.search);
536 params.set('berqwp_page_compression_enabled', '');
537 url.search = params.toString();
538 window.location.href = url.toString();
539 } else {
540 alert("Page compression test failed: Your web server doesn't support Gzip compression.");
541 }
542
543
544 },
545 error: function() {
546 loader.hide();
547 alert("Page compression test failed: Please check your internet connection.");
548 }
549 });
550 })
551 })
552 })(jQuery)
553 </script>
554