WordPress.org

Make WordPress Core

Changeset 22743


Ignore:
Timestamp:
11/21/12 10:18:59 (17 months ago)
Author:
koopersmith
Message:

Media: Dynamically generate attachment filters using get_post_mime_types().

Moves get_post_mime_types() from wp-admin/includes/post.php to wp-includes/post.php.

fixes #22514, see #21390.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/post.php

    r22653 r22743  
    877877 
    878878/** 
    879  * Get default post mime types 
    880  * 
    881  * @since 2.9.0 
    882  * 
    883  * @return array 
    884  */ 
    885 function get_post_mime_types() { 
    886     $post_mime_types = array(   //  array( adj, noun ) 
    887         'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')), 
    888         'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')), 
    889         'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')), 
    890     ); 
    891  
    892     return apply_filters('post_mime_types', $post_mime_types); 
    893 } 
    894  
    895 /** 
    896879 * {@internal Missing Short Description}} 
    897880 * 
  • trunk/wp-includes/js/media-models.js

    r22737 r22743  
    672672                // Correct any differing property names. 
    673673                _.each( props, function( value, prop ) { 
     674                    if ( _.isNull( value ) ) 
     675                        return; 
     676 
    674677                    args[ Query.propmap[ prop ] || prop ] = value; 
    675678                }); 
  • trunk/wp-includes/js/media-views.js

    r22741 r22743  
    27672767        }, 
    27682768 
     2769        filters: (function() { 
     2770            var filters = {}; 
     2771 
     2772            _.each( media.view.settings.mimeTypes || {}, function( text, key ) { 
     2773                filters[ key ] = { 
     2774                    text: text, 
     2775                    props: { 
     2776                        type:   key, 
     2777                        parent: null 
     2778                    } 
     2779                }; 
     2780            }); 
     2781 
     2782            filters.all = { 
     2783                text:  l10n.allMediaItems, 
     2784                props: { 
     2785                    type:   null, 
     2786                    parent: null 
     2787                }, 
     2788                priority: 10 
     2789            }; 
     2790 
     2791            filters.uploaded = { 
     2792                text:  l10n.uploadedToThisPost, 
     2793                props: { 
     2794                    type:   null, 
     2795                    parent: media.view.settings.postId 
     2796                }, 
     2797                priority: 20 
     2798            }; 
     2799 
     2800            return filters; 
     2801        }()), 
     2802 
    27692803        initialize: function() { 
    2770             var els; 
    2771  
    2772             els = _.map({ 
    2773                 all:      'allMediaItems', 
    2774                 uploaded: 'uploadedToThisPost', 
    2775                 image:    'images', 
    2776                 audio:    'audio', 
    2777                 video:    'videos' 
    2778             }, function( text, value ) { 
    2779                 return this.make( 'option', { value: value }, l10n[ text ] ); 
    2780             }, this ); 
    2781  
    2782             this.$el.html( els ); 
     2804            // Build `<option>` elements. 
     2805            this.$el.html( _.chain( this.filters ).map( function( filter, value ) { 
     2806                return { 
     2807                    el: this.make( 'option', { value: value }, filter.text ), 
     2808                    priority: filter.priority || 50 
     2809                }; 
     2810            }, this ).sortBy('priority').pluck('el').value() ); 
    27832811 
    27842812            this.model.on( 'change', this.select, this ); 
     
    27872815 
    27882816        change: function( event ) { 
    2789             var model = this.model, 
    2790                 value = this.el.value, 
    2791                 type; 
    2792  
    2793             if ( 'all' === value || 'uploaded' === value ) 
    2794                 model.unset('type'); 
    2795             else if ( 'image' === value || 'audio' === value || 'video' === value ) 
    2796                 model.set( 'type', value ); 
    2797  
    2798             if ( 'uploaded' === value ) 
    2799                 model.set( 'parent', media.view.settings.postId ); 
    2800             else 
    2801                 model.unset('parent'); 
     2817            var filter = this.filters[ this.el.value ]; 
     2818 
     2819            if ( filter ) 
     2820                this.model.set( filter.props ); 
    28022821        }, 
    28032822 
    28042823        select: function() { 
    28052824            var model = this.model, 
     2825                value = 'all', 
    28062826                type = model.get('type'), 
    2807                 value = 'all'; 
    2808  
    2809             if ( model.get('parent') === media.view.settings.postId ) 
    2810                 value = 'uploaded'; 
    2811             else if ( 'image' === type ) 
    2812                 value = 'image'; 
    2813             else if ( 'audio' === type ) 
    2814                 value = 'audio'; 
    2815             else if ( 'video' === type ) 
    2816                 value = 'video'; 
     2827                parent = model.get('parent'), 
     2828                props = { 
     2829                    parent: _.isUndefined( parent ) ? null : parent, 
     2830                    type:   _.isUndefined( type ) ? null : type 
     2831                }; 
     2832 
     2833            _.find( this.filters, function( filter, key ) { 
     2834                if ( _.isEqual( filter.props, props ) ) 
     2835                    return value = key; 
     2836            }); 
    28172837 
    28182838            this.$el.val( value ); 
  • trunk/wp-includes/media.php

    r22735 r22743  
    13231323 
    13241324    $settings = array( 
    1325         'tabs'   => $tabs, 
    1326         'tabUrl' => add_query_arg( array( 
    1327             'chromeless' => true 
    1328         ), admin_url('media-upload.php') ), 
     1325        'tabs'      => $tabs, 
     1326        'tabUrl'    => add_query_arg( array( 'chromeless' => true ), admin_url('media-upload.php') ), 
     1327        'mimeTypes' => wp_list_pluck( get_post_mime_types(), 0 ), 
    13291328    ); 
    13301329 
     
    13551354 
    13561355        // Library 
    1357         'mediaLibraryTitle' => __( 'Media Library' ), 
    1358         'createNewGallery'  => __( 'Create a new gallery' ), 
    1359         'insertIntoPost'    =>  $hier ? __( 'Insert into page' ) : __( 'Insert into post' ), 
    1360         'returnToLibrary'   => __( '&#8592; Return to library' ), 
    1361  
     1356        'mediaLibraryTitle'  => __( 'Media Library' ), 
     1357        'createNewGallery'   => __( 'Create a new gallery' ), 
     1358        'returnToLibrary'    => __( '&#8592; Return to library' ), 
    13621359        'allMediaItems'      => __( 'All media items' ), 
     1360        'insertIntoPost'     => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ), 
    13631361        'uploadedToThisPost' => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ), 
    1364         'images'             => __( 'Images' ), 
    1365         'audio'              => __( 'Audio' ), 
    1366         'videos'             => __( 'Videos' ), 
    13671362 
    13681363        // Embed 
  • trunk/wp-includes/post.php

    r22722 r22743  
    21812181 
    21822182/** 
     2183 * Get default post mime types 
     2184 * 
     2185 * @since 2.9.0 
     2186 * 
     2187 * @return array 
     2188 */ 
     2189function get_post_mime_types() { 
     2190    $post_mime_types = array(   //  array( adj, noun ) 
     2191        'image' => array(__('Images'), __('Manage Images'), _n_noop('Image <span class="count">(%s)</span>', 'Images <span class="count">(%s)</span>')), 
     2192        'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio <span class="count">(%s)</span>', 'Audio <span class="count">(%s)</span>')), 
     2193        'video' => array(__('Video'), __('Manage Video'), _n_noop('Video <span class="count">(%s)</span>', 'Video <span class="count">(%s)</span>')), 
     2194    ); 
     2195 
     2196    return apply_filters('post_mime_types', $post_mime_types); 
     2197} 
     2198 
     2199/** 
    21832200 * Check a MIME-Type against a list. 
    21842201 * 
Note: See TracChangeset for help on using the changeset viewer.