WordPress.org

Make WordPress Core

Ticket #31464: 31464.patch

File 31464.patch, 3.1 KB (added by iseulde, 6 years ago)
  • src/wp-includes/js/mce-view.js

     
    2828        'use strict';
    2929
    3030        var views = {},
    31                 instances = {};
     31                instances = {},
     32                cache;
    3233
    3334        wp.mce = wp.mce || {};
    3435
     
    434435                        if ( _.isObject( content ) && content.body.indexOf( '<script' ) !== -1 ) {
    435436                                this.setIframes( content.head, content.body, callback, rendered );
    436437                        } else if ( _.isString( content ) && content.indexOf( '<script' ) !== -1 ) {
    437                                 this.setIframes( null, content, callback, rendered );
     438                                this.setIframes( '', content, callback, rendered );
    438439                        } else {
    439440                                this.getNodes( function( editor, node, contentNode ) {
    440441                                        content = content.body || content;
     
    460461                 * @param {Boolean}  rendered Only set for (un)rendered nodes. Optional.
    461462                 */
    462463                setIframes: function( head, body, callback, rendered ) {
    463                         var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
    464                                 importStyles = this.type === 'video' || this.type === 'audio' || this.type === 'playlist';
     464                        var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
    465465
    466466                        this.getNodes( function( editor, node, content ) {
    467467                                var dom = editor.dom,
    468                                         styles = '',
    469468                                        bodyClasses = editor.getBody().className || '',
    470469                                        iframe, iframeDoc, observer, i, resize;
    471470
    472471                                content.innerHTML = '';
    473                                 head = head || '';
    474472
    475                                 if ( importStyles ) {
    476                                         if ( ! wp.mce.views.sandboxStyles ) {
    477                                                 tinymce.each( dom.$( 'link[rel="stylesheet"]', editor.getDoc().head ), function( link ) {
    478                                                         if ( link.href && link.href.indexOf( 'skins/lightgray/content.min.css' ) === -1 &&
    479                                                                 link.href.indexOf( 'skins/wordpress/wp-content.css' ) === -1 ) {
    480 
    481                                                                 styles += dom.getOuterHTML( link ) + '\n';
    482                                                         }
    483                                                 });
    484 
    485                                                 wp.mce.views.sandboxStyles = styles;
    486                                         } else {
    487                                                 styles = wp.mce.views.sandboxStyles;
    488                                         }
     473                                if ( ! cache.sandboxStyles ) {
     474                                        tinymce.each( dom.$(
     475                                                'link[rel="stylesheet"]',
     476                                                editor.getDoc().getElementsByTagName( 'head' )[0]
     477                                        ), function( link ) {
     478                                                if (
     479                                                        link.href &&
     480                                                        link.href.indexOf( 'skins/lightgray/content.min.css' ) === -1 &&
     481                                                        link.href.indexOf( 'skins/wordpress/wp-content.css' ) === -1
     482                                                ) {
     483                                                        cache.sandboxStyles += dom.getOuterHTML( link ) + '\n';
     484                                                }
     485                                        } );
    489486                                }
    490487
    491488                                // Seems Firefox needs a bit of time to insert/set the view nodes,
     
    516513                                                        '<head>' +
    517514                                                                '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' +
    518515                                                                head +
    519                                                                 styles +
     516                                                                cache.sandboxStyles +
    520517                                                                '<style>' +
    521518                                                                        'html {' +
    522519                                                                                'background: transparent;' +
     
    578575                                                iframeDoc.body.className = editor.getBody().className;
    579576                                        }
    580577
    581                                         if ( importStyles ) {
    582                                                 editor.on( 'wp-body-class-change', classChange );
    583                                         }
     578                                        editor.on( 'wp-body-class-change', classChange );
    584579
    585580                                        $( node ).one( 'wp-mce-view-unbind', function() {
    586581                                                observer.disconnect();