WordPress.org

Make WordPress Core

Ticket #22654: 22654.2.diff

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

     
    205205                                        args.post__not_in = attrs.exclude.split(',');
    206206
    207207                                if ( ! args.post__in )
    208                                         args.parent = attrs.id;
     208                                        args.uploadedTo = attrs.id;
    209209
    210210                                // Collect the attributes that were not included in `args`.
    211211                                others = _.omit( attrs, 'id', 'ids', 'include', 'exclude', 'orderby', 'order' );
     
    228228                                // the collection will already reflect those properties.
    229229                                attrs.ids = attachments.pluck('id');
    230230
    231                                 // Copy the `parent` post ID.
    232                                 if ( props.parent )
    233                                         attrs.id = props.parent;
     231                                // Copy the `uploadedTo` post ID.
     232                                if ( props.uploadedTo )
     233                                        attrs.id = props.uploadedTo;
    234234
    235235                                // If the `ids` attribute is set and `orderby` attribute
    236236                                // is the default value, clear it for cleaner output.
  • wp-includes/js/media-models.js

     
    316316                        this.filters = options.filters || {};
    317317
    318318                        // Bind default `change` events to the `props` model.
     319                        this.props.on( 'change', this._changeFilteredProps, this );
     320
    319321                        this.props.on( 'change:order',   this._changeOrder,   this );
    320322                        this.props.on( 'change:orderby', this._changeOrderby, this );
    321323                        this.props.on( 'change:query',   this._changeQuery,   this );
    322                         this.props.on( 'change:search',  this._changeSearch,  this );
    323                         this.props.on( 'change:type',    this._changeType,    this );
    324324
    325325                        // Set the `props` model and fill the default property values.
    326326                        this.props.set( _.defaults( options.props || {} ) );
     
    359359                        }
    360360                },
    361361
    362                 _changeFilteredProp: function( prop, model, term ) {
     362                _changeFilteredProps: function( model, options ) {
    363363                        // If this is a query, updating the collection will be handled by
    364364                        // `this._requery()`.
    365365                        if ( this.props.get('query') )
    366366                                return;
    367367
    368                         if ( term && ! this.filters[ prop ] )
    369                                 this.filters[ prop ] = Attachments.filters[ prop ];
    370                         else if ( ! term && this.filters[ prop ] === Attachments.filters[ prop ] )
    371                                 delete this.filters[ prop ];
     368                        var changed = _.chain( options.changes ).map( function( t, prop ) {
     369                                var filter = Attachments.filters[ prop ],
     370                                        term = model.get( prop );
    372371
     372                                if ( ! filter )
     373                                        return;
     374
     375                                if ( term && ! this.filters[ prop ] )
     376                                        this.filters[ prop ] = filter;
     377                                else if ( ! term && this.filters[ prop ] === filter )
     378                                        delete this.filters[ prop ];
     379                                else
     380                                        return;
     381
     382                                // Record the change.
     383                                return true;
     384                        }, this ).any().value();
     385
     386                        if ( ! changed )
     387                                return;
     388
    373389                        // If no `Attachments` model is provided to source the searches
    374390                        // from, then automatically generate a source from the existing
    375391                        // models.
     
    379395                        this.reset( this._source.filter( this.validator, this ) );
    380396                },
    381397
    382                 _changeSearch: function( model, term ) {
    383                         return this._changeFilteredProp( 'search', model, term );
    384                 },
    385 
    386                 _changeType: function( model, term ) {
    387                         return this._changeFilteredProp( 'type', model, term );
    388                 },
    389 
    390398                validator: function( attachment ) {
    391399                        return _.all( this.filters, function( filter, key ) {
    392400                                return !! filter.call( this, attachment );
     
    531539
    532540                        type: function( attachment ) {
    533541                                var type = this.props.get('type');
    534                                 if ( ! type )
     542                                return ! type || -1 !== type.indexOf( attachment.get('type') );
     543                        },
     544
     545                        uploadedTo: function( attachment ) {
     546                                var uploadedTo = this.props.get('uploadedTo');
     547                                if ( _.isUndefined( uploadedTo ) )
    535548                                        return true;
    536549
    537                                 return -1 !== type.indexOf( attachment.get('type') );
     550                                return uploadedTo === attachment.get('uploadedTo');
    538551                        }
    539552                }
    540553        });
     
    597610                        // Only observe when a limited number of query args are set. There
    598611                        // are no filters for other properties, so observing will result in
    599612                        // false positives in those queries.
    600                         allowed = [ 's', 'order', 'orderby', 'posts_per_page', 'post_mime_type' ];
     613                        allowed = [ 's', 'order', 'orderby', 'posts_per_page', 'post_mime_type', 'post_parent' ];
    601614                        if ( wp.Uploader && _( this.args ).chain().keys().difference( allowed ).isEmpty().value() )
    602615                                this.observe( wp.Uploader.queue );
    603616                },
     
    670683                propmap: {
    671684                        'search':    's',
    672685                        'type':      'post_mime_type',
    673                         'parent':    'post_parent',
    674686                        'perPage':   'posts_per_page',
    675                         'menuOrder': 'menu_order'
     687                        'menuOrder': 'menu_order',
     688                        'uploadedTo': 'post_parent'
    676689                },
    677690
    678691                // Caches query objects so queries can be easily reused.
  • wp-includes/js/media-views.js

     
    29202920                        all: {
    29212921                                text:  l10n.allMediaItems,
    29222922                                props: {
    2923                                         parent: null,
     2923                                        uploadedTo: null,
    29242924                                        orderby: 'date',
    29252925                                        order:   'DESC'
    29262926                                },
     
    29302930                        uploaded: {
    29312931                                text:  l10n.uploadedToThisPost,
    29322932                                props: {
    2933                                         parent: media.view.settings.postId,
     2933                                        uploadedTo: media.view.settings.postId,
    29342934                                        orderby: 'menuOrder',
    29352935                                        order:   'ASC'
    29362936                                },
     
    29482948                                        text: text,
    29492949                                        props: {
    29502950                                                type:    key,
    2951                                                 parent: null,
     2951                                                uploadedTo: null,
    29522952                                                orderby: 'date',
    29532953                                                order:   'DESC'
    29542954                                        }
     
    29592959                                text:  l10n.allMediaItems,
    29602960                                props: {
    29612961                                        type:    null,
    2962                                         parent: null,
     2962                                        uploadedTo: null,
    29632963                                        orderby: 'date',
    29642964                                        order:   'DESC'
    29652965                                },
     
    29702970                                text:  l10n.uploadedToThisPost,
    29712971                                props: {
    29722972                                        type:    null,
    2973                                         parent: media.view.settings.postId,
     2973                                        uploadedTo: media.view.settings.postId,
    29742974                                        orderby: 'menuOrder',
    29752975                                        order:   'ASC'
    29762976                                },
  • wp-includes/js/plupload/wp-plupload.js

     
    155155                                        file:      file,
    156156                                        uploading: true,
    157157                                        date:      new Date(),
    158                                         filename:  file.name
     158                                        filename:  file.name,
     159                                        menuOrder: 0,
     160                                        uploadedTo: media.model.settings.postId
    159161                                }, _.pick( file, 'loaded', 'size', 'percent' ) );
    160162
    161163                                // Handle early mime type scanning for images.