Make WordPress Core

Ticket #32078: 32078.3.patch

File 32078.3.patch, 4.9 KB (added by iseulde, 11 years ago)
  • src/wp-includes/js/mce-view.js

     
    102102
    103103                                _.each( current, function( piece ) {
    104104                                        var remaining = piece.content,
    105                                                 result;
     105                                                result, text;
    106106
    107107                                        // Ignore processed pieces, but retain their location.
    108108                                        if ( piece.processed ) {
     
    119119                                                }
    120120
    121121                                                instance = self.createInstance( type, result.content, result.options );
     122                                                text = instance.loader ? '.' : instance.text;
    122123
    123124                                                // Add the processed piece for the match.
    124125                                                pieces.push( {
    125                                                         content: '<p data-wpview-marker="' + instance.encodedText + '">' + instance.text + '</p>',
     126                                                        content: '<p data-wpview-marker="' + instance.encodedText + '">' + text + '</p>',
    126127                                                        processed: true
    127128                                                } );
    128129
     
    416417                 */
    417418                replaceMarkers: function() {
    418419                        this.getMarkers( function( editor, node ) {
    419                                 if ( $( node ).text() !== this.text ) {
     420
     421                                if ( ! this.loader && $( node ).text() !== this.text ) {
    420422                                        editor.dom.setAttrib( node, 'data-wpview-marker', null );
    421423                                        return;
    422424                                }
  • src/wp-includes/js/media/views/frame/video-details.js

     
    120120
    121121                        if ( -1 === content.indexOf( attachment.get( 'url' ) ) ) {
    122122                                content += [
    123                                         '<track srclang="en" label="English"kind="subtitles" src="',
     123                                        '<track srclang="en" label="English" kind="subtitles" src="',
    124124                                        attachment.get( 'url' ),
    125125                                        '" />'
    126126                                ].join('');
  • src/wp-includes/js/media-audiovideo.js

     
    704704
    705705                        if ( -1 === content.indexOf( attachment.get( 'url' ) ) ) {
    706706                                content += [
    707                                         '<track srclang="en" label="English"kind="subtitles" src="',
     707                                        '<track srclang="en" label="English" kind="subtitles" src="',
    708708                                        attachment.get( 'url' ),
    709709                                        '" />'
    710710                                ].join('');
  • src/wp-includes/js/tinymce/plugins/wpview/plugin.js

     
    152152                };
    153153        }
    154154
    155         // Remove the content of view wrappers from HTML string
    156         function emptyViews( content ) {
    157                 content = content.replace( /<div[^>]+data-wpview-text="([^"]+)"[^>]*>[\s\S]+?wpview-selection-after[^>]+>[^<>]*<\/p>\s*<\/div>/g, function( all, match ) {
    158                         return '<p>' + window.decodeURIComponent( match ) + '</p>';
    159                 });
     155        function resetViewsCallback( match, viewText ) {
     156                return '<p>' + window.decodeURIComponent( viewText ) + '</p>';
     157        }
    160158
    161                 return content.replace( / data-wpview-marker="[^"]+"/g, '' );
     159        // Remove the content of view wrappers from HTML string
     160        function resetViews( content ) {
     161                return content
     162                        .replace( /<div[^>]+data-wpview-text="([^"]+)"[^>]*>[\s\S]+?wpview-selection-after[^>]+>[^<>]*<\/p>\s*<\/div>/g, resetViewsCallback )
     163                        .replace( /<p[^>]+data-wpview-marker="([^"]+)"[^>]*>[\s\S]+?<\/p>/g, resetViewsCallback );
    162164        }
    163165
    164166        // Prevent adding undo levels on changes inside a view wrapper
    165167        editor.on( 'BeforeAddUndo', function( event ) {
    166168                if ( event.level.content ) {
    167                         event.level.content = emptyViews( event.level.content );
     169                        event.level.content = resetViews( event.level.content );
    168170                }
    169         });
     171        } );
    170172
    171173        // When the editor's content changes, scan the new content for
    172174        // matching view patterns, and transform the matches into
     
    348350                }
    349351        });
    350352
    351         function resetViews( rootNode ) {
    352                 // Replace view nodes
    353                 $( 'div[data-wpview-text]', rootNode ).each( function( i, node ) {
    354                         var $node = $( node ),
    355                                 text = window.decodeURIComponent( $node.attr( 'data-wpview-text' ) || '' );
    356 
    357                         if ( text && node.parentNode ) {
    358                                 $node.replaceWith( $( editor.dom.create('p') ).text( text ) );
    359                         }
    360                 });
    361 
    362                 // Remove marker attributes
    363                 $( 'p[data-wpview-marker]', rootNode ).attr( 'data-wpview-marker', null );
    364         }
    365 
    366         editor.on( 'PreProcess', function( event ) {
    367                 // Replace the view nodes with their text in the DOM clone.
    368                 resetViews( event.node );
    369         }, true );
    370 
    371353        editor.on( 'hide', function() {
    372                 // Replace the view nodes with their text directly in the editor body.
    373354                wp.mce.views.unbind();
    374355                deselect();
    375                 resetViews( editor.getBody() );
    376         });
     356                $( '.wpview-content' ).empty();
     357        } );
     358
     359        editor.on( 'PostProcess', function( event ) {
     360                event.content = resetViews( event.content );
     361        } );
    377362
    378363        // Excludes arrow keys, delete, backspace, enter, space bar.
    379364        // Ref: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyCode