Verified Commit 2c8c0a2e authored by Théodore Biadala's avatar Théodore Biadala
Browse files

Issue #2334319 by joelpittet, berdir, fabianx, thenchev, calebtr, xjm,...

Issue #2334319 by joelpittet, berdir, fabianx, thenchev, calebtr, xjm, slashrsm, dawehner, andypost, alexpott, lauriii, webflo, duaelfr, godotislate, acbramley, wim leers, manuel garcia, quietone: {% trans %} does not support render array and MarkupInterface valued expressions
parent 61e09f28
Loading
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -162,12 +162,10 @@ protected function getRevisionDescription(RevisionableInterface $revision): arra
      ['type' => $dateFormatType, 'format' => $dateFormatFormat] = $this->getRevisionDescriptionDateFormat($revision);
      $linkText = $this->dateFormatter->format($revision->getRevisionCreationTime(), $dateFormatType, $dateFormatFormat);

      // @todo Simplify this when https://www.drupal.org/node/2334319 lands.
      $username = [
      $context['username'] = [
        '#theme' => 'username',
        '#account' => $revision->getRevisionUser(),
      ];
      $context['username'] = $this->renderer->render($username);
    }
    else {
      $linkText = $revision->access('view label') ? $revision->label() : $this->t('- Restricted access -');
+3 −0
Original line number Diff line number Diff line
@@ -569,6 +569,9 @@ public function renderVar($arg) {
      if ($arg instanceof RenderableInterface) {
        $arg = $arg->toRenderable();
      }
      elseif ($arg instanceof MarkupInterface) {
        return $arg;
      }
      elseif (method_exists($arg, '__toString')) {
        return (string) $arg;
      }
+1 −1
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ public function compile(Compiler $compiler) {
    // leave as an empty array.
    $compiler->raw(', [');
    foreach ($tokens as $token) {
      $compiler->string($token->getAttribute('placeholder'))->raw(' => ')->subcompile($token)->raw(', ');
      $compiler->string($token->getAttribute('placeholder'))->raw(' => $this->env->getExtension(\Drupal\Core\Template\TwigExtension::class)->renderVar(')->subcompile($token)->raw('), ');
    }
    $compiler->raw(']');

+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ public function revisionOverview(NodeInterface $node) {
            '#template' => '{% trans %}{{ date }} by {{ username }}{% endtrans %}{% if message %}<p class="revision-log">{{ message }}</p>{% endif %}',
            '#context' => [
              'date' => $link,
              'username' => $this->renderer->renderInIsolation($username),
              'username' => $username,
              'message' => ['#markup' => $revision->revision_log->value, '#allowed_tags' => Xss::getHtmlTagList()],
            ],
            // @todo Fix this properly in https://www.drupal.org/project/drupal/issues/3227637.
+17 −6
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@

namespace Drupal\Tests\system\Functional\Theme;

use Drupal\Core\Render\Markup;
use Drupal\Tests\BrowserTestBase;
use Drupal\twig_extension_test\TwigExtension\TestExtension;
use PHPUnit\Framework\Attributes\Group;
@@ -79,8 +80,8 @@ public function testsRenderEscapedZeroValue(): void {
    $extension = \Drupal::service('twig.extension');
    /** @var \Drupal\Core\Template\TwigEnvironment $twig */
    $twig = \Drupal::service('twig');
    $this->assertSame(0, $extension->escapeFilter($twig, 0), 'TwigExtension::escapeFilter() returns zero correctly when provided as an integer.');
    $this->assertSame(0, $extension->escapeFilter($twig, 0.0), 'TwigExtension::escapeFilter() returns zero correctly when provided as a double.');
    $this->assertSame(0, $extension->escapeFilter($twig, 0));
    $this->assertSame(0, $extension->escapeFilter($twig, 0.0));
  }

  /**
@@ -91,8 +92,8 @@ public function testsRenderEscapedZeroValue(): void {
  public function testsRenderZeroValue(): void {
    /** @var \Drupal\Core\Template\TwigExtension $extension */
    $extension = \Drupal::service('twig.extension');
    $this->assertSame(0, $extension->renderVar(0), 'TwigExtension::renderVar() renders zero correctly when provided as an integer.');
    $this->assertSame(0, $extension->renderVar(0.0), 'TwigExtension::renderVar() renders zero correctly when provided as a double.');
    $this->assertSame(0, $extension->renderVar(0));
    $this->assertSame(0, $extension->renderVar(0.0));
  }

  /**
@@ -135,8 +136,18 @@ public function testRenderStrategies(): void {
    /** @var \Drupal\Core\Template\TwigEnvironment $twig */
    $twig = \Drupal::service('twig');

    $this->assertSame('test&amp;', $extension->escapeFilter($twig, 'test&'), 'TwigExtension::escapeFilter() renders escaped & when strategy is html (default).');
    $this->assertSame('test\u0026', $extension->escapeFilter($twig, 'test&', 'js'), 'TwigExtension::escapeFilter() renders escaped & when strategy is js.');
    $this->assertSame('test&amp;', $extension->escapeFilter($twig, 'test&'));
    $this->assertSame('test\u0026', $extension->escapeFilter($twig, 'test&', 'js'));
  }

  /**
   * Tests output of MarkupInterface of TwigExtension->renderVar().
   */
  public function testRenderMarkup(): void {
    /** @var \Drupal\Core\Template\TwigExtension $extension */
    $extension = \Drupal::service('twig.extension');
    $markup = Markup::create('<span>This is a MarkupInterface</span>');
    $this->assertSame($markup, $extension->renderVar($markup));
  }

}
Loading