WordPress.org

Make WordPress Core

Changeset 22324


Ignore:
Timestamp:
10/29/2012 06:05:03 PM (6 years ago)
Author:
koopersmith
Message:

Add dynamic attachment view sizing. Removes the attachment view zooming in the process. see #21390.

Location:
trunk/wp-includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/css/media-views.css

    r22323 r22324  
    175175    height: auto;
    176176    width: auto;
     177    margin: 0;
    177178    overflow: auto;
    178179}
     
    197198    font-family: sans-serif;
    198199}
    199 
    200 /**
    201  * Attachments
    202  */
    203 /*.attachments {
    204     position: relative;
    205     width: 100%;
    206     height: 100%;
    207 }
    208 
    209 .attachments-header {
    210     position: absolute;
    211     top: 0;
    212     left: 0;
    213     right: 0;
    214     height: 50px;
    215     padding: 0 10px;
    216     background: #fff;
    217 }
    218 
    219 .attachments-header h3 {
    220     float: left;
    221     margin: 0;
    222     padding: 0;
    223     line-height: 50px;
    224     font-size: 18px;
    225     font-weight: 200;
    226 }
    227 
    228 .attachments ul {
    229     position: absolute;
    230     top: 50px;
    231     left: 0;
    232     right: 0;
    233     bottom: 0;
    234     overflow: auto;
    235     margin: 0 0 20px;
    236 }*/
    237200
    238201/**
     
    290253}
    291254
     255.attachment .thumbnail {
     256    -webkit-transform: translate( 50%, 50% );
     257    -moz-transform:    translate( 50%, 50% );
     258    -ms-transform:     translate( 50%, 50% );
     259    -o-transform:      translate( 50%, 50% );
     260    transform:         translate( 50%, 50% );
     261}
     262
    292263/* Vertically center the icons. */
    293264.attachment .icon {
    294265    top: 50%;
    295266    left: 50%;
     267}
     268
     269.attachment-preview:after {
     270    content: '';
     271    display: block;
     272    position: absolute;
     273    top: 0;
     274    left: 0;
     275    right: 0;
     276    bottom: 0;
     277    box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.1 );
     278    overflow: hidden;
     279}
     280
     281.attachment .thumbnail img {
     282    top: 0;
     283    left: 0;
     284}
     285
     286.attachment .icon,
     287.attachment .thumbnail img {
    296288    -webkit-transform: translate( -50%, -50% );
    297289    -moz-transform:    translate( -50%, -50% );
     
    302294
    303295.attachment .filename {
    304     margin-top: 140px;
    305     padding: 0 10px;
     296    position: absolute;
     297    left: 0;
     298    right: 0;
     299    bottom: 0;
     300    padding: 5px 10px;
    306301    text-align: center;
    307302    font-weight: bold;
    308 }
    309 
    310 .attachment-preview .thumbnail,
    311 .attachment-preview .thumbnail img {
    312     -webkit-transition-property: width, height, top, left, right, bottom;
    313     -moz-transition-property:    width, height, top, left, right, bottom;
    314     -ms-transition-property:     width, height, top, left, right, bottom;
    315     -o-transition-property:      width, height, top, left, right, bottom;
    316     transition-property:         width, height, top, left, right, bottom;
    317     -webkit-transition-duration: 80ms;
    318     -moz-transition-duration:    80ms;
    319     -ms-transition-duration:     80ms;
    320     -o-transition-duration:      80ms;
    321     transition-duration:         80ms;
    322     -webkit-transition-delay:    200ms;
    323     -moz-transition-delay:       200ms;
    324     -ms-transition-delay:        200ms;
    325     -o-transition-delay:         200ms;
    326     transition-delay:            200ms;
     303    background: rgba( 255, 255, 255, 0.8 );
     304    box-shadow: 0 0 2px rgba( 0, 0, 0, 0.2 );
    327305}
    328306
     
    330308    width: 199px;
    331309    height: 199px;
    332 }
    333 
    334 .attachment-preview .thumbnail:after {
    335     content: '';
    336     display: block;
    337     position: absolute;
    338     top: 0;
    339     left: 0;
    340     right: 0;
    341     bottom: 0;
    342     box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.1 );
    343     overflow: hidden;
    344 }
    345 
    346 .attachment.fit .thumbnail:after {
    347     box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.15 );
    348310}
    349311
     
    623585    float: left;
    624586    margin: 10px 0 0;
     587    border-radius: 3px;
    625588}
    626589
  • trunk/wp-includes/js/media-views.js

    r22323 r22324  
    128128                this.set( 'library', media.query() );
    129129
     130            if ( ! this.get('edge') )
     131                this.set( 'edge', 120 );
     132
     133            if ( ! this.get('gutter') )
     134                this.set( 'gutter', 6 );
     135
    130136            this.on( 'activate', this.activate, this );
    131137            this.on( 'deactivate', this.deactivate, this );
     
    249255            multiple:   false,
    250256            describe:   true,
    251             title:      l10n.createGallery
     257            title:      l10n.createGallery,
     258            edge:       199
    252259        },
    253260
     
    10171024        events: {
    10181025            'click .attachment-preview':      'toggleSelection',
    1019             'mouseenter .attachment-preview': 'shrink',
    1020             'mouseleave .attachment-preview': 'expand',
     1026            // 'mouseenter .attachment-preview': 'shrink',
     1027            // 'mouseleave .attachment-preview': 'expand',
    10211028            'change .describe':               'describe'
    10221029        },
     
    10531060
    10541061            if ( 'image' === options.type )
    1055                 _.extend( options, this.crop() );
     1062                _.extend( options, this.imageSize() );
    10561063
    10571064            this.$el.html( this.template( options ) );
     
    11241131            // Use the provided image size if possible.
    11251132            if ( sizes && sizes[ size ] ) {
    1126                 return sizes[ size ];
     1133                return _.clone( sizes[ size ] );
    11271134            } else {
    11281135                return {
     
    11351142        },
    11361143
    1137         crop: function( sizeId ) {
    1138             var edge = 199,
    1139                 size = this.imageSize( sizeId ),
    1140                 wide, tall;
    1141 
    1142             wide = wp.media.fit( _.extend( { maxWidth:  edge }, size ) );
    1143             tall = wp.media.fit( _.extend( { maxHeight: edge }, size ) );
    1144 
    1145             _.extend( size, wide.width > tall.width ? wide : tall );
    1146 
    1147             size.top  = ( edge - size.height ) / 2;
    1148             size.left = ( edge - size.width ) / 2;
    1149             return size;
    1150         },
    1151 
    1152         fit: function( sizeId ) {
    1153             var margin = 10,
    1154                 full = 199,
    1155                 edge = full - ( margin * 2 ),
    1156                 size = _.extend( wp.media.fit( _.extend({
    1157                     maxWidth:  edge,
    1158                     maxHeight: edge
    1159                 }, this.imageSize( sizeId ) ) ) );
    1160 
    1161             size.top  = Math.round( margin + ( edge - size.height ) / 2 );
    1162             size.left = Math.round( margin + ( edge - size.width ) / 2 );
    1163             return size;
    1164         },
    1165 
    1166         shrink: function() {
    1167             var size = _.pick( this.fit(), 'top', 'left', 'width', 'height' );
    1168             this.$el.addClass('fit');
    1169             this.$('.thumbnail').css( size );
    1170             this.$('.thumbnail img').css( _.extend( size, {
    1171                 top:  0,
    1172                 left: 0
    1173             } ) );
    1174         },
    1175 
    1176         expand: function() {
    1177             var size = _.pick( this.crop(), 'top', 'left', 'width', 'height' );
    1178             this.$el.removeClass('fit');
    1179             this.$('.thumbnail img').css( size );
    1180             this.$('.thumbnail').css({
    1181                 top:    0,
    1182                 left:   0,
    1183                 width:  199,
    1184                 height: 199
    1185             });
    1186         },
    1187 
    11881144        describe: function( event ) {
    11891145            if ( 'image' === this.model.get('type') )
     
    12261182        tagName:   'ul',
    12271183        className: 'attachments',
     1184        template:  media.template('attachments-css'),
    12281185
    12291186        events: {
     
    12331190        initialize: function() {
    12341191            this.controller = this.options.controller;
     1192            this.el.id = _.uniqueId('__attachments-view-');
    12351193
    12361194            _.defaults( this.options, {
     
    12531211
    12541212            this.initSortable();
     1213
     1214            this.controller.state().on( 'change:edge change:gutter', this.css, this );
     1215            this.css();
     1216        },
     1217
     1218        destroy: function() {
     1219            this.collection.off( 'add remove reset', null, this );
     1220            this.controller.state().off( 'change:edge change:gutter', this.css, this );
     1221        },
     1222
     1223        css: function() {
     1224            var $css = $( '#' + this.el.id + '-css' ),
     1225                state = this.controller.state();
     1226
     1227            if ( $css.length )
     1228                $css.remove();
     1229
     1230            media.view.Attachments.$head().append( this.template({
     1231                id:     this.el.id,
     1232                edge:   state.get('edge'),
     1233                gutter: state.get('gutter')
     1234            }) );
    12551235        },
    12561236
     
    13541334            }
    13551335        }
     1336    }, {
     1337        $head: (function() {
     1338            var $head;
     1339            return function() {
     1340                return $head = $head || $('head');
     1341            };
     1342        }())
    13561343    });
    13571344
  • trunk/wp-includes/media.php

    r22323 r22324  
    13281328            <% } else if ( 'image' === type ) { %>
    13291329                <div class="thumbnail">
    1330                     <img src="<%- url %>" width="<%- width %>" height="<%- height %>" draggable="false"
    1331                     style="top:<%- top %>px; left:<%- left %>px;" />
     1330                    <img src="<%- url %>" draggable="false" />
    13321331                </div>
    13331332            <% } else { %>
     
    14621461        </div>
    14631462    </script>
     1463
     1464    <script type="text/html" id="tmpl-attachments-css">
     1465        <style type="text/css" id="<%- id %>-css">
     1466            #<%- id %> {
     1467                padding: <%- gutter %>px;
     1468            }
     1469
     1470            #<%- id %> .attachment {
     1471                margin: <%- gutter %>px;
     1472                width: <%- edge %>px;
     1473            }
     1474
     1475            #<%- id %> .attachment-preview,
     1476            #<%- id %> .attachment-preview .thumbnail {
     1477                width: <%- edge %>px;
     1478                height: <%- edge %>px;
     1479            }
     1480
     1481            #<%- id %> .portrait .thumbnail img {
     1482                width: <%- edge %>px;
     1483                height: auto;
     1484            }
     1485
     1486            #<%- id %> .landscape .thumbnail img {
     1487                width: auto;
     1488                height: <%- edge %>px;
     1489            }
     1490        </style>
     1491    </script>
    14641492    <?php
    14651493}
Note: See TracChangeset for help on using the changeset viewer.