WordPress.org

Make WordPress Core

Changeset 29530


Ignore:
Timestamp:
08/18/2014 03:58:24 AM (7 years ago)
Author:
wonderboymusic
Message:

wpviews: whenever a view is updated or inserted, don't refresh ALL of the views.

Props avryl.
Fixes #28788.

Location:
trunk/src/wp-includes/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/js/mce-view.js

    r29513 r29530  
    4747                '</div>';
    4848        },
    49         render: function() {
    50             this.setContent(
    51                 '<p class="wpview-selection-before">\u00a0</p>' +
    52                 '<div class="wpview-body" contenteditable="false">' +
    53                     '<div class="toolbar">' +
    54                         ( _.isFunction( views[ this.type ].edit ) ? '<div class="dashicons dashicons-edit edit"></div>' : '' ) +
    55                         '<div class="dashicons dashicons-no-alt remove"></div>' +
     49        render: function( force ) {
     50            if ( force || ! this.rendered() ) {
     51                this.unbind();
     52
     53                this.setContent(
     54                    '<p class="wpview-selection-before">\u00a0</p>' +
     55                    '<div class="wpview-body" contenteditable="false">' +
     56                        '<div class="toolbar">' +
     57                            ( _.isFunction( views[ this.type ].edit ) ? '<div class="dashicons dashicons-edit edit"></div>' : '' ) +
     58                            '<div class="dashicons dashicons-no-alt remove"></div>' +
     59                        '</div>' +
     60                        '<div class="wpview-content wpview-type-' + this.type + '">' +
     61                            ( this.getHtml() || this.loadingPlaceholder() ) +
     62                        '</div>' +
     63                        ( this.overlay ? '<div class="wpview-overlay"></div>' : '' ) +
    5664                    '</div>' +
    57                     '<div class="wpview-content wpview-type-' + this.type + '">' +
    58                         ( this.getHtml() || this.loadingPlaceholder() ) +
    59                     '</div>' +
    60                     ( this.overlay ? '<div class="wpview-overlay"></div>' : '' ) +
    61                 '</div>' +
    62                 '<p class="wpview-selection-after">\u00a0</p>',
    63                 'wrap'
    64             );
    65 
    66             $( this ).trigger( 'ready' );
     65                    '<p class="wpview-selection-after">\u00a0</p>',
     66                    'wrap'
     67                );
     68
     69                $( this ).trigger( 'ready' );
     70
     71                this.rendered( true );
     72            }
    6773        },
    6874        unbind: function() {},
     
    191197                '</div>'
    192198            );
     199        },
     200        rendered: function( value ) {
     201            var notRendered;
     202
     203            this.getNodes( function( editor, node ) {
     204                if ( value != null ) {
     205                    $( node ).data( 'rendered', value === true );
     206                } else {
     207                    notRendered = notRendered || ! $( node ).data( 'rendered' );
     208                }
     209            } );
     210
     211            return ! notRendered;
    193212        }
    194213    } );
     
    391410            }
    392411
    393             wp.mce.views.render();
     412            instance.render();
    394413        },
    395414
     
    407426         * `wp.mce.view.toViews( content )`.
    408427         */
    409         render: function() {
     428        render: function( force ) {
    410429            _.each( instances, function( instance ) {
    411                 instance.render();
     430                instance.render( force );
    412431            } );
    413432        },
     
    439458
    440459            fetch: function() {
     460                var self = this;
     461
    441462                this.attachments = wp.media.gallery.attachments( this.shortcode, this.postID );
    442                 this.dfd = this.attachments.more().done( _.bind( this.render, this ) );
     463                this.dfd = this.attachments.more().done( function() {
     464                    self.render( true );
     465                } );
    443466            },
    444467
  • trunk/src/wp-includes/js/tinymce/plugins/wpview/plugin.js

    r29521 r29530  
    204204        if ( selected ) {
    205205            removeView( selected );
    206         }
    207 
    208         if ( ! event.initial ) {
    209             wp.mce.views.unbind( editor );
    210206        }
    211207
Note: See TracChangeset for help on using the changeset viewer.