323 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			323 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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>
 | |
| 				<?php
 | |
| 				wp_admin_notice(
 | |
| 					_x( 'Installed', 'theme' ),
 | |
| 					array(
 | |
| 						'type'               => 'success',
 | |
| 						'additional_classes' => array( 'notice-alt' ),
 | |
| 					)
 | |
| 				);
 | |
| 				?>
 | |
| 			<# } 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>
 | |
| 					<?php $customizer_not_supported_message = __( 'This theme doesn\'t support Customizer.' ); ?>
 | |
| 					<# if ( data.theme.actions.activate ) { #>
 | |
| 						<?php
 | |
| 							$customizer_not_supported_message .= ' ' . sprintf(
 | |
| 								/* 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 }}}'
 | |
| 							);
 | |
| 						?>
 | |
| 					<# } #>
 | |
| 
 | |
| 					<?php
 | |
| 					wp_admin_notice(
 | |
| 						$customizer_not_supported_message,
 | |
| 						array(
 | |
| 							'type'               => 'error',
 | |
| 							'additional_classes' => array( 'notice-alt' ),
 | |
| 						)
 | |
| 					);
 | |
| 					?>
 | |
| 				<# } 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>
 | |
| 					<?php
 | |
| 					wp_admin_notice(
 | |
| 						_x( 'Installed', 'theme' ),
 | |
| 						array(
 | |
| 							'type'               => 'success',
 | |
| 							'additional_classes' => array( 'notice-alt' ),
 | |
| 						)
 | |
| 					);
 | |
| 					?>
 | |
| 				<# } #>
 | |
| 			<# } 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
 | |
| 	}
 | |
| }
 |