WordPress.org

Make WordPress Core

Ticket #36638: 36638.7.patch

File 36638.7.patch, 6.2 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                        /* translators: link URL */
     1069                        'Error: %s cannot be reached.' => __( 'Error: %s cannot be reached.' ),
    10691070                        '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.' =>
    10701071                                __( '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.' ),
    10711072                        '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                        var href = $link.attr( 'href' );
     153
     154                        $link.attr( 'data-wplink-url-error', 'true' );
     155
     156                        if ( window.wp && window.wp.a11y && window.wp.a11y.speak ) {
     157                                window.wp.a11y.speak( editor.translate( 'Error: %s cannot be reached.' ).replace( '%s', href ) );
     158                        }
     159
     160                        if ( toolbar && toolbar.visible() ) {
     161                                toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' );
     162                        }
     163                }
     164
    150165                function checkLink( node ) {
    151166                        var $link = editor.$( node );
    152167                        var href = $link.attr( 'href' );
     
    155170                                return;
    156171                        }
    157172
    158                         // Early check
    159                         if ( /^http/i.test( href ) && ! /\.[a-z]{2,63}(\/|$)/i.test( href ) ) {
    160                                 urlErrors[href] = tinymce.translate( 'Invalid host name.' );
     173                        if ( /^http/i.test( href ) && ! /^https?:\/\/[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}(\/|$)/i.test( href ) ) {
     174                                urlErrors[href] = true;
    161175                        }
    162176
    163177                        if ( urlErrors.hasOwnProperty( href ) ) {
    164                                 $link.attr( 'data-wplink-url-error', 'true' );
     178                                setLinkError( $link );
    165179                                return;
    166180                        } else {
    167181                                $link.removeAttr( 'data-wplink-url-error' );
     
    179193                                        return;
    180194                                }
    181195
    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                                         }
     196                                if ( response.data && response.data.httpError ) {
     197                                        urlErrors[href] = true;
     198                                        setLinkError( $link );
    189199                                }
    190200                        });
    191201                }
     
    274284                                        return;
    275285                                }
    276286
    277                                 if ( ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( href ) ) {
     287                                if ( ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( href ) && ! emailRegex.test( href ) ) {
    278288                                        href = 'http://' + href;
    279289                                }
    280290
     
    536546
    537547                editor.on( 'wptoolbar', function( event ) {
    538548                        var linkNode = editor.dom.getParent( event.element, 'a' ),
    539                                 $linkNode, href, edit, title;
     549                                $linkNode, href, edit;
    540550
    541551                        if ( typeof window.wpLink !== 'undefined' && window.wpLink.modalOpen ) {
    542552                                editToolbar.tempHide = true;
     
    561571                                        previewInstance.setURL( href );
    562572                                        event.element = linkNode;
    563573                                        event.toolbar = toolbar;
    564                                         title = urlErrors.hasOwnProperty( href ) ? editor.dom.encode( urlErrors[ href ] ) : null;
    565574
    566575                                        if ( $linkNode.attr( 'data-wplink-url-error' ) === 'true' ) {
    567                                                 toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' ).attr( 'title', title );
     576                                                toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' );
    568577                                        } else {
    569                                                 toolbar.$el.find( '.wp-link-preview a' ).removeClass( 'wplink-url-error' ).attr( 'title', null );
     578                                                toolbar.$el.find( '.wp-link-preview a' ).removeClass( 'wplink-url-error' );
    570579                                        }
    571580                                }
    572581                        } 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 );