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

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