Make WordPress Core

Changeset 27655


Ignore:
Timestamp:
03/22/2014 11:25:08 PM (10 years ago)
Author:
wonderboymusic
Message:

General code cleanup and improving video sizing in the admin:

  • Abstract the setting of a primary button and its callback in wp.media.view.MediaFrame.MediaDetails
  • Account for the existence or non-existence of $content_width in the TinyMCE views for video
  • Make sure video models always have dimensions, even if they are the defaults
  • For browsers that are not Firefox, don't use a timeout when setting the MediaElementPlayer instance in TinyMCE views

See #27320.

Location:
trunk/src/wp-includes
Files:
4 edited

Legend:

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

    r27643 r27655  
    11/* global _wpMediaViewsL10n, _wpmejsSettings, MediaElementPlayer, tinymce, WPPlaylistView */
    22
    3 (function ($, _, Backbone) {
    4     var media = wp.media, l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
     3(function($, _, Backbone) {
     4    var media = wp.media,
     5        baseSettings = {},
     6        l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
     7
     8    if ( ! _.isUndefined( window._wpmejsSettings ) ) {
     9        baseSettings.pluginPath = _wpmejsSettings.pluginPath;
     10    }
    511
    612    /**
     
    1218         * Pauses every instance of MediaElementPlayer
    1319         */
    14         pauseAllPlayers: function () {
     20        pauseAllPlayers: function() {
    1521            var p;
    1622            if ( window.mejs && window.mejs.players ) {
     
    2531         */
    2632        ua: {
    27             is : function (browser) {
     33            is : function( browser ) {
    2834                var passes = false, ua = window.navigator.userAgent;
    2935
     
    4551                    break;
    4652                    case 'chrome':
    47                         passes = ua.match(/safari/gi) && ua.match(/chrome/gi) !== null;
     53                        passes = ua.match(/safari/gi) !== null && ua.match(/chrome/gi) !== null;
    4854                    break;
    4955                }
     
    8692         * @returns {Boolean}
    8793         */
    88         isCompatible: function ( media ) {
     94        isCompatible: function( media ) {
    8995            if ( ! media.find( 'source' ).length ) {
    9096                return false;
     
    99105            sources = media.find( 'source' );
    100106
    101             _.find( this.compat, function (supports, browser) {
     107            _.find( this.compat, function( supports, browser ) {
    102108                if ( ua.is( browser ) ) {
    103109                    found = true;
    104                     _.each( sources, function (elem) {
     110                    _.each( sources, function( elem ) {
    105111                        var audio = new RegExp( 'audio\/(' + supports.audio.join('|') + ')', 'gi' ),
    106112                            video = new RegExp( 'video\/(' + supports.video.join('|') + ')', 'gi' );
     
    215221        },
    216222
    217         edit : function (data) {
     223        edit : function( data ) {
    218224            var frame, shortcode = wp.shortcode.next( 'audio', data ).shortcode;
    219225            frame = wp.media({
    220226                frame: 'audio',
    221227                state: 'audio-details',
    222                 metadata: _.defaults(
    223                     shortcode.attrs.named,
    224                     wp.media.audio.defaults
    225                 )
     228                metadata: _.defaults( shortcode.attrs.named, this.defaults )
    226229            });
    227230
     
    229232        },
    230233
    231         shortcode : function (model) {
     234        shortcode : function( model ) {
    232235            var self = this, content;
    233236
     
    269272            preload : 'metadata',
    270273            content : '',
    271             caption : ''
    272         },
    273 
    274         edit : function (data) {
     274            caption : '',
     275            width : 640,
     276            height : 360
     277        },
     278
     279        edit : function( data ) {
    275280            var frame,
    276                 defaults = this.defaults,
    277281                shortcode = wp.shortcode.next( 'video', data ).shortcode,
    278282                attrs;
     
    284288                frame: 'video',
    285289                state: 'video-details',
    286                 metadata: _.defaults( attrs, defaults )
     290                metadata: _.defaults( attrs, this.defaults )
    287291            });
    288292
     
    290294        },
    291295
    292         shortcode : function (model) {
     296        shortcode : function( model ) {
    293297            var self = this, content;
    294298
     
    313317
    314318    /**
    315      * wp.media.model.PostMedia
     319     * Shared model class for audio and video. Updates the model after
     320     *   "Add Audio|Video Source" and "Replace Audio|Video" states return
    316321     *
    317322     * @constructor
    318323     * @augments Backbone.Model
    319      **/
     324     */
    320325    media.model.PostMedia = Backbone.Model.extend({
    321326        initialize: function() {
     
    323328        },
    324329
    325         setSource: function ( attachment ) {
     330        setSource: function( attachment ) {
    326331            this.attachment = attachment;
    327             this.extension = attachment.get('filename' ).split('.').pop();
     332            this.extension = attachment.get( 'filename' ).split('.').pop();
    328333
    329334            if ( this.get( 'src' ) && this.extension === this.get( 'src' ).split('.').pop() ) {
     
    344349
    345350            this.unset( 'src' );
    346             _.each( _.without( wp.media.view.settings.embedExts, this.extension ), function (ext) {
     351            _.each( _.without( wp.media.view.settings.embedExts, this.extension ), function( ext ) {
    347352                self.unset( ext );
    348353            } );
     
    351356
    352357    /**
    353      * wp.media.controller.AudioDetails
     358     * The controller for the Audio Details state
    354359     *
    355360     * @constructor
     
    358363     */
    359364    media.controller.AudioDetails = media.controller.State.extend({
    360         defaults: _.defaults({
     365        defaults: {
    361366            id: 'audio-details',
    362367            toolbar: 'audio-details',
     
    365370            menu: 'audio-details',
    366371            router: false,
    367             attachment: false,
    368             priority: 60,
    369             editing: false
    370         }, media.controller.Library.prototype.defaults ),
     372            priority: 60
     373        },
    371374
    372375        initialize: function( options ) {
     
    377380
    378381    /**
    379      * wp.media.controller.VideoDetails
     382     * The controller for the Video Details state
    380383     *
    381384     * @constructor
     
    384387     */
    385388    media.controller.VideoDetails = media.controller.State.extend({
    386         defaults: _.defaults({
     389        defaults: {
    387390            id: 'video-details',
    388391            toolbar: 'video-details',
     
    391394            menu: 'video-details',
    392395            router: false,
    393             attachment: false,
    394             priority: 60,
    395             editing: false
    396         }, media.controller.Library.prototype.defaults ),
     396            priority: 60
     397        },
    397398
    398399        initialize: function( options ) {
     
    481482        },
    482483
    483         renderDetailsToolbar: function() {
     484        setPrimaryButton: function(text, handler) {
    484485            this.toolbar.set( new media.view.Toolbar({
    485486                controller: this,
    486487                items: {
    487                     select: {
     488                    button: {
    488489                        style:    'primary',
    489                         text:     l10n.update,
     490                        text:     text,
    490491                        priority: 80,
    491 
    492                         click: function() {
    493                             var controller = this.controller,
    494                                 state = controller.state();
    495 
    496                             controller.close();
    497 
    498                             state.trigger( 'update', controller.media.toJSON() );
    499 
     492                        click:    function() {
     493                            var controller = this.controller;
     494                            handler.call( this, controller, controller.state() );
    500495                            // Restore and reset the default state.
    501496                            controller.setState( controller.options.state );
     
    507502        },
    508503
     504        renderDetailsToolbar: function() {
     505            this.setPrimaryButton( l10n.update, function( controller, state ) {
     506                controller.close();
     507                state.trigger( 'update', controller.media.toJSON() );
     508            } );
     509        },
     510
    509511        renderReplaceToolbar: function() {
    510             this.toolbar.set( new media.view.Toolbar({
    511                 controller: this,
    512                 items: {
    513                     replace: {
    514                         style:    'primary',
    515                         text:     l10n.replace,
    516                         priority: 80,
    517 
    518                         click: function() {
    519                             var controller = this.controller,
    520                                 state = controller.state(),
    521                                 selection = state.get( 'selection' ),
    522                                 attachment = selection.single();
    523 
    524                             controller.media.changeAttachment( attachment );
    525 
    526                             state.trigger( 'replace', controller.media.toJSON() );
    527 
    528                             // Restore and reset the default state.
    529                             controller.setState( controller.options.state );
    530                             controller.reset();
    531                         }
    532                     }
    533                 }
    534             }) );
     512            this.setPrimaryButton( l10n.replace, function( controller, state ) {
     513                var attachment = state.get( 'selection' ).single();
     514                controller.media.changeAttachment( attachment );
     515                state.trigger( 'replace', controller.media.toJSON() );
     516            } );
    535517        },
    536518
    537519        renderAddSourceToolbar: function() {
    538             this.toolbar.set( new media.view.Toolbar({
    539                 controller: this,
    540                 items: {
    541                     replace: {
    542                         style:    'primary',
    543                         text:     this.addText,
    544                         priority: 80,
    545 
    546                         click: function() {
    547                             var controller = this.controller,
    548                                 state = controller.state(),
    549                                 selection = state.get( 'selection' ),
    550                                 attachment = selection.single();
    551 
    552                             controller.media.setSource( attachment );
    553 
    554                             state.trigger( 'add-source', controller.media.toJSON() );
    555 
    556                             // Restore and reset the default state.
    557                             controller.setState( controller.options.state );
    558                             controller.reset();
    559                         }
    560                     }
    561                 }
    562             }) );
     520            this.setPrimaryButton( this.addText, function( controller, state ) {
     521                var attachment = state.get( 'selection' ).single();
     522                controller.media.setSource( attachment );
     523                state.trigger( 'add-source', controller.media.toJSON() );
     524            } );
    563525        }
    564526    });
     
    607569            this.states.add([
    608570                new media.controller.AudioDetails( {
    609                     media: this.media,
    610                     editable: false,
    611                     menu: 'audio-details'
     571                    media: this.media
    612572                } ),
    613573
     
    678638            this.states.add([
    679639                new media.controller.VideoDetails({
    680                     media: this.media,
    681                     editable: false,
    682                     menu: 'video-details'
     640                    media: this.media
    683641                }),
    684642
     
    722680
    723681        renderSelectPosterImageToolbar: function() {
    724             this.toolbar.set( new media.view.Toolbar({
    725                 controller: this,
    726                 items: {
    727                     replace: {
    728                         style:    'primary',
    729                         text:     l10n.videoSelectPosterImageTitle,
    730                         priority: 80,
    731 
    732                         click: function() {
    733                             var controller = this.controller,
    734                                 state = controller.state(),
    735                                 selection = state.get( 'selection' ),
    736                                 attachment = selection.single();
    737 
    738                             controller.media.set( 'poster', attachment.get( 'url' ) );
    739 
    740                             state.trigger( 'set-poster-image', controller.media.toJSON() );
    741 
    742                             // Restore and reset the default state.
    743                             controller.setState( controller.options.state );
    744                             controller.reset();
    745                         }
    746                     }
    747                 }
    748             }) );
     682            this.setPrimaryButton( l10n.videoSelectPosterImageTitle, function( controller, state ) {
     683                var attachment = state.get( 'selection' ).single();
     684
     685                controller.media.set( 'poster', attachment.get( 'url' ) );
     686                state.trigger( 'set-poster-image', controller.media.toJSON() );
     687            } );
    749688        },
    750689
    751690        renderAddTrackToolbar: function() {
    752             this.toolbar.set( new media.view.Toolbar({
    753                 controller: this,
    754                 items: {
    755                     replace: {
    756                         style:    'primary',
    757                         text:     l10n.videoAddTrackTitle,
    758                         priority: 80,
    759 
    760                         click: function() {
    761                             var controller = this.controller,
    762                                 state = controller.state(),
    763                                 selection = state.get( 'selection' ),
    764                                 attachment = selection.single(),
    765                                 content = controller.media.get( 'content' );
    766 
    767                             if ( -1 === content.indexOf( attachment.get( 'url' ) ) ) {
    768                                 content += [
    769                                     '<track srclang="en" label="English"kind="subtitles" src="',
    770                                     attachment.get( 'url' ),
    771                                     '" />'
    772                                 ].join('');
    773 
    774                                 controller.media.set( 'content', content );
    775                             }
    776 
    777                             state.trigger( 'add-track', controller.media.toJSON() );
    778 
    779                             // Restore and reset the default state.
    780                             controller.setState( controller.options.state );
    781                             controller.reset();
    782                         }
    783                     }
    784                 }
    785             }) );
     691            this.setPrimaryButton( l10n.videoAddTrackTitle, function( controller, state ) {
     692                var attachment = state.get( 'selection' ).single(),
     693                    content = controller.media.get( 'content' );
     694
     695                if ( -1 === content.indexOf( attachment.get( 'url' ) ) ) {
     696                    content += [
     697                        '<track srclang="en" label="English"kind="subtitles" src="',
     698                        attachment.get( 'url' ),
     699                        '" />'
     700                    ].join('');
     701
     702                    controller.media.set( 'content', content );
     703                }
     704                state.trigger( 'add-track', controller.media.toJSON() );
     705            } );
    786706        }
    787707    });
     
    828748         * @param {Event} e
    829749         */
    830         removeSetting : function (e) {
     750        removeSetting : function(e) {
    831751            var wrap = $( e.currentTarget ).parent(), setting;
    832 
    833752            setting = wrap.find( 'input' ).data( 'setting' );
    834753
     
    845764         * @fires wp.media.view.MediaDetails#media:setting:remove
    846765         */
    847         setTracks : function () {
     766        setTracks : function() {
    848767            var tracks = '';
    849768
    850             _.each( this.$('.content-track'), function (track) {
     769            _.each( this.$('.content-track'), function(track) {
    851770                tracks += $( track ).val();
    852771            } );
     
    859778         * @global MediaElementPlayer
    860779         */
    861         setPlayer : function () {
     780        setPlayer : function() {
    862781            if ( ! this.player && this.media ) {
    863782                this.player = new MediaElementPlayer( this.media, this.settings );
     
    868787         * @abstract
    869788         */
    870         setMedia : function () {
     789        setMedia : function() {
    871790            return this;
    872791        },
    873792
    874         success : function (mejs) {
     793        success : function(mejs) {
    875794            var autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay;
    876795
    877796            if ( 'flash' === mejs.pluginType && autoplay ) {
    878                 mejs.addEventListener( 'canplay', function () {
     797                mejs.addEventListener( 'canplay', function() {
    879798                    mejs.play();
    880799                }, false );
     
    885804
    886805        /**
    887          * @global _wpmejsSettings
    888          *
    889806         * @returns {media.view.MediaDetails} Returns itself to allow chaining
    890807         */
    891808        render: function() {
    892             var self = this, settings = {
    893                 success : this.success
    894             };
    895 
    896             if ( ! _.isUndefined( window._wpmejsSettings ) ) {
    897                 settings.pluginPath = _wpmejsSettings.pluginPath;
    898             }
     809            var self = this;
    899810
    900811            media.view.Settings.AttachmentDisplay.prototype.render.apply( this, arguments );
    901812            setTimeout( function() { self.resetFocus(); }, 10 );
    902813
    903             this.settings = settings;
     814            this.settings = _.defaults( {
     815                success : this.success
     816            }, baseSettings );
    904817
    905818            return this.setMedia();
     
    915828         * When multiple players in the DOM contain the same src, things get weird.
    916829         *
    917          * @param {HTMLElement} media
     830         * @param {HTMLElement} elem
    918831         * @returns {HTMLElement}
    919832         */
    920         prepareSrc : function (media) {
    921             var i = wp.media.view.MediaDetails.instances++;
    922             _.each( $(media).find('source'), function (source) {
     833        prepareSrc : function( elem ) {
     834            var i = media.view.MediaDetails.instances++;
     835            _.each( $( elem ).find( 'source' ), function( source ) {
    923836                source.src = [
    924837                    source.src,
     
    927840                    i
    928841                ].join('');
    929             });
    930 
    931             return media;
     842            } );
     843
     844            return elem;
    932845        }
    933846    });
     
    1011924         * @returns {Object}
    1012925         */
    1013         counts : (function (settings) {
     926        counts : (function(settings) {
    1014927            var counts = {};
    1015928
    1016             return  function () {
     929            return  function() {
    1017930                if ( ! _.isEmpty( counts ) ) {
    1018931                    return counts;
     
    1020933
    1021934                var a = 0, v = 0;
    1022                 _.each( settings.attachmentCounts, function (total, mime) {
     935                _.each( settings.attachmentCounts, function(total, mime) {
    1023936                    var type;
    1024937                    if ( -1 < mime.indexOf('/') ) {
     
    1051964         * @returns {Array}
    1052965         */
    1053         states : function (options) {
     966        states : function(options) {
    1054967            return [
    1055968                new media.controller.Library({
     
    10941007         * @returns {Array}
    10951008         */
    1096         videoStates : function (options) {
     1009        videoStates : function(options) {
    10971010            return [
    10981011                new media.controller.Library({
     
    11841097            data = window.decodeURIComponent( $( node ).attr('data-wpview-text') );
    11851098            frame = media.edit( data );
    1186             frame.on( 'close', function () {
     1099            frame.on( 'close', function() {
    11871100                frame.detach();
    11881101            } );
     
    12201133         * @param {HTMLElement} node
    12211134         */
    1222         setPlayer: function (e, node) {
     1135        setPlayer: function(e, node) {
    12231136            // if the ready event fires on an empty node
    12241137            if ( ! node ) {
     
    12281141            var self = this,
    12291142                media,
    1230                 settings = {},
     1143                firefox = this.ua.is( 'ff' ),
    12311144                className = '.wp-' +  this.shortcode.tag + '-shortcode';
    12321145
     
    12361149
    12371150            media = $( node ).find( className );
    1238 
    1239             if ( ! _.isUndefined( window._wpmejsSettings ) ) {
    1240                 settings.pluginPath = _wpmejsSettings.pluginPath;
    1241             }
    12421151
    12431152            if ( ! this.isCompatible( media ) ) {
     
    12501159            } else {
    12511160                media.closest( '.wpview-wrap' ).removeClass( 'wont-play' );
    1252                 if ( this.ua.is( 'ff' ) ) {
     1161                if ( firefox ) {
    12531162                    media.prop( 'preload', 'metadata' );
    12541163                } else {
     
    12601169
    12611170            // Thanks, Firefox!
    1262             setTimeout(function () {
    1263                 self.player = new MediaElementPlayer( media, settings );
    1264             }, 50);
     1171            if ( firefox ) {
     1172                setTimeout( function() {
     1173                    self.player = new MediaElementPlayer( media, baseSettings );
     1174                }, 50 );
     1175            } else {
     1176                this.player = new MediaElementPlayer( media, baseSettings );
     1177            }
    12651178        },
    12661179
     
    12711184         */
    12721185        getHtml: function() {
    1273             var attrs = this.shortcode.attrs.named;
     1186            var attrs = _.defaults(
     1187                this.shortcode.attrs.named,
     1188                wp.media[ this.shortcode.tag ].defaults
     1189            );
    12741190            return this.template({ model: attrs });
    12751191        }
     
    13331249         * @param {HTMLElement} node
    13341250         */
    1335         setNode: function (e, node) {
     1251        setNode: function(e, node) {
    13361252            this.node = node;
    13371253            this.fetch();
     
    13541270         * @global tinymce.editors
    13551271         */
    1356         setPlayer: function () {
     1272        setPlayer: function() {
    13571273            var p,
    13581274                html = this.getHtml(),
     
    13661282                if ( editor.plugins.wpview ) {
    13671283                    doc = editor.getDoc();
    1368                     $( doc ).find( '[data-wpview-text="' + t + '"]' ).each(function (i, elem) {
     1284                    $( doc ).find( '[data-wpview-text="' + t + '"]' ).each(function(i, elem) {
    13691285                        var node = $( elem );
    13701286                        node.html( html );
     
    14151331            };
    14161332
    1417             _.each( attachments, function (attachment) {
    1418                 var size = {}, track = {
     1333            _.each( attachments, function( attachment ) {
     1334                var size = {}, resize = {}, track = {
    14191335                    src : attachment.url,
    14201336                    type : attachment.mime,
     
    14261342
    14271343                if ( 'video' === type ) {
    1428                     if ( ! options.width ) {
    1429                         options.width = attachment.width;
    1430                         options.height = attachment.height;
    1431                     }
    14321344                    size.width = attachment.width;
    14331345                    size.height = attachment.height;
     1346                    if ( media.view.settings.contentWidth ) {
     1347                        resize.width = media.view.settings.contentWidth - 22;
     1348                        resize.height = Math.ceil( ( size.height * resize.width ) / size.width );
     1349                        if ( ! options.width ) {
     1350                            options.width = resize.width;
     1351                            options.height = resize.height;
     1352                        }
     1353                    } else {
     1354                        if ( ! options.width ) {
     1355                            options.width = attachment.width;
     1356                            options.height = attachment.height;
     1357                        }
     1358                    }
    14341359                    track.dimensions = {
    14351360                        original : size,
    1436                         resized : size
     1361                        resized : _.isEmpty( resize ) ? size : resize
    14371362                    };
    14381363                } else {
     
    14841409        $(document.body)
    14851410            .on( 'click', '.wp-switch-editor', wp.media.mixin.pauseAllPlayers )
    1486             .on( 'click', '.add-media-source', function () {
     1411            .on( 'click', '.add-media-source', function() {
    14871412                media.frame.setState('add-' + media.frame.defaults.id + '-source');
    14881413            } );
  • trunk/src/wp-includes/js/tinymce/skins/wordpress/wp-content.css

    r27640 r27655  
    163163    display: inline-block;
    164164    max-width: 100%;
     165}
     166
     167audio {
     168    visibility: hidden;
    165169}
    166170
  • trunk/src/wp-includes/media-template.php

    r27645 r27655  
    4949    $video_types = wp_get_video_extensions();
    5050?>
    51 <#
    52 var isYouTube = ! _.isEmpty( data.model.src ) && data.model.src.match(/youtube|youtu\.be/);
    53     w = ! data.model.width || data.model.width > 640 ? 640 : data.model.width,
    54     h = ! data.model.height ? 360 : data.model.height;
    55 
    56 if ( data.model.width && w !== data.model.width ) {
    57     h = Math.ceil( ( h * w ) / data.model.width );
    58 }
     51<#  var w, h, settings = wp.media.view.settings,
     52        isYouTube = ! _.isEmpty( data.model.src ) && data.model.src.match(/youtube|youtu\.be/);
     53
     54    if ( settings.contentWidth && data.model.width >= settings.contentWidth ) {
     55        w = settings.contentWidth;
     56    } else {
     57        w = data.model.width;
     58    }
     59
     60    if ( w !== data.model.width ) {
     61        h = Math.ceil( ( h * w ) / data.model.width );
     62    } else {
     63        h = data.model.height;
     64    }
    5965#>
    6066<div style="max-width: 100%; width: {{ w }}px">
     
    8692        <source src="{{ data.model.src }}" type="video/youtube" />
    8793        <# } else { #>
    88         <source src="{{ data.model.src }}" type="{{ wp.media.view.settings.embedMimes[ data.model.src.split('.').pop() ] }}" />
     94        <source src="{{ data.model.src }}" type="{{ settings.embedMimes[ data.model.src.split('.').pop() ] }}" />
    8995        <# }
    9096    } #>
     
    9298    <?php foreach ( $video_types as $type ):
    9399    ?><# if ( data.model.<?php echo $type ?> ) { #>
    94     <source src="{{ data.model.<?php echo $type ?> }}" type="{{ wp.media.view.settings.embedMimes[ '<?php echo $type ?>' ] }}" />
     100    <source src="{{ data.model.<?php echo $type ?> }}" type="{{ settings.embedMimes[ '<?php echo $type ?>' ] }}" />
    95101    <# } #>
    96102    <?php endforeach; ?>
  • trunk/src/wp-includes/media.php

    r27640 r27655  
    11981198    $default_height = 360;
    11991199
    1200     $theme_width = $content_width - $outer;
    1201     $theme_height = round( ( $default_height * $theme_width ) / $default_width );
     1200    $theme_width = empty( $content_width ) ? $default_width : ( $content_width - $outer );
     1201    $theme_height = empty( $content_width ) ? $default_height : round( ( $default_height * $theme_width ) / $default_width );
    12021202
    12031203    $data = compact( 'type', 'style' );
     
    15861586    } else {
    15871587        // if the video is bigger than the theme
    1588         if ( $width > $content_width ) {
     1588        if ( ! empty( $content_width ) && $width > $content_width ) {
    15891589            $height = round( ( $height * $content_width ) / $width );
    15901590            $width = $content_width;
     
    23822382        return;
    23832383
     2384    global $content_width;
     2385
    23842386    $defaults = array(
    23852387        'post' => null,
     
    24322434        'attachmentCounts' => wp_count_attachments(),
    24332435        'embedExts'    => $exts,
    2434         'embedMimes'   => $ext_mimes
     2436        'embedMimes'   => $ext_mimes,
     2437        'contentWidth' => $content_width,
    24352438    );
    24362439
Note: See TracChangeset for help on using the changeset viewer.