Changeset 27362
- Timestamp:
- 03/02/2014 11:10:47 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/js/media-views.js
r27361 r27362 763 763 * wp.media.controller.CollectionEdit 764 764 * 765 * @static766 * @param {string} prop The shortcode slug767 * @param {object} args768 * @returns {wp.media.controller.Library}769 */770 media.controller.CollectionEdit = function ( prop, args ) {771 /**772 * @constructor773 * @augments wp.media.controller.Library774 * @augments wp.media.controller.State775 * @augments Backbone.Model776 */777 return media.controller.Library.extend({778 defaults : _.defaults(args.defaults || {}, {779 id: prop + '-edit',780 toolbar: prop + '-edit',781 multiple: false,782 describe: true,783 edge: 199,784 editing: false,785 sortable: true,786 searchable: false,787 content: 'browse',788 priority: 60,789 dragInfo: true,790 791 // Don't sync the selection, as the Edit {Collection} library792 // *is* the selection.793 syncSelection: false794 }),795 796 initialize: function() {797 // If we haven't been provided a `library`, create a `Selection`.798 if ( ! this.get('library') ) {799 this.set( 'library', new media.model.Selection() );800 }801 // The single `Attachment` view to be used in the `Attachments` view.802 if ( ! this.get('AttachmentView') ) {803 this.set( 'AttachmentView', media.view.Attachment.EditLibrary );804 }805 media.controller.Library.prototype.initialize.apply( this, arguments );806 },807 808 activate: function() {809 var library = this.get('library');810 811 // Limit the library to images only.812 library.props.set( 'type', args.type );813 814 // Watch for uploaded attachments.815 this.get('library').observe( wp.Uploader.queue );816 817 this.frame.on( 'content:render:browse', this.settings, this );818 819 media.controller.Library.prototype.activate.apply( this, arguments );820 },821 822 deactivate: function() {823 // Stop watching for uploaded attachments.824 this.get('library').unobserve( wp.Uploader.queue );825 826 this.frame.off( 'content:render:browse', this.settings, this );827 828 media.controller.Library.prototype.deactivate.apply( this, arguments );829 },830 831 settings: function( browser ) {832 var library = this.get('library'), obj = {};833 834 if ( ! library || ! browser ) {835 return;836 }837 838 library[ prop ] = library[ prop ] || new Backbone.Model();839 840 obj[ prop ] = new media.view.Settings[ args.settings ]({841 controller: this,842 model: library[ prop ],843 priority: 40844 });845 846 browser.sidebar.set( obj );847 848 if ( args.dragInfoText ) {849 browser.toolbar.set( 'dragInfo', new media.View({850 el: $( '<div class="instructions">' + args.dragInfoText + '</div>' )[0],851 priority: -40852 }) );853 }854 855 browser.toolbar.set( 'reverse', {856 text: l10n.reverseOrder,857 priority: 80,858 859 click: function() {860 library.reset( library.toArray().reverse() );861 }862 });863 }864 });865 };866 867 /**868 * wp.media.controller.CollectionAdd869 *870 765 * @constructor 871 766 * @augments wp.media.controller.Library … … 873 768 * @augments Backbone.Model 874 769 */ 875 media.controller.CollectionAdd = function (attributes) { 876 var ExtendedLibrary, extended = _.extend( attributes, { 877 defaults: _.defaults( { 878 id: attributes.tag + '-library', 879 title: attributes.title, 880 menu: attributes.tag, 881 toolbar: attributes.tag + '-add', 882 filterable: 'uploaded', 883 multiple: 'add', 884 priority: 100, 885 syncSelection: false 886 }, media.controller.Library.prototype.defaults ), 887 888 initialize: function() { 889 // If we haven't been provided a `library`, create a `Selection`. 890 if ( ! this.get('library') ) { 891 this.set( 'library', media.query({ type: this.type }) ); 770 media.controller.CollectionEdit = media.controller.Library.extend({ 771 defaults: { 772 multiple: false, 773 describe: true, 774 edge: 199, 775 editing: false, 776 sortable: true, 777 searchable: false, 778 content: 'browse', 779 priority: 60, 780 dragInfo: true, 781 SettingsView: false, 782 783 // Don't sync the selection, as the Edit {Collection} library 784 // *is* the selection. 785 syncSelection: false 786 }, 787 788 initialize: function() { 789 var collectionType = this.get('collectionType'); 790 791 this.set( 'id', collectionType + '-edit' ); 792 this.set( 'toolbar', collectionType + '-edit' ); 793 794 // If we haven't been provided a `library`, create a `Selection`. 795 if ( ! this.get('library') ) { 796 this.set( 'library', new media.model.Selection() ); 797 } 798 // The single `Attachment` view to be used in the `Attachments` view. 799 if ( ! this.get('AttachmentView') ) { 800 this.set( 'AttachmentView', media.view.Attachment.EditLibrary ); 801 } 802 media.controller.Library.prototype.initialize.apply( this, arguments ); 803 }, 804 805 activate: function() { 806 var library = this.get('library'); 807 808 // Limit the library to images only. 809 library.props.set( 'type', this.get( 'type' ) ); 810 811 // Watch for uploaded attachments. 812 this.get('library').observe( wp.Uploader.queue ); 813 814 this.frame.on( 'content:render:browse', this.renderSettings, this ); 815 816 media.controller.Library.prototype.activate.apply( this, arguments ); 817 }, 818 819 deactivate: function() { 820 // Stop watching for uploaded attachments. 821 this.get('library').unobserve( wp.Uploader.queue ); 822 823 this.frame.off( 'content:render:browse', this.renderSettings, this ); 824 825 media.controller.Library.prototype.deactivate.apply( this, arguments ); 826 }, 827 828 renderSettings: function( browser ) { 829 var library = this.get('library'), 830 collectionType = this.get('collectionType'), 831 dragInfoText = this.get('dragInfoText'), 832 SettingsView = this.get('SettingsView'), 833 obj = {}; 834 835 if ( ! library || ! browser ) { 836 return; 837 } 838 839 library[ collectionType ] = library[ collectionType ] || new Backbone.Model(); 840 841 obj[ collectionType ] = new SettingsView({ 842 controller: this, 843 model: library[ collectionType ], 844 priority: 40 845 }); 846 847 browser.sidebar.set( obj ); 848 849 if ( dragInfoText ) { 850 browser.toolbar.set( 'dragInfo', new media.View({ 851 el: $( '<div class="instructions">' + dragInfoText + '</div>' )[0], 852 priority: -40 853 }) ); 854 } 855 856 browser.toolbar.set( 'reverse', { 857 text: l10n.reverseOrder, 858 priority: 80, 859 860 click: function() { 861 library.reset( library.toArray().reverse() ); 892 862 } 893 media.controller.Library.prototype.initialize.apply( this, arguments ); 894 }, 895 896 activate: function() { 897 var library = this.get('library'), 898 edit = this.frame.state( this.tag + '-edit' ).get('library'); 899 900 if ( this.editLibrary && this.editLibrary !== edit ) { 901 library.unobserve( this.editLibrary ); 902 } 903 904 // Accepts attachments that exist in the original library and 905 // that do not exist in gallery's library. 906 library.validator = function( attachment ) { 907 return !! this.mirroring.get( attachment.cid ) && ! edit.get( attachment.cid ) && media.model.Selection.prototype.validator.apply( this, arguments ); 908 }; 909 910 // Reset the library to ensure that all attachments are re-added 911 // to the collection. Do so silently, as calling `observe` will 912 // trigger the `reset` event. 913 library.reset( library.mirroring.models, { silent: true }); 914 library.observe( edit ); 915 this.editLibrary = edit; 916 917 media.controller.Library.prototype.activate.apply( this, arguments ); 918 } 919 } ); 920 ExtendedLibrary = media.controller.Library.extend( extended ); 921 922 return new ExtendedLibrary(); 923 }; 924 925 // wp.media.controller.GalleryEdit 926 // ------------------------------- 927 media.controller.GalleryEdit = media.controller.CollectionEdit( 'gallery', { 928 type: 'image', 929 settings: 'Gallery', 930 defaults: { 931 title: l10n.editGalleryTitle 863 }); 932 864 } 933 865 }); 934 866 935 // wp.media.controller.PlaylistEdit 936 // ------------------------------- 937 media.controller.PlaylistEdit = media.controller.CollectionEdit( 'playlist', { 938 type: 'audio', 939 settings: 'Playlist', 940 dragInfoText: l10n.playlistDragInfo, 941 defaults: { 942 title: l10n.editPlaylistTitle, 943 dragInfo : false 944 } 945 }); 946 947 // wp.media.controller.VideoPlaylistEdit 948 // ------------------------------- 949 media.controller.VideoPlaylistEdit = media.controller.CollectionEdit( 'video-playlist', { 950 type: 'video', 951 settings: 'Playlist', 952 dragInfoText: l10n.videoPlaylistDragInfo, 953 defaults: { 954 title: l10n.editVideoPlaylistTitle, 955 dragInfo : false 867 /** 868 * wp.media.controller.CollectionAdd 869 * 870 * @constructor 871 * @augments wp.media.controller.Library 872 * @augments wp.media.controller.State 873 * @augments Backbone.Model 874 */ 875 media.controller.CollectionAdd = media.controller.Library.extend({ 876 defaults: _.defaults( { 877 filterable: 'uploaded', 878 multiple: 'add', 879 priority: 100, 880 syncSelection: false 881 }, media.controller.Library.prototype.defaults ), 882 883 initialize: function() { 884 var collectionType = this.get('collectionType'); 885 886 this.set( 'id', collectionType + '-library' ); 887 this.set( 'toolbar', collectionType + '-add' ); 888 this.set( 'menu', collectionType ); 889 890 // If we haven't been provided a `library`, create a `Selection`. 891 if ( ! this.get('library') ) { 892 this.set( 'library', media.query({ type: this.get('type') }) ); 893 } 894 media.controller.Library.prototype.initialize.apply( this, arguments ); 895 }, 896 897 activate: function() { 898 var library = this.get('library'), 899 editLibrary = this.get('editLibrary'), 900 edit = this.frame.state( this.get('collectionType') + '-edit' ).get('library'); 901 902 if ( editLibrary && editLibrary !== edit ) { 903 library.unobserve( editLibrary ); 904 } 905 906 // Accepts attachments that exist in the original library and 907 // that do not exist in gallery's library. 908 library.validator = function( attachment ) { 909 return !! this.mirroring.get( attachment.cid ) && ! edit.get( attachment.cid ) && media.model.Selection.prototype.validator.apply( this, arguments ); 910 }; 911 912 // Reset the library to ensure that all attachments are re-added 913 // to the collection. Do so silently, as calling `observe` will 914 // trigger the `reset` event. 915 library.reset( library.mirroring.models, { silent: true }); 916 library.observe( edit ); 917 this.set('editLibrary', edit); 918 919 media.controller.Library.prototype.activate.apply( this, arguments ); 956 920 } 957 921 }); … … 1777 1741 1778 1742 // Gallery states. 1779 new media.controller.GalleryEdit({ 1780 library: options.selection, 1781 editing: options.editing, 1782 menu: 'gallery' 1743 new media.controller.CollectionEdit({ 1744 type: 'image', 1745 collectionType: 'gallery', 1746 title: l10n.editGalleryTitle, 1747 SettingsView: media.view.Settings.Gallery, 1748 library: options.selection, 1749 editing: options.editing, 1750 menu: 'gallery' 1783 1751 }), 1784 1752 1785 1753 new media.controller.CollectionAdd({ 1786 t ag: 'gallery',1787 type: 'image',1788 title: l10n.addToGalleryTitle1754 type: 'image', 1755 collectionType: 'gallery', 1756 title: l10n.addToGalleryTitle 1789 1757 }), 1790 1758 … … 1804 1772 1805 1773 // Playlist states. 1806 new media.controller.PlaylistEdit({ 1807 library: options.selection, 1808 editing: options.editing, 1809 menu: 'playlist' 1774 new media.controller.CollectionEdit({ 1775 type: 'audio', 1776 collectionType: 'playlist', 1777 title: l10n.editPlaylistTitle, 1778 SettingsView: media.view.Settings.Playlist, 1779 library: options.selection, 1780 editing: options.editing, 1781 menu: 'playlist', 1782 dragInfoText: l10n.playlistDragInfo, 1783 dragInfo: false 1810 1784 }), 1811 1785 1812 1786 new media.controller.CollectionAdd({ 1813 tag: 'playlist',1814 1787 type: 'audio', 1788 collectionType: 'playlist', 1815 1789 title: l10n.addToPlaylistTitle 1816 1790 }), … … 1831 1805 1832 1806 // Video Playlist states. 1833 new media.controller.VideoPlaylistEdit({ 1834 library: options.selection, 1835 editing: options.editing, 1836 menu: 'video-playlist' 1807 new media.controller.CollectionEdit({ 1808 type: 'video', 1809 collectionType: 'video-playlist', 1810 title: l10n.editVideoPlaylistTitle, 1811 SettingsView: media.view.Settings.Playlist, 1812 library: options.selection, 1813 editing: options.editing, 1814 menu: 'video-playlist', 1815 dragInfoText: l10n.videoPlaylistDragInfo, 1816 dragInfo: false 1837 1817 }), 1838 1818 1839 1819 new media.controller.CollectionAdd({ 1840 t ag: 'video-playlist',1841 type: 'video',1842 title: l10n.addToVideoPlaylistTitle1820 type: 'video', 1821 collectionType: 'video-playlist', 1822 title: l10n.addToVideoPlaylistTitle 1843 1823 }) 1844 1824 ]);
Note: See TracChangeset
for help on using the changeset viewer.