WordPress.org

Make WordPress Core

Ticket #24449: 24449.2.diff

File 24449.2.diff, 6.9 KB (added by nacin, 5 years ago)
  • wp-includes/js/media-editor.js

     
    4545                        props.title = props.title || attachment.title;
    4646
    4747                        link = props.link || defaultProps.link || getUserSetting( 'urlbutton', 'file' );
     48                        if ( props.embed !== 'embed'
     49                                && ( props.type === 'video' || props.type === 'audio' )
     50                                && _.contains( wp.media.view.settings.embedExts, attachment.filename.split('.').pop() ) )
     51                                        link = props.embed;
     52
    4853                        if ( 'file' === link )
    4954                                linkUrl = attachment.url;
    5055                        else if ( 'post' === link )
     
    97102                },
    98103
    99104                audio: function( props, attachment ) {
    100                         var shortcode, html;
     105                        var shortcode, html, extension;
    101106
    102107                        props = wp.media.string.props( props, attachment );
     108                        if ( props.embed !== 'embed' )
     109                                return wp.media.string.link( props );
     110
    103111                        shortcode = {};
    104112
    105                         if ( props.mime ) {
    106                                 switch ( props.mime ) {
    107                                 case 'audio/mpeg':
    108                                         if ( attachment.url.indexOf( 'mp3' ) )
    109                                                 shortcode.mp3 = attachment.url;
    110                                         else if ( attachment.url.indexOf( 'm4a' ) )
    111                                                 shortcode.m4a = attachment.url;
    112                                         break;
    113                                 case 'audio/mp3':
    114                                         shortcode.mp3 = attachment.url;
    115                                         break;
    116                                 case 'audio/m4a':
    117                                         shortcode.m4a = attachment.url;
    118                                         break;
    119                                 case 'audio/wav':
    120                                         shortcode.wav = attachment.url;
    121                                         break;
    122                                 case 'audio/ogg':
    123                                         shortcode.ogg = attachment.url;
    124                                         break;
    125                                 case 'audio/x-ms-wma':
    126                                 case 'audio/wma':
    127                                         shortcode.wma = attachment.url;
    128                                         break;
    129                                 default:
    130                                         // Render unsupported audio files as links.
    131                                         return wp.media.string.link( props );
    132                                 }
     113                        if ( 'video' === attachment.type ) {           
     114                                if ( attachment.width )
     115                                        shortcode.width = attachment.width;
     116
     117                                if ( attachment.height )
     118                                        shortcode.height = attachment.height;   
    133119                        }
    134120
    135                         html = wp.shortcode.string({
    136                                 tag:     'audio',
    137                                 attrs:   shortcode
    138                         });
     121                        extension = attachment.filename.split('.').pop();
    139122
    140                         return html;
    141                 },
    142 
    143                 video: function( props, attachment ) {
    144                         var shortcode, html;
    145 
    146                         props = wp.media.string.props( props, attachment );
    147 
    148                         shortcode = {};
    149 
    150                         if ( attachment.width )
    151                                 shortcode.width = attachment.width;
    152 
    153                         if ( attachment.height )
    154                                 shortcode.height = attachment.height;
    155 
    156                         if ( props.mime ) {
    157                                 switch ( props.mime ) {
    158                                 case 'video/mp4':
    159                                         shortcode.mp4 = attachment.url;
    160                                         break;
    161                                 case 'video/m4v':
    162                                         shortcode.m4v = attachment.url;
    163                                         break;
    164                                 case 'video/webm':
    165                                         shortcode.webm = attachment.url;
    166                                         break;
    167                                 case 'video/ogg':
    168                                         shortcode.ogv = attachment.url;
    169                                         break;
    170                                 case 'video/x-ms-wmv':
    171                                 case 'video/wmv':
    172                                 case 'video/asf':
    173                                         shortcode.wmv = attachment.url;
    174                                         break;
    175                                 case 'video/flv':
    176                                 case 'video/x-flv':
    177                                         shortcode.flv = attachment.url;
    178                                         break;
    179                                 }
     123                        if ( _.contains( wp.media.view.settings.embedExts, extension ) ) {
     124                                shortcode[extension] = attachment.url;
     125                        } else {
     126                                // Render unsupported audio and video files as links.
     127                                return wp.media.string.link( props );
    180128                        }
    181129
    182130                        html = wp.shortcode.string({
    183                                 tag:     'video',
     131                                tag:     'video' === attachment.type ? 'video' : 'audio',
    184132                                attrs:   shortcode
    185133                        });
    186134
     
    187135                        return html;
    188136                },
    189137
     138                video: function( props, attachment ) {
     139                        return wp.media.string.audio( props, attachment );
     140                },
     141
    190142                image: function( props, attachment ) {
    191143                        var img = {},
    192144                                options, classes, shortcode, html;
  • wp-includes/js/media-views.js

     
    441441                        this._defaultDisplaySettings = {
    442442                                align: defaultProps.align || getUserSetting( 'align', 'none' ),
    443443                                size:  defaultProps.size  || getUserSetting( 'imgsize', 'medium' ),
    444                                 link:  defaultProps.link  || getUserSetting( 'urlbutton', 'file' )
     444                                link:  defaultProps.link  || getUserSetting( 'urlbutton', 'file' ),
     445                                embed: 'embed'
    445446                        };
    446447                },
    447448
     
    36523653                        if ( attachment ) {
    36533654                                _.extend( this.options, {
    36543655                                        sizes: attachment.get('sizes'),
    3655                                         type:  attachment.get('type')
     3656                                        type:  attachment.get('type'),
     3657                                        canEmbed: this.canEmbed( attachment )
    36563658                                });
    36573659                        }
    36583660
     
    36613663                        return this;
    36623664                },
    36633665
     3666                canEmbed: function( attachment ) {
     3667                        var type = attachment.get('type');
     3668                        if ( type !== 'audio' && type !== 'video' )
     3669                                return false;
     3670
     3671                        return _.contains( media.view.settings.embedExts, attachment.get('filename').split('.').pop() );
     3672                },
     3673
    36643674                updateLinkTo: function() {
    36653675                        var linkTo = this.model.get('link'),
    36663676                                $input = this.$('.link-to-custom'),
  • wp-includes/media-template.php

     
    279279                        </label>
    280280                <# } #>
    281281
     282                <# if ( data.canEmbed ) { #>
     283                        <label class="setting">
     284                                <span><?php _e('Embed or Link'); ?></span>
     285                                <select class="embed-or-link"
     286                                        data-setting="embed">
     287                                <# if ( 'audio' === data.type ) { #>
     288                                        <option value="embed" selected>
     289                                                <?php esc_attr_e('Embed Audio Player'); ?>
     290                                        </option>
     291                                <# } else { #>
     292                                        <option value="embed" selected>
     293                                                <?php esc_attr_e('Embed as Video Player'); ?>
     294                                        </option>
     295                                <# } #>
     296                                        <option value="file">
     297                                                <?php esc_attr_e('Link to Media File'); ?>
     298                                        </option>
     299                                        <option value="post">
     300                                                <?php esc_attr_e('Link to Attachment Page'); ?>
     301                                        </option>
     302                                </select>
     303                        </label>
     304                <# } else { #>
     305
    282306                <div class="setting">
    283307                        <label>
    284308                                <span><?php _e('Link To'); ?></span>
     
    288312                                                data-user-setting="urlbutton"
    289313                                        <# } #>>
    290314
     315                                <# if ( 'image' === data.type ) { #>
    291316                                        <option value="custom">
    292317                                                <?php esc_attr_e('Custom URL'); ?>
    293318                                        </option>
     319                                <# } #>
    294320                                        <option value="file" selected>
    295321                                                <?php esc_attr_e('Media File'); ?>
    296322                                        </option>
     
    297323                                        <option value="post">
    298324                                                <?php esc_attr_e('Attachment Page'); ?>
    299325                                        </option>
     326                                <# if ( 'image' === data.type ) { #>
    300327                                        <option value="none">
    301328                                                <?php esc_attr_e('None'); ?>
    302329                                        </option>
     330                                <# } #>
    303331                                </select>
    304332                        </label>
    305333                        <input type="text" class="link-to-custom" data-setting="linkUrl" />
    306334                </div>
    307335
     336                <# } #>
     337
    308338                <# if ( 'undefined' !== typeof data.sizes ) { #>
    309339                        <label class="setting">
    310340                                <span><?php _e('Size'); ?></span>
  • wp-includes/media.php

     
    17531753                        'id' => 0,
    17541754                ),
    17551755                'defaultProps' => $props,
     1756                'embedExts'    => array_merge( wp_get_audio_extensions(), wp_get_video_extensions() ),
    17561757        );
    17571758
    17581759        $post = null;