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

617 lines 35.6 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('database'); ?>" data-tab="database">
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-database-icon lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/></svg></div>
137 <?php esc_html_e('Database', 'searchpro'); ?>
138 </div>
139 <div class="berqwp-tab <?php bwp_is_tab_nav('debloat'); ?>" data-tab="debloat">
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-trash2-icon lucide-trash-2"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" x2="10" y1="11" y2="17"/><line x1="14" x2="14" y1="11" y2="17"/></svg></div>
141 <?php esc_html_e('Debloat', 'searchpro'); ?>
142 </div>
143 <div class="berqwp-tab <?php bwp_is_tab_nav('integration'); ?>" data-tab="integration">
144 <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>
145 <?php esc_html_e('Integration', 'searchpro'); ?>
146 </div>
147 <div class="berqwp-tab <?php bwp_is_tab_nav('activate-license'); ?>" data-tab="activate-license">
148 <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>
149 <?php esc_html_e('License', 'searchpro'); ?>
150 </div>
151 <a class="berqwp-tab tab-link" target="_blank" href="https://www.facebook.com/groups/1660827728253423">
152 <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>
153 <?php esc_html_e('Join BerqWP Community', 'searchpro'); ?>
154 </a>
155 </div>
156 <div class="berqwp-tab-content">
157 <?php do_action('berqwp_notices'); ?>
158 <form action="" method="post">
159 <?php
160 wp_nonce_field('berqwp_save_settings', 'berqwp_save_nonce');
161 ?>
162 <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'; ?>">
163 <?php
164 require_once optifer_PATH . '/admin/tabs/dashboard.php';
165 require_once optifer_PATH . '/admin/tabs/cache-management.php';
166 require_once optifer_PATH . '/admin/tabs/content-delivery-network.php';
167 require_once optifer_PATH . '/admin/tabs/css-javascript.php';
168 // require_once optifer_PATH . '/admin/tabs/image-optimization.php';
169 require_once optifer_PATH . '/admin/tabs/media-optimization.php';
170 // require_once optifer_PATH . '/admin/tabs/script-manager.php';
171 require_once optifer_PATH . '/admin/tabs/integration.php';
172 require_once optifer_PATH . '/admin/tabs/database.php';
173 require_once optifer_PATH . '/admin/tabs/debloat.php';
174 require_once optifer_PATH . '/admin/tabs/activate-license.php';
175
176 ?>
177 </form>
178 </div>
179 </div>
180 </div>
181 </div>
182 <!-- <p class="below-settings-panel">Explore <a href="https://berqier.com" target="_blank">Berqier Ltd</a>, the creators of
183 BerqWP. Want to know more? Reach out—we love talking WordPress!</p> -->
184 <!--<script src="<?php echo esc_attr(optifer_URL . '/admin/js/bootstrap-slider.js?v=' . BERQWP_VERSION); ?>"></script>-->
185 <!--<script src="<?php echo esc_attr(optifer_URL . '/admin/js/dataTables.min.js?v=' . BERQWP_VERSION); ?>"></script>-->
186 <script>
187 (function($) {
188 $(document).ready(function() {
189 const bwp_controllers = [];
190 // $('.bwp_feedback').hide();
191 let berq_nounce = '<?php echo esc_html(wp_create_nonce('wp_rest')); ?>';
192 let bwp_pages_nonce = '<?php echo esc_html(wp_create_nonce('berqwp_get_optimized_pages_nonce')); ?>';
193
194 window.addEventListener('beforeunload', () => {
195 bwp_controllers.forEach(c => c.abort());
196 });
197
198
199 function numberWithCommas(x) {
200 return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
201 }
202
203 function init_opt_slider() {
204 let opt_slider = new Slider('#berq_opt_mode', {
205 // min: 5,
206 // max: 30,
207 value: '<?php echo esc_html(get_option('berq_opt_mode', 4)); ?>',
208 ticks_labels: ['Basic', 'Medium', 'Blaze', 'Aggressive'],
209 ticks: [1, 2, 3, 4],
210 // ticks_positions: [0, 50, 100],
211 ticks_snap_bounds: 20,
212 tooltip_position: 'bottom',
213 // formatter: function (value) {
214 // if (value == 1) {
215 // // return '<div class="tooltip-title">Basic (stable)</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>';
216 // $("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>')
217
218 // return '';
219 // }
220 // },
221 ticks_tooltip: true,
222 // ticks_tooltip: true,
223 // lock_to_ticks: true,
224 // step: 1
225 });
226
227 $(".optimzation-slider").mousemove(function(event) {
228 let val = $("#berq_opt_mode").val();
229
230 if ($(".slider-tick:nth-child(1)").is(":hover") || $('.tooltip-inner').html() == '1') {
231 $("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>')
232 }
233
234 if ($(".slider-tick:nth-child(2)").is(":hover") || $('.tooltip-inner').html() == '2') {
235 $("div.tooltip-inner").html('<div class="tooltip-title">Medium</div> <div class="tooltip-content">Highly stable optimization mode for many cases.</div>')
236 }
237
238 if ($(".slider-tick:nth-child(3)").is(":hover") || $('.tooltip-inner').html() == '3') {
239 $("div.tooltip-inner").html('<div class="tooltip-title">Blaze</div> <div class="tooltip-content">Balance between optimization and stability.</div>')
240 }
241
242 if ($(".slider-tick:nth-child(4)").is(":hover") || $('.tooltip-inner').html() == '4') {
243 $("div.tooltip-inner").html('<div class="tooltip-title">Aggressive</div> <div class="tooltip-content">Provide the best possible speed scores.</div>')
244 }
245 })
246
247 $("#berq_opt_mode").on("slide slideStop", function(slideEvt) {
248 let val = $("#berq_opt_mode").val();
249
250 if (val == 1) {
251 $("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>')
252 }
253
254 if (val == 2) {
255 $("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>')
256 }
257
258 if (val == 3) {
259 $("div.tooltip-inner").html('<div class="tooltip-title">Blaze</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>')
260 }
261
262 if (val == 4) {
263 $("div.tooltip-inner").html('<div class="tooltip-title">Aggressive</div> <div class="tooltip-content">Basic optimizations like image lazy loading, page cache etc</div>')
264 }
265 })
266 }
267
268 function berq_clear_cache() {
269 $.ajax({
270 url: '<?php echo esc_html(get_site_url()); ?>/wp-json/optifer/v1/clear-cache',
271 method: 'POST',
272 beforeSend: function(xhr) {
273 xhr.setRequestHeader('X-WP-Nonce', berq_nounce);
274 },
275 success: function(response) {
276
277 }
278 })
279 }
280
281 function berq_refresh_cache_stats() {
282 const controller = new AbortController();
283 bwp_controllers.push(controller);
284
285 $.ajax({
286 url: ajaxurl,
287 type: 'POST',
288 data: {
289 action: 'berqwp_refresh_cache_stats',
290 nonce: berq_nounce,
291 },
292 signal: controller.signal,
293 beforeSend: function(xhr) {
294 xhr.setRequestHeader('X-WP-Nonce', berq_nounce);
295 },
296 success: function(data) {
297
298 if (data.success) {
299
300 $('.cache-percentage').html(`${data.data.cache_percentage}% (${data.data.cache_count}) of your pages are currently cached.`);
301
302 $('.cached-pages-bar .progress-bar').css('width', `${data.data.cache_percentage}%`);
303
304 // if (data.data.server_queue > 0) {
305 // $('.bwp-pending-optimization').html(`${data.data.server_queue} pending optimization`);
306
307 // } else {
308 // $('.bwp-pending-optimization').html('');
309 // }
310 }
311
312 },
313 error: function() {
314 console.log('Error in AJAX request.');
315 }
316 });
317 }
318
319 // init_opt_slider();
320
321 $('.berqwp-tab[data-tab]').click(function() {
322 let tab = $(this).attr('data-tab');
323 $("html, body").animate({
324 scrollTop: $(".berqwp-dashbaord").offset().top - 30
325 }, 200);
326
327 $('.berqwp-tab-content > form > div').css({
328 'visibility': 'hidden',
329 'display': 'none',
330 'opacity': 0,
331 'height': '0px',
332 'overflow': 'hidden'
333 });
334 $('.berqwp-tab').removeClass('active');
335 $(this).addClass('active');
336 // $(`.berqwp-tab-content #${tab}`).show();
337 $(`.berqwp-tab-content #${tab}`).css({
338 'visibility': 'visible',
339 'display': 'block',
340 'opacity': 1,
341 'height': 'auto'
342 });
343
344 let tab_id = $(`.berqwp-tab-content #${tab}`).attr('id');
345 $('input[name="bwp_current_tab_id"]').val(tab_id);
346
347
348 // Get the current URL and its parts
349 const url = new URL(window.location.href);
350
351 // Check if 'tab_id' is present
352 if (url.searchParams.has('tab_id')) {
353 // Update the 'tab_id' parameter value
354 url.searchParams.set('tab_id', tab_id);
355
356 // Update the address bar with the new URL (without reloading the page)
357 window.history.replaceState(null, null, url.toString());
358 }
359
360
361
362 })
363
364 // let tab_id = $('input[name="bwp_current_tab_id"]').val();
365 // $(`.berqwp-tab[data-tab="${tab_id}"]`).trigger('click');
366 let is_admin_page_active = true;
367
368 // Visibility tracking - pause when tab hidden
369 document.addEventListener('visibilitychange', function() {
370 is_admin_page_active = !document.hidden;
371 });
372
373 // berq_refresh_cache_stats();
374
375 // setInterval(function() {
376
377 // if (!is_admin_page_active) return;
378
379 // berq_refresh_cache_stats();
380
381 // }, 10000)
382
383
384 })
385 })(jQuery)
386 </script>
387 <?php
388 if (function_exists('pll_current_language')) {
389 $lang = !empty(pll_current_language()) ? pll_current_language() : 'all';
390 echo "<script>ajaxurl = ajaxurl + '?lang=$lang';</script>";
391 }
392 ?>
393 <script>
394 (function($) {
395 // $(document).ready(function () {
396 // let table = new DataTable('.optimized-pages > table', {
397 // // "paging": false, // Disable pagination
398 // "searching": false, // Disable the search box
399 // "pageLength": 5,
400 // "info": false, // Disable the info text (e.g., "Showing 1 to 10 of 57 entries")
401 // "lengthChange": false
402 // });
403 // })
404
405
406 jQuery(document).ready(function($) {
407 var dataTable = $('.optimized-pages > table').DataTable({
408 ordering: false,
409 paging: true,
410 searching: true,
411 processing: true,
412 serverSide: true,
413 info: false,
414 lengthChange: false,
415 pageLength: 5,
416 ajax: function(data, callback, settings) {
417 var start = settings._iDisplayStart;
418 var length = settings._iDisplayLength;
419
420 $.ajax({
421 url: ajaxurl, // WordPress AJAX URL
422 type: 'POST',
423 data: {
424 action: 'berqwp_get_optimized_pages',
425 nonce: bwp_pages_nonce,
426 start: start,
427 length: length,
428 search: data.search.value
429 },
430 success: function(response) {
431 if (response.success) {
432 callback({
433 draw: data.draw,
434 recordsTotal: response.data.total_entries, // Total number of records
435 recordsFiltered: response.data.records_filtered, // Total after filtering
436 data: response.data.optimized_pages // Data for the current page
437 });
438 } else {
439 console.error("Error fetching data:", response);
440 }
441 },
442 error: function(error) {
443 console.error("AJAX error:", error);
444 }
445 });
446 },
447 columns: [{
448 data: 'url',
449 title: "Page URL"
450 }, // Map 'url' to the first column
451 {
452 data: 'status',
453 title: "Cache Status"
454 }, // Map 'status' to the second column
455 {
456 data: 'last_modified',
457 title: "Last Optimized Date"
458 } // Map 'last_modified' to the third column
459 ]
460 });
461 });
462
463 $('[name="berqwp_lazyload_youtube_embed"]').on('change', function() {
464 if ($(this).is(':checked')) {
465 $('[name="berqwp_preload_yt_poster"]').parent().show();
466 } else {
467 $('[name="berqwp_preload_yt_poster"]').parent().hide();
468 }
469 });
470
471 $('[name="berqwp_heartbeat_mode"]').on('change', function() {
472 if ($('[name="berqwp_heartbeat_mode"]:checked').val() === 'throttle') {
473 $('.berqwp-heartbeat-interval').show();
474 } else {
475 $('.berqwp-heartbeat-interval').hide();
476 }
477 });
478
479 // $(document).ready(function () {
480 // const stickyDiv = $('.berqwp-dashbaord');
481 // const offset = stickyDiv.offset().top;
482
483 // $(window).on('scroll', function () {
484 // if ($(this).scrollTop() + 30 >= offset) {
485 // stickyDiv.addClass('sticky');
486 // stickyDiv.parent().css('paddingBottom', '100vh');
487 // setTimeout(function() {
488 // var resizeEvent = new Event('resize');
489 // window.dispatchEvent(resizeEvent);
490 // document.dispatchEvent(resizeEvent);
491 // }, 300)
492 // } else {
493 // stickyDiv.removeClass('sticky');
494 // stickyDiv.parent().css('paddingBottom', '0vh');
495 // setTimeout(function() {
496 // var resizeEvent = new Event('resize');
497 // window.dispatchEvent(resizeEvent);
498 // document.dispatchEvent(resizeEvent);
499 // }, 300)
500 // }
501 // });
502 // });
503
504
505
506
507
508
509
510 })(jQuery)
511 </script>
512 <script>
513 (function($) {
514 $(document).ready(function() {
515 let cache_lifespan_options = $('input[name="berqwp_cache_lifespan"], input[name="berq_opt_mode"]');
516
517 cache_lifespan_options.change(function() {
518 cache_lifespan_options.parent('label').removeClass('selected');
519 $('input[name="berqwp_cache_lifespan"]:checked, input[name="berq_opt_mode"]:checked').parent('label').addClass('selected');
520 })
521
522 $('input[name="berqwp_cache_lifespan"]:checked, input[name="berq_opt_mode"]:checked').parent('label').addClass('selected');
523 })
524 })(jQuery)
525 </script>
526 <script>
527 (function($) {
528 $(document).ready(function() {
529 let enable_compression_btn = $('a.berqwp-enable-page-compression');
530 let berq_nounce = '<?php echo esc_html(wp_create_nonce('wp_rest')); ?>';
531
532 enable_compression_btn.click(function(e) {
533 e.preventDefault();
534
535 let loader = enable_compression_btn.find('.berqwp-loader');
536 $.ajax({
537 url: ajaxurl,
538 type: 'POST',
539 data: {
540 action: 'berqwp_enable_page_compression',
541 nonce: berq_nounce,
542 },
543 beforeSend: function(xhr) {
544 xhr.setRequestHeader('X-WP-Nonce', berq_nounce);
545 loader.show();
546 },
547 success: function(data) {
548 loader.hide();
549
550 if (data.success === true) {
551 let currentUrl = window.location.href;
552 let url = new URL(currentUrl);
553 let params = new URLSearchParams(url.search);
554 params.set('berqwp_page_compression_enabled', '');
555 url.search = params.toString();
556 window.location.href = url.toString();
557 } else {
558 alert("Page compression test failed: Your web server doesn't support Gzip compression.");
559 }
560
561
562 },
563 error: function() {
564 loader.hide();
565 alert("Page compression test failed: Please check your internet connection.");
566 }
567 });
568 })
569 })
570 })(jQuery)
571 </script>
572 <script>
573 (function($) {
574 $(document).ready(function() {
575 let berq_nounce = '<?php echo esc_html(wp_create_nonce('wp_rest')); ?>';
576
577 $('.berqwp-db-run-action').click(function(e) {
578 e.preventDefault();
579
580 let $btn = $(this);
581 let $action = $btn.closest('.berqwp-db-action');
582 let task = $action.data('task');
583 let limit = $action.find('input[name="berqwp_db_revision_limit"]').val();
584
585 $btn.addClass('disabled').text('Running...');
586
587 $.ajax({
588 url: ajaxurl,
589 type: 'POST',
590 data: {
591 action: 'berqwp_db_run_action',
592 task: task,
593 limit: limit,
594 nonce: berq_nounce,
595 },
596 beforeSend: function(xhr) {
597 xhr.setRequestHeader('X-WP-Nonce', berq_nounce);
598 },
599 success: function(data) {
600 if (data.success) {
601 alert(data.data.message);
602 } else {
603 alert(data.data && data.data.message ? data.data.message : 'Something went wrong.');
604 }
605 },
606 error: function() {
607 alert('Request failed. Please check your internet connection.');
608 },
609 complete: function() {
610 $btn.removeClass('disabled').text($btn.data('task') === 'optimize_tables' ? 'Optimize now' : 'Clean now');
611 }
612 });
613 })
614 })
615 })(jQuery)
616 </script>
617