Merge branch '5.2' into 5.3
authorMatthias Schmidt <gravatronics@live.com>
Mon, 3 May 2021 10:30:15 +0000 (12:30 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Mon, 3 May 2021 10:30:15 +0000 (12:30 +0200)
wcfsetup/install/files/lib/system/html/output/node/HtmlOutputNodeTable.class.php
wcfsetup/install/files/style/ui/tabularBox.scss

index de2ae08b2f2e0e3b7aabb25de07927be97033107..f2befd32387e79028c4dd114bf1d5d25c0d57e33 100644 (file)
@@ -24,11 +24,38 @@ class HtmlOutputNodeTable extends AbstractHtmlOutputNode {
                if ($this->outputType === 'text/html' || $this->outputType === 'text/simplified-html') {
                        /** @var \DOMElement $element */
                        foreach ($elements as $element) {
+                               // Detect cells which are visually in the last row of a table due to their
+                               // `rowspan` property.
+                               /** @var \DOMElement $td */
+                               foreach ($element->getElementsByTagName('td') as $td) {
+                                       $rowspan = $td->getAttribute('rowspan');
+                                       if ($rowspan) {
+                                               $nextTrCount = 0;
+                                               $nextSibling = $td->parentNode->nextSibling;
+                                               while ($nextSibling) {
+                                                       if ($nextSibling->nodeType === \XML_ELEMENT_NODE && $nextSibling->tagName === "tr") {
+                                                               $nextTrCount++;
+                                                       }
+                                                       $nextSibling = $nextSibling->nextSibling;
+                                               }
+                                               
+                                               if ($rowspan - 1 === $nextTrCount) {
+                                                       $class = $td->getAttribute('class');
+                                                       if ($class) {
+                                                               $class .= " ";
+                                                       }
+                                                       $class .= "lastRow";
+                                                       
+                                                       $td->setAttribute('class', $class);
+                                               }
+                                       }
+                               }
+                               
                                // check if table is not contained within another table
                                $parent = $element;
                                while ($parent = $parent->parentNode) {
                                        if ($parent->nodeName === 'table') {
-                                               continue;
+                                               continue 2;
                                        }
                                }
                                
index 8f48a5dc57dc6267685589830204c07f52f295bb..9458c4b99df8415d0b698d10e4231da544b382d1 100644 (file)
                        background-color: rgb(242, 242, 242);
                }
                
-               &:not(:last-child) > td {
+               &:not(:last-child) > td:not(.lastRow) {
                        border-bottom: 1px solid $wcfContentBorderInner;
                }
        }