Add support for image block link

[MAILPOET-2750]
This commit is contained in:
Rostislav Wolny
2020-04-02 15:20:27 +02:00
committed by Veljko V
parent 7a604fa10e
commit 63d6d463cb
8 changed files with 68 additions and 2 deletions

View File

@ -10,7 +10,7 @@ class Image {
return $this->wrapImage($block['params'], $this->renderImage($block['params']));
}
private function renderImage(array $params) {
private function renderImage(array $params): string {
$attributes = [];
$attributes[] = 'src="' . $params['url'] . '"';
$attributes[] = $params['alt'] ? 'alt="' . $params['alt'] . '"' : 'alt';
@ -30,12 +30,16 @@ class Image {
return '<img ' . implode(' ', $attributes) . '" />';
}
private function wrapImage(array $params, string $img) {
private function wrapImage(array $params, string $img): string {
// Figure
$figureClasses = ['size-' . $params['size_slug']];
if ($params['align']) {
$figureClasses[] = 'align' . $params['align'];
}
// Link
if ($params['href']) {
$img = $this->wrapToLink($params, $img);
}
$caption = $params['caption'] ? "<figcaption>{$params['caption']}</figcaption>" : '';
$figure = '<figure class="' . implode(' ', $figureClasses) . '">' . $img . $caption . '</figure>';
// Main wrapper
@ -45,4 +49,18 @@ class Image {
}
return '<div class="' . implode(' ', $divClasses) . '">' . $figure . '</div>';
}
private function wrapToLink(array $params, string $img): string {
$attributes = ['href="' . $params['href'] . '"'];
if ($params['link_class']) {
$attributes[] = 'class="' . $params['link_class'] . '"';
}
if ($params['link_target']) {
$attributes[] = 'target="' . $params['link_target'] . '"';
}
if ($params['rel']) {
$attributes[] = 'rel="' . $params['rel'] . '"';
}
return '<a ' . implode(' ', $attributes) . ' >' . $img . '</a>';
}
}