- * @since 3.4.0
- * @uses WP_Customize_Upload_Control::__construct()
- *
- * @param WP_Customize_Manager $manager
- * @param string $id
- * @param array $args
- */
- public function __construct( $manager, $id, $args ) {
- $this->statuses = array( '' => __('No Image') );
-
- parent::__construct( $manager, $id, $args );
-
- $this->add_tab( 'upload-new', __('Upload New'), array( $this, 'tab_upload_new' ) );
- $this->add_tab( 'uploaded', __('Uploaded'), array( $this, 'tab_uploaded' ) );
-
- // Early priority to occur before $this->manager->prepare_controls();
- add_action( 'customize_controls_init', array( $this, 'prepare_control' ), 5 );
- }
-
- /**
- * Prepares the control.
- *
- * If no tabs exist, removes the control from the manager.
- *
- * @since 3.4.2
- */
- public function prepare_control() {
- if ( ! $this->tabs )
- $this->manager->remove_control( $this->id );
- }
-
- /**
- * Refresh the parameters passed to the JavaScript via JSON.
- *
- * @since 3.4.0
- * @uses WP_Customize_Upload_Control::to_json()
- */
- public function to_json() {
- parent::to_json();
- $this->json['statuses'] = $this->statuses;
- }
-
- /**
- * Render the control's content.
- *
- * @since 3.4.0
- */
- public function render_content() {
- $src = $this->value();
- if ( isset( $this->get_url ) )
- $src = call_user_func( $this->get_url, $src );
-
- ?>
- <div class="customize-image-picker">
- <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
-
- <div class="customize-control-content">
- <div class="dropdown preview-thumbnail" tabindex="0">
- <div class="dropdown-content">
- <?php if ( empty( $src ) ): ?>
- <img style="display:none;" />
- <?php else: ?>
- <img src="<?php echo esc_url( set_url_scheme( $src ) ); ?>" />
- <?php endif; ?>
- <div class="dropdown-status"></div>
- </div>
- <div class="dropdown-arrow"></div>
- </div>
- </div>
-
- <div class="library">
- <ul>
- <?php foreach ( $this->tabs as $id => $tab ): ?>
- <li data-customize-tab='<?php echo esc_attr( $id ); ?>' tabindex='0'>
- <?php echo esc_html( $tab['label'] ); ?>
- </li>
- <?php endforeach; ?>
- </ul>
- <?php foreach ( $this->tabs as $id => $tab ): ?>
- <div class="library-content" data-customize-tab='<?php echo esc_attr( $id ); ?>'>
- <?php call_user_func( $tab['callback'] ); ?>
- </div>
- <?php endforeach; ?>
- </div>
-
- <div class="actions">
- <a href="#" class="remove"><?php _e( 'Remove Image' ); ?></a>
- </div>
- </div>
- <?php
- }
-
- /**
- * Add a tab to the control.
- *
- * @since 3.4.0
- *
- * @param string $id
- * @param string $label
- * @param mixed $callback
- */
- public function add_tab( $id, $label, $callback ) {
- $this->tabs[ $id ] = array(
- 'label' => $label,
- 'callback' => $callback,
- );
- }
-
- /**
- * Remove a tab from the control.
- *
- * @since 3.4.0
- *
- * @param string $id
- */
- public function remove_tab( $id ) {
- unset( $this->tabs[ $id ] );
- }
-
- /**
- * @since 3.4.0
- */
- public function tab_upload_new() {
- if ( ! _device_can_upload() ) {
- ?>
- <p><?php _e('The web browser on your device cannot be used to upload files. You may be able to use the <a href="http://wordpress.org/extend/mobile/">native app for your device</a> instead.'); ?></p>
- <?php
- } else {
- ?>
- <div class="upload-dropzone">
- <?php _e('Drop a file here or <a href="#" class="upload">select a file</a>.'); ?>
- </div>
- <div class="upload-fallback">
- <span class="button-secondary"><?php _e('Select File'); ?></span>
- </div>
- <?php
- }
- }
-
- /**
- * @since 3.4.0