Loading core/includes/theme.inc +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ */ use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Url; use Drupal\Component\Serialization\Json; use Drupal\Component\Utility\Crypt; Loading Loading @@ -1827,6 +1828,7 @@ function template_preprocess_pager(&$variables) { $items['pages'][$i]['attributes'] = new Attribute(); if ($i == $pager_current) { $variables['current'] = $i; $items['pages'][$i]['attributes']->setAttribute('aria-current', new TranslatableMarkup('Current page')); } } // Add an ellipsis if there are further next pages. Loading core/modules/system/tests/src/Unit/Pager/PreprocessPagerTest.php +28 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Drupal\Tests\system\Unit\Pager; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\Template\AttributeString; use Drupal\Tests\UnitTestCase; /** Loading Loading @@ -39,6 +40,8 @@ protected function setUp(): void { $container = new ContainerBuilder(); $container->set('pager.manager', $pager_manager); $container->set('url_generator', $url_generator); // template_preprocess_pager() renders translatable attribute values. $container->set('string_translation', $this->getStringTranslationStub()); \Drupal::setContainer($container); } Loading @@ -63,4 +66,29 @@ public function testQuantityNotSet() { $this->assertEquals(['first', 'previous'], array_keys($variables['items'])); } /** * Tests template_preprocess_pager() when a #quantity value is passed. * * @covers ::template_preprocess_pager */ public function testQuantitySet() { require_once $this->root . '/core/includes/theme.inc'; $variables = [ 'pager' => [ '#element' => '2', '#parameters' => [], '#quantity' => '2', '#route_name' => '', '#tags' => '', ], ]; template_preprocess_pager($variables); $this->assertEquals(['first', 'previous', 'pages'], array_keys($variables['items'])); /** @var \Drupal\Core\Template\AttributeString $attribute */ $attribute = $variables['items']['pages']['2']['attributes']->offsetGet('aria-current'); $this->assertInstanceOf(AttributeString::class, $attribute); $this->assertEquals('Current page', $attribute->value()); } } Loading
core/includes/theme.inc +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ */ use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Url; use Drupal\Component\Serialization\Json; use Drupal\Component\Utility\Crypt; Loading Loading @@ -1827,6 +1828,7 @@ function template_preprocess_pager(&$variables) { $items['pages'][$i]['attributes'] = new Attribute(); if ($i == $pager_current) { $variables['current'] = $i; $items['pages'][$i]['attributes']->setAttribute('aria-current', new TranslatableMarkup('Current page')); } } // Add an ellipsis if there are further next pages. Loading
core/modules/system/tests/src/Unit/Pager/PreprocessPagerTest.php +28 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Drupal\Tests\system\Unit\Pager; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\Template\AttributeString; use Drupal\Tests\UnitTestCase; /** Loading Loading @@ -39,6 +40,8 @@ protected function setUp(): void { $container = new ContainerBuilder(); $container->set('pager.manager', $pager_manager); $container->set('url_generator', $url_generator); // template_preprocess_pager() renders translatable attribute values. $container->set('string_translation', $this->getStringTranslationStub()); \Drupal::setContainer($container); } Loading @@ -63,4 +66,29 @@ public function testQuantityNotSet() { $this->assertEquals(['first', 'previous'], array_keys($variables['items'])); } /** * Tests template_preprocess_pager() when a #quantity value is passed. * * @covers ::template_preprocess_pager */ public function testQuantitySet() { require_once $this->root . '/core/includes/theme.inc'; $variables = [ 'pager' => [ '#element' => '2', '#parameters' => [], '#quantity' => '2', '#route_name' => '', '#tags' => '', ], ]; template_preprocess_pager($variables); $this->assertEquals(['first', 'previous', 'pages'], array_keys($variables['items'])); /** @var \Drupal\Core\Template\AttributeString $attribute */ $attribute = $variables['items']['pages']['2']['attributes']->offsetGet('aria-current'); $this->assertInstanceOf(AttributeString::class, $attribute); $this->assertEquals('Current page', $attribute->value()); } }