|
292 | 292 | this.doSearch( 1 ); |
293 | 293 | }, |
294 | 294 |
|
| 295 | + isMenuItemAlreadyAdded: function(menuItem) { |
| 296 | + if ( ! this.currentMenuControl ) return false; |
| 297 | + var objectId = parseInt(menuItem.get('object_id'), 10); |
| 298 | + var object = menuItem.get('object'); |
| 299 | + var type = menuItem.get('type'); |
| 300 | + |
| 301 | + return this.currentMenuControl.getMenuItemControls().some(function(control) { |
| 302 | + var setting = control.setting(); |
| 303 | + return parseInt(setting.object_id, 10) === objectId && |
| 304 | + setting.object === object && |
| 305 | + setting.type === type; |
| 306 | + }); |
| 307 | + }, |
| 308 | + |
295 | 309 | // Get search results. |
296 | 310 | doSearch: function( page ) { |
297 | 311 | var self = this, params, |
|
341 | 355 | items = new api.Menus.AvailableItemCollection( data.items ); |
342 | 356 | self.collection.add( items.models ); |
343 | 357 | items.each( function( menuItem ) { |
344 | | - $content.append( itemTemplate( menuItem.attributes ) ); |
345 | | - } ); |
| 358 | + var $item = $( itemTemplate( menuItem.attributes ) ); |
| 359 | + var inUse = this.currentMenuControl.getMenuItemControls().some( function( control ) { |
| 360 | + var setting = control.setting(); |
| 361 | + return setting.object_id == menuItem.get( 'object_id' ) && |
| 362 | + setting.type === menuItem.get( 'type' ) && |
| 363 | + setting.object === menuItem.get( 'object' ); |
| 364 | + }); |
| 365 | + |
| 366 | + if ( inUse ) { |
| 367 | + $item.find( '.menu-item-title' ).addClass( 'in-use' ); |
| 368 | + } |
| 369 | + |
| 370 | + $content.append( $item ); |
| 371 | + }); |
| 372 | + |
346 | 373 | if ( 20 > items.length ) { |
347 | 374 | self.pages.search = -1; // Up to 20 posts and 20 terms in results, if <20, no more results for either. |
348 | 375 | } else { |
|
451 | 478 | } else if ( ( 'post_type:page' === name ) && ( ! availableMenuItemContainers[ name ].hasClass( 'open' ) ) ) { |
452 | 479 | availableMenuItemContainers[ name ].find( '.accordion-section-title > button' ).trigger( 'click' ); |
453 | 480 | } |
454 | | - typeItems = new api.Menus.AvailableItemCollection( typeItems ); // @todo Why is this collection created and then thrown away? |
| 481 | + typeItems = new api.Menus.AvailableItemCollection( typeItems ); |
455 | 482 | self.collection.add( typeItems.models ); |
456 | 483 | typeInner = availableMenuItemContainers[ name ].find( '.available-menu-items-list' ); |
457 | | - typeItems.each( function( menuItem ) { |
458 | | - typeInner.append( itemTemplate( menuItem.attributes ) ); |
| 484 | + typeInner.empty(); |
| 485 | + typeItems.each(function(menuItem) { |
| 486 | + var $item = $(itemTemplate(menuItem.attributes)); |
| 487 | + |
| 488 | + if (self.isMenuItemAlreadyAdded(menuItem)) { |
| 489 | + $item.find('.menu-item-title').addClass('in-use'); |
| 490 | + } else { |
| 491 | + $item.find('.menu-item-title').removeClass('in-use'); |
| 492 | + } |
| 493 | + |
| 494 | + typeInner.append($item); |
459 | 495 | } ); |
460 | 496 | self.pages[ name ] += 1; |
461 | 497 | }); |
|
723 | 759 |
|
724 | 760 | this.currentMenuControl = menuControl; |
725 | 761 |
|
| 762 | + // Reset pagination tracking |
| 763 | + _.each( api.Menus.data.itemTypes, function( itemType ) { |
| 764 | + panel.pages[ itemType.type + ':' + itemType.object ] = 0; |
| 765 | + }); |
| 766 | + |
726 | 767 | this.itemSectionHeight(); |
727 | 768 |
|
728 | 769 | if ( api.section.has( 'publish_settings' ) ) { |
|
745 | 786 | this.$el.find( '.selected' ).removeClass( 'selected' ); |
746 | 787 |
|
747 | 788 | this.$search.trigger( 'focus' ); |
| 789 | + this.loadItems( api.Menus.data.itemTypes ); |
748 | 790 | }, |
749 | 791 |
|
750 | 792 | // Closes the panel. |
|
0 commit comments