Make WordPress Core

Changeset 44947


Ignore:
Timestamp:
03/20/2019 08:06:22 PM (6 years ago)
Author:
adamsilverstein
Message:

Media: grid view attachment filter drop down - only show available mime types.

In the media library gird view, properly limit the media attachment filter to available mime types, matching the list view.

Props itzmekhokan.
Fixes #43658.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/media.php

    r44785 r44947  
    35773577    }
    35783578
     3579    // Filter to show only available mime types.
     3580    $avail_post_mime_types = get_available_post_mime_types( 'attachment' );
     3581    $mimeTypes = wp_list_pluck( get_post_mime_types(), 0 );
     3582    foreach ( $mimeTypes as $mime_type => $label ) {
     3583        if ( ! wp_match_mime_types( $mime_type, $avail_post_mime_types ) ) {
     3584            unset( $mimeTypes[ $mime_type ] );
     3585        }
     3586    }
    35793587    $settings = array(
    35803588        'tabs'             => $tabs,
    35813589        'tabUrl'           => add_query_arg( array( 'chromeless' => true ), admin_url( 'media-upload.php' ) ),
    3582         'mimeTypes'        => wp_list_pluck( get_post_mime_types(), 0 ),
     3590        'mimeTypes'        => $mimeTypes,
    35833591        /** This filter is documented in wp-admin/includes/media.php */
    35843592        'captions'         => ! apply_filters( 'disable_captions', '' ),
  • trunk/tests/phpunit/tests/functions.php

    r44645 r44947  
    464464        $this->assertInternalType( 'array', $mimes );
    465465        $this->assertNotEmpty( $mimes );
     466    }
     467
     468    /**
     469     * Test that the media grid uses the correct available single media type.
     470     * @ticket 43658
     471     */
     472    function test_wp_enqueue_media_single_mime_type() {
     473        $filename      = DIR_TESTDATA . '/images/test-image.jpg';
     474        $contents      = file_get_contents( $filename );
     475        $upload        = wp_upload_bits( basename( $filename ), null, $contents );
     476        $attachment_id = $this->_make_attachment( $upload );
     477
     478        add_filter(
     479            'media_view_settings',
     480            function( $settings ) {
     481                $this->assertEquals( array( 'image' ), array_keys( $settings['mimeTypes'] ) );
     482                return $settings;
     483            }
     484        );
     485        wp_enqueue_media();
     486        remove_all_filters( 'media_view_settings' );
     487    }
     488
     489    /**
     490     * Test that the media grid uses the correct available multiple media types.
     491     * @ticket 43658
     492     */
     493    function test_wp_enqueue_media_multiple_mime_types() {
     494        $filename      = DIR_TESTDATA . '/images/test-image.jpg';
     495        $contents      = file_get_contents( $filename );
     496        $upload        = wp_upload_bits( basename( $filename ), null, $contents );
     497        $attachment_id = $this->_make_attachment( $upload );
     498
     499        $filename      = DIR_TESTDATA . '/uploads/small-audio.mp3';
     500        $contents      = file_get_contents( $filename );
     501        $upload        = wp_upload_bits( basename( $filename ), null, $contents );
     502        $attachment_id = $this->_make_attachment( $upload );
     503
     504        add_filter(
     505            'media_view_settings',
     506            function( $settings ) {
     507                $this->assertEquals( array( 'image', 'audio' ), array_keys( $settings['mimeTypes'] ) );
     508                return $settings;
     509            }
     510        );
     511        wp_enqueue_media();
     512        remove_all_filters( 'media_view_settings' );
    466513    }
    467514
Note: See TracChangeset for help on using the changeset viewer.