123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- <?php
- /**
- * Customize API: WP_Customize_Theme_Control class
- *
- * @package WordPress
- * @subpackage Customize
- * @since 4.4.0
- */
- /**
- * Customize Theme Control class.
- *
- * @since 4.2.0
- *
- * @see WP_Customize_Control
- */
- class WP_Customize_Theme_Control extends WP_Customize_Control {
- /**
- * Customize control type.
- *
- * @since 4.2.0
- * @var string
- */
- public $type = 'theme';
- /**
- * Theme object.
- *
- * @since 4.2.0
- * @var WP_Theme
- */
- public $theme;
- /**
- * Refresh the parameters passed to the JavaScript via JSON.
- *
- * @since 4.2.0
- *
- * @see WP_Customize_Control::to_json()
- */
- public function to_json() {
- parent::to_json();
- $this->json['theme'] = $this->theme;
- }
- /**
- * Don't render the control content from PHP, as it's rendered via JS on load.
- *
- * @since 4.2.0
- */
- public function render_content() {}
- /**
- * Render a JS template for theme display.
- *
- * @since 4.2.0
- */
- public function content_template() {
- /* translators: %s: Theme name. */
- $details_label = sprintf( __( 'Details for theme: %s' ), '{{ data.theme.name }}' );
- /* translators: %s: Theme name. */
- $customize_label = sprintf( __( 'Customize theme: %s' ), '{{ data.theme.name }}' );
- /* translators: %s: Theme name. */
- $preview_label = sprintf( __( 'Live preview theme: %s' ), '{{ data.theme.name }}' );
- /* translators: %s: Theme name. */
- $install_label = sprintf( __( 'Install and preview theme: %s' ), '{{ data.theme.name }}' );
- ?>
- <# if ( data.theme.active ) { #>
- <div class="theme active" tabindex="0" aria-describedby="{{ data.section }}-{{ data.theme.id }}-action">
- <# } else { #>
- <div class="theme" tabindex="0" aria-describedby="{{ data.section }}-{{ data.theme.id }}-action">
- <# } #>
- <# if ( data.theme.screenshot && data.theme.screenshot[0] ) { #>
- <div class="theme-screenshot">
- <img data-src="{{ data.theme.screenshot[0] }}?ver={{ data.theme.version }}" alt="" />
- </div>
- <# } else { #>
- <div class="theme-screenshot blank"></div>
- <# } #>
- <span class="more-details theme-details" id="{{ data.section }}-{{ data.theme.id }}-action" aria-label="<?php echo esc_attr( $details_label ); ?>"><?php _e( 'Theme Details' ); ?></span>
- <div class="theme-author">
- <?php
- /* translators: Theme author name. */
- printf( _x( 'By %s', 'theme author' ), '{{ data.theme.author }}' );
- ?>
- </div>
- <# if ( 'installed' === data.theme.type && data.theme.hasUpdate ) { #>
- <# if ( data.theme.updateResponse.compatibleWP && data.theme.updateResponse.compatiblePHP ) { #>
- <div class="update-message notice inline notice-warning notice-alt" data-slug="{{ data.theme.id }}">
- <p>
- <?php
- if ( is_multisite() ) {
- _e( 'New version available.' );
- } else {
- printf(
- /* translators: %s: "Update now" button. */
- __( 'New version available. %s' ),
- '<button class="button-link update-theme" type="button">' . __( 'Update now' ) . '</button>'
- );
- }
- ?>
- </p>
- </div>
- <# } else { #>
- <div class="update-message notice inline notice-error notice-alt" data-slug="{{ data.theme.id }}">
- <p>
- <# if ( ! data.theme.updateResponse.compatibleWP && ! data.theme.updateResponse.compatiblePHP ) { #>
- <?php
- printf(
- /* translators: %s: Theme name. */
- __( 'There is a new version of %s available, but it does not work with your versions of WordPress and PHP.' ),
- '{{{ data.theme.name }}}'
- );
- if ( current_user_can( 'update_core' ) && current_user_can( 'update_php' ) ) {
- printf(
- /* translators: 1: URL to WordPress Updates screen, 2: URL to Update PHP page. */
- ' ' . __( '<a href="%1$s">Please update WordPress</a>, and then <a href="%2$s">learn more about updating PHP</a>.' ),
- self_admin_url( 'update-core.php' ),
- esc_url( wp_get_update_php_url() )
- );
- wp_update_php_annotation( '</p><p><em>', '</em>' );
- } elseif ( current_user_can( 'update_core' ) ) {
- printf(
- /* translators: %s: URL to WordPress Updates screen. */
- ' ' . __( '<a href="%s">Please update WordPress</a>.' ),
- self_admin_url( 'update-core.php' )
- );
- } elseif ( current_user_can( 'update_php' ) ) {
- printf(
- /* translators: %s: URL to Update PHP page. */
- ' ' . __( '<a href="%s">Learn more about updating PHP</a>.' ),
- esc_url( wp_get_update_php_url() )
- );
- wp_update_php_annotation( '</p><p><em>', '</em>' );
- }
- ?>
- <# } else if ( ! data.theme.updateResponse.compatibleWP ) { #>
- <?php
- printf(
- /* translators: %s: Theme name. */
- __( 'There is a new version of %s available, but it does not work with your version of WordPress.' ),
- '{{{ data.theme.name }}}'
- );
- if ( current_user_can( 'update_core' ) ) {
- printf(
- /* translators: %s: URL to WordPress Updates screen. */
- ' ' . __( '<a href="%s">Please update WordPress</a>.' ),
- self_admin_url( 'update-core.php' )
- );
- }
- ?>
- <# } else if ( ! data.theme.updateResponse.compatiblePHP ) { #>
- <?php
- printf(
- /* translators: %s: Theme name. */
- __( 'There is a new version of %s available, but it does not work with your version of PHP.' ),
- '{{{ data.theme.name }}}'
- );
- if ( current_user_can( 'update_php' ) ) {
- printf(
- /* translators: %s: URL to Update PHP page. */
- ' ' . __( '<a href="%s">Learn more about updating PHP</a>.' ),
- esc_url( wp_get_update_php_url() )
- );
- wp_update_php_annotation( '</p><p><em>', '</em>' );
- }
- ?>
- <# } #>
- </p>
- </div>
- <# } #>
- <# } #>
- <# if ( ! data.theme.compatibleWP || ! data.theme.compatiblePHP ) { #>
- <div class="notice notice-error notice-alt"><p>
- <# if ( ! data.theme.compatibleWP && ! data.theme.compatiblePHP ) { #>
- <?php
- _e( 'This theme does not work with your versions of WordPress and PHP.' );
- if ( current_user_can( 'update_core' ) && current_user_can( 'update_php' ) ) {
- printf(
- /* translators: 1: URL to WordPress Updates screen, 2: URL to Update PHP page. */
- ' ' . __( '<a href="%1$s">Please update WordPress</a>, and then <a href="%2$s">learn more about updating PHP</a>.' ),
- self_admin_url( 'update-core.php' ),
- esc_url( wp_get_update_php_url() )
- );
- wp_update_php_annotation( '</p><p><em>', '</em>' );
- } elseif ( current_user_can( 'update_core' ) ) {
- printf(
- /* translators: %s: URL to WordPress Updates screen. */
- ' ' . __( '<a href="%s">Please update WordPress</a>.' ),
- self_admin_url( 'update-core.php' )
- );
- } elseif ( current_user_can( 'update_php' ) ) {
- printf(
- /* translators: %s: URL to Update PHP page. */
- ' ' . __( '<a href="%s">Learn more about updating PHP</a>.' ),
- esc_url( wp_get_update_php_url() )
- );
- wp_update_php_annotation( '</p><p><em>', '</em>' );
- }
- ?>
- <# } else if ( ! data.theme.compatibleWP ) { #>
- <?php
- _e( 'This theme does not work with your version of WordPress.' );
- if ( current_user_can( 'update_core' ) ) {
- printf(
- /* translators: %s: URL to WordPress Updates screen. */
- ' ' . __( '<a href="%s">Please update WordPress</a>.' ),
- self_admin_url( 'update-core.php' )
- );
- }
- ?>
- <# } else if ( ! data.theme.compatiblePHP ) { #>
- <?php
- _e( 'This theme does not work with your version of PHP.' );
- if ( current_user_can( 'update_php' ) ) {
- printf(
- /* translators: %s: URL to Update PHP page. */
- ' ' . __( '<a href="%s">Learn more about updating PHP</a>.' ),
- esc_url( wp_get_update_php_url() )
- );
- wp_update_php_annotation( '</p><p><em>', '</em>' );
- }
- ?>
- <# } #>
- </p></div>
- <# } #>
- <# if ( data.theme.active ) { #>
- <div class="theme-id-container">
- <h3 class="theme-name" id="{{ data.section }}-{{ data.theme.id }}-name">
- <span><?php _ex( 'Previewing:', 'theme' ); ?></span> {{ data.theme.name }}
- </h3>
- <div class="theme-actions">
- <button type="button" class="button button-primary customize-theme" aria-label="<?php echo esc_attr( $customize_label ); ?>"><?php _e( 'Customize' ); ?></button>
- </div>
- </div>
- <div class="notice notice-success notice-alt"><p><?php _ex( 'Installed', 'theme' ); ?></p></div>
- <# } else if ( 'installed' === data.theme.type ) { #>
- <# if ( data.theme.blockTheme ) { #>
- <div class="theme-id-container">
- <h3 class="theme-name" id="{{ data.section }}-{{ data.theme.id }}-name">{{ data.theme.name }}</h3>
- <div class="theme-actions">
- <# if ( data.theme.actions.activate ) { #>
- <?php
- /* translators: %s: Theme name. */
- $aria_label = sprintf( _x( 'Activate %s', 'theme' ), '{{ data.name }}' );
- ?>
- <a href="{{{ data.theme.actions.activate }}}" class="button button-primary activate" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Activate' ); ?></a>
- <# } #>
- </div>
- </div>
- <div class="notice notice-error notice-alt"><p>
- <?php
- _e( 'This theme doesn\'t support Customizer.' );
- ?>
- <# if ( data.theme.actions.activate ) { #>
- <?php
- echo ' ';
- printf(
- /* translators: %s: URL to the themes page (also it activates the theme). */
- __( 'However, you can still <a href="%s">activate this theme</a>, and use the Site Editor to customize it.' ),
- '{{{ data.theme.actions.activate }}}'
- );
- ?>
- <# } #>
- </p></div>
- <# } else { #>
- <div class="theme-id-container">
- <h3 class="theme-name" id="{{ data.section }}-{{ data.theme.id }}-name">{{ data.theme.name }}</h3>
- <div class="theme-actions">
- <# if ( data.theme.compatibleWP && data.theme.compatiblePHP ) { #>
- <button type="button" class="button button-primary preview-theme" aria-label="<?php echo esc_attr( $preview_label ); ?>" data-slug="{{ data.theme.id }}"><?php _e( 'Live Preview' ); ?></button>
- <# } else { #>
- <button type="button" class="button button-primary disabled" aria-label="<?php echo esc_attr( $preview_label ); ?>"><?php _e( 'Live Preview' ); ?></button>
- <# } #>
- </div>
- </div>
- <div class="notice notice-success notice-alt"><p><?php _ex( 'Installed', 'theme' ); ?></p></div>
- <# } #>
- <# } else { #>
- <div class="theme-id-container">
- <h3 class="theme-name" id="{{ data.section }}-{{ data.theme.id }}-name">{{ data.theme.name }}</h3>
- <div class="theme-actions">
- <# if ( data.theme.compatibleWP && data.theme.compatiblePHP ) { #>
- <button type="button" class="button button-primary theme-install preview" aria-label="<?php echo esc_attr( $install_label ); ?>" data-slug="{{ data.theme.id }}" data-name="{{ data.theme.name }}"><?php _e( 'Install & Preview' ); ?></button>
- <# } else { #>
- <button type="button" class="button button-primary disabled" aria-label="<?php echo esc_attr( $install_label ); ?>" disabled><?php _e( 'Install & Preview' ); ?></button>
- <# } #>
- </div>
- </div>
- <# } #>
- </div>
- <?php
- }
- }
|