Make WordPress Core

Changeset 28754


Ignore:
Timestamp:
06/15/2014 10:52:45 PM (12 years ago)
Author:
azaozz
Message:

wpView: improve handling of embed errors/error messages, see #28195

Location:
trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/ajax-actions.php

    r28587 r28754  
    25312531        }
    25322532
    2533         if ( ! current_user_can( 'read_post', $post->ID ) ) {
     2533        if ( empty( $_POST['shortcode'] ) || ! current_user_can( 'read_post', $post->ID ) ) {
    25342534                wp_send_json_error();
    25352535        }
     
    25372537        setup_postdata( $post );
    25382538
    2539         $parsed = $wp_embed->run_shortcode( $_POST['content'] );
     2539        // If the URL cannot be embedded, return an eror message with wp_send_json_error()
     2540        add_filter( 'embed_maybe_make_link', '_wpview_embed_error', 20, 2 );
     2541
     2542        $parsed = $wp_embed->run_shortcode( $_POST['shortcode'] );
    25402543        $parsed = do_shortcode( $parsed );
    25412544
  • trunk/src/wp-admin/includes/misc.php

    r28746 r28754  
    825825// Run later as we have to set DOING_AUTOSAVE for back-compat
    826826add_filter( 'heartbeat_received', 'heartbeat_autosave', 500, 2 );
     827
     828/**
     829 * Send error message when an URL cannot be embedded. Used in wp_ajax_parse_embed().
     830 *
     831 * @access private
     832 * @since 4.0
     833 */
     834function _wpview_embed_error( $output, $url ) {
     835        wp_send_json_error( array(
     836                'message' => sprintf( __( '%s failed to embed.' ), esc_url( $url ) ),
     837        ) );
     838}
  • trunk/src/wp-includes/js/mce-view.js

    r28752 r28754  
    719719                        wp.ajax.send( 'parse-embed', {
    720720                                data: {
    721                                         post_ID: $( '#post_ID' ).val(),
    722                                         content: this.shortcode
     721                                        post_ID: $( '#post_ID' ).val() || 0,
     722                                        shortcode: this.shortcode
    723723                                }
    724724                        } )
    725                         .done( function( content ) {
     725                        .always( function() {
    726726                                self.fetching = false;
    727 
    728                                 if ( content.substring( 0, ( '<a href' ).length ) === '<a href' ) {
     727                        } )
     728                        .done( function( response ) {
     729                                if ( response ) {
     730                                        self.parsed = response;
     731                                        self.setHtml( response );
     732                                }
     733                        } )
     734                        .fail( function( response ) {
     735                                if ( response && response.message ) {
    729736                                        if ( self.type === 'embed' ) {
    730                                                 self.setError( self.original + ' failed to embed.', 'admin-media' );
     737                                                self.setError( response.message, 'admin-media' );
    731738                                        } else {
    732                                                 self.setContent( self.original, null, true );
     739                                                self.setContent( '<p>' + self.original + '</p>', null, true );
    733740                                        }
    734                                 } else {
    735                                         self.parsed = content;
    736                                         self.setHtml( content );
    737                                 }
    738                         } )
    739                         .fail( function() {
    740                                 self.fetching = false;
    741                                 self.setError( self.original + ' failed to embed due to a server error.', 'admin-media' );
     741                                } else if ( response && response.statusText ) {
     742                                        self.setError( response.statusText, 'admin-media' );
     743                                }
    742744                        } );
    743745                },
  • trunk/src/wp-includes/js/tinymce/skins/wordpress/wp-content.css

    r28684 r28754  
    307307.wpview-error {
    308308        border: 1px solid #dedede;
    309         padding: 20px 0;
    310         margin: 0;
     309        padding: 1em 0;
     310        margin: 0;
     311        word-wrap: break-word;
    311312}
    312313
Note: See TracChangeset for help on using the changeset viewer.