File "class-wp-customize-media-control.php"

Full path: /home/kosmetik/public_html/wp-includes/customize/class-wp-customize-media-control.php
File size: 6.94 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

class WP_Customize_Media_Control extends WP_Customize_Control
{
    public $type = 'media';
    public $mime_type = '';
    public $button_labels = array();
    public function __construct($manager, $id, $args = array())
    {
        parent::__construct($manager, $id, $args);
        $this->button_labels = wp_parse_args($this->button_labels, $this->get_default_button_labels());
    }
    public function enqueue()
    {
        wp_enqueue_media();
    }
    public function to_json()
    {
        parent::to_json();
        $this->json['label'] = html_entity_decode($this->label, ENT_QUOTES, get_bloginfo('charset'));
        $this->json['mime_type'] = $this->mime_type;
        $this->json['button_labels'] = $this->button_labels;
        $this->json['canUpload'] = current_user_can('upload_files');
        $value = $this->value();
        if (is_object($this->setting)) {
            if ($this->setting->default) {
                $ext = substr($this->setting->default, -3);
                $type = in_array($ext, array('jpg', 'png', 'gif', 'bmp'), true) ? 'image' : 'document';
                $default_attachment = array('id' => 1, 'url' => $this->setting->default, 'type' => $type, 'icon' => wp_mime_type_icon($type), 'title' => wp_basename($this->setting->default));
                if ('image' === $type) {
                    $default_attachment['sizes'] = array('full' => array('url' => $this->setting->default));
                }
                $this->json['defaultAttachment'] = $default_attachment;
            }
            if ($value && $this->setting->default && $value === $this->setting->default) {
                $this->json['attachment'] = $this->json['defaultAttachment'];
            } elseif ($value) {
                $this->json['attachment'] = wp_prepare_attachment_for_js($value);
            }
        }
    }
    public function render_content()
    {
    }
    public function content_template()
    {
        ?>
		<#
		var descriptionId = _.uniqueId( 'customize-media-control-description-' );
		var describedByAttr = data.description ? ' aria-describedby="' + descriptionId + '" ' : '';
		#>
		<# if ( data.label ) { #>
			<span class="customize-control-title">{{ data.label }}</span>
		<# } #>
		<div class="customize-control-notifications-container"></div>
		<# if ( data.description ) { #>
			<span id="{{ descriptionId }}" class="description customize-control-description">{{{ data.description }}}</span>
		<# } #>

		<# if ( data.attachment && data.attachment.id ) { #>
			<div class="attachment-media-view attachment-media-view-{{ data.attachment.type }} {{ data.attachment.orientation }}">
				<div class="thumbnail thumbnail-{{ data.attachment.type }}">
					<# if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.medium ) { #>
						<img class="attachment-thumb" src="{{ data.attachment.sizes.medium.url }}" draggable="false" alt="" />
					<# } else if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.full ) { #>
						<img class="attachment-thumb" src="{{ data.attachment.sizes.full.url }}" draggable="false" alt="" />
					<# } else if ( 'audio' === data.attachment.type ) { #>
						<# if ( data.attachment.image && data.attachment.image.src && data.attachment.image.src !== data.attachment.icon ) { #>
							<img src="{{ data.attachment.image.src }}" class="thumbnail" draggable="false" alt="" />
						<# } else { #>
							<img src="{{ data.attachment.icon }}" class="attachment-thumb type-icon" draggable="false" alt="" />
						<# } #>
						<p class="attachment-meta attachment-meta-title">&#8220;{{ data.attachment.title }}&#8221;</p>
						<# if ( data.attachment.album || data.attachment.meta.album ) { #>
						<p class="attachment-meta"><em>{{ data.attachment.album || data.attachment.meta.album }}</em></p>
						<# } #>
						<# if ( data.attachment.artist || data.attachment.meta.artist ) { #>
						<p class="attachment-meta">{{ data.attachment.artist || data.attachment.meta.artist }}</p>
						<# } #>
						<audio style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none">
							<source type="{{ data.attachment.mime }}" src="{{ data.attachment.url }}"/>
						</audio>
					<# } else if ( 'video' === data.attachment.type ) { #>
						<div class="wp-media-wrapper wp-video">
							<video controls="controls" class="wp-video-shortcode" preload="metadata"
								<# if ( data.attachment.image && data.attachment.image.src !== data.attachment.icon ) { #>poster="{{ data.attachment.image.src }}"<# } #>>
								<source type="{{ data.attachment.mime }}" src="{{ data.attachment.url }}"/>
							</video>
						</div>
					<# } else { #>
						<img class="attachment-thumb type-icon icon" src="{{ data.attachment.icon }}" draggable="false" alt="" />
						<p class="attachment-title">{{ data.attachment.title }}</p>
					<# } #>
				</div>
				<div class="actions">
					<# if ( data.canUpload ) { #>
					<button type="button" class="button remove-button">{{ data.button_labels.remove }}</button>
					<button type="button" class="button upload-button control-focus" {{{ describedByAttr }}}>{{ data.button_labels.change }}</button>
					<# } #>
				</div>
			</div>
		<# } else { #>
			<div class="attachment-media-view">
				<# if ( data.canUpload ) { #>
					<button type="button" class="upload-button button-add-media" {{{ describedByAttr }}}>{{ data.button_labels.select }}</button>
				<# } #>
				<div class="actions">
					<# if ( data.defaultAttachment ) { #>
						<button type="button" class="button default-button">{{ data.button_labels['default'] }}</button>
					<# } #>
				</div>
			</div>
		<# } #>
		<?php 
    }
    public function get_default_button_labels()
    {
        $mime_type = !empty($this->mime_type) ? strtok(ltrim($this->mime_type, '/'), '/') : 'default';
        switch ($mime_type) {
            case 'video':
                return array('select' => __('Select video'), 'change' => __('Change video'), 'default' => __('Default'), 'remove' => __('Remove'), 'placeholder' => __('No video selected'), 'frame_title' => __('Select video'), 'frame_button' => __('Choose video'));
            case 'audio':
                return array('select' => __('Select audio'), 'change' => __('Change audio'), 'default' => __('Default'), 'remove' => __('Remove'), 'placeholder' => __('No audio selected'), 'frame_title' => __('Select audio'), 'frame_button' => __('Choose audio'));
            case 'image':
                return array('select' => __('Select image'), 'site_icon' => __('Select site icon'), 'change' => __('Change image'), 'default' => __('Default'), 'remove' => __('Remove'), 'placeholder' => __('No image selected'), 'frame_title' => __('Select image'), 'frame_button' => __('Choose image'));
            default:
                return array('select' => __('Select file'), 'change' => __('Change file'), 'default' => __('Default'), 'remove' => __('Remove'), 'placeholder' => __('No file selected'), 'frame_title' => __('Select file'), 'frame_button' => __('Choose file'));
        }
    }
}