WordPress.org

Make WordPress Core

Ticket #22714: 22714.embed.diff

File 22714.embed.diff, 2.7 KB (added by koopersmith, 5 years ago)
  • wp-includes/js/media-views.js

     
    744744                        this.debouncedScan = _.debounce( _.bind( this.scan, this ), this.sensitivity );
    745745                        this.props = new Backbone.Model({ url: '' });
    746746                        this.props.on( 'change:url', this.debouncedScan, this );
     747                        this.props.on( 'change:url', this.refresh, this );
    747748                        this.on( 'scan', this.scanImage, this );
    748749                },
    749750
     
    774775                        image.src = url;
    775776                },
    776777
     778                refresh: function() {
     779                        this.frame.toolbar.get().refresh();
     780                },
     781
    777782                reset: function() {
    778783                        this.props = new Backbone.Model({ url: '' });
    779784
    780                         if ( this.id === this.frame.state().id )
    781                                 this.frame.toolbar.get().refresh();
     785                        if ( this.active )
     786                                this.refresh();
    782787                }
    783788        });
    784789
     
    22082213                        if ( ! this.options.silent )
    22092214                                this.render();
    22102215
    2211                         selection.on( 'add remove reset', this.refresh, this );
    2212                         library.on( 'add remove reset', this.refresh, this );
     2216                        if ( selection )
     2217                                selection.on( 'add remove reset', this.refresh, this );
     2218                        if ( library )
     2219                                library.on( 'add remove reset', this.refresh, this );
    22132220                },
    22142221
    22152222                dispose: function() {
    2216                         this.selection.off( null, null, this );
    2217                         this.library.off( null, null, this );
     2223                        if ( this.selection )
     2224                                this.selection.off( null, null, this );
     2225                        if ( this.library )
     2226                                this.library.off( null, null, this );
    22182227                        return media.View.prototype.dispose.apply( this, arguments );
    22192228                },
    22202229
     
    22782287                                var requires = button.options.requires,
    22792288                                        disabled = false;
    22802289
    2281                                 if ( requires.selection && ! selection.length )
     2290                                if ( requires.selection && selection && ! selection.length )
    22822291                                        disabled = true;
    2283                                 else if ( requires.library && ! library.length )
     2292                                else if ( requires.library && library && ! library.length )
    22842293                                        disabled = true;
    22852294
    22862295                                button.model.set( 'disabled', disabled );
     
    23472356        media.view.Toolbar.Embed = media.view.Toolbar.Select.extend({
    23482357                initialize: function() {
    23492358                        _.defaults( this.options, {
    2350                                 text: l10n.insertIntoPost
     2359                                text: l10n.insertIntoPost,
     2360                                requires: false
    23512361                        });
    23522362
    23532363                        media.view.Toolbar.Select.prototype.initialize.apply( this, arguments );
    2354                         this.controller.state().props.on( 'change:url', this.refresh, this );
    23552364                },
    23562365
    2357                 dispose: function() {
    2358                         this.controller.state().props.off( 'change:url', this.refresh, this );
    2359                         media.view.Toolbar.Select.prototype.dispose.apply( this, arguments );
    2360                 },
    2361 
    23622366                refresh: function() {
    23632367                        var url = this.controller.state().props.get('url');
    23642368                        this.get('select').model.set( 'disabled', ! url || /^https?:\/\/$/.test(url) );