jetpack
Last commit date
3rd-party
5 years ago
_inc
5 years ago
bin
5 years ago
css
5 years ago
extensions
5 years ago
images
5 years ago
json-endpoints
5 years ago
modules
5 years ago
sal
5 years ago
src
6 years ago
vendor
5 years ago
views
6 years ago
.svnignore
12 years ago
CODE-OF-CONDUCT.md
9 years ago
SECURITY.md
5 years ago
changelog.txt
5 years ago
class-jetpack-wizard-banner.php
6 years ago
class.frame-nonce-preview.php
6 years ago
class.jetpack-admin.php
5 years ago
class.jetpack-affiliate.php
6 years ago
class.jetpack-autoupdate.php
5 years ago
class.jetpack-bbpress-json-api.compat.php
6 years ago
class.jetpack-cli.php
5 years ago
class.jetpack-client-server.php
5 years ago
class.jetpack-connection-banner.php
5 years ago
class.jetpack-data.php
6 years ago
class.jetpack-debugger.php
7 years ago
class.jetpack-error.php
5 years ago
class.jetpack-gutenberg.php
5 years ago
class.jetpack-heartbeat.php
5 years ago
class.jetpack-idc.php
6 years ago
class.jetpack-ixr-client.php
6 years ago
class.jetpack-modules-list-table.php
5 years ago
class.jetpack-network-sites-list-table.php
6 years ago
class.jetpack-network.php
5 years ago
class.jetpack-plan.php
5 years ago
class.jetpack-post-images.php
5 years ago
class.jetpack-twitter-cards.php
5 years ago
class.jetpack-user-agent.php
5 years ago
class.jetpack-xmlrpc-server.php
6 years ago
class.jetpack.php
5 years ago
class.json-api-endpoints.php
5 years ago
class.json-api.php
5 years ago
class.photon.php
5 years ago
composer.json
5 years ago
functions.compat.php
5 years ago
functions.cookies.php
6 years ago
functions.gallery.php
6 years ago
functions.global.php
5 years ago
functions.opengraph.php
5 years ago
functions.photon.php
5 years ago
jest.config.js
5 years ago
jetpack.php
5 years ago
json-api-config.php
10 years ago
json-endpoints.php
7 years ago
load-jetpack.php
5 years ago
locales.php
7 years ago
readme.txt
5 years ago
require-lib.php
6 years ago
uninstall.php
6 years ago
wpml-config.xml
10 years ago
class-jetpack-wizard-banner.php
240 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Displays the first page of the Wizard in a banner form |
| 4 | * |
| 5 | * @package Jetpack |
| 6 | */ |
| 7 | |
| 8 | use Automattic\Jetpack\Assets; |
| 9 | use Automattic\Jetpack\Assets\Logo as Jetpack_Logo; |
| 10 | use Automattic\Jetpack\Tracking; |
| 11 | |
| 12 | /** |
| 13 | * Jetpack_Wizard_Banner |
| 14 | **/ |
| 15 | class Jetpack_Wizard_Banner { |
| 16 | /** |
| 17 | * Jetpack_Wizard_Banner |
| 18 | * |
| 19 | * @var Jetpack_Wizard_Banner |
| 20 | **/ |
| 21 | private static $instance = null; |
| 22 | |
| 23 | /** |
| 24 | * Factory method |
| 25 | */ |
| 26 | public static function init() { |
| 27 | if ( is_null( self::$instance ) ) { |
| 28 | self::$instance = new Jetpack_Wizard_Banner(); |
| 29 | } |
| 30 | |
| 31 | return self::$instance; |
| 32 | } |
| 33 | |
| 34 | /** |
| 35 | * Jetpack_Wizard_Banner constructor. |
| 36 | */ |
| 37 | private function __construct() { |
| 38 | add_action( 'current_screen', array( $this, 'maybe_initialize_hooks' ) ); |
| 39 | } |
| 40 | |
| 41 | /** |
| 42 | * Initialize hooks to display the banner |
| 43 | */ |
| 44 | public function maybe_initialize_hooks() { |
| 45 | if ( ! $this->can_be_displayed() ) { |
| 46 | return; |
| 47 | } |
| 48 | |
| 49 | add_action( 'admin_print_styles', array( $this, 'admin_banner_styles' ) ); |
| 50 | add_action( 'admin_notices', array( $this, 'render_banner' ) ); |
| 51 | add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_banner_scripts' ) ); |
| 52 | } |
| 53 | |
| 54 | /** |
| 55 | * Can we display the banner? |
| 56 | */ |
| 57 | private function can_be_displayed() { |
| 58 | if ( ! Jetpack_Wizard::can_be_displayed() ) { |
| 59 | return false; |
| 60 | } |
| 61 | |
| 62 | // Only the dashboard and plugins pages should see the banner. |
| 63 | if ( ! in_array( get_current_screen()->id, array( 'dashboard', 'plugins' ), true ) ) { |
| 64 | return false; |
| 65 | } |
| 66 | |
| 67 | if ( ! current_user_can( 'jetpack_manage_modules' ) ) { |
| 68 | return false; |
| 69 | } |
| 70 | |
| 71 | // Kill if banner has been dismissed. |
| 72 | if ( Jetpack_Options::get_option( 'dismissed_wizard_banner' ) ) { |
| 73 | return false; |
| 74 | } |
| 75 | |
| 76 | if ( ! in_array( Jetpack_Options::get_option( 'setup_wizard_status', 'not-started' ), array( 'not-started', 'intro-page' ), true ) ) { |
| 77 | return false; |
| 78 | } |
| 79 | |
| 80 | return true; |
| 81 | } |
| 82 | |
| 83 | /** |
| 84 | * Enqueue JavaScript files. |
| 85 | */ |
| 86 | public function enqueue_banner_scripts() { |
| 87 | wp_enqueue_script( |
| 88 | 'jetpack-wizard-banner-js', |
| 89 | Assets::get_file_url_for_environment( |
| 90 | '_inc/build/jetpack-wizard-banner.min.js', |
| 91 | '_inc/jetpack-wizard-banner.js' |
| 92 | ), |
| 93 | array( 'jquery' ), |
| 94 | JETPACK__VERSION, |
| 95 | true |
| 96 | ); |
| 97 | |
| 98 | wp_localize_script( |
| 99 | 'jetpack-wizard-banner-js', |
| 100 | 'jp_banner', |
| 101 | array( |
| 102 | 'ajax_url' => admin_url( 'admin-ajax.php' ), |
| 103 | 'wizardBannerNonce' => wp_create_nonce( 'jp-wizard-banner-nonce' ), |
| 104 | ) |
| 105 | ); |
| 106 | } |
| 107 | |
| 108 | /** |
| 109 | * Include the needed styles |
| 110 | */ |
| 111 | public function admin_banner_styles() { |
| 112 | wp_enqueue_style( |
| 113 | 'jetpack-wizard-banner', |
| 114 | Assets::get_file_url_for_environment( |
| 115 | 'css/jetpack-wizard-banner.min.css', |
| 116 | 'css/jetpack-wizard-banner.css' |
| 117 | ), |
| 118 | array(), |
| 119 | JETPACK__VERSION |
| 120 | ); |
| 121 | } |
| 122 | |
| 123 | /** |
| 124 | * AJAX callback |
| 125 | */ |
| 126 | public static function ajax_callback() { |
| 127 | check_ajax_referer( 'jp-wizard-banner-nonce', 'nonce' ); |
| 128 | |
| 129 | $tracking = new Tracking(); |
| 130 | |
| 131 | if ( isset( $_REQUEST['personal'] ) ) { |
| 132 | $tracking->record_user_event( 'setup_wizard_banner_click', array( 'button' => 'personal' ) ); |
| 133 | } |
| 134 | |
| 135 | if ( isset( $_REQUEST['business'] ) ) { |
| 136 | $tracking->record_user_event( 'setup_wizard_banner_click', array( 'button' => 'business' ) ); |
| 137 | } |
| 138 | |
| 139 | if ( isset( $_REQUEST['skip'] ) ) { |
| 140 | $tracking->record_user_event( 'setup_wizard_banner_click', array( 'button' => 'skip' ) ); |
| 141 | } |
| 142 | |
| 143 | if ( |
| 144 | current_user_can( 'jetpack_manage_modules' ) |
| 145 | && isset( $_REQUEST['dismissBanner'] ) |
| 146 | ) { |
| 147 | Jetpack_Options::update_option( 'dismissed_wizard_banner', 1 ); |
| 148 | $tracking->record_user_event( 'setup_wizard_banner_dismiss' ); |
| 149 | wp_send_json_success(); |
| 150 | } |
| 151 | |
| 152 | wp_die(); |
| 153 | } |
| 154 | |
| 155 | /** |
| 156 | * Renders the Wizard Banner |
| 157 | * |
| 158 | * Since this HTML replicates the contents of _inc/client/setup-wizard/intro-page/index.jsx, |
| 159 | * every time one is changed, the other should also be. |
| 160 | */ |
| 161 | public function render_banner() { |
| 162 | $jetpack_logo = new Jetpack_Logo(); |
| 163 | $powering_up_logo = plugins_url( 'images/jetpack-powering-up.svg', JETPACK__PLUGIN_FILE ); |
| 164 | |
| 165 | ?> |
| 166 | <div id="jp-wizard-banner" class="jp-wizard-banner"> |
| 167 | <div class="jp-wizard-banner-grid"> |
| 168 | <div class="jp-wizard-banner-grid-a"> |
| 169 | <div class="jp-emblem"> |
| 170 | <?php |
| 171 | echo $jetpack_logo->get_jp_emblem_larger(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
| 172 | ?> |
| 173 | </div> |
| 174 | <h2 class="jp-wizard-banner-wizard-header"> |
| 175 | <?php esc_html_e( 'Set up Jetpack for better site security, performance, and more.', 'jetpack' ); ?> |
| 176 | </h2> |
| 177 | <p class="jp-wizard-banner-wizard-paragraph"> |
| 178 | <?php esc_html_e( 'Jetpack is a cloud-powered tool built by Automattic.', 'jetpack' ); ?> |
| 179 | </p> |
| 180 | <p class="jp-wizard-banner-wizard-paragraph"> |
| 181 | <?php esc_html_e( 'Answer a few questions and we’ll help you secure, speed up, customize, and grow your WordPress website.', 'jetpack' ); ?> |
| 182 | </p> |
| 183 | <div class="jp-wizard-banner-wizard-intro-question"> |
| 184 | <h2> |
| 185 | <?php |
| 186 | printf( |
| 187 | /* translators: %s is the site name */ |
| 188 | esc_html__( 'What will %s be used for?', 'jetpack' ), |
| 189 | esc_html( get_bloginfo( 'name' ) ) |
| 190 | ); |
| 191 | ?> |
| 192 | </h2> |
| 193 | <div class="jp-wizard-banner-wizard-answer-buttons"> |
| 194 | <a |
| 195 | id="jp-wizard-banner-personal-button" |
| 196 | class="button button-primary jp-wizard-banner-wizard-button" |
| 197 | href="<?php echo esc_url( Jetpack::admin_url( 'page=jetpack#/setup/income?use=personal' ) ); ?>" |
| 198 | > |
| 199 | <?php esc_html_e( 'Personal Use', 'jetpack' ); ?> |
| 200 | </a> |
| 201 | <a |
| 202 | id="jp-wizard-banner-business-button" |
| 203 | class="button button-primary jp-wizard-banner-wizard-button" |
| 204 | href="<?php echo esc_url( Jetpack::admin_url( 'page=jetpack#/setup/income?use=business' ) ); ?>" |
| 205 | > |
| 206 | <?php esc_html_e( 'Business Use', 'jetpack' ); ?> |
| 207 | </a> |
| 208 | </div> |
| 209 | <a |
| 210 | class="jp-wizard-banner-wizard-skip-link" |
| 211 | href="<?php echo esc_url( Jetpack::admin_url( 'page=jetpack#/setup/features' ) ); ?>" |
| 212 | > |
| 213 | <?php esc_html_e( 'Skip to recommended features', 'jetpack' ); ?> |
| 214 | </a> |
| 215 | </div> |
| 216 | </div> |
| 217 | |
| 218 | |
| 219 | <div class="jp-wizard-banner-grid-b"> |
| 220 | <img |
| 221 | class="powering-up-img" |
| 222 | width="200px" |
| 223 | height="200px" |
| 224 | src="<?php echo esc_url( $powering_up_logo ); ?>" |
| 225 | alt="<?php esc_attr_e( 'A jetpack site powering up', 'jetpack' ); ?>" |
| 226 | /> |
| 227 | </div> |
| 228 | |
| 229 | <span |
| 230 | class="notice-dismiss" |
| 231 | title="<?php esc_attr_e( 'Dismiss this notice', 'jetpack' ); ?>"> |
| 232 | </span> |
| 233 | |
| 234 | </div> |
| 235 | |
| 236 | </div> |
| 237 | <?php |
| 238 | } |
| 239 | } |
| 240 |