Issue #3188122 by JohnAlbin, larowlan, smustgrave, dww, Abhijith S, B-Prod, raman.b, ranjith_kumar_k_u, levmyshkin: Views more link container theme suggestions are in the wrong order

merge-requests/3006/merge
John Albin Wilkins 2023-03-20 06:20:47 +00:00 committed by Lee Rowlands
parent c886a764bd
commit caa705a781
3 changed files with 45 additions and 2 deletions

View File

@ -23,6 +23,9 @@ display:
relationship: none
table: views_test_data
plugin_id: numeric
use_more: true
use_more_always: true
use_more_text: more
display_plugin: default
display_title: Default
id: default

View File

@ -2,6 +2,7 @@
namespace Drupal\Tests\views\Kernel;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\views\Views;
/**
@ -16,7 +17,18 @@ class ViewsTemplateTest extends ViewsKernelTestBase {
/**
* {@inheritdoc}
*/
public static $testViews = ['test_view_display_template'];
public static $testViews = ['test_page_display', 'test_view_display_template'];
/**
* {@inheritdoc}
*/
public function register(ContainerBuilder $container) {
parent::register($container);
// Enable Twig debugging.
$parameters = $container->getParameter('twig.config');
$parameters['debug'] = TRUE;
$container->setParameter('twig.config', $parameters);
}
/**
* Tests render functionality.
@ -30,4 +42,28 @@ class ViewsTemplateTest extends ViewsKernelTestBase {
$this->assertStringContainsString('This module defines its own display template.', (string) $renderer->renderRoot($output));
}
/**
* @covers views_theme_suggestions_container_alter().
* @throws \Exception
*/
public function testThemeSuggestionsContainerAlter() {
$build = [
'#type' => 'view',
'#name' => 'test_page_display',
'#display_id' => 'default',
'#arguments' => [],
];
$output = $this->render($build);
$extension = '.html.twig';
$expected = '<!-- FILE NAME SUGGESTIONS:' . PHP_EOL
. ' * container--more-link--test-page-display--default' . $extension . PHP_EOL
. ' * container--more-link--default' . $extension . PHP_EOL
. ' * container--more-link--test-page-display' . $extension . PHP_EOL
. ' * container--more-link' . $extension . PHP_EOL
. ' x container' . $extension . PHP_EOL
. '-->' . PHP_EOL;
$this->assertStringContainsString($expected, $output, 'Views more link container suggestions found in Twig debug output');
}
}

View File

@ -285,7 +285,11 @@ function views_theme_suggestions_comment_alter(array &$suggestions, array $varia
*/
function views_theme_suggestions_container_alter(array &$suggestions, array $variables) {
if (!empty($variables['element']['#type']) && $variables['element']['#type'] == 'more_link' && !empty($variables['element']['#view']) && $variables['element']['#view'] instanceof ViewExecutable) {
$suggestions = array_merge($suggestions, $variables['element']['#view']->buildThemeFunctions('container__more_link'));
$suggestions = array_merge(
$suggestions,
// Theme suggestions use the reverse order compared to #theme hooks.
array_reverse($variables['element']['#view']->buildThemeFunctions('container__more_link'))
);
}
}