Changeset 22247
- Timestamp:
- 10/16/2012 07:25:17 PM (12 years ago)
- Location:
- trunk/wp-includes
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/css/buttons.css
r22245 r22247 230 230 231 231 .button-group { 232 position: relative; 232 233 display: inline-block; 233 234 white-space: nowrap; … … 237 238 238 239 .button-group > .button { 239 position: relative;240 240 display: inline-block; 241 241 border-radius: 0; … … 270 270 display: inline-block; 271 271 font-size: 16px; 272 opacity: 0. 8;272 opacity: 0.9; 273 273 margin: 0 -0.25em; 274 274 text-align: center; 275 275 vertical-align: middle; 276 276 } 277 278 .button .dropdown { 279 display: none; 280 position: absolute; 281 top: 100%; 282 left: 0; 283 margin-top: 5px; 284 padding: 0.8em 1em; 285 border-radius: 3px; 286 287 background: #f5f5f5; 288 color: #333; 289 text-shadow: none; 290 box-shadow: 291 0 0 0 1px rgba( 0, 0, 0, 0.3 ), 292 1px 1px 2px rgba( 0, 0, 0, 0.1 ); 293 } 294 295 .button.active .dropdown { 296 display: block; 297 } 298 299 .dropdown-flip-x .dropdown { 300 left: auto; 301 right: 0; 302 } -
trunk/wp-includes/css/media-views.css
r22184 r22247 87 87 } 88 88 89 .media-toolbar .media-button { 89 .media-toolbar-primary > .media-button, 90 .media-toolbar-primary > .media-button-group { 91 margin-left: 10px; 90 92 float: left; 91 93 margin-top: 16px; 92 94 } 93 95 94 .media-toolbar-primary .media-button { 95 margin-left: 10px; 96 } 97 98 .media-toolbar-secondary .media-button { 96 .media-toolbar-secondary > .media-button, 97 .media-toolbar-secondary > .media-button-group { 99 98 margin-right: 10px; 99 float: left; 100 margin-top: 16px; 100 101 } 101 102 … … 517 518 line-height: 60px; 518 519 } 520 521 /** 522 * Attachment Display Settings 523 */ 524 525 .attachment-display-settings, 526 .button div.attachment-display-settings { 527 padding: 0 1em 1em; 528 } 529 530 .attachment-display-settings h3 { 531 font-weight: 200; 532 margin: 1.4em 0 0.4em; 533 } 534 535 .attachment-display-settings h4 { 536 margin: 1.4em 0 0.4em; 537 } -
trunk/wp-includes/js/media-views.js
r22183 r22247 351 351 }, this ); 352 352 353 if ( this.options.dropdown ) 354 this.options.dropdown.addClass('dropdown'); 355 353 356 this.model.on( 'change', this.render, this ); 354 357 }, … … 363 366 classes.push( 'button-' + this.model.get('size') ); 364 367 365 classes = classes.concat( this.options.classes);368 classes = _.uniq( classes.concat( this.options.classes ) ); 366 369 this.el.className = classes.join(' '); 367 370 371 372 // Detach the dropdown. 373 if ( this.options.dropdown ) 374 this.options.dropdown.detach(); 375 368 376 this.$el.text( this.model.get('text') ); 377 378 if ( this.options.dropdown ) 379 this.$el.append( this.options.dropdown ); 380 369 381 return this; 370 382 }, … … 374 386 if ( this.options.click ) 375 387 this.options.click.apply( this, arguments ); 388 } 389 }); 390 391 /** 392 * wp.media.view.ButtonGroup 393 */ 394 media.view.ButtonGroup = Backbone.View.extend({ 395 tagName: 'div', 396 className: 'button-group button-large media-button-group', 397 398 initialize: function() { 399 this.buttons = _.map( this.options.buttons || [], function( button ) { 400 if ( button instanceof Backbone.View ) 401 return button; 402 else 403 return new media.view.Button( button ).render(); 404 }); 405 406 delete this.options.buttons; 407 408 if ( this.options.classes ) 409 this.$el.addClass( this.options.classes ); 410 }, 411 412 render: function() { 413 this.$el.html( $( _.pluck( this.buttons, 'el' ) ).detach() ); 414 return this; 376 415 } 377 416 }); … … 711 750 }, 712 751 713 'insert-into-post': { 714 text: l10n.insertIntoPost, 752 'insert-into-post': new media.view.ButtonGroup({ 715 753 priority: 30, 716 click: _.bind( controller.update, controller, 'insert' ) 717 }, 754 classes: 'dropdown-flip-x', 755 buttons: [ 756 { 757 text: l10n.insertIntoPost, 758 click: _.bind( controller.update, controller, 'insert' ) 759 }, 760 { 761 classes: ['down-arrow'], 762 dropdown: new media.view.AttachmentDisplaySettings().render().$el, 763 764 click: function( event ) { 765 var $el = this.$el; 766 767 if ( ! $( event.target ).closest('.dropdown').length ) 768 $el.toggleClass('active'); 769 770 // Stop the event from propagating further so we can bind 771 // a one-time event to the body (and ensure that a click 772 // on the dropdown won't trigger said event). 773 event.stopPropagation(); 774 775 if ( $el.is(':visible') ) { 776 $(document.body).one( 'click', function() { 777 $el.removeClass('active'); 778 }); 779 } 780 } 781 } 782 ] 783 }).render(), 718 784 719 785 'add-to-gallery': { … … 737 803 this.toolbarView.get('create-new-gallery').$el.toggle( showGallery ); 738 804 insert = this.toolbarView.get('insert-into-post'); 739 insert.model.set( 'style', showGallery ? '' : 'primary' ); 805 _.each( insert.buttons, function( button ) { 806 button.model.set( 'style', showGallery ? '' : 'primary' ); 807 }); 740 808 }, this ); 741 809 … … 1035 1103 } 1036 1104 }); 1105 1106 1107 /** 1108 * wp.media.view.AttachmentDisplaySettings 1109 */ 1110 media.view.AttachmentDisplaySettings = Backbone.View.extend({ 1111 tagName: 'div', 1112 className: 'attachment-display-settings', 1113 template: media.template('attachment-display-settings'), 1114 1115 events: { 1116 'click button': 'updateHandler' 1117 }, 1118 1119 settings: { 1120 align: { 1121 accepts: ['left','center','right','none'], 1122 name: 'align', 1123 fallback: 'none' 1124 }, 1125 link: { 1126 accepts: ['post','file','none'], 1127 name: 'urlbutton', 1128 fallback: 'post' 1129 }, 1130 size: { 1131 // @todo: Dynamically generate these. 1132 accepts: ['thumbnail','medium','large','full'], 1133 name: 'imgsize', 1134 fallback: 'medium' 1135 } 1136 }, 1137 1138 initialize: function() { 1139 var settings = this.settings; 1140 1141 this.model = new Backbone.Model(); 1142 1143 _.each( settings, function( setting, key ) { 1144 this.model.set( key, getUserSetting( setting.name, setting.fallback ) ); 1145 }, this ); 1146 1147 this.model.validate = function( attrs ) { 1148 return _.any( attrs, function( value, key ) { 1149 return ! settings[ key ] || ! _.contains( settings[ key ].accepts, value ); 1150 }); 1151 }; 1152 1153 this.model.on( 'change', function( model, options ) { 1154 if ( ! options.changes ) 1155 return; 1156 1157 _.each( _.keys( options.changes ), function( key ) { 1158 if ( settings[ key ] ) 1159 setUserSetting( settings[ key ].name, model.get( key ) ); 1160 }); 1161 }, this ); 1162 1163 this.model.on( 'change', this.updateChanges, this ); 1164 }, 1165 1166 render: function() { 1167 this.$el.html( this.template( this.model.toJSON() ) ); 1168 1169 // Select the correct values. 1170 _( this.model.attributes ).chain().keys().each( this.update, this ); 1171 return this; 1172 }, 1173 1174 update: function( key ) { 1175 var buttons = this.$('[data-setting="' + key + '"] button').removeClass('active'); 1176 buttons.filter( '[value="' + this.model.get( key ) + '"]' ).addClass('active'); 1177 }, 1178 1179 updateHandler: function( event ) { 1180 var group = $( event.target ).closest('.button-group'); 1181 1182 event.preventDefault(); 1183 1184 if ( group.length ) 1185 this.model.set( group.data('setting'), event.target.value ); 1186 }, 1187 1188 updateChanges: function( model, options ) { 1189 if ( options.changes ) 1190 _( options.changes ).chain().keys().each( this.update, this ); 1191 } 1192 }); 1037 1193 }(jQuery)); -
trunk/wp-includes/media.php
r22225 r22247 1378 1378 </script> 1379 1379 1380 <script type="text/html" id="tmpl-attachment-display-settings"> 1381 <h4><?php _e('Alignment'); ?></h4> 1382 <div class="alignment button-group button-large" data-setting="align"> 1383 <button class="button" value="left"> 1384 <?php esc_attr_e('Left'); ?> 1385 </button> 1386 <button class="button" value="center"> 1387 <?php esc_attr_e('Center'); ?> 1388 </button> 1389 <button class="button" value="right"> 1390 <?php esc_attr_e('Right'); ?> 1391 </button> 1392 <button class="button" value="none"> 1393 <?php esc_attr_e('None'); ?> 1394 </button> 1395 </div> 1396 1397 <h4><?php _e('Link To'); ?></h4> 1398 <div class="link-to button-group button-large" data-setting="link"> 1399 <button class="button" value="post"> 1400 <?php esc_attr_e('Attachment Page'); ?> 1401 </button> 1402 <button class="button" value="file"> 1403 <?php esc_attr_e('Media File'); ?> 1404 </button> 1405 <button class="button" value="none"> 1406 <?php esc_attr_e('None'); ?> 1407 </button> 1408 </div> 1409 </script> 1410 1380 1411 <script type="text/html" id="tmpl-editor-attachment"> 1381 1412 <div class="editor-attachment-preview">
Note: See TracChangeset
for help on using the changeset viewer.