PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.5
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 All 506 releases
← All changes | _inc/lib/admin-pages/class.jetpack-admin-page.php +47 -19 16.3-a.1 → 16.3-a.5 View file →
@@ -6,8 +6,10 @@
6 6 */
7 7
8 8 use Automattic\Jetpack\Current_Plan as Jetpack_Plan;
9 9 use Automattic\Jetpack\Identity_Crisis;
10 +use Automattic\Jetpack\Plugin\Admin_Chrome_Logo;
11 +use Automattic\Jetpack\Plugin\Footer_Links;
10 12 use Automattic\Jetpack\Redirect;
11 13 use Automattic\Jetpack\Status;
12 14 use Automattic\Jetpack\Status\Host;
13 15
@@ -105,10 +107,10 @@
105 107 if ( $this->block_page_rendering_for_idc() ) {
106 108 return;
107 109 }
108 110
109 - // Check if we are looking at the main dashboard.
110 - if ( isset( $_GET['page'] ) && 'jetpack' === $_GET['page'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- View logic.
111 + // The Settings app draws its own header and footer.
112 + if ( isset( $_GET['page'] ) && 'jetpack-settings' === $_GET['page'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- View logic.
111 113 $this->page_render();
112 114 return;
113 115 }
114 116
@@ -163,8 +165,28 @@
163 165 apply_filters( 'rest_authentication_errors', true );
164 166 }
165 167
166 168 /**
169 + * Fallback redirect meta tag if the REST API is disabled.
170 + *
171 + * @return void
172 + */
173 + public function add_fallback_head_meta() {
174 + echo '<meta http-equiv="refresh" content="0; url=?page=jetpack_modules">';
175 + }
176 +
177 + /**
178 + * Fallback meta tag wrapped in noscript tags for all browsers in case they have JavaScript disabled.
179 + *
180 + * @return void
181 + */
182 + public function add_noscript_head_meta() {
183 + echo '<noscript>';
184 + $this->add_fallback_head_meta();
185 + echo '</noscript>';
186 + }
187 +
188 + /**
167 189 * Checks the site plan and deactivates modules that were active but are no longer included in the plan.
168 190 *
169 191 * @since 4.4.0
170 192 *
@@ -178,8 +200,9 @@
178 200 || ! in_array(
179 201 $page->base,
180 202 array(
181 203 'toplevel_page_jetpack',
204 + 'jetpack_page_jetpack-settings',
182 205 'admin_page_jetpack_modules',
183 206 'jetpack_page_vaultpress',
184 207 'jetpack_page_stats',
185 208 'jetpack_page_akismet-key-config',
@@ -254,9 +277,12 @@
254 277 // True means that Jetpack is NOT connected and NOT in offline mode.
255 278 // If Jetpack is connected OR in offline mode, this will be false.
256 279 $connectable = ! Jetpack::is_connection_ready() && ! ( new Status() )->is_offline_mode();
257 280
258 - $jetpack_admin_url = admin_url( 'admin.php?page=jetpack' );
281 + $my_jetpack_available = Footer_Links::is_my_jetpack_available();
282 + $my_jetpack_url = admin_url( 'admin.php?page=my-jetpack#/overview' );
283 + $jetpack_logo = Admin_Chrome_Logo::render( 20, '', __( 'Jetpack logo', 'jetpack' ) );
284 +
259 285 $jetpack_about_url = ! $connectable
260 286 ? admin_url( 'admin.php?page=jetpack_about' )
261 287 : Redirect::get_url( 'jetpack' );
262 288
@@ -270,11 +296,13 @@
270 296
271 297 <header class="jp-masthead">
272 298 <div class="jp-masthead__inside-container">
273 299 <div class="jp-masthead__title-container">
274 - <a class="jp-masthead__logo-link" href="<?php echo esc_url( admin_url( 'admin.php?page=my-jetpack#/overview' ) ); ?>">
275 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" height="20" aria-label="<?php esc_attr_e( 'Jetpack logo', 'jetpack' ); ?>"><path fill="#069e08" d="M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M15,19H7l8-16V19z M17,29V13h8L17,29z"></path></svg>
276 - </a>
300 + <?php if ( $my_jetpack_available ) : ?>
301 + <a class="jp-masthead__logo-link" href="<?php echo esc_url( $my_jetpack_url ); ?>"><?php echo $jetpack_logo; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Static SVG built above. ?></a>
302 + <?php else : ?>
303 + <span class="jp-masthead__logo-link"><?php echo $jetpack_logo; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Static SVG built above. ?></span>
304 + <?php endif; ?>
277 305 <h2 class="jp-masthead__title">
278 306 <?php
279 307 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- View logic only.
280 308 $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
@@ -286,11 +314,17 @@
286 314 $current_label = __( 'About', 'jetpack' );
287 315 } elseif ( 'jetpack-debugger' === $page ) {
288 316 $current_label = __( 'Debug', 'jetpack' );
289 317 }
318 +
319 + // "Jetpack" is a product name, do not translate.
290 320 ?>
291 321 <?php if ( $current_label ) : ?>
292 - <a class="jp-masthead__title-link" href="<?php echo esc_url( admin_url( 'admin.php?page=my-jetpack#/overview' ) ); ?>">Jetpack</a><?php // "Jetpack" is a product name, do not translate. ?>
322 + <?php if ( $my_jetpack_available ) : ?>
323 + <a class="jp-masthead__title-link" href="<?php echo esc_url( $my_jetpack_url ); ?>">Jetpack</a>
324 + <?php else : ?>
325 + Jetpack
326 + <?php endif; ?>
293 327 <span class="jp-masthead__title-separator" aria-hidden="true">/</span>
294 328 <?php if ( $is_offline_mode ) : ?>
295 329 <span class="jp-masthead__title-offline"><?php esc_html_e( 'Offline Mode', 'jetpack' ); ?></span>
296 330 <span class="jp-masthead__title-separator" aria-hidden="true">/</span>
@@ -296,9 +330,9 @@
296 330 <span class="jp-masthead__title-separator" aria-hidden="true">/</span>
297 331 <?php endif; ?>
298 332 <span class="jp-masthead__title-current"><?php echo esc_html( $current_label ); ?></span>
299 333 <?php else : ?>
300 - Jetpack<?php // "Jetpack" is a product name, do not translate. ?>
334 + Jetpack
301 335 <?php endif; ?>
302 336 </h2>
303 337 </div>
304 338 <?php
@@ -324,18 +358,11 @@
324 358 <?php
325 359 }
326 360 ?>
327 361 </span>
328 - <?php } else { ?>
362 + <?php } elseif ( current_user_can( 'jetpack_manage_modules' ) ) { ?>
329 363 <span class="dops-button-group">
330 - <a href="<?php echo esc_url( $jetpack_admin_url ); ?>" type="button" class="dops-button is-compact"><?php esc_html_e( 'Dashboard', 'jetpack' ); ?></a>
331 - <?php
332 - if ( current_user_can( 'jetpack_manage_modules' ) ) {
333 - ?>
334 - <a href="<?php echo esc_url( $jetpack_admin_url . '#/settings' ); ?>" type="button" class="dops-button is-compact"><?php esc_html_e( 'Settings', 'jetpack' ); ?></a>
335 - <?php
336 - }
337 - ?>
364 + <a href="<?php echo esc_url( admin_url( 'admin.php?page=jetpack-settings#/settings' ) ); ?>" type="button" class="dops-button is-compact"><?php esc_html_e( 'Settings', 'jetpack' ); ?></a>
338 365 </span>
339 366 <?php } ?>
340 367 </div>
341 368 <?php endif; ?>
@@ -378,11 +405,12 @@
378 405 <path fill="#000" d="M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M15,19H7l8-16V19z M17,29V13h8L17,29z"></path>
379 406 </svg>
380 407 <span class="jp-footer__module-name"><?php esc_html_e( 'Jetpack', 'jetpack' ); ?></span>
381 408 </div>
382 - <?php if ( ! ( new Host() )->is_wpcom_platform() ) : ?>
409 + <?php if ( ! ( new Host() )->is_wpcom_platform() && $my_jetpack_available ) : ?>
410 + <?php $products_section = Footer_Links::get_my_jetpack_products_section(); ?>
383 411 <div class="jp-footer__menu">
384 - <a href="<?php echo esc_url( admin_url( 'admin.php?page=my-jetpack#/products' ) ); ?>" class="jp-footer__menu-item"><?php echo esc_html_x( 'Products', 'Navigation item', 'jetpack' ); ?></a>
412 + <a href="<?php echo esc_url( admin_url( 'admin.php?page=my-jetpack#/' . $products_section['slug'] ) ); ?>" class="jp-footer__menu-item"><?php echo esc_html( $products_section['label'] ); ?></a>
385 413 <a href="<?php echo esc_url( admin_url( 'admin.php?page=my-jetpack#/help' ) ); ?>" class="jp-footer__menu-item"><?php echo esc_html_x( 'Help', 'Navigation item', 'jetpack' ); ?></a>
386 414 </div>
387 415 <?php endif; ?>
388 416 <a class="jp-footer__a8c-logo" href="<?php echo esc_url( $jetpack_about_url ); ?>" aria-label="<?php echo esc_attr__( 'An Automattic Airline', 'jetpack' ); ?>">