← All changes
|
_inc/lib/admin-pages/class.jetpack-admin-page.php
+47
-19
16.2
→
16.3-a.7
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' ); ?>"> |