WordPress.org

Make WordPress Core

Ticket #21776: 21776.4.diff

File 21776.4.diff, 3.6 KB (added by nacin, 7 years ago)
  • wp-admin/includes/meta-boxes.php

     
    10011001 * @since 2.9.0
    10021002 */
    10031003function post_thumbnail_meta_box( $post ) {
    1004         global $_wp_additional_image_sizes;
    1005 
    1006         ?><script type="text/javascript">
    1007         jQuery( function($) {
    1008                 var $element     = $('#select-featured-image'),
    1009                         $thumbnailId = $element.find('input[name="thumbnail_id"]'),
    1010                         title        = '<?php _e( "Choose a Featured Image" ); ?>',
    1011                         update       = '<?php _e( "Update Featured Image" ); ?>',
    1012                         Attachment   = wp.media.model.Attachment,
    1013                         frame, setFeaturedImage;
    1014 
    1015                 setFeaturedImage = function( thumbnailId ) {
    1016                         var selection;
    1017 
    1018                         $element.find('img').remove();
    1019                         $element.toggleClass( 'has-featured-image', -1 != thumbnailId );
    1020                         $thumbnailId.val( thumbnailId );
    1021 
    1022                         if ( frame ) {
    1023                                 selection = frame.state('library').get('selection');
    1024 
    1025                                 if ( -1 === thumbnailId )
    1026                                         selection.clear();
    1027                                 else
    1028                                         selection.add( Attachment.get( thumbnailId ) );
    1029                         }
    1030                 };
    1031 
    1032                 $element.on( 'click', '.choose, img', function( event ) {
    1033                         var options, thumbnailId, attachment;
    1034 
    1035                         event.preventDefault();
    1036 
    1037                         if ( frame ) {
    1038                                 frame.open();
    1039                                 return;
    1040                         }
    1041 
    1042                         options = {
    1043                                 title:   title,
    1044                                 library: {
    1045                                         type: 'image'
    1046                                 }
    1047                         };
    1048 
    1049                         thumbnailId = $thumbnailId.val();
    1050                         if ( '' !== thumbnailId && -1 !== thumbnailId ) {
    1051                                 attachment = Attachment.get( thumbnailId );
    1052                                 attachment.fetch();
    1053                                 options.selection = [ attachment ];
    1054                         }
    1055 
    1056                         frame = wp.media( options );
    1057 
    1058                         frame.state('library').set( 'filterable', 'uploaded' );
    1059 
    1060                         frame.toolbar.on( 'activate:select', function() {
    1061                                 frame.toolbar.view().set({
    1062                                         select: {
    1063                                                 style: 'primary',
    1064                                                 text:  update,
    1065 
    1066                                                 click: function() {
    1067                                                         var selection = frame.state().get('selection'),
    1068                                                                 model = selection.first(),
    1069                                                                 sizes = model.get('sizes'),
    1070                                                                 size;
    1071 
    1072                                                         setFeaturedImage( model.id );
    1073 
    1074                                                         // @todo: might need a size hierarchy equivalent.
    1075                                                         if ( sizes )
    1076                                                                 size = sizes['post-thumbnail'] || sizes.medium;
    1077 
    1078                                                         // @todo: Need a better way of accessing full size
    1079                                                         // data besides just calling toJSON().
    1080                                                         size = size || model.toJSON();
    1081 
    1082                                                         frame.close();
    1083 
    1084                                                         $( '<img />', {
    1085                                                                 src:    size.url,
    1086                                                                 width:  size.width
    1087                                                         }).prependTo( $element );
    1088                                                 }
    1089                                         }
    1090                                 });
    1091                         });
    1092 
    1093                         frame.toolbar.mode('select');
    1094                 });
    1095 
    1096                 $element.on( 'click', '.remove', function( event ) {
    1097                         event.preventDefault();
    1098                         setFeaturedImage( -1 );
    1099                 });
    1100         });
    1101         </script>
    1102 
    1103         <?php
    1104         $thumbnail_id   = get_post_meta( $post->ID, '_thumbnail_id', true );
    1105         $thumbnail_size = isset( $_wp_additional_image_sizes['post-thumbnail'] ) ? 'post-thumbnail' : 'medium';
    1106         $thumbnail_html = wp_get_attachment_image( $thumbnail_id, $thumbnail_size );
    1107 
    1108         $classes = empty( $thumbnail_id ) ? '' : 'has-featured-image';
    1109 
    1110         ?><div id="select-featured-image"
    1111                 class="<?php echo esc_attr( $classes ); ?>"
    1112                 data-post-id="<?php echo esc_attr( $post->ID ); ?>">
    1113                 <?php echo $thumbnail_html; ?>
    1114                 <input type="hidden" name="thumbnail_id" value="<?php echo esc_attr( $thumbnail_id ); ?>" />
    1115                 <a href="#" class="choose button-secondary"><?php _e( 'Choose a Featured Image' ); ?></a>
    1116                 <a href="#" class="remove"><?php _e( 'Remove Featured Image' ); ?></a>
    1117         </div>
    1118         <?php
     1004        $thumbnail_id = get_post_meta( $post->ID, '_thumbnail_id', true );
     1005        echo _wp_post_thumbnail_html( $thumbnail_id, $post->ID );
    11191006}
     1007 No newline at end of file