Changeset 22467
- Timestamp:
- 11/08/2012 03:32:40 PM (11 years ago)
- Location:
- trunk/wp-includes/js
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/js/media-models.js
r22437 r22467 698 698 }); 699 699 700 /** 701 * wp.media.model.Composite 702 * 703 * Creates a model that can simultaneously pull from two or more collections. 704 */ 705 media.model.Composite = Attachments.extend({ 706 initialize: function( models, options ) { 707 this.observe( this, { silent: true }); 708 Attachments.prototype.initialize.apply( this, arguments ); 709 }, 710 711 evaluate: function( attachment, options ) { 712 var valid = this.validator( attachment ), 713 hasAttachment = !! this.getByCid( attachment.cid ); 714 715 if ( ! valid && hasAttachment ) { 716 this.remove( attachment, options ); 717 } else if ( valid && ! hasAttachment ) { 718 this.add( attachment, options ); 719 720 // If we haven't been silenced, resort the collection. 721 if ( this.comparator && ( ! options || ! options.silent ) ) 722 this.sort({ silent: true }); 723 } 724 725 return this; 726 }, 727 728 validator: function() { 729 return true; 730 }, 731 732 evaluateAll: function( attachments, options ) { 733 _.each( attachments.models, function( attachment ) { 734 this.evaluate( attachment, { silent: true }); 735 }, this ); 736 737 if ( this.comparator ) 738 this.sort( options ); 739 return this; 740 }, 741 742 observe: function( attachments, options ) { 743 var silent = options && options.silent; 744 745 attachments.on( 'add remove', silent ? this._evaluateSilentHandler : this._evaluateHandler, this ); 746 attachments.on( 'reset', silent ? this._evaluateAllSilentHandler : this._evaluateAllHandler, this ); 747 748 this.evaluateAll( attachments, options ); 749 }, 750 751 unobserve: function( attachments ) { 752 attachments.off( 'add remove', this._evaluateHandler, this ); 753 attachments.off( 'reset', this._evaluateAllHandler, this ); 754 }, 755 756 _evaluateHandler: function( attachment, attachments, options ) { 757 return this.evaluate( attachment, options ); 758 }, 759 760 _evaluateAllHandler: function( attachments, options ) { 761 return this.evaluateAll( attachments, options ); 762 }, 763 764 _evaluateSilentHandler: function( attachment, attachments, options ) { 765 return this.evaluate( attachment, _.defaults({ silent: true }, options ) ); 766 }, 767 768 _evaluateAllSilentHandler: function( attachments, options ) { 769 return this.evaluateAll( attachments, _.defaults({ silent: true }, options ) ); 770 } 771 }); 772 700 773 }(jQuery)); -
trunk/wp-includes/js/media-views.js
r22466 r22467 682 682 var state = this.get( id ), 683 683 original = state.get('_library'), 684 skeleton;684 composite; 685 685 686 686 // Remember the state's original library. … … 688 688 state.set( '_library', original = state.get('library') ); 689 689 690 // Create a skeletonlibrary in its place.691 skeleton = new Attachments( null, {690 // Create a composite library in its place. 691 composite = new media.model.Composite( null, { 692 692 props: _.pick( original.props.toJSON(), 'order', 'orderby' ) 693 693 }); 694 694 695 // Rejects attachments that do not exist in the original library696 // or that do exist editstate's library.697 skeleton.filters.difference= function( attachment ) {698 return ! original.getByCid( attachment.cid ) || !! editLibrary.getByCid( attachment.cid );695 // Accepts attachments that exist in the original library and 696 // that do not exist in the state's library. 697 composite.validator = function( attachment ) { 698 return !! original.getByCid( attachment.cid ) && ! editLibrary.getByCid( attachment.cid ); 699 699 }; 700 700 701 skeleton.evaluate = function( attachment ) { 702 var valid = ! this.validator( attachment ), 703 inSkeleton = !! this.getByCid( attachment.cid ); 704 705 if ( ! valid && inSkeleton ) 706 this.remove( attachment ); 707 else if ( valid && ! inSkeleton ) 708 this.add( attachment ).sort(); 709 710 return this; 711 }; 712 713 skeleton.evaluateAll = function ( attachments ) { 714 _.each( attachments.models, this.evaluate, this ); 715 return this; 716 }; 717 718 skeleton.on( 'add remove', skeleton.evaluate, skeleton ); 719 skeleton.on( 'reset', skeleton.evaluateAll, skeleton ); 720 editLibrary.on( 'add remove', skeleton.evaluate, skeleton ); 721 editLibrary.on( 'reset', skeleton.evaluateAll, skeleton ); 722 723 // Mirror the original library. 724 skeleton.mirror( original ); 725 726 // Ensure we've evaluated everything in the edit library. 727 skeleton.evaluateAll( editLibrary ); 728 729 state.set( 'library', skeleton ); 701 composite.observe( original ); 702 composite.observe( editLibrary ); 703 704 // When `more()` is triggered on the composite collection, 705 // pass the command over to the `original`, which will 706 // populate the query. 707 composite.more = _.bind( original.more, original ); 708 709 state.set( 'library', composite ); 730 710 }, this ); 731 711 },
Note: See TracChangeset
for help on using the changeset viewer.