Skip to content
Snippets Groups Projects
Commit c74fbf88 authored by Michael Lee's avatar Michael Lee
Browse files

Merge branch 'views_infinite_scroll' into lee5151

parents 17dc1059 e82f8cdf
No related branches found
No related tags found
No related merge requests found
Showing
with 78 additions and 45 deletions
...@@ -7864,26 +7864,26 @@ ...@@ -7864,26 +7864,26 @@
}, },
{ {
"name": "drupal/views_infinite_scroll", "name": "drupal/views_infinite_scroll",
"version": "1.9.0", "version": "2.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://git.drupalcode.org/project/views_infinite_scroll.git", "url": "https://git.drupalcode.org/project/views_infinite_scroll.git",
"reference": "8.x-1.9" "reference": "2.0.2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://ftp.drupal.org/files/projects/views_infinite_scroll-8.x-1.9.zip", "url": "https://ftp.drupal.org/files/projects/views_infinite_scroll-2.0.2.zip",
"reference": "8.x-1.9", "reference": "2.0.2",
"shasum": "875d58d317d48036ed1d9ef538bc8a76bc3dcb5b" "shasum": "8b2b935d1e5d94d7ad068d099512d3b915efb41f"
}, },
"require": { "require": {
"drupal/core": "^8.8 || ^9" "drupal/core": "^9.2 || ^10"
}, },
"type": "drupal-module", "type": "drupal-module",
"extra": { "extra": {
"drupal": { "drupal": {
"version": "8.x-1.9", "version": "2.0.2",
"datestamp": "1632421809", "datestamp": "1689001933",
"security-coverage": { "security-coverage": {
"status": "covered", "status": "covered",
"message": "Covered by Drupal's security advisory policy" "message": "Covered by Drupal's security advisory policy"
......
...@@ -8154,27 +8154,27 @@ ...@@ -8154,27 +8154,27 @@
}, },
{ {
"name": "drupal/views_infinite_scroll", "name": "drupal/views_infinite_scroll",
"version": "1.9.0", "version": "2.0.2",
"version_normalized": "1.9.0.0", "version_normalized": "2.0.2.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://git.drupalcode.org/project/views_infinite_scroll.git", "url": "https://git.drupalcode.org/project/views_infinite_scroll.git",
"reference": "8.x-1.9" "reference": "2.0.2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://ftp.drupal.org/files/projects/views_infinite_scroll-8.x-1.9.zip", "url": "https://ftp.drupal.org/files/projects/views_infinite_scroll-2.0.2.zip",
"reference": "8.x-1.9", "reference": "2.0.2",
"shasum": "875d58d317d48036ed1d9ef538bc8a76bc3dcb5b" "shasum": "8b2b935d1e5d94d7ad068d099512d3b915efb41f"
}, },
"require": { "require": {
"drupal/core": "^8.8 || ^9" "drupal/core": "^9.2 || ^10"
}, },
"type": "drupal-module", "type": "drupal-module",
"extra": { "extra": {
"drupal": { "drupal": {
"version": "8.x-1.9", "version": "2.0.2",
"datestamp": "1632421809", "datestamp": "1689001933",
"security-coverage": { "security-coverage": {
"status": "covered", "status": "covered",
"message": "Covered by Drupal's security advisory policy" "message": "Covered by Drupal's security advisory policy"
...@@ -8188,7 +8188,15 @@ ...@@ -8188,7 +8188,15 @@
], ],
"authors": [ "authors": [
{ {
"name": "Bobík", "name": "Anybody",
"homepage": "https://www.drupal.org/user/291091"
},
{
"name": "Grevil",
"homepage": "https://www.drupal.org/user/3668491"
},
{
"name": "Honza Pobořil",
"homepage": "https://www.drupal.org/user/123612" "homepage": "https://www.drupal.org/user/123612"
}, },
{ {
...@@ -8202,6 +8210,10 @@ ...@@ -8202,6 +8210,10 @@
{ {
"name": "Sam152", "name": "Sam152",
"homepage": "https://www.drupal.org/user/1485048" "homepage": "https://www.drupal.org/user/1485048"
},
{
"name": "thomas.frobieter",
"homepage": "https://www.drupal.org/user/409335"
} }
], ],
"description": "A pager which allows an infinite scroll effect for views.", "description": "A pager which allows an infinite scroll effect for views.",
......
...@@ -1292,9 +1292,9 @@ ...@@ -1292,9 +1292,9 @@
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'drupal/views_infinite_scroll' => array( 'drupal/views_infinite_scroll' => array(
'pretty_version' => '1.9.0', 'pretty_version' => '2.0.2',
'version' => '1.9.0.0', 'version' => '2.0.2.0',
'reference' => '8.x-1.9', 'reference' => '2.0.2',
'type' => 'drupal-module', 'type' => 'drupal-module',
'install_path' => __DIR__ . '/../../web/modules/views_infinite_scroll', 'install_path' => __DIR__ . '/../../web/modules/views_infinite_scroll',
'aliases' => array(), 'aliases' => array(),
......
...@@ -14,9 +14,11 @@ INTRODUCTION ...@@ -14,9 +14,11 @@ INTRODUCTION
The Views Infinite Scroll module provides a pager, which allows an infinite The Views Infinite Scroll module provides a pager, which allows an infinite
scroll effect for views. It can work on any view: block, page, etc. scroll effect for views. It can work on any view: block, page, etc.
* For a full description of the module visit https://www.drupal.org/project/views_infinite_scroll * For a full description of the module visit
https://www.drupal.org/project/views_infinite_scroll
* To submit bug reports and feature suggestions, or to track changes visit https://www.drupal.org/project/issues/views_infinite_scroll * To submit bug reports and feature suggestions, or to track changes visit
https://www.drupal.org/project/issues/views_infinite_scroll
REQUIREMENTS REQUIREMENTS
...@@ -28,7 +30,9 @@ This module requires no modules outside of Drupal core. ...@@ -28,7 +30,9 @@ This module requires no modules outside of Drupal core.
INSTALLATION INSTALLATION
------------ ------------
* Install the Views Infinite Scroll module as you would normally install a contributed Drupal module. Visit https://www.drupal.org/node/1897420 for further information. * Install the Views Infinite Scroll module as you would normally install
a contributed Drupal module. Visit https://www.drupal.org/node/1897420
for further information.
CONFIGURATION CONFIGURATION
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
var view = Drupal.views.instances[currentViewId]; var view = Drupal.views.instances[currentViewId];
// Remove once so that the exposed form and pager are processed on // Remove once so that the exposed form and pager are processed on
// behavior attach. // behavior attach.
view.$view.removeOnce('ajax-pager'); once.remove('ajax-pager', view.$view);
view.$exposed_form.removeOnce('exposed-form'); once.remove('exposed-form', view.$exposed_form);
// Make sure infinite scroll can be reinitialized. // Make sure infinite scroll can be reinitialized.
var $existingPager = view.$view.find(pagerSelector); var $existingPager = view.$view.find(pagerSelector);
$existingPager.removeOnce('infinite-scroll'); once.remove('infinite-scroll', $existingPager);
var $newRows = $newView.find(contentWrapperSelector).children(); var $newRows = $newView.find(contentWrapperSelector).children();
var $newPager = $newView.find(pagerSelector); var $newPager = $newView.find(pagerSelector);
...@@ -79,8 +79,8 @@ ...@@ -79,8 +79,8 @@
*/ */
Drupal.behaviors.views_infinite_scroll_automatic = { Drupal.behaviors.views_infinite_scroll_automatic = {
attach : function (context, settings) { attach : function (context, settings) {
$(context).find(automaticPagerSelector).once('infinite-scroll').each(function () { once('infinite-scroll', automaticPagerSelector, context).forEach(function (elem) {
var $pager = $(this); var $pager = $(elem);
$pager.addClass('visually-hidden'); $pager.addClass('visually-hidden');
var isLoadNeeded = function () { var isLoadNeeded = function () {
return window.innerHeight + window.pageYOffset > $pager.offset().top - scrollThreshold; return window.innerHeight + window.pageYOffset > $pager.offset().top - scrollThreshold;
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
// other than a scroll. AJAX filters are a good example of the event needing // other than a scroll. AJAX filters are a good example of the event needing
// to be destroyed earlier than above. // to be destroyed earlier than above.
if (trigger === 'unload') { if (trigger === 'unload') {
if ($(context).find(automaticPagerSelector).removeOnce('infinite-scroll').length) { if (once.remove('infinite-scroll', automaticPagerSelector, context).length) {
$window.off(scrollEvent); $window.off(scrollEvent);
} }
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
use Drupal\views\Ajax\ViewAjaxResponse; use Drupal\views\Ajax\ViewAjaxResponse;
use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\KernelEvents;
/** /**
...@@ -26,7 +26,10 @@ protected function alterPaginationCommands(array &$commands) { ...@@ -26,7 +26,10 @@ protected function alterPaginationCommands(array &$commands) {
$command['method'] = 'infiniteScrollInsertView'; $command['method'] = 'infiniteScrollInsertView';
} }
// Stop the view from scrolling to the top of the page. // Stop the view from scrolling to the top of the page.
if ($command['command'] === 'viewsScrollTop') { // We need to check for both commands as "viewsScrollTop" is deprecated
// and not used in views_ajax.js for Drupal 10.1 anymore and replaced
// by "scrollTop".
if (in_array($command['command'], ['scrollTop', 'viewsScrollTop'])) {
unset($commands[$delta]); unset($commands[$delta]);
} }
} }
...@@ -35,10 +38,10 @@ protected function alterPaginationCommands(array &$commands) { ...@@ -35,10 +38,10 @@ protected function alterPaginationCommands(array &$commands) {
/** /**
* Renders the ajax commands right before preparing the result. * Renders the ajax commands right before preparing the result.
* *
* @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event * @param \Symfony\Component\HttpKernel\Event\ResponseEvent $event
* The response event, which contains the possible AjaxResponse object. * The response event, which contains the possible AjaxResponse object.
*/ */
public function onResponse(FilterResponseEvent $event) { public function onResponse(ResponseEvent $event) {
$response = $event->getResponse(); $response = $event->getResponse();
// Only alter views ajax responses. // Only alter views ajax responses.
......
...@@ -26,7 +26,7 @@ class IntegrationSmokeTest extends BrowserTestBase { ...@@ -26,7 +26,7 @@ class IntegrationSmokeTest extends BrowserTestBase {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function setUp() { protected function setUp(): void {
parent::setUp(); parent::setUp();
$this->drupalLogin($this->createUser(['administer views'])); $this->drupalLogin($this->createUser(['administer views']));
} }
......
...@@ -30,12 +30,12 @@ class InfiniteScrollTest extends WebDriverTestBase { ...@@ -30,12 +30,12 @@ class InfiniteScrollTest extends WebDriverTestBase {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected $defaultTheme = 'classy'; protected $defaultTheme = 'starterkit_theme';
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function setUp() { protected function setUp(): void {
parent::setUp(); parent::setUp();
$this->createContentType([ $this->createContentType([
'type' => 'page', 'type' => 'page',
......
...@@ -2,12 +2,12 @@ name: Views Infinite Scroll ...@@ -2,12 +2,12 @@ name: Views Infinite Scroll
type: module type: module
description: A pager which allows an infinite scroll effect for views. description: A pager which allows an infinite scroll effect for views.
package: Views package: Views
core_version_requirement: ^8.8 || ^9 core_version_requirement: ^9.2 || ^10
dependencies: dependencies:
- drupal:views - drupal:views
# Information added by Drupal.org packaging script on 2021-09-23 # Information added by Drupal.org packaging script on 2023-07-10
version: '8.x-1.9' version: '2.0.2'
project: 'views_infinite_scroll' project: 'views_infinite_scroll'
datestamp: 1632421789 datestamp: 1689001934
...@@ -4,7 +4,7 @@ views-infinite-scroll: ...@@ -4,7 +4,7 @@ views-infinite-scroll:
js/infinite-scroll.js : {} js/infinite-scroll.js : {}
dependencies: dependencies:
- core/jquery - core/jquery
- core/jquery.once - core/once
- core/drupal - core/drupal
- core/drupal.debounce - core/drupal.debounce
- views/views.ajax - views/views.ajax
...@@ -5,8 +5,9 @@ ...@@ -5,8 +5,9 @@
* Module file for views_infinite_scroll. * Module file for views_infinite_scroll.
*/ */
use Drupal\Core\Url; use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Template\Attribute; use Drupal\Core\Template\Attribute;
use Drupal\Core\Url;
use Drupal\views_infinite_scroll\Plugin\views\pager\InfiniteScroll; use Drupal\views_infinite_scroll\Plugin\views\pager\InfiniteScroll;
/** /**
...@@ -54,10 +55,23 @@ function views_infinite_scroll_preprocess_views_view(&$vars) { ...@@ -54,10 +55,23 @@ function views_infinite_scroll_preprocess_views_view(&$vars) {
} }
/** /**
* Implements hook_preprocess_eva_display_entity_view() * Implements hook_preprocess_eva_display_entity_view().
*/ */
function views_infinite_scroll_preprocess_eva_display_entity_view(&$vars) { function views_infinite_scroll_preprocess_eva_display_entity_view(&$vars) {
// When the contributed EVA module is used to display the View, apply the // When the contributed EVA module is used to display the View, apply the
// preprocessing logic of this module. // preprocessing logic of this module.
views_infinite_scroll_preprocess_views_view($vars); views_infinite_scroll_preprocess_views_view($vars);
} }
/**
* Implements hook_form_FORM_ID_alter().
*/
function views_infinite_scroll_form_view_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$viewDisplay = $form_state->getFormObject()->getEntity()->getDisplay('default');
if (isset($viewDisplay['display_options']['pager']['type']) && $viewDisplay['display_options']['pager']['type'] != 'infinite_scroll') {
return;
}
if (isset($viewDisplay['display_options']['use_ajax']) && $viewDisplay['display_options']['use_ajax'] === FALSE) {
\Drupal::messenger()->addWarning('AJAX is currently disabled, for this views default display. For the "Views Infinite Scroll" to work, this setting needs to be enabled!');
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment