8000 [Mime] added BodyRendererInterface · symfony/symfony@0c9d684 · GitHub
[go: up one dir, main page]

Skip to content
.gLSgdJ{font-weight:600;color:var(--fgColor-default,var(--color-fg-default,#1F2328));}/*!sc*/ .gLSgdJ:hover{color:var(--fgColor-default,var(--color-fg-default,#1F2328));}/*!sc*/ .irPhWZ{width:60px;}/*!sc*/ .dNbsEP{width:62px;}/*!sc*/ .kHfwUD{width:60px;height:22px;}/*!sc*/ .bHLmSv{position:absolute;inset:0 -2px;cursor:col-resize;background-color:transparent;-webkit-transition-delay:0.1s;transition-delay:0.1s;}/*!sc*/ .bHLmSv:hover{background-color:var(--bgColor-neutral-muted,var(--color-neutral-muted,rgba(175,184,193,0.2)));}/*!sc*/ data-styled.g1[id="Box-sc-g0xbh4-0"]{content:"gLSgdJ,irPhWZ,dNbsEP,kHfwUD,bHLmSv,"}/*!sc*/ .hWlpPn{position:relative;display:inline-block;}/*!sc*/ .hWlpPn::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;-webkit-text-decoration:none;text-decoration:none;text-shadow:none;text-transform:none;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;opacity:0;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .hWlpPn:hover::after,.hWlpPn:active::after,.hWlpPn:focus::after,.hWlpPn:focus-within::after{display:inline-block;-webkit-text-decoration:none;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-no-delay:hover::after,.hWlpPn.tooltipped-no-delay:active::after,.hWlpPn.tooltipped-no-delay:focus::after,.hWlpPn.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-multiline:hover::after,.hWlpPn.tooltipped-multiline:active::after,.hWlpPn.tooltipped-multiline:focus::after,.hWlpPn.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-se::after,.hWlpPn.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/ .hWlpPn.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-sw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-n::after,.hWlpPn.tooltipped-ne::after,.hWlpPn.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/ .hWlpPn.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-nw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/ .hWlpPn.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate;}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-s::after,.hWlpPn.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-w::after,.hWlpPn.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/ .hWlpPn.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/ .hWlpPn.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/ data-styled.g4[id="Tooltip__TooltipBase-sc-17tf59c-0"]{content:"hWlpPn,"}/*!sc*/ .haStJJ{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:60px;}/*!sc*/ .haStJJ::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ .gQPxIv{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:62px;}/*!sc*/ .gQPxIv::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ .hltGgV{position:relative;overflow:hidden;-webkit-mask-image:radial-gradient(white,black);mask-image:radial-gradient(white,black);background-color:var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5)));border-radius:3px;display:block;height:1.2em;width:60px;height:22px;}/*!sc*/ .hltGgV::after{-webkit-animation:crVFvv 1.5s infinite linear;animation:crVFvv 1.5s infinite linear;background:linear-gradient(90deg,transparent,var(--bgColor-neutral-muted,var(--color-neutral-subtle,rgba(234,238,242,0.5))),transparent);content:'';position:absolute;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);bottom:0;left:0;right:0;top:0;}/*!sc*/ data-styled.g9[id="LoadingSkeleton-sc-14d3f1fe-0"]{content:"haStJJ,gQPxIv,hltGgV,"}/*!sc*/ @-webkit-keyframes crVFvv{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);}50%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}100%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}}/*!sc*/ @keyframes crVFvv{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);}50%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}100%{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);}}/*!sc*/ data-styled.g39[id="sc-keyframes-crVFvv"]{content:"crVFvv,"}/*!sc*/

Commit 0c9d684

Browse files
committed
[Mime] added BodyRendererInterface
1 parent 19c6639 commit 0c9d684

File tree

2 files changed

+43
-19
lines changed

2 files changed

+43
-19
lines changed

src/Symfony/Bridge/Twig/Mime/Renderer.php renamed to src/Symfony/Bridge/Twig/Mime/BodyRenderer.php

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212
namespace Symfony\Bridge\Twig\Mime;
1313

1414
use League\HTMLToMarkdown\HtmlConverter;
15+
use Symfony\Component\Mime\BodyRendererInterface;
16+
use Symfony\Component\Mime\Message;
1517
use Twig\Environment;
1618

1719
/**
1820
* @author Fabien Potencier <fabien@symfony.com>
1921
*
2022
* @experimental in 4.3
2123
*/
22-
final class Renderer
24+
final class BodyRenderer implements BodyRendererInterface
2325
{
2426
private $twig;
2527
private $context;
@@ -38,48 +40,48 @@ public function __construct(Environment $twig, array $context = [])
3840
}
3941
}
4042

41-
public function render(TemplatedEmail $email): TemplatedEmail
43+
public function render(Message $message): void
4244
{
43-
$email = clone $email;
45+
if (!$message instanceof TemplatedEmail) {
46+
return;
47+
}
4448

45-
$vars = array_merge($this->context, $email->getContext(), [
46-
'email' => new WrappedTemplatedEmail($this->twig, $email),
49+
$vars = array_merge($this->context, $message->getContext(), [
50+
'email' => new WrappedTemplatedEmail($this->twig, $message),
4751
]);
4852

49-
if ($template = $email->getTemplate()) {
50-
$this->renderFull($email, $template, $vars);
53+
if ($template = $message->getTemplate()) {
54+
$this->renderFull($message, $template, $vars);
5155
}
5256

53-
if ($template = $email->getTextTemplate()) {
54-
$email->text($this->twig->render($template, $vars));
57+
if ($template = $message->getTextTemplate()) {
58+
$message->text($this->twig->render($template, $vars));
5559
}
5660

57-
if ($template = $email->getHtmlTemplate()) {
58-
$email->html($this->twig->render($template, $vars));
61+
if ($template = $message->getHtmlTemplate()) {
62+
$message->html($this->twig->render($template, $vars));
5963
}
6064

6165
// if text body is empty, compute one from the HTML body
62-
if (!$email->getTextBody() && null !== $html = $email->getHtmlBody()) {
63-
$email->text($this->convertHtmlToText(\is_resource($html) ? stream_get_contents($html) : $html));
66+
if (!$message->getTextBody() && null !== $html = $message->getHtmlBody()) {
67+
$message->text($this->convertHtmlToText(\is_resource($html) ? stream_get_contents($html) : $html));
6468
}
65-
66-
return $email;
6769
}
6870

69-
private function renderFull(TemplatedEmail $email, string $template, array $vars): void
71+
private function renderFull(TemplatedEmail $message, string $template, array $vars): void
7072
{
7173
$template = $this->twig->load($template);
7274

7375
if ($template->hasBlock('subject', $vars)) {
74-
$email->subject($template->renderBlock('subject', $vars));
76+
$message->subject($template->renderBlock('subject', $vars));
7577
}
7678

7779
if ($template->hasBlock('text', $vars)) {
78-
$email->text($template->renderBlock('text', $vars));
80+
$message->text($template->renderBlock('text', $vars));
7981
}
8082

8183
if ($template->hasBlock('html', $vars)) {
82-
$email->html($template->renderBlock('html', $vars));
84+
$message->html($template->renderBlock('html', $vars));
8385
}
8486

8587
if ($template->hasBlock('config', $vars)) {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Mime;
13+
14+
/**
15+
* @author Fabien Potencier <fabien@symfony.com>
16+
*
17+
* @experimental in 4.3
18+
*/
19+
interface BodyRendererInterface
20+
{
21+
public function render(Message $message): void;
22+
}

0 commit comments

Comments
 (0)
0