From af767035e77268c1b4e31af2348506faad60326e Mon Sep 17 00:00:00 2001 From: Helen Hou-Sandi Date: Tue, 20 Oct 2020 03:12:07 +0000 Subject: [PATCH] Media: Indicate if item is or was used as a site option in the details modal. Props Mista-Flo, melchoyce. Fixes #42063. git-svn-id: https://develop.svn.wordpress.org/trunk@49223 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/template.php | 52 +++++++++++++++++++++--------- src/wp-includes/media-template.php | 8 +++++ src/wp-includes/media.php | 5 +++ 3 files changed, 50 insertions(+), 15 deletions(-) diff --git a/src/wp-admin/includes/template.php b/src/wp-admin/includes/template.php index 2e63b7e2dd..2f1f67c48d 100644 --- a/src/wp-admin/includes/template.php +++ b/src/wp-admin/includes/template.php @@ -2237,10 +2237,45 @@ function get_post_states( $post ) { * Outputs the attachment media states as HTML. * * @since 3.2.0 + * @since 5.6.0 Added the `$echo` parameter. * * @param WP_Post $post The attachment post to retrieve states for. + * @param bool $echo Optional. Whether to echo the post states as an HTML string. Default true. + * @return string Media states string. */ -function _media_states( $post ) { +function _media_states( $post, $echo = true ) { + $media_states = get_media_states( $post ); + $media_states_string = ''; + + if ( ! empty( $media_states ) ) { + $state_count = count( $media_states ); + $i = 0; + + $media_states_string .= ' — '; + + foreach ( $media_states as $state ) { + $sep = ( ++$i === $state_count ) ? '' : ', '; + + $media_states_string .= "$state$sep"; + } + } + + if ( $echo ) { + echo $media_states_string; + } + + return $media_states_string; +} + +/** + * Retrieves an array of media states from an attachment. + * + * @since 5.6.0 + * + * @param WP_Post $post The attachment to retrieve states for. + * @return string[] Array of media state labels keyed by their state. + */ +function get_media_states( $post ) { static $header_images; $media_states = array(); @@ -2310,20 +2345,7 @@ function _media_states( $post ) { * 'Background Image', 'Site Icon', 'Logo'. * @param WP_Post $post The current attachment object. */ - $media_states = apply_filters( 'display_media_states', $media_states, $post ); - - if ( ! empty( $media_states ) ) { - $state_count = count( $media_states ); - $i = 0; - - echo ' — '; - - foreach ( $media_states as $state ) { - $sep = ( ++$i === $state_count ) ? '' : ', '; - - echo "$state$sep"; - } - } + return apply_filters( 'display_media_states', $media_states, $post ); } /** diff --git a/src/wp-includes/media-template.php b/src/wp-includes/media-template.php index 9908843b98..42a6f79131 100644 --- a/src/wp-includes/media-template.php +++ b/src/wp-includes/media-template.php @@ -459,6 +459,10 @@ function wp_print_media_templates() { <# } #> + <# if ( data.mediaStates ) { #> +
{{ data.mediaStates }}
+ <# } #> +
<# if ( data.compat && data.compat.meta ) { #> {{{ data.compat.meta }}} @@ -673,6 +677,10 @@ function wp_print_media_templates() {
<# } #> + <# if ( data.mediaStates ) { #> +
{{ data.mediaStates }}
+ <# } #> + <# if ( ! data.uploading && data.can.remove ) { #> <# if ( 'trash' === data.status ) { #> diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index 3ea44eafaf..726ff6d38e 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -3976,6 +3976,11 @@ function wp_prepare_attachment_for_js( $attachment ) { $response['compat'] = get_compat_media_markup( $attachment->ID, array( 'in_modal' => true ) ); } + $media_states = get_media_states( $attachment ); + if ( ! empty( $media_states ) ) { + $response['mediaStates'] = implode( ', ', $media_states ); + } + /** * Filters the attachment data prepared for JavaScript. *