Fix the support for the alignment of embedded media
authorAlexander Ebert <ebert@woltlab.com>
Tue, 4 Jul 2023 15:39:03 +0000 (17:39 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Tue, 4 Jul 2023 15:39:03 +0000 (17:39 +0200)
wcfsetup/install/files/lib/system/html/input/node/HtmlInputNodeImg.class.php

index 71b2fd343e875a8ad4be38ee9870aa67a98302f4..0eae3a6e4bff86435a5b0e16aabd6974d8635d85 100644 (file)
@@ -158,8 +158,15 @@ class HtmlInputNodeImg extends AbstractHtmlInputNode
             $thumbnail = $matches['thumbnail'];
         }
 
-        if (\preg_match('~\bmessageFloatObject(?P<float>Left|Right)\b~', $class, $matches)) {
-            $float = ($matches['float'] === 'Left') ? 'left' : 'right';
+        $replaceElement = $element;
+        $parent = $element->parentNode;
+        \assert($parent instanceof \DOMElement);
+        if ($parent->tagName === "figure") {
+            if (\preg_match('~\b(?<float>image-style-side-left|image-style-side)\b~', $parent->getAttribute('class'), $matches)) {
+                $float = ($matches['float'] === 'image-style-side-left') ? 'left' : 'right';
+            }
+
+            $replaceElement = $parent;
         }
 
         $attributes = [
@@ -171,7 +178,7 @@ class HtmlInputNodeImg extends AbstractHtmlInputNode
         $newElement = $element->ownerDocument->createElement('woltlab-metacode');
         $newElement->setAttribute('data-name', 'wsm');
         $newElement->setAttribute('data-attributes', \base64_encode(JSON::encode($attributes)));
-        DOMUtil::replaceElement($element, $newElement, false);
+        DOMUtil::replaceElement($replaceElement, $newElement, false);
 
         // The media bbcode is a block element that may not be placed inside inline elements.
         $parent = $newElement;