WordPress.org

Make WordPress Core

Ticket #36638: 36638.6.patch

File 36638.6.patch, 6.1 KB (added by azaozz, 3 years ago)
  • src/wp-admin/includes/ajax-actions.php

     
    38803880                $href = get_bloginfo( 'url' ) . $href;
    38813881        }
    38823882
    3883         $response = wp_safe_remote_get( $href, array(
     3883        $response = wp_remote_get( $href, array(
    38843884                'timeout' => 15,
    38853885                // Use an explicit user-agent
    38863886                'user-agent' => 'WordPress URL Test',
    38873887        ) );
    38883888
    3889         $message = null;
     3889        $error = false;
    38903890
    38913891        if ( is_wp_error( $response ) ) {
    3892                 $error = $response->get_error_message();
    3893 
    3894                 if ( strpos( $message, 'resolve host' ) !== false ) {
    3895                         $message = array( 'error' => __( 'Invalid host name.' ) );
     3892                if ( strpos( $response->get_error_message(), 'resolve host' ) !== false ) {
     3893                        $error = true;
    38963894                }
    3897 
    3898                 wp_send_json_error( $message );
     3895        } elseif ( wp_remote_retrieve_response_code( $response ) === 404 ) {
     3896                $error = true;
    38993897        }
    39003898
    3901         if ( wp_remote_retrieve_response_code( $response ) === 404 ) {
    3902                 wp_send_json_error( array( 'error' => __( 'Not found, HTTP error 404.' ) ) );
     3899        if ( $error ) {
     3900                wp_send_json_error( array( 'httpError' => true ) );
    39033901        }
    39043902
    39053903        wp_send_json_success();
  • src/wp-includes/class-wp-editor.php

     
    10651065                        'Ctrl + letter:' => __( 'Ctrl + letter:' ),
    10661066                        'Letter' => __( 'Letter' ),
    10671067                        'Action' => __( 'Action' ),
    1068                         'Invalid host name.' => __( 'Invalid host name.' ),
     1068                        'Error: the link cannot be reached.' => __( 'Error: the link cannot be reached.' ),
    10691069                        'To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.' =>
    10701070                                __( 'To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.' ),
    10711071                        'When starting a new paragraph with one of these formatting shortcuts followed by a space, the formatting will be applied automatically. Press Backspace or Escape to undo.' =>
  • src/wp-includes/js/tinymce/plugins/wplink/plugin.js

     
    9494                var doingUndoRedoTimer;
    9595                var $ = window.jQuery;
    9696                var urlErrors = {};
     97                var emailRegex = /^(mailto:)?[a-z0-9._%+-]+@[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}$/i;
    9798
    9899                function getSelectedLink() {
    99100                        var href, html,
     
    147148                        });
    148149                }
    149150
     151                function setLinkError( $link ) {
     152                        $link.attr( 'data-wplink-url-error', 'true' );
     153
     154                        if ( window.wp && window.wp.a11y && window.wp.a11y.speak ) {
     155                                window.wp.a11y.speak( editor.translate( 'Error: the link cannot be reached.' ) );
     156                        }
     157
     158                        if ( toolbar && toolbar.visible() ) {
     159                                toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' );
     160                        }
     161                }
     162
    150163                function checkLink( node ) {
    151164                        var $link = editor.$( node );
    152165                        var href = $link.attr( 'href' );
     
    155168                                return;
    156169                        }
    157170
    158                         // Early check
    159                         if ( /^http/i.test( href ) && ! /\.[a-z]{2,63}(\/|$)/i.test( href ) ) {
    160                                 urlErrors[href] = tinymce.translate( 'Invalid host name.' );
     171                        if ( /^http/i.test( href ) && ! /^https?:\/\/[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}(\/|$)/i.test( href ) ) {
     172                                urlErrors[href] = true;
    161173                        }
    162174
    163175                        if ( urlErrors.hasOwnProperty( href ) ) {
    164                                 $link.attr( 'data-wplink-url-error', 'true' );
     176                                setLinkError( $link );
    165177                                return;
    166178                        } else {
    167179                                $link.removeAttr( 'data-wplink-url-error' );
     
    179191                                        return;
    180192                                }
    181193
    182                                 if ( response.data && response.data.error ) {
    183                                         urlErrors[href] = response.data.error;
    184                                         $link.attr( 'data-wplink-url-error', 'true' );
    185 
    186                                         if ( toolbar && toolbar.visible() ) {
    187                                                 toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' ).attr( 'title', editor.dom.encode( response.data.error ) );
    188                                         }
     194                                if ( response.data && response.data.httpError ) {
     195                                        urlErrors[href] = true;
     196                                        setLinkError( $link );
    189197                                }
    190198                        });
    191199                }
     
    274282                                        return;
    275283                                }
    276284
    277                                 if ( ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( href ) ) {
     285                                if ( ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( href ) && ! emailRegex.test( href ) ) {
    278286                                        href = 'http://' + href;
    279287                                }
    280288
     
    536544
    537545                editor.on( 'wptoolbar', function( event ) {
    538546                        var linkNode = editor.dom.getParent( event.element, 'a' ),
    539                                 $linkNode, href, edit, title;
     547                                $linkNode, href, edit;
    540548
    541549                        if ( typeof window.wpLink !== 'undefined' && window.wpLink.modalOpen ) {
    542550                                editToolbar.tempHide = true;
     
    561569                                        previewInstance.setURL( href );
    562570                                        event.element = linkNode;
    563571                                        event.toolbar = toolbar;
    564                                         title = urlErrors.hasOwnProperty( href ) ? editor.dom.encode( urlErrors[ href ] ) : null;
    565572
    566573                                        if ( $linkNode.attr( 'data-wplink-url-error' ) === 'true' ) {
    567                                                 toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' ).attr( 'title', title );
     574                                                toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' );
    568575                                        } else {
    569                                                 toolbar.$el.find( '.wp-link-preview a' ).removeClass( 'wplink-url-error' ).attr( 'title', null );
     576                                                toolbar.$el.find( '.wp-link-preview a' ).removeClass( 'wplink-url-error' );
    570577                                        }
    571578                                }
    572579                        } else if ( editToolbar.visible() ) {
  • src/wp-includes/js/wplink.js

     
    22
    33( function( $, wpLinkL10n, wp ) {
    44        var editor, searchTimer, River, Query, correctedURL, linkNode,
    5                 emailRegexp = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,
    6                 urlRegexp = /^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,4}[^ "]*$/i,
     5                emailRegexp = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,63}$/i,
     6                urlRegexp = /^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,63}[^ "]*$/i,
    77                inputs = {},
    88                rivers = {},
    99                isTouch = ( 'ontouchend' in document );