WordPress.org

Make WordPress Core

Ticket #22731: 22731.2.diff

File 22731.2.diff, 8.5 KB (added by koopersmith, 5 years ago)
  • wp-includes/js/media-editor.js

     
    320320                };
    321321        }());
    322322
     323        wp.media.featuredImage = {
     324                get: function() {
     325                        return wp.media.view.settings.post.featuredImageId;
     326                },
     327
     328                set: function( id ) {
     329                        var settings = wp.media.view.settings;
     330
     331                        settings.post.featuredImageId = id;
     332
     333                        wp.media.post( 'set-post-thumbnail', {
     334                                json:         true,
     335                                post_id:      settings.post.id,
     336                                thumbnail_id: settings.post.featuredImageId,
     337                                _wpnonce:     settings.post.nonce
     338                        }).done( function( html ) {
     339                                $( '.inside', '#postimagediv' ).html( html );
     340                        });
     341                },
     342
     343                frame: function() {
     344                        if ( this._frame )
     345                                return this._frame;
     346
     347                        this._frame = wp.media({
     348                                state: 'featured-image',
     349                                states: [ new wp.media.controller.FeaturedImage() ]
     350                        });
     351
     352                        this._frame.on( 'toolbar:create:featured-image', function( toolbar ) {
     353                                this.createSelectToolbar( toolbar, {
     354                                        text: wp.media.view.l10n.setFeaturedImage
     355                                });
     356                        }, this._frame );
     357
     358                        this._frame.state('featured-image').on( 'select', this.select );
     359                        return this._frame;
     360                },
     361
     362                select: function() {
     363                        var settings = wp.media.view.settings,
     364                                selection = this.get('selection').single();
     365
     366                        if ( ! settings.post.featuredImageId )
     367                                return;
     368
     369                        wp.media.featuredImage.set( selection ? selection.id : -1 );
     370                },
     371
     372                init: function() {
     373                        // Open the content media manager to the 'featured image' tab when
     374                        // the post thumbnail is clicked.
     375                        $('#postimagediv').on( 'click', '#set-post-thumbnail', function( event ) {
     376                                event.preventDefault();
     377                                // Stop propagation to prevent thickbox from activating.
     378                                event.stopPropagation();
     379
     380                                wp.media.featuredImage.frame().open();
     381
     382                        // Update the featured image id when the 'remove' link is clicked.
     383                        }).on( 'click', '#remove-post-thumbnail', function() {
     384                                wp.media.view.settings.post.featuredImageId = -1;
     385                        });
     386                }
     387        };
     388
     389        $( wp.media.featuredImage.init );
     390
    323391        wp.media.editor = {
    324392                insert: function( h ) {
    325393                        var mce = typeof(tinymce) != 'undefined',
     
    443511                                }
    444512                        }, this );
    445513
    446                         workflow.state('featured-image').on( 'select', function() {
    447                                 var settings = wp.media.view.settings,
    448                                         selection = this.get('selection').single();
    449 
    450                                 if ( ! settings.post.featuredImageId )
    451                                         return;
    452 
    453                                 settings.post.featuredImageId = selection ? selection.id : -1;
    454                                 wp.media.post( 'set-post-thumbnail', {
    455                                         json:         true,
    456                                         post_id:      settings.post.id,
    457                                         thumbnail_id: settings.post.featuredImageId,
    458                                         _wpnonce:     settings.post.nonce
    459                                 }).done( function( html ) {
    460                                         $( '.inside', '#postimagediv' ).html( html );
    461                                 });
    462                         });
    463 
     514                        workflow.state('featured-image').on( 'select', wp.media.featuredImage.select );
    464515                        workflow.setState( workflow.options.state );
    465516                        return workflow;
    466517                },
     
    586637
    587638                                wp.media.editor.open( editor );
    588639                        });
    589 
    590                         // Open the content media manager to the 'featured image' tab when
    591                         // the post thumbnail is clicked.
    592                         $('#postimagediv').on( 'click', '#set-post-thumbnail', function( event ) {
    593                                 event.preventDefault();
    594                                 // Stop propagation to prevent thickbox from activating.
    595                                 event.stopPropagation();
    596 
    597                                 // Always get the 'content' frame, since this is tailored to post.php.
    598                                 var frame = wp.media.editor.add('content'),
    599                                         initialState = frame.state().id,
    600                                         escape;
    601 
    602                                 escape = function() {
    603                                         // Only run this event once.
    604                                         this.off( 'escape', escape );
    605 
    606                                         // If we're still on the 'featured-image' state, restore
    607                                         // the initial state.
    608                                         if ( 'featured-image' === this.state().id )
    609                                                 this.setState( initialState );
    610                                 };
    611 
    612                                 frame.on( 'escape', escape, frame );
    613 
    614                                 frame.setState('featured-image').open();
    615 
    616                         // Update the featured image id when the 'remove' link is clicked.
    617                         }).on( 'click', '#remove-post-thumbnail', function() {
    618                                 wp.media.view.settings.post.featuredImageId = -1;
    619                         });
    620640                }
    621641        };
    622642
  • wp-includes/js/media-views.js

     
    289289                        this.frame.router.render( mode );
    290290
    291291                        view = router.get();
    292                         if ( view.select )
     292                        if ( view && view.select )
    293293                                view.select( this.frame.content.mode() );
    294294                },
    295295
     
    304304                        menu.mode( mode );
    305305
    306306                        view = menu.get();
    307                         if ( view.select )
     307                        if ( view && view.select )
    308308                                view.select( this.id );
    309309                },
    310310
     
    357357                        sidebar:    'settings',
    358358                        content:    'upload',
    359359                        router:     'browse',
     360                        menu:       'default',
    360361                        searchable: true,
    361362                        filterable: false,
    362363                        sortable:   true,
     
    669670                        id:         'featured-image',
    670671                        filterable: 'uploaded',
    671672                        multiple:   false,
    672                         menu:       'main',
    673673                        toolbar:    'featured-image',
    674674                        title:      l10n.featuredImageTitle,
    675675                        priority:   60
     
    707707                },
    708708
    709709                activate: function() {
     710                        this.updateSelection();
     711                        this.frame.on( 'open', this.updateSelection, this );
     712                        media.controller.Library.prototype.activate.apply( this, arguments );
     713                },
     714
     715                deactivate: function() {
     716                        this.frame.off( 'open', this.updateSelection, this );
     717                        media.controller.Library.prototype.deactivate.apply( this, arguments );
     718                },
     719
     720                updateSelection: function() {
    710721                        var selection = this.get('selection'),
    711722                                id = media.view.settings.post.featuredImageId,
    712723                                attachment;
     
    717728                        }
    718729
    719730                        selection.reset( attachment ? [ attachment ] : [] );
    720                         media.controller.Library.prototype.activate.apply( this, arguments );
    721731                }
    722732        });
    723733
     
    728738                defaults: {
    729739                        id:      'embed',
    730740                        url:     '',
    731                         menu:    'main',
     741                        menu:    'default',
    732742                        content: 'embed',
    733743                        toolbar: 'main-embed',
    734744                        type:    'link',
     
    12311241                                model.frame = this;
    12321242                                model.trigger('ready');
    12331243                        }, this );
     1244
     1245                        if ( this.options.states )
     1246                                this.states.add( this.options.states );
    12341247                },
    12351248
    12361249                reset: function() {
     
    12941307                        // Bind default title creation.
    12951308                        this.on( 'title:create:default', this.createTitle, this );
    12961309                        this.title.mode('default');
     1310
     1311                        // Bind default menu.
     1312                        this.on( 'menu:create:default', this.createMenu, this );
    12971313                },
    12981314
    12991315                render: function() {
     
    13501366                                        src:     tabUrl + '&tab=' + id,
    13511367                                        title:   title,
    13521368                                        content: 'iframe',
    1353                                         menu:    'main'
     1369                                        menu:    'default'
    13541370                                }, options ) );
    13551371                        }, this );
    13561372
    13571373                        this.on( 'content:create:iframe', this.iframeContent, this );
    1358                         this.on( 'menu:render:main', this.iframeMenu, this );
     1374                        this.on( 'menu:render:default', this.iframeMenu, this );
    13591375                        this.on( 'open', this.hijackThickbox, this );
    13601376                        this.on( 'close', this.restoreThickbox, this );
    13611377                },
     
    14491465                createStates: function() {
    14501466                        var options = this.options;
    14511467
     1468                        if ( this.options.states )
     1469                                return;
     1470
    14521471                        // Add the default states.
    14531472                        this.states.add([
    14541473                                // Main states.
     
    14561475                                        selection: options.selection,
    14571476                                        library:   media.query( options.library ),
    14581477                                        multiple:  options.multiple,
    1459                                         menu:      'main',
    14601478                                        title:     options.title,
    14611479                                        priority:  20
    14621480                                })
     
    14641482                },
    14651483
    14661484                bindHandlers: function() {
    1467                         this.on( 'menu:create:main', this.createMenu, this );
    14681485                        this.on( 'router:create:browse', this.createRouter, this );
    14691486                        this.on( 'router:render:browse', this.browseRouter, this );
    14701487                        this.on( 'content:create:browse', this.browseContent, this );
     
    15501567                                        id:         'insert',
    15511568                                        title:      l10n.insertMediaTitle,
    15521569                                        priority:   20,
    1553                                         menu:       'main',
    15541570                                        toolbar:    'main-insert',
    15551571                                        filterable: 'all',
    15561572                                        library:    media.query( options.library ),
     
    15691585                                        id:         'gallery',
    15701586                                        title:      l10n.createGalleryTitle,
    15711587                                        priority:   40,
    1572                                         menu:       'main',
    15731588                                        toolbar:    'main-gallery',
    15741589                                        filterable: 'uploaded',
    15751590                                        multiple:   'add',
     
    16091624
    16101625
    16111626                        if ( media.view.settings.post.featuredImageId ) {
    1612                                 this.states.add( new media.controller.FeaturedImage({
    1613                                         controller: this,
    1614                                         menu:       'main'
    1615                                 }) );
     1627                                this.states.add( new media.controller.FeaturedImage() );
    16161628                        }
    16171629                },
    16181630
     
    16261638
    16271639                        var handlers = {
    16281640                                        menu: {
    1629                                                 'main':    'mainMenu',
     1641                                                'default': 'mainMenu',
    16301642                                                'gallery': 'galleryMenu'
    16311643                                        },
    16321644