Make WordPress Core

Changeset 22508


Ignore:
Timestamp:
11/09/2012 12:37:21 PM (12 years ago)
Author:
koopersmith
Message:

Media: Keep track of gallery display properties in a separate model instead of mixed in with the query parameters. This allows for arbitrary gallery arguments and a more flexible data structure. see #21390.

Location:
trunk/wp-includes/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/js/mce-view.js

    r22507 r22508  
    601601                    var shortcodeString = shortcode.string(),
    602602                        result = galleries[ shortcodeString ],
    603                         attrs, args, query;
     603                        attrs, args, query, others;
    604604
    605605                    delete galleries[ shortcodeString ];
     
    628628                        args.parent = attrs.id || parent;
    629629
     630                    // Collect the attributes that were not included in `args`.
     631                    others = {};
     632                    _.filter( attrs, function( value, key ) {
     633                        if ( _.isUndefined( args[ key ] ) )
     634                            others[ key ] = value;
     635                    });
     636
    630637                    query = media.query( args );
    631                     query.props.set( _.pick( attrs, 'columns', 'link' ) );
     638                    query.gallery = new Backbone.Model( others );
    632639                    return query;
    633640                },
     
    635642                shortcode: function( attachments ) {
    636643                    var props = attachments.props.toJSON(),
    637                         attrs = _.pick( props, 'include', 'exclude', 'orderby', 'order', 'link', 'columns' ),
    638                         shortcode;
     644                        attrs = _.pick( props, 'include', 'exclude', 'orderby', 'order' ),
     645                        shortcode, clone;
     646
     647                    if ( attachments.gallery )
     648                        _.extend( attrs, attachments.gallery.toJSON() );
    639649
    640650                    attrs.ids = attachments.pluck('id');
     
    652662
    653663                    // Use a cloned version of the gallery.
    654                     galleries[ shortcode.string() ] = new wp.media.model.Attachments( attachments.models, {
     664                    clone = new wp.media.model.Attachments( attachments.models, {
    655665                        props: props
    656666                    });
     667                    clone.gallery = attachments.gallery;
     668                    galleries[ shortcode.string() ] = clone;
    657669
    658670                    return shortcode;
     
    706718
    707719            edit: function() {
     720                var selection;
     721
    708722                if ( ! wp.media.view || this.frame )
    709723                    return;
     724
     725                selection = new wp.media.model.Selection( this.attachments.models, {
     726                    props:    this.attachments.props.toJSON(),
     727                    multiple: true
     728                });
     729                selection.gallery = this.attachments.gallery;
    710730
    711731                this.frame = wp.media({
     
    715735                    editing:   true,
    716736                    multiple:  true,
    717                     selection: new wp.media.model.Selection( this.attachments.models, {
    718                         props:    this.attachments.props.toJSON(),
    719                         multiple: true
    720                     })
     737                    selection: selection
    721738                });
    722739
  • trunk/wp-includes/js/media-views.js

    r22506 r22508  
    10321032        // Sidebars
    10331033        onSidebarGallerySettings: function( options ) {
     1034            var library = this.state().get('library');
     1035
     1036            library.gallery = library.gallery || new Backbone.Model();
     1037
    10341038            this.sidebar.view().add({
    10351039                gallery: new media.view.Settings.Gallery({
    10361040                    controller: this,
    1037                     model:      this.state().get('library').props,
     1041                    model:      library.gallery,
    10381042                    priority:   40
    10391043                }).render()
Note: See TracChangeset for help on using the changeset viewer.