WordPress.org

Make WordPress Core

Ticket #24449: 24449.3.diff

File 24449.3.diff, 7.0 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 ( 'file' === link )
     48                        if ( 'file' === link || 'embed' === link )
    4949                                linkUrl = attachment.url;
    5050                        else if ( 'post' === link )
    5151                                linkUrl = attachment.link;
     
    9797                },
    9898
    9999                audio: function( props, attachment ) {
    100                         var shortcode, html;
    101 
    102                         props = wp.media.string.props( props, attachment );
    103                         shortcode = {};
    104 
    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                                 }
    133                         }
    134 
    135                         html = wp.shortcode.string({
    136                                 tag:     'audio',
    137                                 attrs:   shortcode
    138                         });
    139 
    140                         return html;
     100                        return wp.media.string._audioVideo( 'audio', props, attachment );
    141101                },
    142102
    143103                video: function( props, attachment ) {
    144                         var shortcode, html;
     104                        return wp.media.string._audioVideo( 'video', props, attachment );
     105                },
    145106
     107                _audioVideo: function( type, props, attachment ) {
     108                        var shortcode, html, extension;
     109
    146110                        props = wp.media.string.props( props, attachment );
     111                        if ( props.link !== 'embed' )
     112                                return wp.media.string.link( props );
    147113
    148114                        shortcode = {};
    149115
    150                         if ( attachment.width )
    151                                 shortcode.width = attachment.width;
     116                        if ( 'video' === type ) {
     117                                if ( attachment.width )
     118                                        shortcode.width = attachment.width;
    152119
    153                         if ( attachment.height )
    154                                 shortcode.height = attachment.height;
     120                                if ( attachment.height )
     121                                        shortcode.height = attachment.height;
     122                        }
    155123
    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                                 }
     124                        extension = attachment.filename.split('.').pop();
     125
     126                        if ( _.contains( wp.media.view.settings.embedExts, extension ) ) {
     127                                shortcode[extension] = attachment.url;
     128                        } else {
     129                                // Render unsupported audio and video files as links.
     130                                return wp.media.string.link( props );
    180131                        }
    181132
    182133                        html = wp.shortcode.string({
    183                                 tag:     'video',
     134                                tag:     type,
    184135                                attrs:   shortcode
    185136                        });
    186137
  • wp-includes/js/media-views.js

     
    449449                        var displays = this._displays;
    450450
    451451                        if ( ! displays[ attachment.cid ] )
    452                                 displays[ attachment.cid ] = new Backbone.Model( this._defaultDisplaySettings );
     452                                displays[ attachment.cid ] = new Backbone.Model( this.defaultDisplaySettings( attachment ) );
    453453
    454454                        return displays[ attachment.cid ];
    455455                },
    456456
     457                defaultDisplaySettings: function( attachment ) {
     458                        settings = this._defaultDisplaySettings;
     459                        if ( settings.canEmbed = this.canEmbed( attachment ) )
     460                                settings.link = 'embed';
     461                        return settings;
     462                },
     463
     464                canEmbed: function( attachment ) {
     465                        var type = attachment.get('type');
     466                        if ( type !== 'audio' && type !== 'video' )
     467                                return false;
     468
     469                        return _.contains( media.view.settings.embedExts, attachment.get('filename').split('.').pop() );
     470                },
     471
    457472                syncSelection: function() {
    458473                        var selection = this.get('selection'),
    459474                                manager = this.frame._selection;
     
    36663681                                $input = this.$('.link-to-custom'),
    36673682                                attachment = this.options.attachment;
    36683683
    3669                         if ( 'none' === linkTo || ( ! attachment && 'custom' !== linkTo ) ) {
     3684                        if ( 'none' === linkTo || 'embed' === linkTo || ( ! attachment && 'custom' !== linkTo ) ) {
    36703685                                $input.hide();
    36713686                                return;
    36723687                        }
  • wp-includes/media-template.php

     
    281281
    282282                <div class="setting">
    283283                        <label>
    284                                 <span><?php _e('Link To'); ?></span>
     284                                <# if ( data.model.canEmbed ) { #>
     285                                        <span><?php _e('Embed or Link'); ?></span>
     286                                <# } else { #>
     287                                        <span><?php _e('Link To'); ?></span>
     288                                <# } #>
     289
    285290                                <select class="link-to"
    286291                                        data-setting="link"
    287                                         <# if ( data.userSettings ) { #>
     292                                        <# if ( data.userSettings && ! data.model.canEmbed ) { #>
    288293                                                data-user-setting="urlbutton"
    289294                                        <# } #>>
    290295
    291                                         <option value="custom">
    292                                                 <?php esc_attr_e('Custom URL'); ?>
     296                                <# if ( data.model.canEmbed && 'audio' === data.type ) { #>
     297                                        <option value="embed" selected>
     298                                                <?php esc_attr_e('Embed Audio Player'); ?>
    293299                                        </option>
     300                                        <option value="file">
     301                                <# } else if ( data.model.canEmbed && 'video' === data.type ) { #>
     302                                        <option value="embed" selected>
     303                                                <?php esc_attr_e('Embed Video Player'); ?>
     304                                        </option>
     305                                        <option value="file">
     306                                <# } else { #>
    294307                                        <option value="file" selected>
     308                                <# } #>
     309                                        <# if ( data.model.canEmbed ) { #>
     310                                                <?php esc_attr_e('Link to Media File'); ?>
     311                                        <# } else { #>
    295312                                                <?php esc_attr_e('Media File'); ?>
     313                                        <# } #>
    296314                                        </option>
    297315                                        <option value="post">
     316                                        <# if ( data.model.canEmbed ) { #>
     317                                                <?php esc_attr_e('Link to Attachment Page'); ?>
     318                                        <# } else { #>
    298319                                                <?php esc_attr_e('Attachment Page'); ?>
     320                                        <# } #>
    299321                                        </option>
     322                                <# if ( 'image' === data.type ) { #>
     323                                        <option value="custom">
     324                                                <?php esc_attr_e('Custom URL'); ?>
     325                                        </option>
    300326                                        <option value="none">
    301327                                                <?php esc_attr_e('None'); ?>
    302328                                        </option>
     329                                <# } #>
    303330                                </select>
    304331                        </label>
    305332                        <input type="text" class="link-to-custom" data-setting="linkUrl" />
  • 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;