1. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.
  2. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  3. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  4. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.
  5. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.

Auto load more items in Activity Feed on Scroll down

Discussion in 'Прочая Поддержка - Help Requests' started by tigran_tv, Sep 30, 2011.

  1. tigran_tv Thread starter User


    Offline
    Message Count:
    2
    Likes Received:
    0
    Добрый день всем.

    Мне необходим плагин, реализацию которого я нашел тут www.geodeveloper.net.

    Логика проста - при прокрутке скролла до конца страницы (вниз) автоматически срабатывает догрузка сообщений. Грубо говоря скрипт сам кликает на "view more".

    Я не поленился и попытался переписать свой схожий для этого скрипт, но оказалось что SE4 работает с mootools, а моя реализация на jquery. Конфликт неизбежен. Переписать свой код на mootools пока что ленюсь. И кстати, в реализации по ссылке которую я дал выше, там как мне показалось скрипт срабатывает только один раз, и повторный скролл до конца страницы не загружает еще новых сообщений.

    Вопрос: есть ли у кого уже готовый хак для этой цели? или, есть ли человек который может переписать подобный скрипт с jquery на mootools?
  2. Murich User


    Offline
    Message Count:
    67
    Likes Received:
    8
    Before you start with this customization please backup this 2 files as we need to modify them:

    - application/modules/Activity/widgets/feed/index.tpl
    - application/modules/Activity/widgets/feed/Controller.php


    1. Upload ScrollSpy.js in folder "externals".

    2. Edit this file: application/modules/Activity/widgets/feed/index.tpl

    3. Find this line:

    (empty($this->getUpdate) && empty($this->checkUpdate)) ): ?>

    after that line add this:

    <script type="text/javascript" src="/externals/ScrollSpy.js"></script>

    4. Find this line:

    var endOfFeed = <?php echo ( $this->endOfFeed ? 'true' : 'false' ) ?>;

    after that line add this:

    var action_count = <?php echo sprintf('%d', $this->action_count) ?>;

    /* Auto Load more items in Activity Feed on Scroll down by GeoDeveloper.net */
    new SmoothScroll({duration:500});
    var ss = new ScrollSpy({
    min: window.getScrollSize().y - window.getSize().y - 0,
    onEnter: function() {
    if( next_id > 0 && !endOfFeed && action_count <= 1) {
    activityViewMore(next_id, subject_guid);
    }
    ss.options.min = 0;
    },
    container: window
    });
    /* End */


    5. Find this line:

    'maxid' : next_id,

    after that line add this:

    'actioncount' : action_count,

    6. Open this file: application/modules/Activity/widgets/feed/Controller.php

    7. Find this line:

    'min_id' => (int) $request->getParam('minid'),

    after that line add this:

    'action_count' => (int) $request->getParam('actioncount'),

    8. Find this line:

    $this->view->endOfFeed = $endOfFeed;

    after that line add this:

    $this->view->action_count = $tmpConfig['action_count'] + 1;

    9. You are done!


    Note: This mod is configured to allow one time to auto load more items,
    if you want to allow more please change the number 1 to any higher number of this line:

    if( next_id > 0 && !endOfFeed && action_count <= 1) {

    If you have any problems please contact me. I also provide install service for $25.

    GeoDeveloper.net


    Далеее Создаешь ---Текст.. Документ и вставляешь

    /*
    ---
    description: ScrollSpy

    authors:
    - David Walsh (http://davidwalsh.name)

    license:
    - MIT-style license

    requires:
    core/1.2.1: '*'

    provides:
    - ScrollSpy
    ...
    */
    var ScrollSpy = new Class({

    /* implements */
    Implements: [Options,Events],

    /* options */
    options: {
    container: window,
    max: 0,
    min: 0,
    mode: 'vertical'/*,
    onEnter: $empty,
    onLeave: $empty,
    onScroll: $empty,
    onTick: $empty
    */
    },

    /* initialization */
    initialize: function(options) {
    /* set options */
    this.setOptions(options);
    this.container = document.id(this.options.container);
    this.enters = this.leaves = 0;
    this.inside = false;

    /* listener */
    var self = this;
    this.listener = function(e) {
    /* if it has reached the level */
    var position = self.container.getScroll(),
    xy = position[self.options.mode == 'vertical' ? 'y' : 'x'];
    /* if we reach the minimum and are still below the max... */
    if(xy >= self.options.min && (self.options.max == 0 || xy <= self.options.max)) {
    /* trigger enter event if necessary */
    if(!self.inside) {
    /* record as inside */
    self.inside = true;
    self.enters++;
    /* fire enter event */
    self.fireEvent('enter',[position,self.enters,e]);
    }
    /* trigger the "tick", always */
    self.fireEvent('tick',[position,self.inside,self.enters,self.leaves,e]);
    }
    /* trigger leave */
    else if(self.inside){
    self.inside = false;
    self.leaves++;
    self.fireEvent('leave',[position,self.leaves,e]);
    }
    /* fire scroll event */
    self.fireEvent('scroll',[position,self.inside,self.enters,self.leaves,e]);
    };

    /* make it happen */
    this.addListener();
    },

    /* starts the listener */
    start: function() {
    this.container.addEvent('scroll',this.listener);
    },

    /* stops the listener */
    stop: function() {
    this.container.removeEvent('scroll',this.listener);
    },

    /* legacy */
    addListener: function() {
    this.start();
    }
    });
    Далее сохраняешь в ScrollSpy.js и в корень

Share This Page

All rights reserved SocEngine.ru ©