WordPress.org

Make WordPress Core

Ticket #15490: 15490.2.diff

File 15490.2.diff, 5.0 KB (added by helen, 5 years ago)
  • wp-includes/js/media-views.js

     
    42834283         */
    42844284        media.view.EmbedLink = media.view.Settings.extend({
    42854285                className: 'embed-link-settings',
    4286                 template:  media.template('embed-link-settings')
     4286                template:  media.template('embed-link-settings'),
     4287
     4288                initialize: function() {
     4289                        this.model.on( 'change:url', this.updateoEmbed, this );
     4290                },
     4291
     4292                updateoEmbed: function() {
     4293                        var oembedURL = this.model.get('url'),
     4294                        context = this.$el,
     4295                        mainInput = context.parents('.media-embed'),
     4296                        postID = media.view.settings.post.id;
     4297
     4298                        $('.setting.title', context).show();
     4299                        $('.embed-container', context).hide();
     4300                        // clear out previous results
     4301                        $('.embed-container .embed-preview', context).html('');
     4302
     4303                        // only proceed with embed if the field contains more than 6 characters
     4304                        if (oembedURL.length < 6)
     4305                                return;
     4306
     4307                        // show spinner
     4308                        $('.spinner', mainInput).show();
     4309
     4310                        setTimeout(function () {
     4311                                // check if they haven't typed in 500 ms
     4312                                if ( $('.embed-url input', mainInput).val() != oembedURL )
     4313                                        return;
     4314
     4315                                $.ajax({
     4316                                        type : 'post',
     4317                                        dataType : 'json',
     4318                                        url : ajaxurl,
     4319                                        data : {
     4320                                                'action': 'media-oembed',
     4321                                                'oembed_url': oembedURL,
     4322                                                'post_id': postID
     4323                                                // 'media_ajax_nonce': window.media_ajax_data.ajax_nonce
     4324                                        },
     4325                                        success: function (response) {
     4326                                                // hide spinner
     4327                                                $('.spinner', mainInput).hide();
     4328                                                // if we have a response id
     4329                                                if (typeof response.result !== 'undefined' && response.result) {
     4330                                                        // show our embed wrapper
     4331                                                        $('.embed-container', context).show();
     4332                                                        // hide title input
     4333                                                        $('.setting.title', context).hide();
     4334                                                        // and populate our results from ajax response
     4335                                                        $('.embed-container .embed-preview', context).html(response.result);
     4336                                                }
     4337                                        }
     4338                                });
     4339                        }, 500);
     4340                }
     4341
    42874342        });
    42884343
    42894344        /**
  • wp-includes/media-template.php

     
    375375        </script>
    376376
    377377        <script type="text/html" id="tmpl-embed-link-settings">
    378                 <label class="setting">
     378                <label class="setting title">
    379379                        <span><?php _e('Title'); ?></span>
    380380                        <input type="text" class="alignment" data-setting="title" />
    381381                </label>
     382                <div class="embed-container" style="display: none;">
     383                        <div class="embed-preview">
     384                        </div>
     385                        <label class="setting embed-width">
     386                                <span><?php _e('Width'); ?></span>
     387                                <input type="text" class="alignment" data-setting="embed-width" />
     388                        </label>
     389                        <label class="setting embed-height">
     390                                <span><?php _e('Height'); ?></span>
     391                                <input type="text" class="alignment" data-setting="embed-height" />
     392                        </label>
     393                </div>
    382394        </script>
    383395
    384396        <script type="text/html" id="tmpl-embed-image-settings">
  • wp-admin/admin-ajax.php

     
    5656        'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post',
    5757        'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment',
    5858        'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor',
    59         'send-attachment-to-editor', 'save-attachment-order', 'heartbeat'
     59        'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'media-oembed'
    6060);
    6161
    6262// Register core Ajax calls.
  • wp-admin/includes/ajax-actions.php

     
    22692269        echo json_encode( $alltherevisions );
    22702270        exit();
    22712271}
     2272
     2273/**
     2274 * Handles our oEmbed ajax request
     2275 */
     2276function wp_ajax_media_oembed() {
     2277
     2278        // @TODO verify our nonce
     2279        // if ( ! ( isset( $_REQUEST['media_ajax_data'], $_REQUEST['oembed_url'] ) && wp_verify_nonce( $_REQUEST['media_ajax_data'], 'ajax_nonce' ) ) )
     2280        //      die();
     2281
     2282        // sanitize our search string
     2283        $oembed_string = sanitize_text_field( $_REQUEST['oembed_url'] );
     2284
     2285        $return = false;
     2286
     2287        if ( !empty( $oembed_string ) ) {
     2288                global $post, $wp_embed;
     2289
     2290                $oembed_url = esc_url( $oembed_string );
     2291                // Post ID is needed to check for embeds
     2292                $post = get_post( isset( $_REQUEST['post_id'] ) ? $_REQUEST['post_id'] : 0 );
     2293                // ping WordPress for an embed
     2294                $check_embed = $wp_embed->run_shortcode( '[embed]'. $oembed_url .'[/embed]' );
     2295                // fallback that WordPress creates when no oEmbed was found
     2296                $fallback = $wp_embed->maybe_make_link( $oembed_url );
     2297
     2298                if ( $check_embed && $check_embed != $fallback )
     2299                        // Embed data
     2300                        $return = $check_embed;
     2301                else
     2302                        // no oEmbeds were found
     2303                        $return = false;
     2304        }
     2305
     2306        // send back our encoded data
     2307        echo json_encode( array( 'result' => $return ) );
     2308        die();
     2309}