diff --git a/core/includes/theme.inc b/core/includes/theme.inc index a94c697acb..b9dd58d6a2 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -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; @@ -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. diff --git a/core/modules/system/tests/src/Unit/Pager/PreprocessPagerTest.php b/core/modules/system/tests/src/Unit/Pager/PreprocessPagerTest.php index 945657282f..d0c65de4a7 100644 --- a/core/modules/system/tests/src/Unit/Pager/PreprocessPagerTest.php +++ b/core/modules/system/tests/src/Unit/Pager/PreprocessPagerTest.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\system\Unit\Pager; use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\Template\AttributeString; use Drupal\Tests\UnitTestCase; /** @@ -39,6 +40,8 @@ protected function setUp(): void { $container = new ContainerBuilder(); $container->set('pager.manager', $pager_manager); $container->set('url_generator', $url_generator); + // The template_preprocess_pager() rendering translatable attribute values. + $container->set('string_translation', $this->getStringTranslationStub()); \Drupal::setContainer($container); } @@ -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()); + } + }