Make WordPress Core

Changeset 22882


Ignore:
Timestamp:
11/27/2012 11:20:12 PM (12 years ago)
Author:
nacin
Message:

When editing a plain, legacy [gallery] shortcode, ensure we are sorting its contents using menu_order.

When attachments are sorted, we convert the shortcode to [gallery ids=""], as before.

props koopersmith.
fixes #22608.

Location:
trunk/wp-includes
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/js/media-editor.js

    r22877 r22882  
    158158                captiontag: 'dd',
    159159                columns:    3,
    160                 size:       'thumbnail'
     160                size:       'thumbnail',
     161                orderby:    'menu_order ID'
    161162            },
    162163
     
    171172                    return result;
    172173
    173                 attrs = shortcode.attrs.named;
     174                // Fill the default shortcode attributes.
     175                attrs = _.defaults( shortcode.attrs.named, wp.media.gallery.defaults );
    174176                args  = _.pick( attrs, 'orderby', 'order' );
    175177
    176178                args.type    = 'image';
    177179                args.perPage = -1;
     180
     181                // Map the `orderby` attribute to the corresponding model property.
     182                if ( ! attrs.orderby || /^menu_order(?: ID)?$/i.test( attrs.orderby ) )
     183                    args.orderby = 'menuOrder';
    178184
    179185                // Map the `ids` param to the correct query args.
     
    205211            shortcode: function( attachments ) {
    206212                var props = attachments.props.toJSON(),
    207                     attrs = _.pick( props, 'include', 'exclude', 'orderby', 'order' ),
     213                    attrs = _.pick( props, 'orderby', 'order' ),
    208214                    shortcode, clone;
    209215
     
    211217                    _.extend( attrs, attachments.gallery.toJSON() );
    212218
     219                // Convert all gallery shortcodes to use the `ids` property.
     220                // Ignore `post__in` and `post__not_in`; the attachments in
     221                // the collection will already reflect those properties.
    213222                attrs.ids = attachments.pluck('id');
     223
     224                // Copy the `parent` post ID.
     225                if ( props.parent )
     226                    attrs.id = props.parent;
    214227
    215228                // If the `ids` attribute is set and `orderby` attribute
     
    273286                });
    274287
    275                 return wp.media({
     288                // Destroy the previous gallery frame.
     289                if ( this.frame )
     290                    this.frame.dispose();
     291
     292                // Store the current gallery frame.
     293                this.frame = wp.media({
    276294                    frame:     'post',
    277295                    state:     'gallery-edit',
     
    281299                    selection: selection
    282300                });
     301
     302                return this.frame;
    283303            }
    284304        };
  • trunk/wp-includes/js/media-models.js

    r22872 r22882  
    660660
    661661        orderby: {
    662             allowed:  [ 'name', 'author', 'date', 'title', 'modified', 'uploadedTo', 'id', 'post__in' ],
     662            allowed:  [ 'name', 'author', 'date', 'title', 'modified', 'uploadedTo', 'id', 'post__in', 'menuOrder' ],
    663663            valuemap: {
    664664                'id':         'ID',
    665                 'uploadedTo': 'parent'
     665                'uploadedTo': 'parent',
     666                'menuOrder':  'menu_order ID'
    666667            }
    667668        },
    668669
    669670        propmap: {
    670             'search':  's',
    671             'type':    'post_mime_type',
    672             'parent':  'post_parent',
    673             'perPage': 'posts_per_page'
     671            'search':    's',
     672            'type':      'post_mime_type',
     673            'parent':    'post_parent',
     674            'perPage':   'posts_per_page',
     675            'menuOrder': 'menu_order'
    674676        },
    675677
  • trunk/wp-includes/js/media-views.js

    r22869 r22882  
    28992899                text:  l10n.allMediaItems,
    29002900                props: {
    2901                     parent: null
     2901                    parent:  null,
     2902                    orderby: 'date',
     2903                    order:   'DESC'
    29022904                },
    29032905                priority: 10
     
    29072909                text:  l10n.uploadedToThisPost,
    29082910                props: {
    2909                     parent: media.view.settings.postId
     2911                    parent:  media.view.settings.postId,
     2912                    orderby: 'menuOrder',
     2913                    order:   'ASC'
    29102914                },
    29112915                priority: 20
     
    29222926                    text: text,
    29232927                    props: {
    2924                         type:   key,
    2925                         parent: null
     2928                        type:    key,
     2929                        parent:  null,
     2930                        orderby: 'date',
     2931                        order:   'DESC'
    29262932                    }
    29272933                };
     
    29312937                text:  l10n.allMediaItems,
    29322938                props: {
    2933                     type:   null,
    2934                     parent: null
     2939                    type:    null,
     2940                    parent:  null,
     2941                    orderby: 'date',
     2942                    order:   'DESC'
    29352943                },
    29362944                priority: 10
     
    29402948                text:  l10n.uploadedToThisPost,
    29412949                props: {
    2942                     type:   null,
    2943                     parent: media.view.settings.postId
     2950                    type:    null,
     2951                    parent:  media.view.settings.postId,
     2952                    orderby: 'menuOrder',
     2953                    order:   'ASC'
    29442954                },
    29452955                priority: 20
  • trunk/wp-includes/media.php

    r22872 r22882  
    12551255        'urlstream_upload'    => true,
    12561256    );
    1257    
     1257
    12581258    // Multi-file uploading doesn't currently work in iOS Safari,
    12591259    // single-file allows the built-in camera to be used as source for images
     
    13281328        'date'        => strtotime( $attachment->post_date_gmt ) * 1000,
    13291329        'modified'    => strtotime( $attachment->post_modified_gmt ) * 1000,
     1330        'menuOrder'   => $attachment->menu_order,
    13301331        'mime'        => $attachment->post_mime_type,
    13311332        'type'        => $type,
Note: See TracChangeset for help on using the changeset viewer.