Make WordPress Core

Changeset 23969


Ignore:
Timestamp:
04/11/2013 10:34:05 PM (12 years ago)
Author:
markjaquith
Message:

Enforce video dimensions.

props wonderboymusic. see #23831.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/js/post-formats.js

    r23863 r23969  
    111111            });
    112112
    113             mediaPreview = function (format, url, mime) {
     113            mediaPreview = function (attachment) {
     114                var dimensions = '', url = attachment.url,
     115                    mime = attachment.mime,
     116                    format = attachment.type;
     117
     118                if ( 'video' === format ) {
     119                    if ( attachment.width )
     120                        dimensions += ' width="' + attachment.width + '"';
     121                    if ( attachment.height )
     122                        dimensions += ' height="' + attachment.height + '"';
     123                }
     124
    114125                $('#' + format + '-preview').remove();
    115126                $holder.parent().prepend( '<div id="' + format + '-preview" class="wp-format-media-preview">' +
    116                     '<' + format + ' class="wp-' + format + '-shortcode" controls="controls" preload="none">' +
     127                    '<' + format + dimensions + ' class="wp-' + format + '-shortcode" controls="controls" preload="none">' +
    117128                        '<source type="' + mime + '" src="' + url + '" />' +
    118129                    '</' + format + '></div>' );
     
    123134            mediaFrame.on( 'select', function () {
    124135                // Grab the selected attachment.
    125                 var attachment = mediaFrame.state().get('selection').first(), mime, url, id;
     136                var attachment = mediaFrame.state().get('selection').first().toJSON();
    126137
    127                 id = attachment.get('id');
    128                 url = attachment.get('url');
    129                 mime = attachment.get('mime');
    130 
    131                 if ( 0 === mime.indexOf('audio') ) {
    132                     $field.val(url);
     138                if ( 0 === attachment.mime.indexOf('audio') ) {
     139                    $field.val(attachment.url);
    133140                    // show one preview at a time
    134                     mediaPreview('audio', url, mime);
    135                 } else if ( 0 === mime.indexOf('video') ) {
    136                     $field.val(url);
     141                    mediaPreview(attachment);
     142                } else if ( 0 === attachment.mime.indexOf('video') ) {
     143                    attachment.src = attachment.url;
     144                    $field.val(wp.shortcode.string({
     145                        tag:     'video',
     146                        attrs: _.pick( attachment, 'src', 'width', 'height' )
     147                    }));
    137148                    // show one preview at a time
    138                     mediaPreview('video', url, mime);
     149                    mediaPreview(attachment);
    139150                } else {
    140151                    // set the hidden input's value
    141                     $field.val(id);
     152                    $field.val(attachment.id);
    142153                    // Show the image in the placeholder
    143                     $el.html('<img src="' + url + '" />');
     154                    $el.html('<img src="' + attachment.url + '" />');
    144155                    $holder.removeClass('empty').show();
    145156                }
  • trunk/wp-includes/js/media-editor.js

    r23870 r23969  
    144144
    145145            shortcode = {};
     146
     147            if ( attachment.width )
     148                shortcode.width = attachment.width;
     149
     150            if ( attachment.height )
     151                shortcode.height = attachment.height;
    146152
    147153            if ( props.mime ) {
  • trunk/wp-includes/media.php

    r23938 r23969  
    16391639
    16401640        $response = array_merge( $response, array( 'sizes' => $sizes ), $sizes['full'] );
     1641    } elseif ( $meta && 'video' === $type ) {
     1642        if ( isset( $meta['width'] ) )
     1643            $response['width'] = (int) $meta['width'];
     1644        if ( isset( $meta['height'] ) )
     1645            $response['height'] = (int) $meta['height'];
    16411646    }
    16421647
     
    20152020            $dimensions .= sprintf( 'width="%d" ', (int) $rawattr['width'] );
    20162021            $dimensions .= sprintf( 'height="%d" ', (int) $rawattr['height'] );
     2022        } elseif ( strstr( $url, home_url() ) ) {
     2023            $id = attachment_url_to_postid( $url );
     2024            if ( ! empty( $id ) ) {
     2025                $meta = wp_get_attachment_metadata( $id );
     2026                if ( ! empty( $meta['width'] ) )
     2027                    $dimensions .= sprintf( 'width="%d" ', (int) $meta['width'] );
     2028                if ( ! empty( $meta['height'] ) )
     2029                    $dimensions .= sprintf( 'height="%d" ', (int) $meta['height'] );
     2030            }
    20172031        }
    20182032        $video = do_shortcode( '[video ' . $dimensions . 'src="' . $url . '" /]' );
     
    24392453    echo get_the_post_format_image( $attached_size );
    24402454}
     2455
     2456/**
     2457 * Retrieve the post id for an attachment file URL
     2458 *
     2459 * @since 3.6.0
     2460 *
     2461 * @param string $url Permalink to check.
     2462 * @return int Post ID, or 0 on failure.
     2463 */
     2464function attachment_url_to_postid( $url ) {
     2465    global $wpdb;
     2466    if ( preg_match( '#\.[a-zA-Z0-9]+$#', $url ) ) {
     2467        $id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' " .
     2468            "AND guid = %s", $url ) );
     2469
     2470        if ( ! empty( $id ) )
     2471            return (int) $id;
     2472    }
     2473
     2474    return 0;
     2475}
Note: See TracChangeset for help on using the changeset viewer.