Make WordPress Core

Ticket #32078: 32078.2.patch

File 32078.2.patch, 4.7 KB (added by azaozz, 11 years ago)
  • src/wp-includes/js/mce-view.js

     
    9393                setMarkers: function( content ) {
    9494                        var pieces = [ { content: content } ],
    9595                                self = this,
    96                                 instance,
    97                                 current;
     96                                instance, current;
    9897
    9998                        _.each( views, function( view, type ) {
    10099                                current = pieces.slice();
     
    102101
    103102                                _.each( current, function( piece ) {
    104103                                        var remaining = piece.content,
    105                                                 result;
     104                                                result, text;
    106105
    107106                                        // Ignore processed pieces, but retain their location.
    108107                                        if ( piece.processed ) {
     
    119118                                                }
    120119
    121120                                                instance = self.createInstance( type, result.content, result.options );
     121                                                text = instance.loader ? '.' : instance.text;
    122122
    123123                                                // Add the processed piece for the match.
    124124                                                pieces.push( {
    125                                                         content: '<p data-wpview-marker="' + instance.encodedText + '">' + instance.text + '</p>',
     125                                                        content: '<p data-wpview-marker="' + instance.encodedText + '">' + text + '</p>',
    126126                                                        processed: true
    127127                                                } );
    128128
     
    138138                                } );
    139139                        } );
    140140
    141                         return _.pluck( pieces, 'content' ).join( '' );
     141                        content = _.pluck( pieces, 'content' ).join( '' );
     142                        return content.replace( /<p>\s*<p data-wpview-marker=/g, '<p data-wpview-marker=' ).replace( /<\/p>\s*<\/p>/g, '</p>' );
    142143                },
    143144
    144145                /**
     
    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-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/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/tinymce/plugins/wpview/plugin.js

     
    348348                }
    349349        });
    350350
    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' ) || '' );
     351        function resetViewsCallback( match, viewText ) {
     352                return '<p>' + window.decodeURIComponent( viewText ) + '</p>';
     353        }
    356354
    357                         if ( text && node.parentNode ) {
    358                                 $node.replaceWith( $( editor.dom.create('p') ).text( text ) );
    359                         }
     355        // Empty the wpview wrap and marker nodes
     356        function emptyViews( rootNode ) {
     357                $( 'div[data-wpview-text], p[data-wpview-marker]', rootNode ).each( function( i, node ) {
     358                        node.innerHTML = '.';
    360359                });
    361 
    362                 // Remove marker attributes
    363                 $( 'p[data-wpview-marker]', rootNode ).attr( 'data-wpview-marker', null );
    364360        }
    365361
    366362        editor.on( 'PreProcess', function( event ) {
    367                 // Replace the view nodes with their text in the DOM clone.
    368                 resetViews( event.node );
     363                emptyViews( event.node );
    369364        }, true );
    370365
    371366        editor.on( 'hide', function() {
    372                 // Replace the view nodes with their text directly in the editor body.
    373367                wp.mce.views.unbind();
    374368                deselect();
    375                 resetViews( editor.getBody() );
     369                emptyViews();
    376370        });
    377371
     372        editor.on( 'PostProcess', function( event ) {
     373                if ( event.content ) {
     374                        event.content = event.content.replace( /<div [^>]*?data-wpview-text="([^"]+)"[^>]*>[\s\S]*?<\/div>/g, resetViewsCallback )
     375                                .replace( /<p [^>]*?data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g, resetViewsCallback );
     376                }
     377        });
     378
    378379        // Excludes arrow keys, delete, backspace, enter, space bar.
    379380        // Ref: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyCode
    380381        function isSpecialKey( key ) {