Make WordPress Core

Ticket #41052: 41052.4.diff

File 41052.4.diff, 2.9 KB (added by westonruter, 7 years ago)
  • src/wp-admin/js/widgets/media-widgets.js

    diff --git src/wp-admin/js/widgets/media-widgets.js src/wp-admin/js/widgets/media-widgets.js
    index ad21e37a7e..efcbc2a26c 100644
    wp.mediaWidgets = ( function( $ ) { 
    8484         */
    8585        component.MediaEmbedView = wp.media.view.Embed.extend({
    8686
     87                /**
     88                 * Initialize.
     89                 *
     90                 * @param {object} options - Options.
     91                 * @returns {void}
     92                 */
     93                initialize: function( options ) {
     94                        var embedController;
     95                        wp.media.view.Embed.prototype.initialize.call( this, options );
     96                        if ( 'image' !== this.controller.options.mimeType ) {
     97                                embedController = this.controller.states.get( 'embed' );
     98                                embedController.off( 'scan', embedController.scanImage, embedController );
     99                        }
     100                },
     101
    87102                /**
    88103                 * Refresh embed view.
    89104                 *
    wp.mediaWidgets = ( function( $ ) { 
    139154                                                }
    140155                                        },
    141156
     157                                        /**
     158                                         * Update oEmbed.
     159                                         *
     160                                         * @returns {void}
     161                                         */
     162                                        updateoEmbed: function() {
     163                                                var embedLinkView = this, url; // eslint-disable-line consistent-this
     164
     165                                                url = embedLinkView.model.get( 'url' );
     166
     167                                                // Abort if the URL field was emptied out.
     168                                                if ( ! url ) {
     169                                                        embedLinkView.setErrorNotice( '' );
     170                                                        embedLinkView.setAddToWidgetButtonDisabled( true );
     171                                                        return;
     172                                                }
     173
     174                                                if ( ! url.match( /^(http|https):\/\/.+\// ) ) {
     175                                                        $( '#embed-url-field' ).addClass( 'invalid' );
     176                                                        embedLinkView.setAddToWidgetButtonDisabled( true );
     177                                                }
     178
     179                                                wp.media.view.EmbedLink.prototype.updateoEmbed.call( embedLinkView );
     180                                        },
     181
    142182                                        /**
    143183                                         * Fetch media.
    144184                                         *
    wp.mediaWidgets = ( function( $ ) { 
    146186                                         */
    147187                                        fetch: function() {
    148188                                                var embedLinkView = this, fetchSuccess, matches, fileExt, urlParser, url, re, youTubeEmbedMatch; // eslint-disable-line consistent-this
     189                                                url = embedLinkView.model.get( 'url' );
    149190
    150191                                                if ( embedLinkView.dfd && 'pending' === embedLinkView.dfd.state() ) {
    151192                                                        embedLinkView.dfd.abort();
    152193                                                }
    153194
    154                                                 // Abort if the URL field was emptied out.
    155                                                 if ( ! embedLinkView.model.get( 'url' ) ) {
    156                                                         embedLinkView.setErrorNotice( '' );
    157                                                         return;
    158                                                 }
    159 
    160195                                                fetchSuccess = function( response ) {
    161196                                                        embedLinkView.renderoEmbed({
    162197                                                                data: {
    wp.mediaWidgets = ( function( $ ) { 
    170205                                                };
    171206
    172207                                                urlParser = document.createElement( 'a' );
    173                                                 urlParser.href = embedLinkView.model.get( 'url' );
     208                                                urlParser.href = url;
    174209                                                matches = urlParser.pathname.toLowerCase().match( /\.(\w+)$/ );
    175210                                                if ( matches ) {
    176211                                                        fileExt = matches[1];
    wp.mediaWidgets = ( function( $ ) { 
    185220                                                }
    186221
    187222                                                // Support YouTube embed links.
    188                                                 url = embedLinkView.model.get( 'url' );
    189223                                                re = /https?:\/\/www\.youtube\.com\/embed\/([^/]+)/;
    190224                                                youTubeEmbedMatch = re.exec( url );
    191225                                                if ( youTubeEmbedMatch ) {