updated plugin W3 Total Cache
version 2.5.0
This commit is contained in:
@ -180,13 +180,46 @@ class Util_Ui {
|
||||
* @return void
|
||||
*/
|
||||
public static function postbox_header( $title, $class = '', $id = '' ) {
|
||||
if ( ! empty( $id ) ) {
|
||||
$id = ' id="' . esc_attr( $id ) . '"';
|
||||
}
|
||||
$id = ( ! empty( $id ) ) ? ' id="' . esc_attr( $id ) . '"' : '';
|
||||
echo '<div' . $id . ' class="postbox ' . esc_attr( $class ) . '">
|
||||
<div class="handlediv" title="' . esc_attr__( 'Click to toggle', 'w3-total-cache' ) . '"><br /></div>
|
||||
<h3 class="hndle"><span>' . wp_kses( $title, self::get_allowed_html_for_wp_kses_from_content( $title ) ) . '</span></h3>
|
||||
<div class="inside">';
|
||||
<h3 class="postbox-title"><span>' . wp_kses( $title, self::get_allowed_html_for_wp_kses_from_content( $title ) ) . '</span></h3>
|
||||
<div class="inside">';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns postbox header with tabs and links (used on the General settings page exclusively)
|
||||
*
|
||||
* WordPress 5.5 introduced .postbox-header, which broke the styles of our postboxes. This was
|
||||
* resolved by adding additional css to /pub/css/options.css and pub/css/widget.css tagged with
|
||||
* a "WP 5.5" comment.
|
||||
*
|
||||
* @todo Add .postbox-header to our postboxes and cleanup css.
|
||||
* @link https://github.com/BoldGrid/w3-total-cache/issues/237
|
||||
*
|
||||
* @param string $title
|
||||
* @param string $description
|
||||
* @param string $class
|
||||
* @param string $id
|
||||
* @param string $adv_link
|
||||
* @param array $extra_links
|
||||
* @return void
|
||||
*/
|
||||
public static function postbox_header_tabs( $title, $description = '', $class = '', $id = '', $adv_link = '', $extra_links = array() ) {
|
||||
$display_id = ( ! empty( $id ) ) ? ' id="' . esc_attr( $id ) . '"' : '';
|
||||
$description = ( ! empty( $description ) ) ? '<div class="postbox-description">' . wp_kses( $description, self::get_allowed_html_for_wp_kses_from_content( $description ) ) . '</div>' : '';
|
||||
$basic_settings_tab = ( ! empty( $adv_link ) ) ? '<a class="nav-tab nav-tab-active no-link">' . esc_html__( 'Basic Settings', 'w3-total-cache' ) . '</a>' : '';
|
||||
$adv_settings_tab = ( ! empty( $adv_link ) ) ? '<a class="nav-tab link-tab" href="' . esc_url( $adv_link ) . '" gatitle="' . esc_attr( $id ) . '">' . esc_html__( 'Advanced Settings', 'w3-total-cache' ) . '<span class="dashicons dashicons-arrow-right-alt2"></span></a>' : '';
|
||||
|
||||
$extra_link_tabs = '';
|
||||
foreach ( $extra_links as $extra_link_text => $extra_link ) {
|
||||
$extra_link_tabs .= '<a class="nav-tab link-tab" href="' . esc_url( $extra_link ) . '" gatitle="' . esc_attr( $extra_link_text ) . '">' . esc_html( $extra_link_text ) . '<span class="dashicons dashicons-arrow-right-alt2"></span></a>';
|
||||
}
|
||||
|
||||
echo '<div' . $display_id . ' class="postbox-tabs ' . esc_attr( $class ) . '">
|
||||
<h3 class="postbox-title"><span>' . wp_kses( $title, self::get_allowed_html_for_wp_kses_from_content( $title ) ) . '</span></h3>
|
||||
' . $description . '
|
||||
<h2 class="nav-tab-wrapper">' . $basic_settings_tab . $adv_settings_tab . $extra_link_tabs . '</h2>
|
||||
<div class="inside">';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -231,6 +264,156 @@ class Util_Ui {
|
||||
<?php
|
||||
}
|
||||
|
||||
public static function button_config_save_dropdown( $id = '', $extra = '' ) {
|
||||
?>
|
||||
<div class="w3tc-button-control-container">
|
||||
<?php
|
||||
self::print_save_split_button( $id, $extra );
|
||||
self::print_flush_split_button();
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the split button for saving setting.
|
||||
*
|
||||
* @param string $id ID value.
|
||||
* @param string $extra Extra values.
|
||||
* @return void
|
||||
*/
|
||||
public static function print_save_split_button( $id = '', $extra = '' ) {
|
||||
$b1_id = 'w3tc_save_options_' . $id;
|
||||
$b2_id = 'w3tc_default_save_and_flush_' . $id;
|
||||
|
||||
$nonce_field = self::nonce_field( 'w3tc' );
|
||||
echo wp_kses(
|
||||
$nonce_field,
|
||||
self::get_allowed_html_for_wp_kses_from_content( $nonce_field )
|
||||
);
|
||||
|
||||
echo wp_kses(
|
||||
$extra,
|
||||
self::get_allowed_html_for_wp_kses_from_content( $extra )
|
||||
);
|
||||
|
||||
?>
|
||||
<div class="btn-group w3tc-button-save-dropdown">
|
||||
<?php
|
||||
if ( ! is_network_admin() ) {
|
||||
?>
|
||||
<input type="submit" class="w3tc-button-save btn btn-primary btn-sm" name="w3tc_save_options" value="<?php esc_html_e( 'Save Settings', 'w3-total-cache' ); ?>"/>
|
||||
<button type="button" class="btn btn-primary btn-sm dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<input type="submit" id="<?php echo esc_attr( $b2_id ); ?>" class="w3tc-button-save dropdown-item" name="w3tc_default_save_and_flush" value="<?php esc_html_e( 'Save Settings & Purge Caches', 'w3-total-cache' ); ?>"/>
|
||||
</div>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<input type="submit" class="w3tc-button-save btn btn-primary btn-sm" name="w3tc_save_options" value="<?php esc_html_e( 'Save Settings', 'w3-total-cache' ); ?>"/>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the split button for flushing caches.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function print_flush_split_button() {
|
||||
$config = Dispatcher::config();
|
||||
|
||||
$nonce_field = self::nonce_field( 'w3tc' );
|
||||
echo wp_kses(
|
||||
$nonce_field,
|
||||
self::get_allowed_html_for_wp_kses_from_content( $nonce_field )
|
||||
);
|
||||
|
||||
?>
|
||||
<div class="btn-group w3tc-button-flush-dropdown">
|
||||
<input id="flush_all" type="submit" class="btn btn-light btn-sm" name="w3tc_flush_all" value="<?php esc_html_e( 'Empty All Caches', 'w3-total-cache' ); ?>"/>
|
||||
<button type="button" class="btn btn-light btn-sm dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<?php
|
||||
$actions = apply_filters( 'w3tc_dashboard_actions', array() );
|
||||
foreach ( $actions as $action ) {
|
||||
echo wp_kses(
|
||||
$action,
|
||||
array(
|
||||
'input' => array(
|
||||
'class' => array(),
|
||||
'disabled' => array(),
|
||||
'name' => array(),
|
||||
'type' => array(),
|
||||
'value' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
if ( $config->get_boolean( 'pgcache.enabled' ) ) {
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_flush_pgcache" value="' . esc_html__( 'Empty Page Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
if ( $config->get_boolean( 'browsercache.cssjs.replace' ) || $config->get_boolean( 'browsercache.other.replace' ) ) {
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_flush_browser_cache" value="' . esc_html__( 'Empty Browser Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
if ( $config->get_boolean( 'minify.enabled' ) ) {
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_flush_minify" value="' . esc_html__( 'Empty Minify Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
if ( $config->get_boolean( 'dbcache.enabled' ) ) {
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_flush_dbcache" value="' . esc_html__( 'Empty Database Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
if ( $config->getf_boolean( 'objectcache.enabled' ) ) {
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_flush_objectcache" value="' . esc_html__( 'Empty Object Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
if ( $config->get_boolean( 'cdn.enabled' ) ) {
|
||||
$disable = $config->get_boolean( 'cdn.enabled' ) && Cdn_Util::can_purge_all( $config->get_string( 'cdn.engine' ) ) ? '' : ' disabled="disabled" ';
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_flush_cdn"' . $disable . ' value="' . esc_html__( 'Empty CDN Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
if ( $config->is_extension_active_frontend( 'fragmentcache' ) && Util_Environment::is_w3tc_pro( $config ) && ! empty( $config->get_string( array( 'fragmentcache', 'engine' ) ) ) ) {
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_flush_fragmentcache" value="' . esc_html__( 'Empty Fragment Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
if ( $config->get_boolean( 'varnish.enabled' ) ) {
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_flush_varnish" value="' . esc_html__( 'Empty Varnish Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
if ( $config->is_extension_active_frontend( 'cloudflare' ) ) {
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_cloudflare_flush" value="' . esc_html__( 'Empty CloudFlare Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
$opcode_enabled = ( Util_Installed::opcache() || Util_Installed::apc_opcache() );
|
||||
if ( $opcode_enabled ) {
|
||||
$disable = $opcode_enabled ? '' : ' disabled="disabled" ';
|
||||
echo '<input type="submit" class="dropdown-item" name="w3tc_opcache_flush"' . $disable . ' value="' . esc_html__( 'Empty OpCode Cache', 'w3-total-cache' ) . '"/>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the form control bar
|
||||
*
|
||||
* @param string $id
|
||||
* @return void
|
||||
*/
|
||||
public static function print_control_bar( $id = '' ) {
|
||||
?>
|
||||
<div class="w3tc_form_bar">
|
||||
<?php
|
||||
$custom_areas = apply_filters( 'w3tc_settings_general_anchors', array() );
|
||||
self::print_options_menu( $custom_areas );
|
||||
self::button_config_save_dropdown( $id );
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
public static function sealing_disabled( $key ) {
|
||||
$c = Dispatcher::config();
|
||||
if ( $c->is_sealed( $key ) ) {
|
||||
@ -269,14 +452,14 @@ class Util_Ui {
|
||||
|
||||
if ( empty( $page_val ) || ( ! empty( $page_val ) && 'w3tc_' !== substr( $page_val, 0, 5 ) ) ) {
|
||||
$logo = sprintf(
|
||||
'<img src="%s" alt="W3 Total Cache" style="height:30px" />"',
|
||||
'<img src="%s" alt="W3 Total Cache" style="height:30px;padding: 10px 2px 0 2px;" />"',
|
||||
esc_url( plugins_url( '/pub/img/W3TC_dashboard_logo_title.png', W3TC_FILE ) ) . ''
|
||||
);
|
||||
} else {
|
||||
$logo = '';
|
||||
}
|
||||
return sprintf(
|
||||
'<div %s class="updated">%s</div>',
|
||||
'<div %s class="updated inline">%s</div>',
|
||||
$id ? 'id="' . esc_attr( $id ) . '"' : '',
|
||||
$logo . wp_kses( $message, self::get_allowed_html_for_wp_kses_from_content( $message ) )
|
||||
);
|
||||
@ -307,7 +490,7 @@ class Util_Ui {
|
||||
|
||||
if ( empty( $page_val ) || ( ! empty( $page_val ) && 'w3tc_' !== substr( $page_val, 0, 5 ) ) ) {
|
||||
$logo = sprintf(
|
||||
'<img src="%s" alt="W3 Total Cache" style="height:30px" />',
|
||||
'<img src="%s" alt="W3 Total Cache" style="height:30px;padding: 10px 2px 0 2px;" />',
|
||||
esc_url( plugins_url( '/pub/img/W3TC_dashboard_logo_title.png', W3TC_FILE ) . '' )
|
||||
);
|
||||
} else {
|
||||
@ -315,7 +498,7 @@ class Util_Ui {
|
||||
}
|
||||
|
||||
$v = sprintf(
|
||||
'<div %s class="error">%s</div>',
|
||||
'<div %s class="error inline">%s</div>',
|
||||
$id ? 'id="' . esc_attr( $id ) . '"' : '',
|
||||
$logo . wp_kses( $message, self::get_allowed_html_for_wp_kses_from_content( $message ) )
|
||||
);
|
||||
@ -915,28 +1098,9 @@ class Util_Ui {
|
||||
}
|
||||
|
||||
public static function config_item_extension_enabled( $a ) {
|
||||
echo "<tr><th class=''></th>\n<td>\n";
|
||||
|
||||
$c = Dispatcher::config();
|
||||
self::checkbox2(
|
||||
array(
|
||||
'name' => 'extension__' . self::config_key_to_http_name( $a['extension_id'] ),
|
||||
'value' => $c->is_extension_active_frontend( $a['extension_id'] ),
|
||||
'label' => $a['checkbox_label'],
|
||||
)
|
||||
);
|
||||
|
||||
if ( isset( $a['description'] ) ) {
|
||||
echo '<p class="description">' . wp_kses( $a['description'], self::get_allowed_html_for_wp_kses_from_content( $a['description'] ) ) . '</p>';
|
||||
}
|
||||
|
||||
echo "</td></tr>\n";
|
||||
}
|
||||
|
||||
public static function config_item_pro( $a ) {
|
||||
$a = self::config_item_preprocess( $a );
|
||||
|
||||
if ( 'w3tc_no_trtd' !== $a['label_class'] ) {
|
||||
if ( 'w3tc_single_column' === $a['label_class'] ) {
|
||||
echo '<tr><th colspan="2">';
|
||||
} else {
|
||||
echo '<tr><th class="' . esc_attr( $a['label_class'] ) . '">';
|
||||
|
||||
if ( ! empty( $a['label'] ) ) {
|
||||
@ -946,7 +1110,51 @@ class Util_Ui {
|
||||
echo "</th>\n<td>\n";
|
||||
}
|
||||
|
||||
self::pro_wrap_maybe_start();
|
||||
if ( isset( $a['pro'] ) ) {
|
||||
self::pro_wrap_maybe_start();
|
||||
}
|
||||
|
||||
$c = Dispatcher::config();
|
||||
self::checkbox2(
|
||||
array(
|
||||
'name' => 'extension__' . self::config_key_to_http_name( $a['extension_id'] ),
|
||||
'value' => $c->is_extension_active_frontend( $a['extension_id'] ),
|
||||
'label' => $a['checkbox_label'],
|
||||
'disabled' => isset( $a['disabled'] ) ? $a['disabled'] : false,
|
||||
)
|
||||
);
|
||||
|
||||
if ( isset( $a['description'] ) ) {
|
||||
echo '<p class="description">' . wp_kses( $a['description'], self::get_allowed_html_for_wp_kses_from_content( $a['description'] ) ) . '</p>';
|
||||
}
|
||||
|
||||
if ( isset( $a['pro'] ) ) {
|
||||
self::pro_wrap_maybe_end( 'extension__' . self::config_key_to_http_name( $a['extension_id'] ) );
|
||||
}
|
||||
|
||||
echo ( isset( $a['style'] ) ? '</th>' : '</td>' );
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
public static function config_item_pro( $a ) {
|
||||
$a = self::config_item_preprocess( $a );
|
||||
|
||||
if ( 'w3tc_single_column' === $a['label_class'] ) {
|
||||
echo '<tr><th colspan="2">';
|
||||
} elseif ( 'w3tc_no_trtd' !== $a['label_class'] ) {
|
||||
echo '<tr><th class="' . esc_attr( $a['label_class'] ) . '">';
|
||||
|
||||
if ( ! empty( $a['label'] ) ) {
|
||||
self::label( $a['control_name'], $a['label'] );
|
||||
}
|
||||
|
||||
echo "</th>\n<td>\n";
|
||||
}
|
||||
|
||||
// If wrap_separate is not set we wrap everything.
|
||||
if ( ! isset( $a['wrap_separate'] ) ) {
|
||||
self::pro_wrap_maybe_start();
|
||||
}
|
||||
|
||||
self::control2( $a );
|
||||
|
||||
@ -954,6 +1162,15 @@ class Util_Ui {
|
||||
echo wp_kses( $a['control_after'], self::get_allowed_html_for_wp_kses_from_content( $a['control_after'] ) );
|
||||
}
|
||||
|
||||
// If wrap_separate is set we wrap only the description.
|
||||
if ( isset( $a['wrap_separate'] ) ) {
|
||||
// If not pro we add a spacer for better separation of control element and wrapper.
|
||||
if ( ! Util_Environment::is_w3tc_pro( Dispatcher::config() ) ) {
|
||||
echo '<br/><br/>';
|
||||
}
|
||||
self::pro_wrap_maybe_start();
|
||||
}
|
||||
|
||||
if ( isset( $a['description'] ) ) {
|
||||
self::pro_wrap_description( $a['excerpt'], $a['description'], $a['control_name'] );
|
||||
}
|
||||
@ -961,7 +1178,8 @@ class Util_Ui {
|
||||
self::pro_wrap_maybe_end( $a['control_name'] );
|
||||
|
||||
if ( 'w3tc_no_trtd' !== $a['label_class'] ) {
|
||||
echo "</th></tr>\n";
|
||||
echo ( isset( $a['style'] ) ? '</th>' : '</td>' );
|
||||
echo "</tr>\n";
|
||||
}
|
||||
}
|
||||
|
||||
@ -1042,21 +1260,25 @@ class Util_Ui {
|
||||
'optgroup' => 2,
|
||||
);
|
||||
|
||||
self::config_item(
|
||||
array(
|
||||
'key' => $a['key'],
|
||||
'label' => ( isset( $a['label'] ) ? $a['label'] : null ),
|
||||
'disabled' => ( isset( $a['disabled'] ) ? $a['disabled'] : null ),
|
||||
'control' => 'selectbox',
|
||||
'selectbox_values' => $values,
|
||||
'selectbox_optgroups' => array(
|
||||
__( 'Shared Server:', 'w3-total-cache' ),
|
||||
__( 'Dedicated / Virtual Server:', 'w3-total-cache' ),
|
||||
__( 'Multiple Servers:', 'w3-total-cache' ),
|
||||
),
|
||||
'control_after' => isset( $a['control_after'] ) ? $a['control_after'] : null,
|
||||
)
|
||||
$item_engine_config = array(
|
||||
'key' => $a['key'],
|
||||
'label' => ( isset( $a['label'] ) ? $a['label'] : null ),
|
||||
'disabled' => ( isset( $a['disabled'] ) ? $a['disabled'] : null ),
|
||||
'control' => 'selectbox',
|
||||
'selectbox_values' => $values,
|
||||
'selectbox_optgroups' => array(
|
||||
__( 'Shared Server:', 'w3-total-cache' ),
|
||||
__( 'Dedicated / Virtual Server:', 'w3-total-cache' ),
|
||||
__( 'Multiple Servers:', 'w3-total-cache' ),
|
||||
),
|
||||
'control_after' => isset( $a['control_after'] ) ? $a['control_after'] : null,
|
||||
);
|
||||
|
||||
if ( isset( $a['pro'] ) ) {
|
||||
self::config_item_pro( $item_engine_config );
|
||||
} else {
|
||||
self::config_item( $item_engine_config );
|
||||
}
|
||||
}
|
||||
|
||||
public static function pro_wrap_maybe_start() {
|
||||
@ -1066,7 +1288,8 @@ class Util_Ui {
|
||||
|
||||
?>
|
||||
<div class="w3tc-gopro">
|
||||
<div>
|
||||
<div class="w3tc-gopro-ribbon"><span>★ PRO</span></div>
|
||||
<div class="w3tc-gopro-content">
|
||||
<?php
|
||||
}
|
||||
|
||||
@ -1249,7 +1472,7 @@ class Util_Ui {
|
||||
public static function get_allowed_html_for_wp_kses_from_content( $content ) {
|
||||
$allowed_html = array();
|
||||
|
||||
if( empty( $content ) ) {
|
||||
if ( empty( $content ) ) {
|
||||
return $allowed_html;
|
||||
}
|
||||
|
||||
@ -1264,4 +1487,479 @@ class Util_Ui {
|
||||
}
|
||||
return $allowed_html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints breadcrumb
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function print_breadcrumb() {
|
||||
$page = ! empty( Util_Admin::get_current_extension() ) ? Util_Admin::get_current_extension() : Util_Admin::get_current_page();
|
||||
$page_mapping = Util_PageUrls::get_page_mapping( $page );
|
||||
$parent = isset( $page_mapping['parent_name'] ) ? '<span class="dashicons dashicons-arrow-right-alt2"></span><a href="' . esc_url( $page_mapping['parent_link'] ) . '">' . esc_html( $page_mapping['parent_name'] ) . '</a>' : '';
|
||||
$current = '<span class="dashicons dashicons-arrow-right-alt2"></span><span>' . esc_html( $page_mapping['page_name'] ) . '</span>';
|
||||
?>
|
||||
<p id="w3tc-breadcrumb">
|
||||
<span class="dashicons dashicons-admin-home"></span>
|
||||
<a href="<?php echo esc_url( self::admin_url( 'admin.php?page=w3tc_dashboard' ) ); ?>">W3 Total Cache</a>
|
||||
<?php echo wp_kses( $parent, self::get_allowed_html_for_wp_kses_from_content( $parent ) ); ?>
|
||||
<?php echo wp_kses( $current, self::get_allowed_html_for_wp_kses_from_content( $current ) ); ?>
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the options anchor menu
|
||||
*
|
||||
* @param array $custom_areas Custom Areas.
|
||||
* @return void
|
||||
*/
|
||||
public static function print_options_menu( $custom_areas = array() ) {
|
||||
$config = Dispatcher::config();
|
||||
$state = Dispatcher::config_state();
|
||||
$page = Util_Admin::get_current_page();
|
||||
$licensing_visible = (
|
||||
( ! Util_Environment::is_wpmu() || is_network_admin() ) &&
|
||||
! ini_get( 'w3tc.license_key' ) &&
|
||||
'host_valid' !== $state->get_string( 'license.status' )
|
||||
);
|
||||
|
||||
switch ( $page ) {
|
||||
case 'w3tc_general':
|
||||
if ( ! empty( $_REQUEST['view'] ) ) {
|
||||
break;
|
||||
}
|
||||
|
||||
$message_bus_link = array();
|
||||
if ( Util_Environment::is_w3tc_pro( $config ) ) {
|
||||
$message_bus_link = array(
|
||||
array(
|
||||
'id' => 'amazon_sns',
|
||||
'text' => esc_html__( 'Message Bus', 'w3-total-cache' ),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
$licensing_link = array();
|
||||
if ( $licensing_visible ) {
|
||||
$licensing_link = array(
|
||||
array(
|
||||
'id' => 'licensing',
|
||||
'text' => esc_html__( 'Licensing', 'w3-total-cache' ),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
$links = array_merge(
|
||||
array(
|
||||
array(
|
||||
'id' => 'general',
|
||||
'text' => esc_html__( 'General', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'page_cache',
|
||||
'text' => esc_html__( 'Page Cache', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'minify',
|
||||
'text' => esc_html__( 'Minify', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'system_opcache',
|
||||
'text' => esc_html__( 'Opcode Cache', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'database_cache',
|
||||
'text' => esc_html__( 'Database Cache', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'object_cache',
|
||||
'text' => esc_html__( 'Object Cache', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'browser_cache',
|
||||
'text' => esc_html__( 'Browser Cache', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'cdn',
|
||||
'text' => wp_kses(
|
||||
sprintf(
|
||||
// translators: 1 opening HTML abbr tag, 2 closing HTML abbr tag.
|
||||
__(
|
||||
'%1$sCDN%2$s',
|
||||
'w3-total-cache'
|
||||
),
|
||||
'<abbr title="' . esc_attr__( 'Content Delivery Network', 'w3-total-cache' ) . '">',
|
||||
'</abbr>'
|
||||
),
|
||||
array(
|
||||
'abbr' => array(
|
||||
'title' => array(),
|
||||
),
|
||||
)
|
||||
),
|
||||
),
|
||||
array(
|
||||
'id' => 'reverse_proxy',
|
||||
'text' => esc_html__( 'Reverse Proxy', 'w3-total-cache' ),
|
||||
),
|
||||
),
|
||||
$message_bus_link,
|
||||
$custom_areas,
|
||||
$licensing_link,
|
||||
array(
|
||||
array(
|
||||
'id' => 'miscellaneous',
|
||||
'text' => esc_html__( 'Miscellaneous', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'debug',
|
||||
'text' => esc_html__( 'Debug', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'image_service',
|
||||
'text' => esc_html__( 'WebP Converter', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'google_pagespeed',
|
||||
'text' => __( 'Google PageSpeed', 'w3-total-cache' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'settings',
|
||||
'text' => esc_html__( 'Import / Export Settings', 'w3-total-cache' ),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
$links_buff = array();
|
||||
foreach ( $links as $link ) {
|
||||
$links_buff[] = "<a href=\"#{$link['id']}\">{$link['text']}</a>";
|
||||
}
|
||||
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<?php
|
||||
echo wp_kses(
|
||||
implode( ' | ', $links_buff ),
|
||||
array(
|
||||
'a' => array(
|
||||
'href' => array(),
|
||||
'class' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_pgcache':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#general"><?php esc_html_e( 'General', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#mirrors"><?php esc_html_e( 'Aliases', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#cache_preload"><?php esc_html_e( 'Cache Preload', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#purge_policy"><?php esc_html_e( 'Purge Policy', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#rest"><?php esc_html_e( 'Rest API', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#advanced"><?php esc_html_e( 'Advanced', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#notes"><?php esc_html_e( 'Note(s)', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_minify':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#general"><?php esc_html_e( 'General', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#html_xml">
|
||||
<?php
|
||||
echo wp_kses(
|
||||
sprintf(
|
||||
// translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag,
|
||||
// translators: 3 opening HTML acronym tag, 4 closing HTML acronym tag.
|
||||
__(
|
||||
'%1$sHTML%2$s & %3$sXML%4$s',
|
||||
'w3-total-cache'
|
||||
),
|
||||
'<acronym title="' . esc_attr__( 'Hypertext Markup Language', 'w3-total-cache' ) . '">',
|
||||
'</acronym>',
|
||||
'<acronym title="' . esc_attr__( 'eXtensible Markup Language', 'w3-total-cache' ) . '">',
|
||||
'</acronym>'
|
||||
),
|
||||
array(
|
||||
'acronym' => array(
|
||||
'title' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
?>
|
||||
</a> |
|
||||
<a href="#js">
|
||||
<?php
|
||||
echo wp_kses(
|
||||
sprintf(
|
||||
// translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag.
|
||||
__(
|
||||
'%1$sJS%2$s',
|
||||
'w3-total-cache'
|
||||
),
|
||||
'<acronym title="' . esc_attr__( 'JavaScript', 'w3-total-cache' ) . '">',
|
||||
'</acronym>'
|
||||
),
|
||||
array(
|
||||
'acronym' => array(
|
||||
'title' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
?>
|
||||
</a> |
|
||||
<a href="#css">
|
||||
<?php
|
||||
echo wp_kses(
|
||||
sprintf(
|
||||
// translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag.
|
||||
__(
|
||||
'%1$sCSS%2$s',
|
||||
'w3-total-cache'
|
||||
),
|
||||
'<acronym title="' . esc_attr__( 'Cascading Style Sheet', 'w3-total-cache' ) . '">',
|
||||
'</acronym>'
|
||||
),
|
||||
array(
|
||||
'acronym' => array(
|
||||
'title' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
?>
|
||||
</a> |
|
||||
<a href="#advanced"><?php esc_html_e( 'Advanced', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#notes"><?php esc_html_e( 'Note(s)', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_dbcache':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#general"><?php esc_html_e( 'General', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#advanced"><?php esc_html_e( 'Advanced', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_objectcache':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<!--<a href="#advanced"><?php esc_html_e( 'Advanced', 'w3-total-cache' ); ?></a>-->
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_browsercache':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#general"><?php esc_html_e( 'General', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#css_js">
|
||||
<?php
|
||||
echo wp_kses(
|
||||
sprintf(
|
||||
// translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag,
|
||||
// translators: 3 opening HTML acronym tag, 4 closing HTML acronym tag.
|
||||
__(
|
||||
'%1$sCSS%2$s & %3$sJS%4$s',
|
||||
'w3-total-cache'
|
||||
),
|
||||
'<acronym title="' . esc_attr__( 'Cascading Style Sheet', 'w3-total-cache' ) . '">',
|
||||
'</acronym>',
|
||||
'<acronym title="' . esc_attr__( 'JavaScript', 'w3-total-cache' ) . '">',
|
||||
'</acronym>'
|
||||
),
|
||||
array(
|
||||
'acronym' => array(
|
||||
'title' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
?>
|
||||
</a> |
|
||||
<a href="#html_xml">
|
||||
<?php
|
||||
echo wp_kses(
|
||||
sprintf(
|
||||
// translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag,
|
||||
// translators: 3 opening HTML acronym tag, 4 closing HTML acronym tag.
|
||||
__(
|
||||
'%1$sHTML%2$s & %3$sXML%4$s',
|
||||
'w3-total-cache'
|
||||
),
|
||||
'<acronym title="' . esc_attr__( 'Hypertext Markup Language', 'w3-total-cache' ) . '">',
|
||||
'</acronym>',
|
||||
'<acronym title="' . esc_attr__( 'eXtensible Markup Language', 'w3-total-cache' ) . '">',
|
||||
'</acronym>'
|
||||
),
|
||||
array(
|
||||
'acronym' => array(
|
||||
'title' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
?>
|
||||
</a> |
|
||||
<a href="#media"><?php esc_html_e( 'Media', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#security"><?php esc_html_e( 'Security Headers', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_cachegroups':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#manage-uag"><?php esc_html_e( 'Manage User Agent Groups', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#manage-rg"><?php esc_html_e( 'Manage Referrer Groups', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#manage-cg"><?php esc_html_e( 'Manage Cookie Groups', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_cdn':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#general"><?php esc_html_e( 'General', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#configuration"><?php esc_html_e( 'Configuration', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#advanced"><?php esc_html_e( 'Advanced', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#notes"><?php esc_html_e( 'Note(s)', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_userexperience':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<?php
|
||||
$extensions_active = $config->get_array( 'extensions.active' );
|
||||
if ( array_key_exists( 'user-experience-defer-scripts', $extensions_active ) ) {
|
||||
// If more items are added this will only encompase the Defer Scripts, but if only 1 item show no sub-nav.
|
||||
?>
|
||||
<a href="#lazy-loading"><?php esc_html_e( 'Lazy Loading', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#application"><?php esc_html_e( 'Delay Scripts', 'w3-total-cache' ); ?></a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_install':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#initial"><?php esc_html_e( 'Initial Installation', 'w3-total-cache' ); ?></a> |
|
||||
<?php if ( count( $rewrite_rules_descriptors ) ) : ?>
|
||||
<a href="#rules"><?php esc_html_e( 'Rewrite Rules', 'w3-total-cache' ); ?></a> |
|
||||
<?php endif ?>
|
||||
<?php if ( count( $other_areas ) ) : ?>
|
||||
<a href="#other"><?php esc_html_e( 'Other', 'w3-total-cache' ); ?></a> |
|
||||
<?php endif ?>
|
||||
<a href="#additional"><?php esc_html_e( 'Services', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#modules">
|
||||
<?php
|
||||
echo wp_kses(
|
||||
sprintf(
|
||||
// translators: 1 opening HTML acronym tag, 2 closing HTML acronym tag.
|
||||
__(
|
||||
'%1$sPHP%2$s Modules',
|
||||
'w3-total-cache'
|
||||
),
|
||||
'<acronym title="' . esc_attr__( 'Hypertext Preprocessor', 'w3-total-cache' ) . '">',
|
||||
'</acronym>'
|
||||
),
|
||||
array(
|
||||
'acronym' => array(
|
||||
'title' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
?>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_fragmentcache':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#overview"><?php esc_html_e( 'Overview', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#advanced"><?php esc_html_e( 'Advanced', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_monitoring':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#application"><?php esc_html_e( 'Application', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#dashboard"><?php esc_html_e( 'Dashboard', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#behavior"><?php esc_html_e( 'Behavior', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_extension_page_imageservice':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#configuration"><?php esc_html_e( 'Configuration', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#tools"><?php esc_html_e( 'Tools', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#statistics"><?php esc_html_e( 'Statistics', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'w3tc_extensions':
|
||||
$extension = Util_Admin::get_current_extension();
|
||||
switch ( $extension ) {
|
||||
case 'cloudflare':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#credentials"><?php esc_html_e( 'Credentials', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#general"><?php esc_html_e( 'General', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'amp':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<!--<a href="#configuration"><?php esc_html_e( 'Configuration', 'w3-total-cache' ); ?></a>-->
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'swarmify':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#configuration"><?php esc_html_e( 'Configuration', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#behavior"><?php esc_html_e( 'Behavior Settings', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
||||
case 'genesis':
|
||||
?>
|
||||
<div id="w3tc-options-menu">
|
||||
<a href="#header"><?php esc_html_e( 'Header', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#content"><?php esc_html_e( 'Content', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#sidebar"><?php esc_html_e( 'Sidebar', 'w3-total-cache' ); ?></a> |
|
||||
<a href="#exclusions"><?php esc_html_e( 'Exclusions', 'w3-total-cache' ); ?></a>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
default:
|
||||
?>
|
||||
<div id="w3tc-options-menu"></div>
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user