Verified Commit 9266e0ea authored by John Albin Wilkins's avatar John Albin Wilkins Committed by Lee Rowlands
Browse files

Issue #3188122 by JohnAlbin, larowlan, smustgrave, dww, Abhijith S, B-Prod,...

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

(cherry picked from commit caa705a7)
parent 5f06ef9a
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
+37 −1
Original line number Diff line number Diff line
@@ -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 @@ public function testTemplate() {
    $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');
  }

}
+5 −1
Original line number Diff line number Diff line
@@ -283,7 +283,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'))
    );
  }
}