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.


git-svn-id: https://develop.svn.wordpress.org/trunk@44947 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Adam Silverstein 2019-03-20 20:06:22 +00:00
parent 0a875f0170
commit 7d0d69af4a
2 changed files with 56 additions and 1 deletions

View File

@ -3576,10 +3576,18 @@ function wp_enqueue_media( $args = array() ) {
$month_year->text = sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month_year->month ), $month_year->year );
}
// Filter to show only available mime types.
$avail_post_mime_types = get_available_post_mime_types( 'attachment' );
$mimeTypes = wp_list_pluck( get_post_mime_types(), 0 );
foreach ( $mimeTypes as $mime_type => $label ) {
if ( ! wp_match_mime_types( $mime_type, $avail_post_mime_types ) ) {
unset( $mimeTypes[ $mime_type ] );
}
}
$settings = array(
'tabs' => $tabs,
'tabUrl' => add_query_arg( array( 'chromeless' => true ), admin_url( 'media-upload.php' ) ),
'mimeTypes' => wp_list_pluck( get_post_mime_types(), 0 ),
'mimeTypes' => $mimeTypes,
/** This filter is documented in wp-admin/includes/media.php */
'captions' => ! apply_filters( 'disable_captions', '' ),
'nonce' => array(

View File

@ -465,6 +465,53 @@ class Tests_Functions extends WP_UnitTestCase {
$this->assertNotEmpty( $mimes );
}
/**
* Test that the media grid uses the correct available single media type.
* @ticket 43658
*/
function test_wp_enqueue_media_single_mime_type() {
$filename = DIR_TESTDATA . '/images/test-image.jpg';
$contents = file_get_contents( $filename );
$upload = wp_upload_bits( basename( $filename ), null, $contents );
$attachment_id = $this->_make_attachment( $upload );
add_filter(
'media_view_settings',
function( $settings ) {
$this->assertEquals( array( 'image' ), array_keys( $settings['mimeTypes'] ) );
return $settings;
}
);
wp_enqueue_media();
remove_all_filters( 'media_view_settings' );
}
/**
* Test that the media grid uses the correct available multiple media types.
* @ticket 43658
*/
function test_wp_enqueue_media_multiple_mime_types() {
$filename = DIR_TESTDATA . '/images/test-image.jpg';
$contents = file_get_contents( $filename );
$upload = wp_upload_bits( basename( $filename ), null, $contents );
$attachment_id = $this->_make_attachment( $upload );
$filename = DIR_TESTDATA . '/uploads/small-audio.mp3';
$contents = file_get_contents( $filename );
$upload = wp_upload_bits( basename( $filename ), null, $contents );
$attachment_id = $this->_make_attachment( $upload );
add_filter(
'media_view_settings',
function( $settings ) {
$this->assertEquals( array( 'image', 'audio' ), array_keys( $settings['mimeTypes'] ) );
return $settings;
}
);
wp_enqueue_media();
remove_all_filters( 'media_view_settings' );
}
/**
* @ticket 21594
*/