monster_menus-9.0.x-dev/js/lazy_load_node.js

js/lazy_load_node.js
(function ($, Drupal, drupalSettings) {
  Drupal.MMLazyLoadingActiveLoad = false;

  Drupal.behaviors.MMLazyLoadNode = {
    attach: function () {
      $('.mm-lazy-load-max-page').val(1); // Make sure refreshed pages start out at zero
      $(window).scroll(function() {
        if (Drupal.MMLazyLoadScrollCheck($('.node:last')) && !Drupal.MMLazyLoadingActiveLoad) {
          Drupal.MMLazyLoadContent();
        }
      })
      .trigger('scroll');
    }
  };

  Drupal.MMLazyLoadScrollCheck = function (elem) {
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = elem.offset().top;
    var elemBottom = elemTop + elem.height();

    return elemBottom >= docViewTop && elemTop <= docViewBottom;
  };

  Drupal.MMLazyLoadContent = function () {
    var maxPage = $('.mm-lazy-load-max-page');
    var page = parseInt(maxPage.val());
    if (page < drupalSettings.MM.max_pages) {
      Drupal.MMLazyLoadingActiveLoad = true;
      maxPage.before('<div id="node-loading"><img src="' + drupalSettings.MM.lazy_load_node.loading_img + '" width="24" height="24"> ' + Drupal.t('Loading additional content...') + '</div>');
      $.ajax({
        cache:   false,
        url:     drupalSettings.basePath + 'mm/' + drupalSettings.MM.lazy_load_node.mmtid + '/-2/render?page=' + page,
        success: function (data) {
          $('#node-loading').remove();
          maxPage.before(data);
          maxPage.val(page + 1);
          Drupal.MMLazyLoadingActiveLoad = false;
          if (Drupal.MMLazyLoadScrollCheck(maxPage.siblings('.node:last')) && !Drupal.MMLazyLoadingActiveLoad) {
            Drupal.MMLazyLoadContent();
          }
        }
      });
    }
  };
})(jQuery, Drupal, drupalSettings);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc