PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.2
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.2
16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / _inc / lib / admin-pages / class.jetpack-settings-page.php
jetpack / _inc / lib / admin-pages Last commit date
class-akismet-admin-chrome.php 3 weeks ago class-jetpack-about-page.php 2 months ago class-jetpack-ai-page.php 2 months ago class-jetpack-redux-state-helper.php 3 weeks ago class.jetpack-admin-page.php 6 days ago class.jetpack-landing-page.php 2 years ago class.jetpack-react-page.php 7 months ago class.jetpack-settings-page.php 6 days ago
class.jetpack-settings-page.php
240 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
3 use Automattic\Jetpack\Admin_UI\Admin_Menu;
4 use Automattic\Jetpack\Assets;
5 use Automattic\Jetpack\Redirect;
6 use Automattic\Jetpack\Status;
7 use Automattic\Jetpack\Tracking;
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit( 0 );
11 }
12
13 require_once __DIR__ . '/class.jetpack-admin-page.php';
14 require_once JETPACK__PLUGIN_DIR . 'class.jetpack-modules-list-table.php';
15
16 /**
17 * Builds the settings page and its menu
18 */
19 class Jetpack_Settings_Page extends Jetpack_Admin_Page {
20
21 /**
22 * Show the settings page only when Jetpack is connected or in dev mode.
23 *
24 * @var boolean
25 */
26 protected $dont_show_if_not_active = true;
27
28 /**
29 * Add page action.
30 *
31 * @param string $hook Hook of current page.
32 * @return void
33 */
34 public function add_page_actions( $hook ) {} //phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
35
36 /**
37 * Adds the Settings sub menu.
38 */
39 public function get_page_hook() {
40 /*
41 * In Offline Mode the cloud dashboard and My Jetpack don't initialize, so
42 * surface the Modules page as a visible, first-position item under the
43 * Jetpack top-level menu. This makes the top-level "Jetpack" menu land on
44 * Modules (instead of the first cloud page, e.g. AI) while leaving the
45 * "Settings" item free to point at the real settings dashboard.
46 */
47 if ( ( new Status() )->is_offline_mode() ) {
48 return Admin_Menu::add_menu(
49 __( 'Jetpack Settings', 'jetpack' ),
50 __( 'Modules', 'jetpack' ),
51 'jetpack_manage_modules',
52 'jetpack_modules',
53 array( $this, 'render' ),
54 1
55 );
56 }
57
58 return add_submenu_page(
59 '',
60 __( 'Jetpack Settings', 'jetpack' ),
61 __( 'Settings', 'jetpack' ),
62 'jetpack_manage_modules',
63 'jetpack_modules',
64 array( $this, 'render' )
65 );
66 }
67
68 /**
69 * Renders the module list table where you can use bulk action or row
70 * actions to activate/deactivate and configure modules
71 */
72 public function page_render() {
73 $list_table = new Jetpack_Modules_List_Table();
74
75 // Currently selected product group filter (used to highlight the active View button).
76 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
77 $current_group = isset( $_GET['product_group'] ) ? sanitize_text_field( wp_unslash( $_GET['product_group'] ) ) : '';
78
79 $is_offline_mode = ( new Status() )->is_offline_mode();
80 // Currently selected offline-availability filter (only meaningful in Offline Mode).
81 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
82 $current_availability = isset( $_GET['offline_available'] ) ? sanitize_text_field( wp_unslash( $_GET['offline_available'] ) ) : '';
83
84 // We have static.html so let's continue trying to fetch the others.
85 $noscript_notice = @file_get_contents( JETPACK__PLUGIN_DIR . '_inc/build/static-noscript-notice.html' ); //phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged, WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents, Not fetching a remote file.
86 $rest_api_notice = @file_get_contents( JETPACK__PLUGIN_DIR . '_inc/build/static-version-notice.html' ); //phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged, WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents, Not fetching a remote file.
87
88 $noscript_notice = str_replace(
89 '#HEADER_TEXT#',
90 esc_html__( 'You have JavaScript disabled', 'jetpack' ),
91 $noscript_notice
92 );
93 $noscript_notice = str_replace(
94 '#TEXT#',
95 esc_html__( "Turn on JavaScript to unlock Jetpack's full potential!", 'jetpack' ),
96 $noscript_notice
97 );
98
99 $rest_api_notice = str_replace(
100 '#HEADER_TEXT#',
101 esc_html( __( 'WordPress REST API is disabled', 'jetpack' ) ),
102 $rest_api_notice
103 );
104 $rest_api_notice = str_replace(
105 '#TEXT#',
106 esc_html( __( "Enable WordPress REST API to unlock Jetpack's full potential!", 'jetpack' ) ),
107 $rest_api_notice
108 );
109
110 if ( ! $this->is_rest_api_enabled() ) {
111 echo $rest_api_notice; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
112 }
113 echo $noscript_notice; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
114 ?>
115
116 <div class="jetpack-module-list">
117 <?php if ( $is_offline_mode ) : ?>
118 <div class="wrap">
119 <div class="jetpack-offline-notice">
120 <p class="jetpack-offline-notice__title"><?php esc_html_e( "You're working in Offline Mode", 'jetpack' ); ?></p>
121 <p class="jetpack-offline-notice__text">
122 <?php esc_html_e( 'Jetpack is running in Offline Mode, so features that need a connection to WordPress.com are paused for now — this is completely normal for local and development sites. Go ahead and activate or configure any of the modules below that work offline.', 'jetpack' ); ?>
123 <a href="<?php echo esc_url( Redirect::get_url( 'jetpack-support-development-mode' ) ); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Learn more about Offline Mode.', 'jetpack' ); ?></a>
124 </p>
125 </div>
126 </div>
127 <?php endif; ?>
128 <div class="wrap">
129 <div class="manage-left">
130 <div class="jetpack-modules-card">
131 <div class="jetpack-modules-card__bulk">
132 <label class="jetpack-modules-card__checkall">
133 <input type="checkbox" class="checkall" />
134 <span><?php esc_html_e( 'Select all', 'jetpack' ); ?></span>
135 </label>
136 <?php $list_table->unprotected_display_tablenav( 'top' ); ?>
137 <span class="filter-search">
138 <button type="button" class="button"><?php esc_html_e( 'Filter', 'jetpack' ); ?></button>
139 </span>
140 </div>
141 <form class="jetpack-modules-list-table-form" onsubmit="return false;">
142 <table class="<?php echo esc_attr( implode( ' ', $list_table->get_table_classes() ) ); ?> jetpack-modules">
143 <tbody id="the-list">
144 <?php $list_table->display_rows_or_placeholder(); ?>
145 </tbody>
146 </table>
147 </form>
148 </div>
149 </div>
150 <div class="manage-right">
151 <div class="bumper">
152 <form class="navbar-form" role="search">
153 <input type="hidden" name="page" value="jetpack_modules" />
154 <?php $list_table->search_box( __( 'Search modules…', 'jetpack' ), 'srch-term' ); ?>
155 <?php if ( $is_offline_mode ) : ?>
156 <p><?php esc_html_e( 'Available in offline mode', 'jetpack' ); ?></p>
157 <span class="dops-button-group button-group availability-filter">
158 <button type="button" class="dops-button is-compact button
159 <?php echo 'all' === $current_availability ? 'active' : ''; ?>
160 " data-availability="all"><?php esc_html_e( 'All', 'jetpack' ); ?></button>
161 <button type="button" class="dops-button button
162 <?php echo 'all' === $current_availability ? '' : 'active'; ?>
163 " data-availability="hide-unavailable"><?php esc_html_e( 'Hide unavailable', 'jetpack' ); ?></button>
164 </span>
165 <?php endif; ?>
166 <p><?php esc_html_e( 'State', 'jetpack' ); ?></p>
167 <span class="dops-button-group button-group module-filter filter-state">
168 <button type="button" class="dops-button is-compact button
169 <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
170 if ( empty( $_GET['activated'] ) ) {
171 echo 'active';
172 }
173 ?>
174 ">
175 <?php esc_html_e( 'All', 'jetpack' ); ?></button>
176 <button type="button" class="dops-button button
177 <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
178 if ( ! empty( $_GET['activated'] ) && 'true' === $_GET['activated'] ) {
179 echo 'active';
180 }
181 ?>
182 " data-filter-by="activated" data-filter-value="true"><?php esc_html_e( 'Active', 'jetpack' ); ?></button>
183 <button type="button" class="dops-button button
184 <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
185 if ( ! empty( $_GET['activated'] ) && 'false' === $_GET['activated'] ) {
186 echo 'active';
187 }
188 ?>
189 " data-filter-by="activated" data-filter-value="false"><?php esc_html_e( 'Inactive', 'jetpack' ); ?></button>
190 </span>
191 <p><?php esc_html_e( 'Purpose', 'jetpack' ); ?></p>
192 <ul class="purpose-filter">
193 <li class="all<?php echo '' === $current_group ? ' current' : ''; ?>"><a href="#" data-group=""><?php esc_html_e( 'All', 'jetpack' ); ?></a> <span class="count"></span></li>
194 <?php
195 foreach ( Jetpack_Modules_List_Table::PRODUCT_GROUP_ORDER as $group_slug ) {
196 printf(
197 '<li class="%1$s%2$s"><a href="#" data-group="%1$s">%3$s</a> <span class="count"></span></li>',
198 esc_attr( $group_slug ),
199 $group_slug === $current_group ? ' current' : '',
200 esc_html( Jetpack_Modules_List_Table::get_product_group_name( $group_slug ) )
201 );
202 }
203 ?>
204 </ul>
205 <p><?php esc_html_e( 'Tags', 'jetpack' ); ?></p>
206 <?php $list_table->views(); ?>
207 </form>
208 </div>
209 </div>
210 </div>
211 </div><!-- /.jetpack-module-list -->
212 <?php
213
214 $tracking = new Tracking();
215 $tracking->record_user_event( 'wpa_page_view', array( 'path' => 'old_settings' ) );
216 }
217
218 /**
219 * Load styles for static page.
220 *
221 * @since 4.3.0
222 */
223 public function additional_styles() {
224 Jetpack_Admin_Page::load_wrapper_styles();
225 }
226
227 /**
228 * Javascript logic specific to the list table
229 */
230 public function page_admin_scripts() {
231 wp_enqueue_script(
232 'jetpack-admin-js',
233 Assets::get_file_url_for_environment( '_inc/build/jetpack-admin.min.js', '_inc/jetpack-admin.js' ),
234 array( 'jquery' ),
235 JETPACK__VERSION,
236 true
237 );
238 }
239 }
240