WordPress.org

Make WordPress Core

Ticket #11420: river.feedback.diff

File river.feedback.diff, 4.9 KB (added by koopersmith, 3 years ago)
  • wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js

     
    11(function($){    
    22        var inputs = {}, results = {}, ed, 
    33        wpLink = { 
     4                timeToTriggerRiver: 150, 
     5                minRiverAJAXDuration: 200, 
    46                lastSearch: '', 
    57                riverDefaults: function() { 
    68                        return { 
     
    130132                        var t = $(this), 
    131133                                ul = t.children('ul'), 
    132134                                river = t.data('river'), 
    133                                 waiting = t.find('.river-waiting'); 
     135                                bottom = t.scrollTop() + t.height(); 
    134136                         
    135                         if( t.scrollTop() + t.height() != ul.height() || river.active || river.allLoaded ) 
     137                        if ( bottom != ul.height() || river.active || river.allLoaded ) 
    136138                                return; 
    137139                         
    138                         river.active = true; 
    139                         waiting.show(); 
    140                          
    141                         wpLink.linkAJAX( t, { page : river.page }, function(r) { 
    142                                 river.page++; 
    143                                 river.active = false; 
    144                                 river.allLoaded = !r; 
    145                                 waiting.hide(); 
    146                         }, true); 
     140                        setTimeout(function() { 
     141                                var newTop = t.scrollTop(), 
     142                                        newBottom = newTop + t.height(), 
     143                                        waiting = t.find('.river-waiting'); 
     144                                 
     145                                if ( bottom != newBottom || newBottom != ul.height() || river.active || river.allLoaded ) 
     146                                        return; 
     147                                 
     148                                river.active = true; 
     149                                waiting.show(); 
     150                                t.scrollTop( newTop + waiting.outerHeight() ); 
     151 
     152                                wpLink.linkAJAX( t, { page : river.page }, function(r) { 
     153                                        river.page++; 
     154                                        river.active = false; 
     155                                        river.allLoaded = !r; 
     156                                        waiting.hide(); 
     157                                }, { 
     158                                        append : true, 
     159                                        delay : wpLink.minRiverAJAXDuration 
     160                                }); 
     161                        }, wpLink.timeToTriggerRiver ); 
    147162                }, 
    148                  
    149163                searchInternalLinks : function() { 
    150164                        var t = $(this), waiting, 
    151165                                title = t.val(); 
     
    170184                        } 
    171185                }, 
    172186                 
    173                 linkAJAX : function( $panel, params, callback, append ) { 
     187                linkAJAX : function( $panel, params, callback, opts ) { 
     188                        var response; 
     189                        opts = opts || {}; 
     190                         
    174191                        if ( ! $panel.hasClass('query-results') ) 
    175192                                $panel = $panel.parents('.query-results'); 
    176193                         
    177194                        if ( ! $panel.length ) 
    178195                                return; 
    179196                         
     197                        response = wpLink.delayedCallback( function( results ) { 
     198                                wpLink.processAJAXResponse( $panel, results, callback, opts ); 
     199                        }, opts.delay ); 
     200                         
    180201                        $.post( ajaxurl, $.extend({ 
    181202                                action : 'wp-link-ajax' 
    182                         }, params ), function( results ) { 
    183                                 var list = ''; 
    184                                  
    185                                 if ( !results ) { 
    186                                         if ( !append ) { 
    187                                                 list += '<li class="no-matches-found unselectable"><span class="item-title"><em>' 
    188                                                 + wpLinkL10n.noMatchesFound 
    189                                                 + '</em></span></li>'; 
    190                                         } 
    191                                 } else { 
    192                                         $.each( results, function() { 
    193                                                 list += '<li><input type="hidden" class="item-permalink" value="' + this['permalink'] + '" />'; 
    194                                                 list += '<span class="item-title">'; 
    195                                                 list += this['title'] ? this['title'] : '<em>'+ wpLinkL10n.untitled + '</em>'; 
    196                                                 list += '</span><span class="item-info">' + this['info'] + '</span></li>'; 
    197                                         }); 
     203                        }, params ), response, "json" ); 
     204                }, 
     205                 
     206                processAJAXResponse: function( $panel, results, callback, opts ) { 
     207                        var list = ''; 
     208                         
     209                        if ( !results ) { 
     210                                if ( !opts.append ) { 
     211                                        list += '<li class="no-matches-found unselectable"><span class="item-title"><em>' 
     212                                        + wpLinkL10n.noMatchesFound 
     213                                        + '</em></span></li>'; 
    198214                                } 
    199                                  
    200                                 // Set results 
    201                                 $panel.children('ul')[ append ? 'append' : 'html' ]( list ); 
    202                                  
    203                                 // Run callback 
    204                                 if ( callback ) 
    205                                         callback( results ); 
    206                         }, "json" ); 
     215                        } else { 
     216                                $.each( results, function() { 
     217                                        list += '<li><input type="hidden" class="item-permalink" value="' + this['permalink'] + '" />'; 
     218                                        list += '<span class="item-title">'; 
     219                                        list += this['title'] ? this['title'] : '<em>'+ wpLinkL10n.untitled + '</em>'; 
     220                                        list += '</span><span class="item-info">' + this['info'] + '</span></li>'; 
     221                                }); 
     222                        } 
     223                         
     224                        // Set results 
     225                        $panel.children('ul')[ opts.append ? 'append' : 'html' ]( list ); 
     226                         
     227                        // Run callback 
     228                        if ( callback ) 
     229                                callback( results ); 
     230                }, 
     231                 
     232                delayedCallback : function( func, delay ) { 
     233                        var timeoutTriggered, funcTriggered, funcArgs, funcContext; 
     234                         
     235                        if ( ! delay ) 
     236                                return func; 
     237                         
     238                        setTimeout( function() { 
     239                                if ( funcTriggered ) 
     240                                        return func.apply( funcContext, funcArgs ); 
     241                                // Otherwise, wait. 
     242                                timeoutTriggered = true; 
     243                        }, delay); 
     244                         
     245                        return function() { 
     246                                if ( timeoutTriggered ) 
     247                                        return func.apply( this, arguments ); 
     248                                // Otherwise, wait. 
     249                                funcArgs = arguments; 
     250                                funcContext = this; 
     251                                funcTriggered = true; 
     252                        }; 
    207253                } 
    208254        } 
    209255         
  • wp-includes/js/tinymce/wp-mce-link.php

     
    7070        float: left; 
    7171        width: 220px; 
    7272} 
    73 img.waiting { 
     73.link-search-wrapper img.waiting { 
    7474        margin: 8px 1px 0 4px; 
    7575        float: left; 
    7676        display: none;