WordPress.org

Make WordPress Core

Ticket #25099: 25099-wplink.js.patch

File 25099-wplink.js.patch, 2.5 KB (added by coreygilmore, 5 years ago)
  • wplink.js

     
    296296                                }
    297297                        }
    298298                        if ( selectedText && ( selectedText = selectedText.replace( /^\s+|\s+$/g, '' ) ) ) {
    299                                 if ( ! $('#search-panel').is(':visible') )
    300                                         $('#internal-toggle').trigger('click');
     299                                $('#internal-toggle').trigger('click');
    301300                                inputs.search.val( selectedText ).trigger('keyup');
    302301                        }
    303302
     
    401400                toggleInternalLinking : function( event ) {
    402401                        var panel = $('#search-panel'),
    403402                                widget = inputs.dialog.wpdialog('widget'),
    404                                 // We're about to toggle visibility; it's currently the opposite
    405                                 visible = !panel.is(':visible'),
    406                                 win = $(window);
     403                                visible = panel.is(':visible'),
     404                                win = $(window),
     405                                toggleArrow = $(this),
     406                                showInternal = getUserSetting('wplink', 1) == 1 ? true : false;
    407407
    408                         $(this).toggleClass('toggle-arrow-active', visible);
    409 
    410408                        inputs.dialog.height('auto');
    411                         panel.slideToggle( 300, function() {
    412                                 setUserSetting('wplink', visible ? '1' : '0');
    413                                 inputs[ visible ? 'search' : 'url' ].focus();
     409                        // Toggle panel visibility it wasn't triggered programatically or if it isn't visible and needs to be
     410                        if( event.hasOwnProperty('originalEvent') || visible != showInternal ) {
     411                                panel.slideToggle( 300, function() {
     412                                        var hidden = !visible;
     413                                        setUserSetting('wplink', hidden ? '1' : '0');
     414                                        inputs[ hidden ? 'url' : 'search' ].focus();
     415                                        toggleArrow.toggleClass('toggle-arrow-active', hidden);
     416                                        // Move the box if the box is now expanded, was opened in a collapsed state,
     417                                        // and if it needs to be moved. (Judged by bottom not being positive or
     418                                        // bottom being smaller than top.)
     419                                        var scroll = win.scrollTop(),
     420                                                top = widget.offset().top,
     421                                                bottom = top + widget.outerHeight(),
     422                                                diff = bottom - win.height();
    414423
    415                                 // Move the box if the box is now expanded, was opened in a collapsed state,
    416                                 // and if it needs to be moved. (Judged by bottom not being positive or
    417                                 // bottom being smaller than top.)
    418                                 var scroll = win.scrollTop(),
    419                                         top = widget.offset().top,
    420                                         bottom = top + widget.outerHeight(),
    421                                         diff = bottom - win.height();
    422 
    423                                 if ( diff > scroll ) {
    424                                         widget.animate({'top': diff < top ?  top - diff : scroll }, 200);
    425                                 }
    426                         });
     424                                        if ( diff > scroll ) {
     425                                                widget.animate({'top': diff < top ?  top - diff : scroll }, 200);
     426                                        }
     427                                });
     428                        }
    427429                        event.preventDefault();
    428430                }
    429431        }