WordPress.org

Make WordPress Core

Ticket #29215: 29215.diff

File 29215.diff, 9.1 KB (added by celloexpressions, 6 years ago)

Implement WP_Customize_Media_Control.

  • src/wp-admin/css/customize-controls.css

     
    577577        -webkit-overflow-scrolling: touch;
    578578}
    579579
    580 /** Header control **/
     580/** Media controls **/
    581581
     582.customize-control-media .current,
    582583.customize-control-upload .current,
    583584.customize-control-image .current,
    584585.customize-control-background .current,
     
    605606        display: block;
    606607}
    607608
     609.customize-control-media .remove-button,
     610.customize-control-media .default-button,
     611.customize-control-media .upload-button,
    608612.customize-control-upload .remove-button,
    609613.customize-control-upload .default-button,
    610614.customize-control-upload .upload-button,
     
    621625        height: auto;
    622626}
    623627
     628.customize-control-media .current .container,
    624629.customize-control-upload .current .container,
    625630.customize-control-image .current .container,
    626631.customize-control-background .current .container,
     
    632637        border-radius: 2px;
    633638}
    634639
     640.customize-control-media .current .container,
    635641.customize-control-upload .current .container,
    636642.customize-control-background .current .container,
    637643.customize-control-image .current .container {
     
    638644        min-height: 40px;
    639645}
    640646
     647.customize-control-media .placeholder,
    641648.customize-control-upload .placeholder,
    642649.customize-control-image .placeholder,
    643650.customize-control-background .placeholder,
     
    648655        cursor: default;
    649656}
    650657
     658.customize-control-media .inner,
    651659.customize-control-upload .inner,
    652660.customize-control-image .inner,
    653661.customize-control-background .inner,
     
    661669        overflow: hidden;
    662670}
    663671
     672.customize-control-media .inner,
    664673.customize-control-upload .inner,
    665674.customize-control-background .inner,
    666675.customize-control-image .inner {
     
    668677        min-height: 40px;
    669678}
    670679
     680.customize-control-media .inner,
    671681.customize-control-upload .inner,
    672682.customize-control-image .inner,
    673683.customize-control-background .inner,
     
    785795        100% { color: #d4b146; }
    786796}
    787797
     798.customize-control-medua .actions,
    788799.customize-control-upload .actions,
    789800.customize-control-image .actions,
    790801.customize-control-background .actions,
     
    802813        margin-bottom: 0;
    803814}
    804815
     816.customize-control-media img,
    805817.customize-control-upload img,
    806818.customize-control-image img,
    807819.customize-control-background img,
     
    811823        border-radius: 2px;
    812824}
    813825
     826.customize-control-media .remove-button,
     827.customize-control-media .default-button,
    814828.customize-control-upload .remove-button,
    815829.customize-control-upload .default-button,
    816830.customize-control-image .remove-button,
     
    822836        margin-right: 3px;
    823837}
    824838
     839.customize-control-media .upload-button,
    825840.customize-control-upload .upload-button,
    826841.customize-control-image .upload-button,
    827842.customize-control-background .upload-button,
  • src/wp-admin/js/customize-controls.js

     
    10111011        });
    10121012
    10131013        /**
    1014          * An upload control, which utilizes the media modal.
     1014         * A control that implements the media modal.
    10151015         *
    10161016         * @class
    10171017         * @augments wp.customize.Control
    10181018         * @augments wp.customize.Class
    10191019         */
    1020         api.UploadControl = api.Control.extend({
     1020        api.MediaControl = api.Control.extend({
    10211021
    10221022                /**
    10231023                 * When the control's DOM structure is ready,
     
    10881088                        this.params.attachment = attachment;
    10891089
    10901090                        // Set the Customizer setting; the callback takes care of rendering.
    1091                         this.setting( attachment.url );
     1091                        this.setting( attachment.id );
    10921092                },
    10931093
    10941094                /**
     
    11181118                        this.params.attachment = {};
    11191119                        this.setting( '' );
    11201120                        this.renderContent(); // Not bound to setting change when emptying.
     1121                }
     1122        });
     1123
     1124        /**
     1125         * An upload control, which utilizes the media modal.
     1126         *
     1127         * @class
     1128         * @augments wp.customize.MediaControl
     1129         * @augments wp.customize.Control
     1130         * @augments wp.customize.Class
     1131         */
     1132        api.UploadControl = api.MediaControl.extend({
     1133
     1134                /**
     1135                 * Callback handler for when an attachment is selected in the media modal.
     1136                 * Gets the selected image information, and sets it within the control.
     1137                 */
     1138                select: function() {
     1139                        // Get the attachment from the modal frame.
     1140                        var attachment = this.frame.state().get( 'selection' ).first().toJSON();
     1141
     1142                        this.params.attachment = attachment;
     1143
     1144                        // Set the Customizer setting; the callback takes care of rendering.
     1145                        this.setting( attachment.url );
    11211146                },
    11221147
    11231148                // @deprecated
     
    11241149                success: function() {},
    11251150
    11261151                // @deprecated
    1127                 removerVisibility: function() {}
     1152                removerVisibility: function() {}               
    11281153        });
    11291154
     1155
    11301156        /**
    11311157         * A control for uploading images.
    11321158         *
     
    11351161         *
    11361162         * @class
    11371163         * @augments wp.customize.UploadControl
     1164         * @augments wp.customize.MediaControl
    11381165         * @augments wp.customize.Control
    11391166         * @augments wp.customize.Class
    11401167         */
     
    11481175         *
    11491176         * @class
    11501177         * @augments wp.customize.UploadControl
     1178         * @augments wp.customize.MediaControl
    11511179         * @augments wp.customize.Control
    11521180         * @augments wp.customize.Class
    11531181         */
     
    18541882
    18551883        api.controlConstructor = {
    18561884                color:  api.ColorControl,
     1885                media: api.MediaControl,
    18571886                upload: api.UploadControl,
    18581887                image:  api.ImageControl,
    18591888                header: api.HeaderControl,
  • src/wp-includes/class-wp-customize-control.php

     
    632632}
    633633
    634634/**
    635  * Customize Upload Control Class
     635 * Customize Media Control Class
    636636 *
    637637 * @package WordPress
    638638 * @subpackage Customize
    639  * @since 3.4.0
     639 * @since 4.2.0
    640640 */
    641 class WP_Customize_Upload_Control extends WP_Customize_Control {
    642         public $type          = 'upload';
     641class WP_Customize_Media_Control extends WP_Customize_Control {
     642        public $type          = 'media';
    643643        public $mime_type     = '';
    644644        public $button_labels = array();
    645         public $removed = ''; // unused
    646         public $context; // unused
    647         public $extensions = array(); // unused
    648645
    649646        /**
    650647         * Constructor.
     
    692689                if ( is_object( $this->setting ) ) {
    693690                        if ( $this->setting->default ) {
    694691                                // Fake an attachment model - needs all fields used by template.
     692                                // Note that the default value must be a URL, NOT an attachment ID.
    695693                                $type = in_array( substr( $this->setting->default, -3 ), array( 'jpg', 'png', 'gif', 'bmp' ) ) ? 'image' : 'document';
    696694                                $default_attachment = array(
    697695                                        'id' => 1,
     
    714712                                // Set the default as the attachment.
    715713                                $this->json['attachment'] = $this->json['defaultAttachment'];
    716714                        } elseif ( $value ) {
    717                                 // Get the attachment model for the existing file.
    718                                 $attachment_id = attachment_url_to_postid( $value );
    719                                 if ( $attachment_id ) {
    720                                         $this->json['attachment'] = wp_prepare_attachment_for_js( $attachment_id );
    721                                 }
     715                                $this->json['attachment'] = wp_prepare_attachment_for_js( $value );
    722716                        }
    723717                }
    724718        }
     
    726720        /**
    727721         * Don't render any content for this control from PHP.
    728722         *
    729          * @see WP_Customize_Upload_Control::content_template()
     723         * @see WP_Customize_Media_Control::content_template()
    730724         * @since 3.4.0
    731725         */
    732726        public function render_content() {}
    733727
    734728        /**
    735          * Render a JS template for the content of the upload control.
     729         * Render a JS template for the content of the media control.
    736730         *
    737731         * @since 4.1.0
    738732         */
     
    803797}
    804798
    805799/**
     800 * Customize Upload Control Class
     801 *
     802 * @package WordPress
     803 * @subpackage Customize
     804 * @since 3.4.0
     805 */
     806class WP_Customize_Upload_Control extends WP_Customize_Media_Control {
     807        public $type          = 'upload';
     808        public $mime_type     = '';
     809        public $button_labels = array();
     810        public $removed = ''; // unused
     811        public $context; // unused
     812        public $extensions = array(); // unused
     813
     814        /**
     815         * Refresh the parameters passed to the JavaScript via JSON.
     816         *
     817         * @since 3.4.0
     818         * @uses WP_Customize_Control::to_json()
     819         */
     820        public function to_json() {
     821                parent::to_json();
     822
     823                $value = $this->value();
     824                if ( $value ) {
     825                        // Get the attachment model for the existing file.
     826                        $attachment_id = attachment_url_to_postid( $value );
     827                        if ( $attachment_id ) {
     828                                $this->json['attachment'] = wp_prepare_attachment_for_js( $attachment_id );
     829                        }
     830                }
     831        }
     832}
     833
     834/**
    806835 * Customize Image Control Class
    807836 *
    808837 * @package WordPress
  • src/wp-includes/class-wp-customize-manager.php

     
    988988
    989989                /* Control Types (custom control classes) */
    990990                $this->register_control_type( 'WP_Customize_Color_Control' );
     991                $this->register_control_type( 'WP_Customize_Media_Control' );
    991992                $this->register_control_type( 'WP_Customize_Upload_Control' );
    992993                $this->register_control_type( 'WP_Customize_Image_Control' );
    993994                $this->register_control_type( 'WP_Customize_Background_Image_Control' );