WordPress.org

Make WordPress Core

Ticket #24449: 24449.2.diff

File 24449.2.diff, 6.9 KB (added by nacin, 4 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;