Skip to content
Snippets Groups Projects
Commit f7c10393 authored by catch's avatar catch
Browse files

Issue #3265798 by mohit_aghera, seyfettinkahveci, paulmckibben, smustgrave,...

Issue #3265798 by mohit_aghera, seyfettinkahveci, paulmckibben, smustgrave, Lendude, larowlan: [view:total-rows] problem in Display a 'Specified number of items' pager
parent 4d500c50
No related branches found
No related tags found
25 merge requests!54479.5.x SF update,!5014Issue #3071143: Table Render Array Example Is Incorrect,!4868Issue #1428520: Improve menu parent link selection,!4289Issue #1344552 by marcingy, Niklas Fiekas, Ravi.J, aleevas, Eduardo Morales...,!4114Issue #2707291: Disable body-level scrolling when a dialog is open as a modal,!4100Issue #3249600: Add support for PHP 8.1 Enums as allowed values for list_* data types,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2334Issue #3228209: Add hasRole() method to AccountInterface,!2062Issue #3246454: Add weekly granularity to views date sort,!1591Issue #3199697: Add JSON:API Translation experimental module,!1484Exposed filters get values from URL when Ajax is on,!1255Issue #3238922: Refactor (if feasible) uses of the jQuery serialize function to use vanillaJS,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!925Issue #2339235: Remove taxonomy hard dependency on node module,!877Issue #2708101: Default value for link text is not saved,!872Draft: Issue #3221319: Race condition when creating menu links and editing content deletes menu links,!844Resolve #3036010 "Updaters",!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493,!485Sets the autocomplete attribute for username/password input field on login form.,!30Issue #3182188: Updates composer usage to point at ./vendor/bin/composer
......@@ -69,4 +69,11 @@ public function query() {
$this->view->query->setOffset($this->options['offset']);
}
/**
* {@inheritdoc}
*/
public function postExecute(&$result): void {
$this->total_items = count($result);
}
}
......@@ -107,3 +107,35 @@ display:
value: "Total rows: [view:total-rows] - Page count: [view:page-count]"
format: basic_html
plugin_id: text
page_4:
display_plugin: page
id: page_4
display_title: Specific items page
position: 5
display_options:
defaults:
title: false
pager: false
header: false
pager:
type: some
options:
offset: 0
items_per_page: 3
title: 'Test token page with "Display a specified number of items" pager plugin.'
path: test_tokens_display_specific_items
display_extenders: { }
header:
area:
id: area
table: views
field: area
relationship: none
group_type: group
admin_label: ''
empty: false
tokenize: false
content:
value: "Total rows: [view:total-rows]"
format: basic_html
plugin_id: text
......@@ -4,6 +4,7 @@
use Drupal\Component\Render\FormattableMarkup;
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\views\Tests\ViewTestData;
use Drupal\views\Views;
/**
......@@ -106,6 +107,40 @@ public function testTokenReplacementWithMiniPager() {
}
}
/**
* Tests token replacement of [view:total-rows] when pager is disabled.
*
* It calls "Some" views pager plugin.
*/
public function testTokenReplacementWithSpecificNumberOfItems(): void {
$token_handler = \Drupal::token();
$view = Views::getView('test_tokens');
$view->setDisplay('page_4');
$this->executeView($view);
$total_rows_in_table = ViewTestData::dataSet();
$this->assertTrue($view->get_total_rows, 'The query was set to calculate the total number of rows.');
$this->assertGreaterThan(3, count($total_rows_in_table));
$expected = [
'[view:label]' => 'Test tokens',
'[view:id]' => 'test_tokens',
'[view:url]' => $view->getUrl(NULL, 'page_4')
->setAbsolute(TRUE)
->toString(),
'[view:total-rows]' => '3',
];
$base_bubbleable_metadata = BubbleableMetadata::createFromObject($view->storage);
foreach ($expected as $token => $expected_output) {
$bubbleable_metadata = new BubbleableMetadata();
$output = $token_handler->replace($token, ['view' => $view], [], $bubbleable_metadata);
$this->assertSame($expected_output, $output, sprintf('Token %s replaced correctly.', $token));
$this->assertEquals($base_bubbleable_metadata, $bubbleable_metadata);
}
}
/**
* Tests core token replacements generated from a view without results.
*/
......
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