public function ImageTagPlugin::buildElement in Extensible BBCode 4.0.x
Same name and namespace in other branches
- 8.3 standard/src/Plugin/XBBCode/ImageTagPlugin.php \Drupal\xbbcode_standard\Plugin\XBBCode\ImageTagPlugin::buildElement()
Build a render array from the tag.
Parameters
\Drupal\xbbcode\Parser\Tree\TagElementInterface $tag: The tag element in the parse tree.
Return value
array The render array.
Overrides RenderTagPlugin::buildElement
File
- standard/
src/ Plugin/ XBBCode/ ImageTagPlugin.php, line 37
Class
- ImageTagPlugin
- Inserts an image.
Namespace
Drupal\xbbcode_standard\Plugin\XBBCodeCode
public function buildElement(TagElementInterface $tag) : array {
$style = [];
$dimensions = explode('x', $tag
->getOption());
if (count($dimensions) === 2) {
[
$width,
$height,
] = $dimensions;
}
else {
$width = (string) $tag
->getAttribute('width');
$height = (string) $tag
->getAttribute('height');
}
if (is_numeric($width)) {
$style[] = "width:{$width}px";
}
if (is_numeric($height)) {
$style[] = "height:{$height}px";
}
$src = Html::decodeEntities($tag
->getContent());
return [
'#type' => 'inline_template',
'#template' => '<img src="{{ src }}" alt="{{ src }}" style="{{ style }};" />',
'#context' => [
'tag' => $tag,
'style' => implode(';', $style),
'src' => $src,
],
];
}