Commit aa13814c authored by Scott Taylor's avatar Scott Taylor
Browse files

Register `wp.media.controller.GalleryEdit` and...

Register `wp.media.controller.GalleryEdit` and `wp.media.controller.GalleryAdd` using the new `wp.media.controller.Collection*` abstraction code.

See #26631.


Built from https://develop.svn.wordpress.org/trunk@27215


git-svn-id: https://core.svn.wordpress.org/trunk@27072 1a063a9b-81f0-0310-95a4-ce76da25c4cd
parent 7d4927f6
Loading
Loading
Loading
Loading
+12 −149
Original line number Diff line number Diff line
@@ -923,161 +923,24 @@
 		});
 	};

	/**
	 * wp.media.controller.GalleryEdit
	 *
	 * @constructor
	 * @augments wp.media.controller.Library
	 * @augments wp.media.controller.State
	 * @augments Backbone.Model
	 */
	media.controller.GalleryEdit = media.controller.Library.extend({
	// wp.media.controller.GalleryEdit
	// -------------------------------
	media.controller.GalleryEdit = media.controller.CollectionEdit( 'gallery', {
		type: 'image',
		settings: 'Gallery',
		defaults: {
			id:         'gallery-edit',
			multiple:   false,
			describe:   true,
			edge:       199,
			editing:    false,
			sortable:   true,
			searchable: false,
			toolbar:    'gallery-edit',
			content:    'browse',
			title:      l10n.editGalleryTitle,
			priority:   60,
			dragInfo:   true,

			// Don't sync the selection, as the Edit Gallery library
			// *is* the selection.
			syncSelection: false
		},

		initialize: function() {
			// If we haven't been provided a `library`, create a `Selection`.
			if ( ! this.get('library') ) {
				this.set( 'library', new media.model.Selection() );
			}

			// The single `Attachment` view to be used in the `Attachments` view.
			if ( ! this.get('AttachmentView') ) {
				this.set( 'AttachmentView', media.view.Attachment.EditLibrary );
			}

			media.controller.Library.prototype.initialize.apply( this, arguments );
		},

		activate: function() {
			var library = this.get('library');

			// Limit the library to images only.
			library.props.set( 'type', 'image' );

			// Watch for uploaded attachments.
			this.get('library').observe( wp.Uploader.queue );

			this.frame.on( 'content:render:browse', this.gallerySettings, this );

			media.controller.Library.prototype.activate.apply( this, arguments );
		},

		deactivate: function() {
			// Stop watching for uploaded attachments.
			this.get('library').unobserve( wp.Uploader.queue );

			this.frame.off( 'content:render:browse', this.gallerySettings, this );

			media.controller.Library.prototype.deactivate.apply( this, arguments );
		},

		/**
		 * @param {Object} browser
		 */
		gallerySettings: function( browser ) {
			var library = this.get('library');

			if ( ! library || ! browser ) {
				return;
			}

			library.gallery = library.gallery || new Backbone.Model();

			browser.sidebar.set({
				gallery: new media.view.Settings.Gallery({
					controller: this,
					model:      library.gallery,
					priority:   40
				})
			});

			browser.toolbar.set( 'reverse', {
				text:     l10n.reverseOrder,
				priority: 80,

				click: function() {
					library.reset( library.toArray().reverse() );
				}
			});
			title: l10n.editGalleryTitle
		}
	});

	/**
	 * wp.media.controller.GalleryAdd
	 *
	 * @constructor
	 * @augments wp.media.controller.Library
	 * @augments wp.media.controller.State
	 * @augments Backbone.Model
	 */
	media.controller.GalleryAdd = media.controller.Library.extend({
		defaults: _.defaults({
			id:           'gallery-library',
			filterable:   'uploaded',
			multiple:     'add',
			menu:         'gallery',
			toolbar:      'gallery-add',
			title:        l10n.addToGalleryTitle,
			priority:     100,

			// Don't sync the selection, as the Edit Gallery library
			// *is* the selection.
			syncSelection: false
		}, media.controller.Library.prototype.defaults ),

		/**
		 * If we haven't been provided a `library`, create a `Selection`.
		 */
		initialize: function() {
			if ( ! this.get('library') ) {
				this.set( 'library', media.query({ type: 'image' }) );
			}
			media.controller.Library.prototype.initialize.apply( this, arguments );
		},

		activate: function() {
			var library = this.get('library'),
				edit    = this.frame.state('gallery-edit').get('library');

			if ( this.editLibrary && this.editLibrary !== edit ) {
				library.unobserve( this.editLibrary );
			}

			// Accepts attachments that exist in the original library and
			// that do not exist in gallery's library.
			library.validator = function( attachment ) {
				return !! this.mirroring.get( attachment.cid ) && ! edit.get( attachment.cid ) &&
					media.model.Selection.prototype.validator.apply( this, arguments );
			};

			// Reset the library to ensure that all attachments are re-added
			// to the collection. Do so silently, as calling `observe` will
			// trigger the `reset` event.
			library.reset( library.mirroring.models, { silent: true });
			library.observe( edit );
			this.editLibrary = edit;

			media.controller.Library.prototype.activate.apply( this, arguments );
	// wp.media.controller.GalleryAdd
	// ---------------------------------
	media.controller.GalleryAdd = media.controller.CollectionAdd( 'gallery', {
		type: 'image',
		defaults: {
			title: l10n.addToGalleryTitle
		}
	});

	/**
	 * wp.media.controller.FeaturedImage
	 *
+2 −2

File changed.

Preview size limit exceeded, changes collapsed.