WordPress.org

Make WordPress Core

Ticket #39513: 39513.patch

File 39513.patch, 5.0 KB (added by azaozz, 4 years ago)
  • src/wp-admin/includes/ajax-actions.php

     
    30043004                $parsed = $styles . $html . $scripts;
    30053005        }
    30063006
    3007 
    30083007        if ( ! empty( $no_ssl_support ) || ( is_ssl() && ( preg_match( '%<(iframe|script|embed) [^>]*src="http://%', $parsed ) ||
    30093008                preg_match( '%<link [^>]*href="http://%', $parsed ) ) ) ) {
    30103009                // Admin is ssl and the embed is not. Iframes, scripts, and other "active content" will be blocked.
     
    30143013                ) );
    30153014        }
    30163015
    3017         wp_send_json_success( array(
     3016        $return = array(
    30183017                'body' => $parsed,
    30193018                'attr' => $wp_embed->last_attr
    3020         ) );
     3019        );
     3020
     3021        if ( strpos( $parsed, 'wp-embedded-content' ) && strpos( $parsed, '<iframe ' ) !== false ) {
     3022                if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
     3023                        $script_src = includes_url( 'js/wp-embed.js' );
     3024                } else {
     3025                        $script_src = includes_url( 'js/wp-embed.min.js' );
     3026                }
     3027
     3028                $return['head'] = '<script src="' . $script_src . '"></script>';
     3029                $return['sandbox'] = true;
     3030        }
     3031
     3032        wp_send_json_success( $return );
    30213033}
    30223034
    30233035/**
  • src/wp-includes/class-wp-editor.php

     
    417417                                                'wpdialogs',
    418418                                                'wptextpattern',
    419419                                                'wpview',
    420                                                 'wpembed',
    421420                                        );
    422421
    423422                                        if ( ! self::$has_medialib ) {
  • src/wp-includes/js/mce-view.js

     
    460460                 * @param {Boolean}  rendered Only set for (un)rendered nodes. Optional.
    461461                 */
    462462                setContent: function( content, callback, rendered ) {
    463                         if ( _.isObject( content ) && content.body.indexOf( '<script' ) !== -1 ) {
     463                        if ( _.isObject( content ) && ( content.sandbox || content.head || content.body.indexOf( '<script' ) !== -1 ) ) {
    464464                                this.setIframes( content.head || '', content.body, callback, rendered );
    465465                        } else if ( _.isString( content ) && content.indexOf( '<script' ) !== -1 ) {
    466466                                this.setIframes( '', content, callback, rendered );
     
    615615                                }
    616616
    617617                                function reload() {
    618                                         $( node ).data( 'rendered', null );
     618                                        if ( ! editor.isHidden() ) {
     619                                                $( node ).data( 'rendered', null );
    619620
    620                                         setTimeout( function() {
    621                                                 wp.mce.views.render();
    622                                         } );
     621                                                setTimeout( function() {
     622                                                        wp.mce.views.render();
     623                                                } );
     624                                        }
    623625                                }
    624626
    625                                 $( iframeWin ).on( 'load', resize ).on( 'unload', reload );
    626 
    627                                 MutationObserver = iframeWin.MutationObserver || iframeWin.WebKitMutationObserver || iframeWin.MozMutationObserver;
    628 
    629                                 if ( MutationObserver ) {
     627                                function addObserver() {
    630628                                        observer = new MutationObserver( _.debounce( resize, 100 ) );
    631629
    632630                                        observer.observe( iframeDoc.body, {
     
    634632                                                childList: true,
    635633                                                subtree: true
    636634                                        } );
     635                                }
     636
     637                                $( iframeWin ).on( 'load', resize ).on( 'unload', reload );
     638
     639                                MutationObserver = iframeWin.MutationObserver || iframeWin.WebKitMutationObserver || iframeWin.MozMutationObserver;
     640
     641                                if ( MutationObserver ) {
     642                                        if ( ! iframeDoc.body ) {
     643                                                iframeDoc.addEventListener( 'DOMContentLoaded', addObserver );
     644                                        } else {
     645                                                addObserver();
     646                                        }
    637647                                } else {
    638648                                        for ( i = 1; i < 6; i++ ) {
    639649                                                setTimeout( resize, i * 700 );
  • src/wp-includes/js/tinymce/plugins/wpembed/plugin.js

     
    1 (function ( tinymce ) {
    2         'use strict';
    3 
    4         tinymce.PluginManager.add( 'wpembed', function ( editor, url ) {
    5                 editor.on( 'init', function () {
    6                         var scriptId = editor.dom.uniqueId();
    7 
    8                         var scriptElm = editor.dom.create( 'script', {
    9                                 id: scriptId,
    10                                 type: 'text/javascript',
    11                                 src: url + '/../../../wp-embed.js'
    12                         } );
    13 
    14                         editor.getDoc().getElementsByTagName( 'head' )[ 0 ].appendChild( scriptElm );
    15                 } );
    16         } );
    17 })( window.tinymce );
  • src/wp-includes/js/tinymce/plugins/wpembed/plugin.js

     
    1 (function ( tinymce ) {
    2         'use strict';
    3 
    4         tinymce.PluginManager.add( 'wpembed', function ( editor, url ) {
    5                 editor.on( 'init', function () {
    6                         var scriptId = editor.dom.uniqueId();
    7 
    8                         var scriptElm = editor.dom.create( 'script', {
    9                                 id: scriptId,
    10                                 type: 'text/javascript',
    11                                 src: url + '/../../../wp-embed.js'
    12                         } );
    13 
    14                         editor.getDoc().getElementsByTagName( 'head' )[ 0 ].appendChild( scriptElm );
    15                 } );
    16         } );
    17 })( window.tinymce );