WordPress.org

Make WordPress Core

Ticket #11420: river.feedback.diff

File river.feedback.diff, 4.9 KB (added by koopersmith, 10 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;