Make WordPress Core

Ticket #27389: reinit-views.patch

File reinit-views.patch, 1.9 KB (added by gcorne, 10 years ago)
  • src/wp-includes/js/mce-view.js

    diff --git src/wp-includes/js/mce-view.js src/wp-includes/js/mce-view.js
    index 1fd477c..2516187 100644
    window.wp = window.wp || {}; 
    4646                                        });
    4747                                }
    4848                        }, this );
     49                },
     50                reinit: function() {
     51                        // Search all tinymce editor instances and update the placeholders
     52                        _.each( tinymce.editors, function( editor ) {
     53                                var doc, self = this;
     54                                if ( editor.plugins.wpview ) {
     55                                        doc = editor.getDoc();
     56                                        $( doc ).find( '[data-wpview-text="' + this.encodedText + '"]' ).each(function (i, elem) {
     57                                                $( self ).trigger( 'ready', elem );
     58                                        });
     59                                }
     60                        }, this );
     61
    4962                }
    5063        } );
    5164
    window.wp = window.wp || {}; 
    209222                        wp.mce.views.render();
    210223                },
    211224
     225                /**
     226                 * Trigger event that individual views can use to initialize any event bindings
     227                 *
     228                 * Note: Great care needs to be taken to avoid memory leaks when binding events directly to view nodes.
     229                 */
     230
     231                reinitializeViews: function() {
     232                        _.each( instances, function( instance ) {
     233                                instance.reinit();
     234                        } );
     235                },
     236
    212237                getInstance: function( encodedText ) {
    213238                        return instances[ encodedText ];
    214239                },
    window.wp = window.wp || {}; 
    460485                        setTimeout( function() {
    461486                                self.player = new MediaElementPlayer( media, this.mejsSettings );
    462487                        }, 75 );
     488
     489
    463490                },
    464491
    465492                /**
  • src/wp-includes/js/tinymce/plugins/wpview/plugin.js

    diff --git src/wp-includes/js/tinymce/plugins/wpview/plugin.js src/wp-includes/js/tinymce/plugins/wpview/plugin.js
    index 75f7047..8c69853 100644
    tinymce.PluginManager.add( 'wpview', function( editor ) { 
    166166                // to avoid adding additional undo levels on undo/redo
    167167                if ( event.format !== 'raw' ) {
    168168                        wp.mce.views.render();
     169                } else {
     170                        wp.mce.views.reinitializeViews();
    169171                }
    170172
    171173                // Add padding <p> if the noneditable node is last