Вход Регистрация
Файл: js/xenforo/full/news_feed.js
Строк: 122
<?php
/** @param {jQuery} $ jQuery Object */
!function($, window, document, _undefined)
{
    
/**
     * Loads and displays the next batch of news feed items from the server.
     *
     * @param jQuery Link to click in order to initiate loading
     */
    
XenForo.NewsFeedLoader = function($link) { this.__construct($link); };
    
XenForo.NewsFeedLoader.prototype =
    {
        
__construct: function($link)
        {
            
this.$link = $link.click($.context(this, 'load'));

            
this.xhr = null;
        },

        
/**
         * Loads up the next x news feed items from the server
         *
         * @param Event e
         *
         * @return boolean false
         */
        
load: function(e)
        {
            
e.preventDefault();
            
e.target.blur();

            if (
this.xhr === null && this.$link.attr('href'))
            {
                
this.xhr = XenForo.ajax(
                    
this.$link.attr('href'),
                    { 
news_feed_id: this.$link.data('oldestitemid') },
                    $.
context(this, 'display')
                );
            }

            return 
false;
        },

        
/**
         * Handles the AJAX response from load() and displays any returned news feed items.
         *
         * @param object JSON data from AJAX
         * @param string textStatus
         */
        
display: function(ajaxData, textStatus)
        {
            
this.xhr = null;

            if (
XenForo.hasResponseError(ajaxData))
            {
                return 
false;
            }

            
this.$link.data('oldestitemid', ajaxData.oldestItemId);

            if (
XenForo.hasTemplateHtml(ajaxData))
            {
                var 
$html = $(ajaxData.templateHtml);

                if (
$html.length)
                {
                    
$html.xfInsert('insertBefore', this.$link.closest('.NewsFeedEnd'), 'xfSlideDown', XenForo.speed.slow);
                }
            }

            if (
ajaxData.feedEnds)
            {
                
this.$link.closest('.NewsFeedEnd').xfFadeOut();
            }
        }
    };

    
// *********************************************************************

    /**
     * Hides an individual news feed item
     *
     * @param jQuery Link to click in order to hide a news feed item
     */
    
XenForo.NewsFeedItemHider = function($link) { this.__construct($link); };
    
XenForo.NewsFeedItemHider.prototype =
    {
        
__construct: function($link)
        {
            
this.$link = $link.click($.context(this, 'requestHide'));
        },

        
/**
         * Sends an AJAX request to the server, requesting that a news feed item be hidden
         *
         * @param Event e
         *
         * @return boolean false
         */
        
requestHide: function(e)
        {
            
e.preventDefault();

            
// hide immediately, assume success
            
$(this.$link.closest('.NewsFeedItem')).xfRemove();

            
XenForo.ajax(
                
this.$link.attr('href'),
                
'',
                $.
context(this, 'hide')
            );
        },

        
/**
         * Receives the AJAX response from requestHide() and does the actual hiding.
         *
         * @param object JSON data from AJAX
         * @param string textStatus
         */
        
hide: function(ajaxData, textStatus)
        {
            if (
XenForo.hasResponseError(ajaxData))
            {
                return 
false;
            }

            
// nothing else to do now.
        
}
    };

    
// *********************************************************************

    
XenForo.register('a.NewsFeedLoader', 'XenForo.NewsFeedLoader');

    
XenForo.register('a.NewsFeedItemHider', 'XenForo.NewsFeedItemHider');
}
(
jQuery, this, document);
?>
Онлайн: 2
Реклама