WordPress.org

Make WordPress Core

Ticket #40771: 40771-1.diff

File 40771-1.diff, 4.5 KB (added by timmydcrawford, 2 years ago)
  • src/wp-admin/js/widgets/media-video-widget.js

     
    9898                 */
    9999                fetchEmbed: function fetchEmbed() {
    100100                        var control = this, url;
    101                         url = control.model.get( 'url' );
     101                        url = control.model.get( 'url' ).trim();
    102102
    103103                        // If we already have a local cache of the embed response, return.
    104104                        if ( control.oembedResponses[ url ] ) {
     
    113113                        control.fetchEmbedDfd = jQuery.ajax({
    114114                                url: wp.media.view.settings.oEmbedProxyUrl,
    115115                                data: {
    116                                         url: control.model.get( 'url' ),
     116                                        url: url,
    117117                                        maxwidth: control.model.get( 'width' ),
    118118                                        maxheight: control.model.get( 'height' ),
    119119                                        _wpnonce: wp.media.view.settings.nonce.wpRestApi,
     
    142142                renderPreview: function renderPreview() {
    143143                        var control = this, previewContainer, previewTemplate, attachmentId, attachmentUrl, poster, isHostedEmbed = false, parsedUrl, mime, error;
    144144                        attachmentId = control.model.get( 'attachment_id' );
    145                         attachmentUrl = control.model.get( 'url' );
     145                        attachmentUrl = control.model.get( 'url' ).trim();
    146146                        error = control.model.get( 'error' );
    147147
    148148                        if ( ! attachmentId && ! attachmentUrl ) {
  • src/wp-admin/js/widgets/media-widgets.js

     
    142142                                        /**
    143143                                         * Fetch media.
    144144                                         *
    145                                          * This is a TEMPORARY measure until the WP API supports an oEmbed proxy endpoint. See #40450.
    146                                          *
    147                                          * @see https://core.trac.wordpress.org/ticket/40450
    148145                                         * @returns {void}
    149146                                         */
    150147                                        fetch: function() {
    151                                                 var embedLinkView = this, fetchSuccess, matches, fileExt, urlParser; // eslint-disable-line consistent-this
     148                                                var embedLinkView = this, fetchSuccess, matches, fileExt, urlParser, url; // eslint-disable-line consistent-this
     149                                                url = embedLinkView.model.get( 'url' ).trim();
    152150
    153151                                                if ( embedLinkView.dfd && 'pending' === embedLinkView.dfd.state() ) {
    154152                                                        embedLinkView.dfd.abort();
     
    167165                                                };
    168166
    169167                                                urlParser = document.createElement( 'a' );
    170                                                 urlParser.href = embedLinkView.model.get( 'url' );
     168                                                urlParser.href = url;
    171169                                                matches = urlParser.pathname.toLowerCase().match( /\.(\w+)$/ );
    172170                                                if ( matches ) {
    173171                                                        fileExt = matches[1];
     
    184182                                                embedLinkView.dfd = $.ajax({
    185183                                                        url: wp.media.view.settings.oEmbedProxyUrl,
    186184                                                        data: {
    187                                                                 url: embedLinkView.model.get( 'url' ),
     185                                                                url: url,
    188186                                                                maxwidth: embedLinkView.model.get( 'width' ),
    189187                                                                maxheight: embedLinkView.model.get( 'height' ),
    190188                                                                _wpnonce: wp.media.view.settings.nonce.wpRestApi,
     
    779777                                mediaFramePropToModelPropMap[ fieldSchema.media_prop || modelProp ] = modelProp;
    780778                        });
    781779
     780                        // Trim whitespace from url since it causes problems with oembeds.
     781                        if ( mediaFrameProps.url ) {
     782                                mediaFrameProps.url = mediaFrameProps.url.trim();
     783                        }
     784
    782785                        _.each( mediaFrameProps, function( value, mediaProp ) {
    783786                                var propName = mediaFramePropToModelPropMap[ mediaProp ] || mediaProp;
    784787                                if ( control.model.schema[ propName ] ) {
  • tests/qunit/wp-admin/js/widgets/test-media-video-widget.js

     
    2828                equal( mappedProps.preload, 'meta', 'mapModelToMediaFrameProps should set preload' );
    2929
    3030                // Test mapMediaToModelProps().
    31                 mappedProps = videoWidgetControlInstance.mapMediaToModelProps( { loop: false, preload: 'meta', url: testVideoUrl, title: 'random movie file title' } );
     31                mappedProps = videoWidgetControlInstance.mapMediaToModelProps( { loop: false, preload: 'meta', url: testVideoUrl + ' ', title: 'random movie file title' } );
    3232                equal( mappedProps.title, undefined, 'mapMediaToModelProps should ignore title inputs' );
    3333                equal( mappedProps.loop, false, 'mapMediaToModelProps should set loop' );
    3434                equal( mappedProps.preload, 'meta', 'mapMediaToModelProps should set preload' );
     35                equal( mappedProps.url, testVideoUrl, 'mapMediaToModelProps should trim whitespace from urls' );
    3536        });
    3637
    3738        test( 'video widget control renderPreview', function( assert ) {