WordPress.org

Make WordPress Core

Changeset 41872


Ignore:
Timestamp:
10/16/17 06:45:09 (6 weeks ago)
Author:
westonruter
Message:

Widgets: Update preview for Gallery widget when one of its attachments is modified in the media modal, outside the customized state.

  • Ensure that changes to captions are shown in preview when modified in media modal.
  • Also keep wp.customize.widgetsPreview.renderedWidgets updated when widgets are added or removed.

See #41914, #37887, #40403.
Fixes #41979.

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/js/widgets/media-gallery-widget.js

    r41590 r41872  
    101101            control.selectedAttachments.on( 'reset', control.renderPreview ); 
    102102            control.updateSelectedAttachments(); 
     103 
     104            /* 
     105             * Refresh a Gallery widget partial when the user modifies one of the selected attachments. 
     106             * This ensures that when an attachment's caption is updated in the media modal the Gallery 
     107             * widget in the preview will then be refreshed to show the change. Normally doing this 
     108             * would not be necessary because all of the state should be contained inside the changeset, 
     109             * as everything done in the Customizer should not make a change to the site unless the 
     110             * changeset itself is published. Attachments are a current exception to this rule. 
     111             * For a proposal to include attachments in the customized state, see #37887. 
     112             */ 
     113            if ( wp.customize && wp.customize.previewer ) { 
     114                control.selectedAttachments.on( 'change', function() { 
     115                    wp.customize.previewer.send( 'refresh-widget-partial', control.model.get( 'widget_id' ) ); 
     116                } ); 
     117            } 
    103118        }, 
    104119 
  • trunk/src/wp-includes/js/customize-preview-widgets.js

    r41726 r41872  
    3939        api.preview.bind( 'active', function() { 
    4040            self.highlightControls(); 
     41        } ); 
     42 
     43        /* 
     44         * Refresh a partial when the controls pane requests it. This is used currently just by the 
     45         * Gallery widget so that when an attachment's caption is updated in the media modal, 
     46         * the widget in the preview will then be refreshed to show the change. Normally doing this 
     47         * would not be necessary because all of the state should be contained inside the changeset, 
     48         * as everything done in the Customizer should not make a change to the site unless the 
     49         * changeset itself is published. Attachments are a current exception to this rule. 
     50         * For a proposal to include attachments in the customized state, see #37887. 
     51         */ 
     52        api.preview.bind( 'refresh-widget-partial', function( widgetId ) { 
     53            var partialId = 'widget[' + widgetId + ']'; 
     54            if ( api.selectiveRefresh.partial.has( partialId ) ) { 
     55                api.selectiveRefresh.partial( partialId ).refresh(); 
     56            } else if ( self.renderedWidgets[ widgetId ] ) { 
     57                api.preview.send( 'refresh' ); // Fallback in case theme does not support 'customize-selective-refresh-widgets'. 
     58            } 
    4159        } ); 
    4260    }; 
     
    452470                    } ); 
    453471                } 
     472                delete self.renderedWidgets[ removedWidgetId ]; 
    454473            } ); 
    455474 
     
    459478                var widgetPartial = sidebarPartial.ensureWidgetPlacementContainers( addedWidgetId ); 
    460479                addedWidgetPartials.push( widgetPartial ); 
     480                self.renderedWidgets[ addedWidgetId ] = true; 
    461481            } ); 
    462482 
Note: See TracChangeset for help on using the changeset viewer.