Changeset 27478
- Timestamp:
- 03/09/2014 05:24:10 AM (11 years ago)
- Location:
- trunk/src/wp-includes
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/js/media-models.js
r27477 r27478 454 454 455 455 /** 456 * wp.media.model.Post Audio456 * wp.media.model.PostMedia 457 457 * 458 458 * @constructor 459 459 * @augments Backbone.Model 460 460 **/ 461 media.model.Post Audio= Backbone.Model.extend({461 media.model.PostMedia = Backbone.Model.extend({ 462 462 initialize: function() { 463 463 this.attachment = false; 464 464 }, 465 465 466 setSource: function ( attachment ) { 467 this.attachment = attachment; 468 this.extension = attachment.get('filename' ).split('.').pop(); 469 470 if ( _.contains( wp.media.view.settings.embedExts, this.extension ) ) { 471 this.set( this.extension, this.attachment.get( 'url' ) ); 472 } else { 473 this.unset( this.extension ); 474 } 475 }, 476 466 477 changeAttachment: function( attachment ) { 467 478 var self = this; 468 479 469 this.attachment = attachment; 470 this.extension = attachment.get('filename' ).split('.').pop(); 471 472 if ( _.contains( wp.media.view.settings.embedExts, this.extension ) ) { 473 this.set( this.extension, attachment.get( 'url' ) ); 474 } else { 475 this.unset( this.extension ); 476 } 477 478 _.each( _.without( wp.media.view.settings.embedExts, this.extension ), function (ext) { 479 self.unset( ext ); 480 } ); 481 } 482 }); 483 484 /** 485 * wp.media.model.PostVideo 486 * 487 * @constructor 488 * @augments Backbone.Model 489 **/ 490 media.model.PostVideo = Backbone.Model.extend({ 491 initialize: function() { 492 this.attachment = false; 493 }, 494 495 changeAttachment: function( attachment ) { 496 var self = this; 497 498 this.attachment = attachment; 499 this.extension = attachment.get('filename' ).split('.').pop(); 500 501 if ( _.contains( wp.media.view.settings.embedExts, this.extension ) ) { 502 this.set( this.extension, attachment.get( 'url' ) ); 503 } else { 504 this.unset( this.extension ); 505 } 480 this.setSource( attachment ); 506 481 507 482 _.each( _.without( wp.media.view.settings.embedExts, this.extension ), function (ext) { -
trunk/src/wp-includes/js/media-views.js
r27476 r27478 787 787 788 788 initialize: function( options ) { 789 this. audio = options.audio;789 this.media = options.media; 790 790 media.controller.State.prototype.initialize.apply( this, arguments ); 791 791 } … … 813 813 814 814 initialize: function( options ) { 815 this. video = options.video;815 this.media = options.media; 816 816 media.controller.State.prototype.initialize.apply( this, arguments ); 817 817 } … … 1184 1184 1185 1185 /** 1186 * wp.media.controller.ReplaceVideo 1187 * 1188 * Replace a selected single video 1186 * wp.media.controller.MediaLibrary 1189 1187 * 1190 1188 * @constructor … … 1193 1191 * @augments Backbone.Model 1194 1192 */ 1195 media.controller. ReplaceVideo= media.controller.Library.extend({1193 media.controller.MediaLibrary = media.controller.Library.extend({ 1196 1194 defaults: _.defaults({ 1197 id: 'replace-video',1198 1195 filterable: 'uploaded', 1199 1196 multiple: false, 1200 toolbar: 'replace', 1201 title: l10n.replaceVideoTitle, 1202 priority: 60, 1203 syncSelection: false 1197 priority: 80, 1198 syncSelection: false, 1199 displaySettings: true 1204 1200 }, media.controller.Library.prototype.defaults ), 1205 1201 … … 1207 1203 var library, comparator; 1208 1204 1209 this.video = options.video; 1210 // If we haven't been provided a `library`, create a `Selection`. 1211 if ( ! this.get('library') ) { 1212 this.set( 'library', media.query({ type: 'video' }) ); 1213 } 1205 this.media = options.media; 1206 this.set( 'library', media.query({ type: options.type }) ); 1214 1207 1215 1208 media.controller.Library.prototype.initialize.apply( this, arguments ); … … 1245 1238 updateSelection: function() { 1246 1239 var selection = this.get('selection'), 1247 attachment = this.video.attachment; 1248 1249 selection.reset( attachment ? [ attachment ] : [] ); 1250 } 1251 }); 1252 1253 /** 1254 * wp.media.controller.ReplaceAudio 1255 * 1256 * Replace a selected single audio file 1257 * 1258 * @constructor 1259 * @augments wp.media.controller.Library 1260 * @augments wp.media.controller.State 1261 * @augments Backbone.Model 1262 */ 1263 media.controller.ReplaceAudio = media.controller.Library.extend({ 1264 defaults: _.defaults({ 1265 id: 'replace-audio', 1266 filterable: 'uploaded', 1267 multiple: false, 1268 toolbar: 'replace', 1269 title: l10n.replaceAudioTitle, 1270 priority: 60, 1271 syncSelection: false 1272 }, media.controller.Library.prototype.defaults ), 1273 1274 initialize: function( options ) { 1275 var library, comparator; 1276 1277 this.audio = options.audio; 1278 // If we haven't been provided a `library`, create a `Selection`. 1279 if ( ! this.get('library') ) { 1280 this.set( 'library', media.query({ type: 'audio' }) ); 1281 } 1282 1283 media.controller.Library.prototype.initialize.apply( this, arguments ); 1284 1285 library = this.get('library'); 1286 comparator = library.comparator; 1287 1288 // Overload the library's comparator to push items that are not in 1289 // the mirrored query to the front of the aggregate collection. 1290 library.comparator = function( a, b ) { 1291 var aInQuery = !! this.mirroring.get( a.cid ), 1292 bInQuery = !! this.mirroring.get( b.cid ); 1293 1294 if ( ! aInQuery && bInQuery ) { 1295 return -1; 1296 } else if ( aInQuery && ! bInQuery ) { 1297 return 1; 1298 } else { 1299 return comparator.apply( this, arguments ); 1300 } 1301 }; 1302 1303 // Add all items in the selection to the library, so any featured 1304 // images that are not initially loaded still appear. 1305 library.observe( this.get('selection') ); 1306 }, 1307 1308 activate: function() { 1309 this.updateSelection(); 1310 media.controller.Library.prototype.activate.apply( this, arguments ); 1311 }, 1312 1313 updateSelection: function() { 1314 var selection = this.get('selection'), 1315 attachment = this.audio.attachment; 1240 attachment; 1241 1242 attachment = this.media.attachment; 1316 1243 1317 1244 selection.reset( attachment ? [ attachment ] : [] ); … … 2795 2722 2796 2723 initialize: function( options ) { 2797 this. audio = new media.model.PostAudio( options.metadata );2798 this.options.selection = new media.model.Selection( this. audio.attachment, { multiple: false } );2724 this.media = new media.model.PostMedia( options.metadata ); 2725 this.options.selection = new media.model.Selection( this.media.attachment, { multiple: false } ); 2799 2726 media.view.MediaFrame.Select.prototype.initialize.apply( this, arguments ); 2800 2727 }, … … 2807 2734 this.on( 'toolbar:render:audio-details', this.renderAudioDetailsToolbar, this ); 2808 2735 // override the select toolbar 2809 this.on( 'toolbar:render:replace', this.renderReplaceAudioToolbar, this ); 2736 this.on( 'toolbar:render:replace-audio', this.renderReplaceAudioToolbar, this ); 2737 this.on( 'toolbar:render:add-audio-source', this.renderAddAudioSourceToolbar, this ); 2810 2738 }, 2811 2739 2812 2740 createStates: function() { 2813 2741 this.states.add([ 2814 new media.controller.AudioDetails( {2815 audio: this.audio,2742 new media.controller.AudioDetails( { 2743 media: this.media, 2816 2744 editable: false, 2817 2745 menu: 'audio-details' 2818 }), 2819 new media.controller.ReplaceAudio({ 2746 } ), 2747 2748 new media.controller.MediaLibrary( { 2749 type: 'audio', 2820 2750 id: 'replace-audio', 2821 library: media.query( { type: 'audio' } ), 2822 audio: this.audio, 2823 multiple: false, 2824 title: l10n.audioReplaceTitle, 2825 menu: 'audio-details', 2826 toolbar: 'replace', 2827 priority: 80, 2828 displaySettings: true 2829 }) 2751 title: l10n.audioReplaceTitle, 2752 toolbar: 'replace-audio', 2753 media: this.media, 2754 menu: 'audio-details' 2755 } ), 2756 2757 2758 new media.controller.MediaLibrary( { 2759 type: 'audio', 2760 id: 'add-audio-source', 2761 title: l10n.audioAddSourceTitle, 2762 toolbar: 'add-audio-source', 2763 media: this.media, 2764 menu: 'audio-details' 2765 } ) 2830 2766 ]); 2831 2767 }, … … 2834 2770 var view = new media.view.AudioDetails({ 2835 2771 controller: this, 2836 model: this.state(). audio,2837 attachment: this.state(). audio.attachment2772 model: this.state().media, 2773 attachment: this.state().media.attachment 2838 2774 }).render(); 2839 2775 … … 2881 2817 controller.close(); 2882 2818 2883 // not sure if we want to use wp.media.string.image which will create a shortcode or 2884 // perhaps wp.html.string to at least to build the <img /> 2885 state.trigger( 'update', controller.audio.toJSON() ); 2819 state.trigger( 'update', controller.media.toJSON() ); 2886 2820 2887 2821 // Restore and reset the default state. … … 2909 2843 attachment = selection.single(); 2910 2844 2911 controller. audio.changeAttachment( attachment, state.display( attachment ) );2845 controller.media.changeAttachment( attachment, state.display( attachment ) ); 2912 2846 2913 2847 // not sure if we want to use wp.media.string.image which will create a shortcode or 2914 2848 // perhaps wp.html.string to at least to build the <img /> 2915 state.trigger( 'replace', controller.audio.toJSON() ); 2849 state.trigger( 'replace', controller.media.toJSON() ); 2850 2851 // Restore and reset the default state. 2852 controller.setState( controller.options.state ); 2853 controller.reset(); 2854 } 2855 } 2856 } 2857 }) ); 2858 }, 2859 2860 renderAddAudioSourceToolbar: function() { 2861 this.toolbar.set( new media.view.Toolbar({ 2862 controller: this, 2863 items: { 2864 replace: { 2865 style: 'primary', 2866 text: l10n.audioAddSourceTitle, 2867 priority: 80, 2868 2869 click: function() { 2870 var controller = this.controller, 2871 state = controller.state(), 2872 selection = state.get( 'selection' ), 2873 attachment = selection.single(); 2874 2875 controller.media.setSource( attachment, state.display( attachment ) ); 2876 2877 state.trigger( 'add-source', controller.media.toJSON() ); 2916 2878 2917 2879 // Restore and reset the default state. … … 2950 2912 2951 2913 initialize: function( options ) { 2952 this. video = new media.model.PostVideo( options.metadata );2953 this.options.selection = new media.model.Selection( this. video.attachment, { multiple: false } );2914 this.media = new media.model.PostMedia( options.metadata ); 2915 this.options.selection = new media.model.Selection( this.media.attachment, { multiple: false } ); 2954 2916 media.view.MediaFrame.Select.prototype.initialize.apply( this, arguments ); 2955 2917 }, … … 2962 2924 this.on( 'toolbar:render:video-details', this.renderVideoDetailsToolbar, this ); 2963 2925 // override the select toolbar 2964 this.on( 'toolbar:render:replace', this.renderReplaceVideoToolbar, this ); 2926 this.on( 'toolbar:render:replace-video', this.renderReplaceVideoToolbar, this ); 2927 this.on( 'toolbar:render:add-video-source', this.renderAddVideoSourceToolbar, this ); 2928 this.on( 'toolbar:render:select-poster-image', this.renderSelectPosterImageToolbar, this ); 2965 2929 }, 2966 2930 … … 2968 2932 this.states.add([ 2969 2933 new media.controller.VideoDetails({ 2970 video: this.video,2934 media: this.media, 2971 2935 editable: false, 2972 2936 menu: 'video-details' 2973 2937 }), 2974 new media.controller.ReplaceVideo({ 2938 2939 new media.controller.MediaLibrary( { 2940 type: 'video', 2975 2941 id: 'replace-video', 2976 library: media.query( { type: 'video' } ), 2977 video: this.video, 2978 multiple: false, 2979 title: l10n.videoReplaceTitle, 2980 menu: 'video-details', 2981 toolbar: 'replace', 2982 priority: 80, 2983 displaySettings: true 2984 }) 2942 title: l10n.videoReplaceTitle, 2943 toolbar: 'replace-video', 2944 media: this.media, 2945 menu: 'video-details' 2946 } ), 2947 2948 new media.controller.MediaLibrary( { 2949 type: 'video', 2950 id: 'add-video-source', 2951 title: l10n.videoAddSourceTitle, 2952 toolbar: 'add-video-source', 2953 media: this.media, 2954 menu: 'video-details' 2955 } ), 2956 2957 new media.controller.MediaLibrary( { 2958 type: 'image', 2959 id: 'select-poster-image', 2960 title: l10n.videoSelectPosterImageTitle, 2961 toolbar: 'select-poster-image', 2962 media: this.media, 2963 menu: 'video-details' 2964 } ) 2985 2965 ]); 2986 2966 }, … … 2989 2969 var view = new media.view.VideoDetails({ 2990 2970 controller: this, 2991 model: this.state(). video,2992 attachment: this.state(). video.attachment2971 model: this.state().media, 2972 attachment: this.state().media.attachment 2993 2973 }).render(); 2994 2974 … … 3038 3018 // not sure if we want to use wp.media.string.image which will create a shortcode or 3039 3019 // perhaps wp.html.string to at least to build the <img /> 3040 state.trigger( 'update', controller. video.toJSON() );3020 state.trigger( 'update', controller.media.toJSON() ); 3041 3021 3042 3022 // Restore and reset the default state. … … 3064 3044 attachment = selection.single(); 3065 3045 3066 controller.video.changeAttachment( attachment, state.display( attachment ) ); 3067 3068 state.trigger( 'replace', controller.video.toJSON() ); 3046 controller.media.changeAttachment( attachment, state.display( attachment ) ); 3047 3048 state.trigger( 'replace', controller.media.toJSON() ); 3049 3050 // Restore and reset the default state. 3051 controller.setState( controller.options.state ); 3052 controller.reset(); 3053 } 3054 } 3055 } 3056 }) ); 3057 }, 3058 3059 renderAddVideoSourceToolbar: function() { 3060 this.toolbar.set( new media.view.Toolbar({ 3061 controller: this, 3062 items: { 3063 replace: { 3064 style: 'primary', 3065 text: l10n.videoAddSourceTitle, 3066 priority: 80, 3067 3068 click: function() { 3069 var controller = this.controller, 3070 state = controller.state(), 3071 selection = state.get( 'selection' ), 3072 attachment = selection.single(); 3073 3074 controller.media.setSource( attachment, state.display( attachment ) ); 3075 3076 state.trigger( 'add-source', controller.media.toJSON() ); 3077 3078 // Restore and reset the default state. 3079 controller.setState( controller.options.state ); 3080 controller.reset(); 3081 } 3082 } 3083 } 3084 }) ); 3085 }, 3086 3087 renderSelectPosterImageToolbar: function() { 3088 this.toolbar.set( new media.view.Toolbar({ 3089 controller: this, 3090 items: { 3091 replace: { 3092 style: 'primary', 3093 text: l10n.videoSelectPosterImageTitle, 3094 priority: 80, 3095 3096 click: function() { 3097 var controller = this.controller, 3098 state = controller.state(), 3099 selection = state.get( 'selection' ), 3100 attachment = selection.single(); 3101 3102 controller.media.set( 'poster', attachment.get( 'url' ) ); 3103 3104 state.trigger( 'set-poster-image', controller.media.toJSON() ); 3069 3105 3070 3106 // Restore and reset the default state. … … 6416 6452 media.view.MediaDetails = media.view.Settings.AttachmentDisplay.extend({ 6417 6453 initialize: function() { 6418 _.bindAll(this, 'success', ' close');6419 6420 this.listenTo( this.controller, 'close', this. close);6454 _.bindAll(this, 'success', 'unsetPlayer'); 6455 6456 this.listenTo( this.controller, 'close', this.unsetPlayer ); 6421 6457 this.on( 'ready', this.setPlayer ); 6458 this.on( 'media:setting:remove', this.unsetPlayer ); 6459 this.on( 'media:setting:remove', this.render ); 6460 this.on( 'media:setting:remove', this.setPlayer ); 6461 this.events = _.extend( this.events, { 6462 'click .remove-setting' : 'removeSetting' 6463 } ); 6422 6464 6423 6465 media.view.Settings.AttachmentDisplay.prototype.initialize.apply( this, arguments ); … … 6455 6497 }, 6456 6498 6499 removeSetting : function (e) { 6500 var setting = $( e.currentTarget ).parent(); 6501 6502 this.model.unset( setting.find( 'input' ).data( 'setting' ) ); 6503 6504 setting.remove(); 6505 6506 this.trigger( 'media:setting:remove', this ); 6507 }, 6508 6457 6509 setPlayer : function () { 6458 6510 if ( ! this.player && this.media ) { … … 6473 6525 * its container and re-add it to the DOM. 6474 6526 */ 6475 remove : function() {6527 removePlayer: function() { 6476 6528 var t = this.player, featureIndex, feature; 6477 6529 … … 6501 6553 }, 6502 6554 6503 close: function() {6555 unsetPlayer : function() { 6504 6556 if ( this.player ) { 6505 6557 if ( _.isUndefined( this.mejs.pluginType ) ) { 6506 6558 this.mejs.pause(); 6507 6559 } 6508 this.remove ();6560 this.removePlayer(); 6509 6561 this.player = false; 6510 6562 } … … 6561 6613 6562 6614 setMedia: function() { 6563 var audio = this.$('.wp-audio-shortcode').get(0); 6564 6565 this.media = this.prepareSrc( audio ); 6615 var audio = this.$('.wp-audio-shortcode'); 6616 6617 if ( audio.find( 'source' ).length ) { 6618 if ( audio.is(':hidden') ) { 6619 audio.show(); 6620 } 6621 this.media = this.prepareSrc( audio.get(0) ); 6622 } else { 6623 audio.hide(); 6624 this.media = false; 6625 } 6566 6626 6567 6627 return this; … … 6587 6647 var video = this.$('.wp-video-shortcode'); 6588 6648 6589 if ( ! video.hasClass('youtube-video') ) { 6590 video = this.prepareSrc( video.get(0) ); 6649 if ( video.find( 'source' ).length ) { 6650 if ( video.is(':hidden') ) { 6651 video.show(); 6652 } 6653 6654 if ( ! video.hasClass('youtube-video') ) { 6655 this.media = this.prepareSrc( video.get(0) ); 6656 } else { 6657 this.media = video.get(0); 6658 } 6591 6659 } else { 6592 video = video.get(0); 6593 } 6594 6595 this.media = video; 6660 video.hide(); 6661 this.media = false; 6662 } 6596 6663 6597 6664 return this; -
trunk/src/wp-includes/js/mediaelement/wp-mediaelement.css
r27411 r27478 15 15 } 16 16 17 . audio-details .wp-audio-shortcode {17 .media-embed-details .wp-audio-shortcode { 18 18 display: inline-block; 19 19 max-width: 400px; 20 20 } 21 21 22 .video-details .embed-video-settings, 23 .audio-details .embed-audio-settings { 24 top: 10px; 22 .media-embed-details .embed-media-settings { 23 padding-top: 0; 25 24 } 26 25 27 .video-details .embed-video-settings .checkbox-setting, 28 .audio-details .embed-audio-settings .checkbox-setting { 26 .media-embed-details .instructions { 27 padding: 16px; 28 max-width: 600px; 29 } 30 31 .media-embed-details .setting a { 32 color: #a00; 33 } 34 35 .media-embed-details .setting a:hover { 36 color: #f00; 37 } 38 39 .media-embed-details .embed-media-settings { 40 top: 70px; 41 } 42 43 .media-embed-details .embed-media-settings .checkbox-setting { 29 44 width: 100px; 30 45 clear: none; -
trunk/src/wp-includes/js/tinymce/plugins/wpgallery/plugin.js
r27440 r27478 98 98 frame.detach(); 99 99 } ); 100 frame.state( 'video-details' ).on( 'update replace ', function ( selection ) {100 frame.state( 'video-details' ).on( 'update replace add-source select-poster-image', function ( selection ) { 101 101 var shortcode = wp.media.video.shortcode( selection ); 102 102 editor.dom.setAttrib( node, 'data-wp-media', window.encodeURIComponent( shortcode ) ); … … 109 109 frame.detach(); 110 110 } ); 111 frame.state( 'audio-details' ).on( 'update replace ', function ( selection ) {111 frame.state( 'audio-details' ).on( 'update replace add-source', function ( selection ) { 112 112 var shortcode = wp.media.audio.shortcode( selection ); 113 113 editor.dom.setAttrib( node, 'data-wp-media', window.encodeURIComponent( shortcode ) ); -
trunk/src/wp-includes/media-template.php
r27476 r27478 664 664 <script type="text/html" id="tmpl-audio-details"> 665 665 <?php $audio_types = wp_get_audio_extensions(); ?> 666 <div class="media-embed"> 666 <div class="media-embed media-embed-details"> 667 <div class="instructions media-instructions">{{{ wp.media.view.l10n.audioDetailsText }}}</div> 667 668 <div class="embed-media-settings embed-audio-settings"> 668 669 <audio controls … … 690 691 <span>SRC</span> 691 692 <input type="text" disabled="disabled" data-setting="src" value="{{ data.model.src }}" /> 693 <a class="remove-setting">{{{ wp.media.view.l10n.audioRemoveSource }}}</a> 692 694 </label> 693 695 <# } #> … … 699 701 <span><?php echo strtoupper( $type ) ?></span> 700 702 <input type="text" disabled="disabled" data-setting="<?php echo $type ?>" value="{{ data.model.<?php echo $type ?> }}" /> 703 <a class="remove-setting">{{{ wp.media.view.l10n.audioRemoveSource }}}</a> 701 704 </label> 702 705 <# } #> … … 728 731 <script type="text/html" id="tmpl-video-details"> 729 732 <?php $video_types = wp_get_video_extensions(); ?> 730 <div class="media-embed"> 733 <div class="media-embed media-embed-details"> 734 <div class="instructions media-instructions">{{{ wp.media.view.l10n.videoDetailsText }}}</div> 731 735 <div class="embed-media-settings embed-video-settings"> 732 736 <div class="wp-video-holder"> 733 737 <# 734 var w = ! data.model.width || data.model.width > 640 ? 640 : data.model.width, 738 var isYouTube = ! _.isEmpty( data.model.src ) && data.model.src.match(/youtube|youtu\.be/); 739 w = ! data.model.width || data.model.width > 640 ? 640 : data.model.width, 735 740 h = ! data.model.height ? 360 : data.model.height; 736 741 … … 738 743 h = Math.ceil( ( h * w ) / data.model.width ); 739 744 } 745 740 746 #> 741 747 <video controls 742 class="wp-video-shortcode youtube-video"748 class="wp-video-shortcode{{ isYouTube ? ' youtube-video' : '' }}" 743 749 width="{{ w }}" 744 750 height="{{ h }}" … … 763 769 > 764 770 <# if ( ! _.isEmpty( data.model.src ) ) { 765 if ( data.model.src.match(/youtube|youtu\.be/)) { #>771 if ( isYouTube ) { #> 766 772 <source src="{{ data.model.src }}" type="video/youtube" /> 767 773 <# } else { #> … … 780 786 <span>SRC</span> 781 787 <input type="text" disabled="disabled" data-setting="src" value="{{ data.model.src }}" /> 788 <a class="remove-setting">{{{ wp.media.view.l10n.videoRemoveSource }}}</a> 782 789 </label> 783 790 <# } #> … … 787 794 <span><?php echo strtoupper( $type ) ?></span> 788 795 <input type="text" disabled="disabled" data-setting="<?php echo $type ?>" value="{{ data.model.<?php echo $type ?> }}" /> 796 <a class="remove-setting">{{{ wp.media.view.l10n.videoRemoveSource }}}</a> 789 797 </label> 790 798 <# } #> 791 799 <?php endforeach ?> 792 800 </div> 801 <# if ( ! _.isEmpty( data.model.poster ) ) { #> 793 802 <label class="setting"> 794 803 <span><?php _e( 'Poster Image' ); ?></span> 795 <input type="text" data-setting="poster" value="{{ data.model.poster }}" /> 796 </label> 804 <input type="text" disabled="disabled" data-setting="poster" value="{{ data.model.poster }}" /> 805 <a class="remove-setting">{{{ wp.media.view.l10n.videoRemovePoster }}}</a> 806 </label> 807 <# } #> 797 808 <div class="setting preload"> 798 809 <span><?php _e( 'Preload' ); ?></span> -
trunk/src/wp-includes/media.php
r27476 r27478 2444 2444 'editImage' => __( 'Edit Image' ), 2445 2445 2446 // Edit Image2446 // Edit Audio 2447 2447 'audioDetailsTitle' => __( 'Audio Details' ), 2448 2448 'audioReplaceTitle' => __( 'Replace Audio' ), 2449 'audioAddSourceTitle' => __( 'Add Audio Source' ), 2449 2450 'audioDetailsCancel' => __( 'Cancel Edit' ), 2450 2451 // Edit Image 2451 'audioDetailsText' => __( '"Replace Audio" will remove all associated source files when you update. ' . 2452 '"Add Audio Source" allows you to specify alternate sources for maximum native HTML5 audio playback.' ), 2453 'audioRemoveSource' => __( 'Remove Audio Source' ), 2454 2455 // Edit Video 2452 2456 'videoDetailsTitle' => __( 'Video Details' ), 2453 2457 'videoReplaceTitle' => __( 'Replace Video' ), 2458 'videoAddSourceTitle' => __( 'Add Video Source' ), 2454 2459 'videoDetailsCancel' => __( 'Cancel Edit' ), 2460 'videoDetailsText' => __( '"Replace Video" will remove all associated source files when you update. ' . 2461 '"Add Video Source" allows you to specify alternate sources for maximum native HTML5 video playback.' ), 2462 'videoRemoveSource' => __( 'Remove Video Source' ), 2463 'videoSelectPosterImageTitle' => _( 'Select Poster Image' ), 2464 'videoRemovePoster' => __( 'Remove Poster Image' ), 2455 2465 2456 2466 // Playlist
Note: See TracChangeset
for help on using the changeset viewer.