Статистика профиля на AJAX 1.1.0

Добавляет вывод статистики профиля на AJAX, заменяя стандартный.

  1. Sprinx
    Совместимость:
    проверялся на совместимость
    Изменения в БД:
    не требуются
    Автор:
    Sprinx
    Общественное достояние:
    да
    Описание: добавляет вывод статистики профиля на AJAX, заменяя стандартный.
    Инструкция по установке:
    PHP:
    Все что находится в папке rootзакинуть в корень сайта.

    Открыть ajax.php

    Найти

    'gen_passkey'       => array('user'),

    Ниже вставить

    'user_modules'        => array('user'),

    Найти

        
    function index_data()
        {
            require(
    AJAX_DIR .'index_data.php');
        }
       
    Ниже втавить

        
    function user_modules()
        {
            require(
    AJAX_DIR .'user_modules.php');
        }

    Окткрыть index.php

    Найти и удалить

    // Set tpl vars for bt_userdata
    if ($bb_cfg['bt_show_dl_stat_on_index'] && !IS_GUEST)
    {
        
    show_bt_userdata($userdata['user_id']);
    }
       
    Открыть main.js

    Найти

    //
    // Menus
    //

    Выше добавить

    //
    // Slide Menus
    //
    var SlideMenu = {
        
    openSpeed          'slow',
        
    hideSpeed          'fast',
        
    getOffsetOptions   : { margintruebordertruepaddingtruescrollfalse },
        
    offsetCorrection_X : -4,
        
    offsetCorrection_Y 2,
        
    iframeFix          false,

        
    activeMenuId       null,  //  currently opened menu (from previous click)
        
    clickedMenuId      null,  //  menu to show up
        
    $root              null,  //  root element for menu with "href = '#clickedMenuId'"
        
    $menu              null,  //  clicked menu
        
    positioningType    null,  //  reserved
        
    outsideClickWatch  false//  prevent multiple $(document).click binding

        
    clicked: function($root) {
            
    $root.blur();
            
    this.clickedMenuId this.getMenuId($root);
            
    this.$menu = $(this.clickedMenuId);
            
    this.$root $root;
            
    this.toggle();
        },

        
    getMenuId: function($el) {
            var 
    click $el.attr('click');
            return 
    click.substr(click.indexOf('#'));
        },

        
    setLocation: function() {
            var 
    CSS this.$root.offset();
            
    CSS.top  += this.$root.height() + this.offsetCorrection_Y;
            
    CSS.left += this.offsetCorrection_X;
            
    this.$menu.css(CSS);
        },

        
    fixLocation: function() {
            var 
    $menu this.$menu;
            var 
    curLeft parseInt($menu.css('left'));
            var 
    rCorner = $(document).scrollLeft() + $(window).width() - 6;
            var 
    maxVisibleLeft Math.min(curLeftMath.max(0rCorner $menu.width()));
            if (
    curLeft != maxVisibleLeft) {
                
    $menu.css('left'maxVisibleLeft);
            }
            var 
    curTop parseInt($menu.css('top'));
            var 
    tCorner = $(document).scrollTop() + $(window).height() - 20;
            var 
    maxVisibleTop Math.min(curTopMath.max(0tCorner $menu.height()));
            if (
    curTop != maxVisibleTop) {
                
    $menu.css('top'maxVisibleTop);
            }
            if (
    this.iframeFix) {
                $(
    'iframe.ie-fix-select-overlap'$menu).css({ width$menu.width(), height$menu.height() });
            }
        },

        
    toggle: function() {
            if (
    this.activeMenuId && this.activeMenuId !== this.clickedMenuId) {
                $(
    this.activeMenuId).slideUp(this.hideSpeed);
                
    this.$root.removeClass('active')
            }
            
    // toggle clicked menu
            
    if (this.$menu.is(':visible')) {
            }    else {
                
    this.showClickedMenu();
                if (!
    this.outsideClickWatch) {
                    $(
    document).one('mousedown', function(e){ SlideMenu.hideClickWatcher(e); });
                    
    this.outsideClickWatch true;
                }
            }
        },

        
    showClickedMenu: function() {
            
    this.setLocation();
            
    this.$menu.slideDown(this.openSpeed);
            
    this.$root.addClass('active')
            
    this.fixLocation();
            
    this.activeMenuId this.clickedMenuId;
        },

        
    // hide if clicked outside of menu
        
    hideClickWatcher: function(e) {
            
    this.outsideClickWatch false;
            
    this.hide(e);
        },

        
    hide: function(e) {
            if (
    this.$menu) {
                
    this.$menu.slideUp(this.hideSpeed);
                
    this.$root.removeClass('active')
            }
            
    this.activeMenuId this.clickedMenuId this.$menu null;
        }
    };

    $(
    document).ready(function(){
        
    // SlideMenus
        
    $('div#slideMenu').click(
            function(
    e)
            {
                
    SlideMenu.clicked($(this));
               
                var 
    menuClick true;
                $(
    document).bind("click",function (e)
                {
                    if (!
    menuClick && $(e.target).closest('div.slideMenuBlock').length == 0)
                    {
                        
    SlideMenu.clicked($(this));
                        $(
    document).unbind("click");
                    }
                    
    menuClick false;
                });
            }
        );
        $(
    'div.slideMenuBlock').mousedown(
            function(
    e)
            {
                
    e.stopPropagation();
            }
        )
        
    // Input hints
        
    $('input')
            .
    filter('.hint').one('focus', function()
            {
                $(
    this).val('').removeClass('hint');
            })
            .
    end()
            .
    filter('.error').one('focus', function()
            {
                $(
    this).removeClass('error');
            });
    });   


    Открыть templates/default/page_header.tpl

    Найти

    <link rel="stylesheet" href="{STYLESHEET}?v={$bb_cfg['css_ver']}type="text/css">

    Ниже добавить

    <link rel="stylesheet" href="{TPL_DIR}/slide_menu.css?v={$bb_cfg['css_ver']}type="text/css">

    Найти

    </head>

    Выше втавить

    <script type="text/javascript">
    function 
    user_modules(actionmode){
        
    ajax.exec({
            
    action  'user_modules',
            
    mode    'user_index_stats'
        
    });
        
    ajax.callback.user_modules = function(data) {
         $(
    '#user_modules').html(data.html);
         }
       
    }
    </script>

    Найти и удалить

         <!-- IF SHOW_BT_USERDATA --><div id="user_ratio">
          <h3>{L_USER_RATIO}</h3>
           <table cellpadding="0">
           <div align="center">{THIS_AVATAR}</div>
           <tr><td>{L_USER_RATIO}</td><td><!-- IF DOWN_TOTAL_BYTES gt MIN_DL_BYTES --><b>{USER_RATIO}</b><!-- ELSE --><b>{L_NONE}</b> (DL < {MIN_DL_FOR_RATIO})<!-- ENDIF --></td></tr>
           <tr><td>{L_DOWNLOADED}</td><td class="leechmed"><b>{DOWN_TOTAL}</b></td></tr>
           <tr><td>{L_UPLOADED}</td><td class="seedmed"><b>{UP_TOTAL}</b></td></tr>
           <tr><td>{L_RELEASED}</td><td class="seedmed">{RELEASED}</td></tr>
           <tr><td>{L_BONUS}</td><td class="seedmed">{UP_BONUS}</td></tr>
           <!-- IF $bb_cfg['seed_bonus_enabled'] --><tr><td>{L_SEED_BONUS}</td><td><a href="profile.php?mode=bonus"><span class="points bold">{POINTS}</span></a></td></tr><!-- ENDIF -->
           </table>
         </div><!-- ENDIF -->
        
    Найти

    <!-- IF LOGGED_IN -->
                    <!-- IF HAVE_NEW_PM || HAVE_UNREAD_PM -->
                        <a href="{U_READ_PM}" class="new-pm-link"><b>{L_PRIVATE_MESSAGES}: {PM_INFO}</b></a>
                    <!-- ELSE -->
                        <a href="{U_PRIVATEMSGS}"><b>{L_PRIVATE_MESSAGES}: {PM_INFO}</b></a>
                    <!-- ENDIF -->
                <!-- ENDIF -->
            </td>

    Ниже втавить       
        
    <td width="120px">
        <div id="slideMenuLink">   
            <div id="slideMenu" class="tabMenu" click="#profile">
                <span id="SpNTit" onclick="user_modules(); return false;"><p class="floatR IMGslideMenu menu_profile">{L_PROFILE}</p></span>
                <div class="slideMenuBlock lEft" id="profile">       
                    <div class="navPopup" style="margin: 0 -4px">
                        <div class="menuHeader primaryContent"><h4 class="tCenter">{L_PROFILE_USER}</h4></div>   
                        <div class="secondaryContent">
                            <div id="user_modules"></div>
                        </div>
                        <div class="sectionFooter">
                        <table cellpadding="0" width="100%">
                            <tr>
                                <td><a href="{U_CUR_DOWNLOADS}">{L_PROFILE}</a></td>           
                                <td><a href="{U_SEARCH_SELF_BY_LAST}">{L_SEARCH_SELF}</a></td>
                                <td><a class="floatLink" href="{U_OPTIONS}">{L_OPTIONS}</a></td>
                                </tr>
                        </table>
                        </div>
                    </div>       
                </div>
            </div>
        </div>
    </td>

    Изображения

    1. W1Oq4jB.png

Последние обнoвления

  1. Обновление 1.1.0