PluginProbe
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript / trunk
BerqWP – All-In-One Optimization for Core Web Vitals, Cache, CDN, Images, CSS & JavaScript vtrunk
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
← All changes | admin/tabs/dashboard.php +121 -147 4.0.17trunk View file →
@@ -36,16 +36,16 @@
36 36 ?>
37 37 <div id="dashboard" <?php bwp_is_tab('dashboard'); ?>>
38 38 <h2 class="berq-tab-title">Dashboard</h2>
39 39
40 - <?php if (bwp_show_docs()) { ?>
41 - <!--<div class="berq-info-box guide">
40 + <?php if (bwp_show_docs() && $berqwp_can_use_cloud) { ?>
41 + <div class="berq-info-box guide">
42 42 <div class="berq-box-content">
43 43 <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-book-marked-icon lucide-book-marked"><path d="M10 2v8l3-3 3 3V2"/><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20"/></svg></div>
44 44 <p><?php esc_html_e('Guide:', 'searchpro'); ?> <a href="https://berqwp.com/help-center/get-started-with-berqwp/" target="_blank"><?php esc_html_e('Get Started With BerqWP', 'searchpro'); ?></a></p>
45 45 </div>
46 46
47 - </div>-->
47 + </div>
48 48 <?php } ?>
49 49
50 50 <?php
51 51 if ($configs['optimization_method'] == 'cloud' && !bwp_is_home_cached()) {
@@ -101,68 +101,11 @@
101 101 </div>-->
102 102
103 103 </div>
104 104 </div>
105 - <div class="berq-info-box before-after-comparision" style="display: none;">
106 - <h3 class="berq-box-title"><?php esc_html_e('Google PageSpeed Score', 'searchpro'); ?></h3>
107 - <div class="without-berqwp">
108 - <?php
109 - if (get_option('berqwp_enable_sandbox')) {
110 - echo '<div class="berqw-sandbox">Sandbox Optimization</div>';
111 - }
112 - ?>
113 - <div class="berq-speed-score"></div>
114 - <p class="device-type"><?php esc_html_e('Device: Mobile', 'searchpro'); ?></p>
115 - <p class="website-url">
116 - <?php
117 - $cache_directory = bwp_get_cache_dir();
118 - // $home_slug = bwp_url_into_path(bwp_admin_home_url('/'));
119 - $home_url = bwp_admin_home_url('/');
120 - $is_home_ready = file_exists($cache_directory . md5($home_url) . '.gz');
121 - $msg = '';
122 105
123 - if (get_option('berqwp_enable_sandbox')) {
124 - $msg .= '?berqwp';
125 - }
126 -
127 - if ($is_home_ready == false) {
128 - $msg .= '<br>We\'re currently optimizing this page.';
129 - }
130 - echo wp_kses_post(bwp_admin_home_url('/') . $msg); ?>
131 - </p>
132 - <h4><?php esc_html_e('Mobile Score', 'searchpro'); ?></h4>
133 - </div>
134 - <div class="with-berqwp">
135 - <?php
136 - if (get_option('berqwp_enable_sandbox')) {
137 - echo '<div class="berqw-sandbox">Sandbox Optimization</div>';
138 - }
139 - ?>
140 - <div class="berq-speed-score"></div>
141 - <p class="device-type"><?php esc_html_e('Device: Desktop', 'searchpro'); ?></p>
142 - <p class="website-url">
143 - <?php
144 - $cache_directory = bwp_get_cache_dir();
145 - // $home_slug = bwp_url_into_path(bwp_admin_home_url('/'));
146 - $home_url = bwp_admin_home_url('/');
147 - $is_home_ready = file_exists($cache_directory . md5($home_url) . '.gz');
148 - $msg = '';
149 -
150 - if (get_option('berqwp_enable_sandbox')) {
151 - $msg .= '?berqwp';
152 - }
153 -
154 - if ($is_home_ready == false) {
155 - $msg .= '<br>We\'re currently optimizing this page.';
156 - }
157 - echo wp_kses_post(bwp_admin_home_url('/') . $msg); ?>
158 - </p>
159 - <h4><?php esc_html_e('Desktop Score', 'searchpro'); ?></h4>
160 - </div>
161 - </div>
162 -
163 -
164 106 <div class="berq-triple-boxes">
107 + <?php if ($berqwp_can_use_cloud) { ?>
165 108 <div class="berq-info-box" style="position: relative;">
166 109 <a class="berq-stat-refresh" href="#" style="display:none;"><svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#29ac20"><path d="M229.08-205.08v-52H310l-13.08-13.84q-42.3-39.62-68.61-92.62-26.31-53-26.31-115.69 0-93.69 55.23-165.96 55.23-72.27 140.77-98.96v54.23q-63.39 25.3-103.69 81.73Q254-551.77 254-479.23q0 49.92 20.27 92.65 20.27 42.73 54.81 73.27l15.38 15.39v-74.54h52v167.38H229.08ZM562-215.85v-54.23q63.39-25.3 103.69-81.73Q706-408.23 706-480.77q0-49.92-20.27-92.65-20.27-42.73-54.81-73.27l-15.38-15.39v74.54h-52v-167.38h167.38v52H650l13.08 13.84q43.46 38.47 69.19 92.04Q758-543.46 758-480.77q0 93.69-55.23 165.96-55.23 72.27-140.77 98.96Z"></path></svg></a>
167 110 <h3 class="berq-box-title"><?php esc_html_e('Pages in Queue', 'searchpro'); ?></h3>
168 111 <div class="berq-box-content">
@@ -179,8 +122,9 @@
179 122 ?>
180 123 </div>
181 124 </div>
182 125 </div>
126 + <?php } ?>
183 127 <div class="berq-info-box" style="position: relative;">
184 128 <a class="berq-stat-refresh" href="#" style="display:none;"><svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#29ac20"><path d="M229.08-205.08v-52H310l-13.08-13.84q-42.3-39.62-68.61-92.62-26.31-53-26.31-115.69 0-93.69 55.23-165.96 55.23-72.27 140.77-98.96v54.23q-63.39 25.3-103.69 81.73Q254-551.77 254-479.23q0 49.92 20.27 92.65 20.27 42.73 54.81 73.27l15.38 15.39v-74.54h52v167.38H229.08ZM562-215.85v-54.23q63.39-25.3 103.69-81.73Q706-408.23 706-480.77q0-49.92-20.27-92.65-20.27-42.73-54.81-73.27l-15.38-15.39v74.54h-52v-167.38h167.38v52H650l13.08 13.84q43.46 38.47 69.19 92.04Q758-543.46 758-480.77q0 93.69-55.23 165.96-55.23 72.27-140.77 98.96Z"></path></svg></a>
185 129 <h3 class="berq-box-title"><?php esc_html_e('Cached Pages', 'searchpro'); ?></h3>
186 130 <div class="berq-box-content">
@@ -217,104 +161,39 @@
217 161 </div>
218 162 <?php } ?>
219 163 </div>
220 164
221 - <div class="berq-info-box" style="display: none;">
222 - <h3 class="berq-box-title"><?php esc_html_e('Cached Pages', 'searchpro'); ?></h3>
165 + <div class="berq-info-box">
166 + <h3 class="berq-box-title"><?php esc_html_e('Recently Optimized Pages (Max. 200)', 'searchpro'); ?></h3>
223 167 <div class="berq-box-content">
224 - <div class="cache-percentage"><p><b><?php echo $cached_percentage; ?>%</b> (<?php echo $optimized_pages; ?>) of your pages are currently cached. <span class="bwp-cache-count"></span><span class="bwp-pending-optimization"></span></p></div>
225 - <div class="cached-pages-bar">
226 - <div class="progress-bar" style="width:<?php echo $cached_percentage; ?>%"></div>
168 + <div class="berq-recently-optimized-toolbar">
169 + <input type="text" id="berq-recent-search" placeholder="<?php esc_attr_e('Search URL…', 'searchpro'); ?>" class="berq-recent-search-input" />
227 170 </div>
228 -
229 - <?php
230 - if (!empty($this->key_response->product_ref) && $this->key_response->product_ref == 'Free Account' && bwp_cached_pages_count() >= 10) {
231 - bwp_dash_notification("You've reached the limit of 10 optimized pages for your free BerqWP account. Upgrade now to optimize unlimited pages and get the best performance for your entire site!", "warning");
232 - }
233 - ?>
234 -
235 - <div class="optimized-pages">
236 - <table>
237 - <thead>
238 - <tr>
239 - <th>Page URL</th>
240 - <th>Cache Status</th>
241 - <th>Last Optimized Date</th>
242 - </tr>
243 - </thead>
244 - <tbody>
245 - <?php
246 - // if (!empty($optimized_pages)) {
247 - // foreach ($optimized_pages as $page) {
248 - // $row_html = "<tr>";
249 - // $row_html .= "<td>";
250 - // $row_html .= $page['url'];
251 - // $row_html .= "</td>";
252 - // $row_html .= "<td>";
253 - // $row_html .= $page['status'];
254 - // $row_html .= "</td>";
255 - // $row_html .= "<td>";
256 - // $row_html .= date('Y-m-d H:i:s', $page['last_modified']);
257 - // $row_html .= "</td>";
258 - // $row_html .= "</tr>";
259 - // echo $row_html;
260 - // }
261 - // }
262 - ?>
263 -
264 - </tbody>
265 - </table>
171 + <table class="berq-image-settings berq-recent-table">
172 + <colgroup><col style="width:75%"><col style="width:25%"></colgroup>
173 + <thead>
174 + <tr>
175 + <th><?php esc_html_e('Page URL', 'searchpro'); ?></th>
176 + <th><?php esc_html_e('Cached At', 'searchpro'); ?></th>
177 + </tr>
178 + </thead>
179 + <tbody id="berq-recent-tbody">
180 + <tr><td colspan="2"><?php esc_html_e('Loading…', 'searchpro'); ?></td></tr>
181 + </tbody>
182 + </table>
183 + <div class="berq-recent-pagination">
184 + <button type="button" class="berq-btn" id="berq-recent-prev" disabled><?php esc_html_e('← Prev', 'searchpro'); ?></button>
185 + <span id="berq-recent-page-info"></span>
186 + <button type="button" class="berq-btn" id="berq-recent-next"><?php esc_html_e('Next →', 'searchpro'); ?></button>
266 187 </div>
267 188 </div>
268 189 </div>
269 - <div class="berq-dual-box" style="display:none">
270 190
271 - <?php if (bwp_show_account()) { ?>
272 - <div class="berq-info-box" style="position:relative;">
273 - <a title="Refresh license key" href="<?php echo esc_attr(wp_nonce_url(admin_url('admin-post.php?action=bwp_refresh_license'), 'bwp_refresh_license_action')); ?>" class="berqwp-refresh-license-btn">
274 - <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#29ac20"><path d="M229.08-205.08v-52H310l-13.08-13.84q-42.3-39.62-68.61-92.62-26.31-53-26.31-115.69 0-93.69 55.23-165.96 55.23-72.27 140.77-98.96v54.23q-63.39 25.3-103.69 81.73Q254-551.77 254-479.23q0 49.92 20.27 92.65 20.27 42.73 54.81 73.27l15.38 15.39v-74.54h52v167.38H229.08ZM562-215.85v-54.23q63.39-25.3 103.69-81.73Q706-408.23 706-480.77q0-49.92-20.27-92.65-20.27-42.73-54.81-73.27l-15.38-15.39v74.54h-52v-167.38h167.38v52H650l13.08 13.84q43.46 38.47 69.19 92.04Q758-543.46 758-480.77q0 93.69-55.23 165.96-55.23 72.27-140.77 98.96Z"/></svg>
275 - </a>
276 - <h3 class="berq-box-title"><?php esc_html_e('My Account', 'searchpro'); ?></h3>
277 - <div class="berq-box-content">
278 -
279 - <?php if (!empty($this->key_response->product_ref) && $this->key_response->product_ref !== 'AppSumo Deal') { ?>
280 - <p>
281 - <?php esc_html_e('License:', 'searchpro'); ?>
282 - <?php echo esc_html( $this->key_response->product_ref ); ?>
283 - </p>
284 - <?php } ?>
285 -
286 - <p><?php esc_html_e('License status:', 'searchpro'); ?>
287 - <?php echo esc_html( $this->key_response->status ); ?>
288 - </p>
289 -
290 - <?php if (!empty($this->key_response->product_ref) && $this->key_response->product_ref !== 'AppSumo Deal' && $this->key_response->product_ref !== 'Free Account') { ?>
291 - <p><?php esc_html_e('Expiration date:', 'searchpro'); ?>
292 - <?php echo esc_html( $this->key_response->date_expiry ); ?>
293 - </p>
294 - <?php } ?>
295 -
296 - </div>
297 - </div>
298 - <?php } ?>
299 - <div class="berq-info-box">
300 - <h3 class="berq-box-title"><?php esc_html_e('Quick Actions', 'searchpro'); ?></h3>
301 - <div class="berq-box-content">
302 - <a href="<?php echo esc_attr(wp_nonce_url(admin_url('admin-post.php?action=clear_cache'), 'clear_cache_action')); ?>" class="berq-btn"><?php esc_html_e('Flush cache', 'searchpro'); ?></a>
303 -
304 - <?php if (bwp_show_docs()) { ?>
305 - <a href="https://berqwp.com/help-center/" target="_blank" class="berq-btn"><?php esc_html_e('Visit help center', 'searchpro'); ?></a>
306 - <?php } ?>
307 -
308 - </div>
309 - </div>
310 -
311 - </div>
312 191 <div class="berq-info-box">
313 192 <h3 class="berq-box-title"><?php esc_html_e('Sandbox', 'searchpro'); ?></h3>
314 193 <div class="berq-box-content berq-setting-toggle">
315 194 <div class="berq-option-content">
316 - <p><?php esc_html_e("The Sandbox feature allows you to test $plugin_name's optimizations without impacting real visitors. Note that pages will load slower when sandbox mode is enabled.", 'searchpro'); ?>
195 + <p><?php printf( /* translators: %s: Plugin name */ esc_html__("The Sandbox feature allows you to test %s's optimizations without impacting real visitors. Note that pages will load slower when sandbox mode is enabled.", 'searchpro'), esc_html($plugin_name) ); ?>
317 196
318 197 <?php if (bwp_show_docs()) { ?>
319 198 <a href="https://berqwp.com/help-center/sandbox-mode-and-how-to-use-it/" target="_blank"><?php esc_html_e("Learn more", 'searchpro'); ?></a>
320 199 <?php } ?>
@@ -345,4 +224,99 @@
345 224 stroke-linecap="round" stroke-linejoin="round" />
346 225 </svg>
347 226 <?php esc_html_e('Save changes', 'searchpro'); ?></button>
348 227 </div>
228 +
229 +<style>
230 +.berq-recently-optimized-toolbar { margin-bottom: 14px; }
231 +.berq-recent-search-input {
232 + width: 100%; max-width: 360px;
233 + padding: 5px 12px !important;
234 + border: 1px solid #e2eaf5 !important;
235 + border-radius: 6px !important;
236 + font-size: 13px !important;
237 + color: #353535 !important;
238 + outline: none !important;
239 + background: #fff;
240 + transition: border-color 0.2s, box-shadow 0.2s;
241 + box-shadow: 0 1px 3px rgba(83,113,167,0.06);
242 +}
243 +.berq-recent-search-input:focus { border-color: #1f71ff; box-shadow: 0 0 0 3px rgba(31,113,255,0.1); }
244 +.berq-recent-search-input.berq-recent-searching {
245 + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='%23c5d3ea' stroke-width='3'/%3E%3Cpath d='M12 2a10 10 0 0 1 10 10' fill='none' stroke='%231f71ff' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='0.7s' repeatCount='indefinite'/%3E%3C/path%3E%3C/svg%3E");
246 + background-repeat: no-repeat;
247 + background-position: right 10px center;
248 + padding-right: 30px;
249 +}
250 +.berq-recent-table { border-collapse: collapse; width: 100%; table-layout: fixed; }
251 +.berq-recent-table th, .berq-recent-table td { padding: 8px 10px; font-size: 13px; color: #465774; border-bottom: 1px solid #e8eef8; word-break: break-all; }
252 +.berq-recent-table th { font-weight: 600; color: #0d2958; background: #f7faff; }
253 +.berq-recent-table td a { color: #1f71ff; text-decoration: none; }
254 +.berq-recent-table td a:hover { text-decoration: underline; }
255 +.berq-recent-pagination { display: flex; align-items: center; gap: 10px; margin-top: 14px; }
256 +#berq-recent-page-info { font-size: 13px; color: #465774; flex: 1; text-align: center; }
257 +button.berq-btn {
258 + background: #fff; border-radius: 6px; padding: 8px 16px;
259 + color: #384a69; font-size: 13px; font-weight: 500;
260 + border: 1px solid #dbe9fe; box-shadow: 0 0 7px -6px #000;
261 + cursor: pointer; transition: background 0.15s, border-color 0.15s, color 0.15s;
262 + line-height: normal;
263 +}
264 +button.berq-btn:hover:not(:disabled) { background: #3d44d9; border-color: #3d44d9; color: #fff; }
265 +button.berq-btn:disabled { opacity: 0.4; cursor: not-allowed; }
266 +</style>
267 +
268 +<script>
269 +(function($) {
270 + var recentPage = 0, recentLength = 10, recentSearch = '', recentTotal = 0;
271 +
272 + function loadRecentPages() {
273 + var $input = $('#berq-recent-search');
274 + $input.addClass('berq-recent-searching');
275 + $('#berq-recent-tbody').css('opacity', '0.45');
276 +
277 + let berq_nounce = '<?php echo esc_html(wp_create_nonce('wp_rest')); ?>';
278 + $.post(ajaxurl, {
279 + action: 'berqwp_recently_optimized_pages',
280 + nonce: berq_nounce,
281 + start: recentPage * recentLength,
282 + length: recentLength,
283 + search: recentSearch,
284 + }, function(res) {
285 + $input.removeClass('berq-recent-searching');
286 + $('#berq-recent-tbody').css('opacity', '');
287 + if (!res || !res.success) return;
288 + recentTotal = res.data.total;
289 + var rows = '';
290 + if (!res.data.data || res.data.data.length === 0) {
291 + rows = '<tr><td colspan="2" style="color:#6071a4;"><?php echo esc_js(__('No cached pages logged yet.', 'searchpro')); ?></td></tr>';
292 + } else {
293 + $.each(res.data.data, function(_, e) {
294 + rows += '<tr><td><a href="' + e.url + '" target="_blank" rel="noopener">' + e.url + '</a></td><td>' + e.cached_at + '</td></tr>';
295 + });
296 + }
297 + $('#berq-recent-tbody').html(rows);
298 + var from = recentTotal === 0 ? 0 : recentPage * recentLength + 1;
299 + var to = Math.min((recentPage + 1) * recentLength, recentTotal);
300 + $('#berq-recent-page-info').text(from + '–' + to + ' / ' + recentTotal);
301 + $('#berq-recent-prev').prop('disabled', recentPage === 0);
302 + $('#berq-recent-next').prop('disabled', to >= recentTotal);
303 + });
304 + }
305 +
306 + var searchTimer;
307 + $('#berq-recent-search').on('input', function() {
308 + clearTimeout(searchTimer);
309 + var val = $(this).val();
310 + searchTimer = setTimeout(function() {
311 + recentSearch = val;
312 + recentPage = 0;
313 + loadRecentPages();
314 + }, 350);
315 + });
316 +
317 + $('#berq-recent-prev').on('click', function() { recentPage--; loadRecentPages(); });
318 + $('#berq-recent-next').on('click', function() { recentPage++; loadRecentPages(); });
319 +
320 + loadRecentPages();
321 +})(jQuery);
322 +</script>