Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
33.33% |
2 / 6 |
CRAP | |
42.31% |
22 / 52 |
| WP_Customize_Header_Image_Control | |
0.00% |
0 / 1 |
|
33.33% |
2 / 6 |
45.45 | |
42.31% |
22 / 52 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
10 / 10 |
|||
| enqueue | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 18 |
|||
| prepare_control | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
| print_header_image_template | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| get_current_image_src | |
0.00% |
0 / 1 |
2.26 | |
60.00% |
3 / 5 |
|||
| render_content | |
0.00% |
0 / 1 |
6.73 | |
72.73% |
8 / 11 |
|||
| <?php | |
| /** | |
| * Customize API: WP_Customize_Header_Image_Control class | |
| * | |
| * @package WordPress | |
| * @subpackage Customize | |
| * @since 4.4.0 | |
| */ | |
| /** | |
| * Customize Header Image Control class. | |
| * | |
| * @since 3.4.0 | |
| * | |
| * @see WP_Customize_Image_Control | |
| */ | |
| class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control { | |
| public $type = 'header'; | |
| public $uploaded_headers; | |
| public $default_headers; | |
| /** | |
| * Constructor. | |
| * | |
| * @since 3.4.0 | |
| * | |
| * @param WP_Customize_Manager $manager Customizer bootstrap instance. | |
| */ | |
| public function __construct( $manager ) { | |
| parent::__construct( $manager, 'header_image', array( | |
| 'label' => __( 'Header Image' ), | |
| 'settings' => array( | |
| 'default' => 'header_image', | |
| 'data' => 'header_image_data', | |
| ), | |
| 'section' => 'header_image', | |
| 'removed' => 'remove-header', | |
| 'get_url' => 'get_header_image', | |
| ) ); | |
| } | |
| /** | |
| * @access public | |
| */ | |
| public function enqueue() { | |
| wp_enqueue_media(); | |
| wp_enqueue_script( 'customize-views' ); | |
| $this->prepare_control(); | |
| wp_localize_script( 'customize-views', '_wpCustomizeHeader', array( | |
| 'data' => array( | |
| 'width' => absint( get_theme_support( 'custom-header', 'width' ) ), | |
| 'height' => absint( get_theme_support( 'custom-header', 'height' ) ), | |
| 'flex-width' => absint( get_theme_support( 'custom-header', 'flex-width' ) ), | |
| 'flex-height' => absint( get_theme_support( 'custom-header', 'flex-height' ) ), | |
| 'currentImgSrc' => $this->get_current_image_src(), | |
| ), | |
| 'nonces' => array( | |
| 'add' => wp_create_nonce( 'header-add' ), | |
| 'remove' => wp_create_nonce( 'header-remove' ), | |
| ), | |
| 'uploads' => $this->uploaded_headers, | |
| 'defaults' => $this->default_headers | |
| ) ); | |
| parent::enqueue(); | |
| } | |
| /** | |
| * | |
| * @global Custom_Image_Header $custom_image_header | |
| */ | |
| public function prepare_control() { | |
| global $custom_image_header; | |
| if ( empty( $custom_image_header ) ) { | |
| return; | |
| } | |
| // Process default headers and uploaded headers. | |
| $custom_image_header->process_default_headers(); | |
| $this->default_headers = $custom_image_header->get_default_header_images(); | |
| $this->uploaded_headers = $custom_image_header->get_uploaded_header_images(); | |
| } | |
| /** | |
| * @access public | |
| */ | |
| public function print_header_image_template() { | |
| ?> | |
| <script type="text/template" id="tmpl-header-choice"> | |
| <# if (data.random) { #> | |
| <button type="button" class="button display-options random"> | |
| <span class="dashicons dashicons-randomize dice"></span> | |
| <# if ( data.type === 'uploaded' ) { #> | |
| <?php _e( 'Randomize uploaded headers' ); ?> | |
| <# } else if ( data.type === 'default' ) { #> | |
| <?php _e( 'Randomize suggested headers' ); ?> | |
| <# } #> | |
| </button> | |
| <# } else { #> | |
| <# if (data.type === 'uploaded') { #> | |
| <button type="button" class="dashicons dashicons-no close"><span class="screen-reader-text"><?php _e( 'Remove image' ); ?></span></button> | |
| <# } #> | |
| <button type="button" class="choice thumbnail" | |
| data-customize-image-value="{{{data.header.url}}}" | |
| data-customize-header-image-data="{{JSON.stringify(data.header)}}"> | |
| <span class="screen-reader-text"><?php _e( 'Set image' ); ?></span> | |
| <img src="{{{data.header.thumbnail_url}}}" alt="{{{data.header.alt_text || data.header.description}}}"> | |
| </button> | |
| <# } #> | |
| </script> | |
| <script type="text/template" id="tmpl-header-current"> | |
| <# if (data.choice) { #> | |
| <# if (data.random) { #> | |
| <div class="placeholder"> | |
| <div class="inner"> | |
| <span><span class="dashicons dashicons-randomize dice"></span> | |
| <# if ( data.type === 'uploaded' ) { #> | |
| <?php _e( 'Randomizing uploaded headers' ); ?> | |
| <# } else if ( data.type === 'default' ) { #> | |
| <?php _e( 'Randomizing suggested headers' ); ?> | |
| <# } #> | |
| </span> | |
| </div> | |
| </div> | |
| <# } else { #> | |
| <img src="{{{data.header.thumbnail_url}}}" alt="{{{data.header.alt_text || data.header.description}}}" tabindex="0"/> | |
| <# } #> | |
| <# } else { #> | |
| <div class="placeholder"> | |
| <div class="inner"> | |
| <span> | |
| <?php _e( 'No image set' ); ?> | |
| </span> | |
| </div> | |
| </div> | |
| <# } #> | |
| </script> | |
| <?php | |
| } | |
| /** | |
| * @return string|void | |
| */ | |
| public function get_current_image_src() { | |
| $src = $this->value(); | |
| if ( isset( $this->get_url ) ) { | |
| $src = call_user_func( $this->get_url, $src ); | |
| return $src; | |
| } | |
| } | |
| /** | |
| * @access public | |
| */ | |
| public function render_content() { | |
| $this->print_header_image_template(); | |
| $visibility = $this->get_current_image_src() ? '' : ' style="display:none" '; | |
| $width = absint( get_theme_support( 'custom-header', 'width' ) ); | |
| $height = absint( get_theme_support( 'custom-header', 'height' ) ); | |
| ?> | |
| <div class="customize-control-content"> | |
| <p class="customizer-section-intro"> | |
| <?php | |
| if ( $width && $height ) { | |
| printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header size of <strong>%s × %s</strong> pixels.' ), $width, $height ); | |
| } elseif ( $width ) { | |
| printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header width of <strong>%s</strong> pixels.' ), $width ); | |
| } else { | |
| printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header height of <strong>%s</strong> pixels.' ), $height ); | |
| } | |
| ?> | |
| </p> | |
| <div class="current"> | |
| <label for="header_image-button"> | |
| <span class="customize-control-title"> | |
| <?php _e( 'Current header' ); ?> | |
| </span> | |
| </label> | |
| <div class="container"> | |
| </div> | |
| </div> | |
| <div class="actions"> | |
| <?php if ( current_user_can( 'upload_files' ) ): ?> | |
| <button type="button"<?php echo $visibility; ?> class="button remove" aria-label="<?php esc_attr_e( 'Hide header image' ); ?>"><?php _e( 'Hide image' ); ?></button> | |
| <button type="button" class="button new" id="header_image-button" aria-label="<?php esc_attr_e( 'Add new header image' ); ?>"><?php _e( 'Add new image' ); ?></button> | |
| <div style="clear:both"></div> | |
| <?php endif; ?> | |
| </div> | |
| <div class="choices"> | |
| <span class="customize-control-title header-previously-uploaded"> | |
| <?php _ex( 'Previously uploaded', 'custom headers' ); ?> | |
| </span> | |
| <div class="uploaded"> | |
| <div class="list"> | |
| </div> | |
| </div> | |
| <span class="customize-control-title header-default"> | |
| <?php _ex( 'Suggested', 'custom headers' ); ?> | |
| </span> | |
| <div class="default"> | |
| <div class="list"> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <?php | |
| } | |
| } |