From c3fb6dd22b8924963335e0c3bc187a2f42081f23 Mon Sep 17 00:00:00 2001 From: Ron Lucke <lucke@elan-ev.de> Date: Mon, 26 Sep 2022 09:31:29 +0000 Subject: [PATCH] fix #1518 Closes #1518 Merge request studip/studip!949 --- lib/classes/ForumEntry.php | 2 ++ lib/classes/Markup.class.php | 11 +++++++++-- lib/models/Courseware/BlockTypes/Text.php | 3 +++ resources/assets/stylesheets/scss/content.scss | 18 ++++++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/classes/ForumEntry.php b/lib/classes/ForumEntry.php index 95721d75c2f..f18fbb2141c 100644 --- a/lib/classes/ForumEntry.php +++ b/lib/classes/ForumEntry.php @@ -146,7 +146,9 @@ class ForumEntry implements PrivacyObject if (Studip\Markup::isHtml($description)) { // remove all blockquote tags $dom = new DOMDocument(); + $old_libxml_error = libxml_use_internal_errors(true); $dom->loadHtml($description, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); + libxml_use_internal_errors($old_libxml_error); $nodes = iterator_to_array($dom->getElementsByTagName('blockquote')); foreach ($nodes as $node) { diff --git a/lib/classes/Markup.class.php b/lib/classes/Markup.class.php index 26204aa7f5b..0944f422564 100644 --- a/lib/classes/Markup.class.php +++ b/lib/classes/Markup.class.php @@ -285,6 +285,8 @@ class Markup code div[class|style] em + figure[class|style] + figcaption h1 h2 h3 @@ -305,7 +307,7 @@ class Markup small sub sup - table[class] + table[class|style] tbody td[colspan|rowspan|style] thead @@ -340,7 +342,9 @@ class Markup 'height', 'color', 'background-color', // needed by span, td - 'float' + 'border-style', + 'float', + 'border' ]); if ($autoformat) { @@ -375,6 +379,9 @@ class Markup 'controls' => 'Text', // Bool triggers bug in HTMLPurifier ]); + $def->addElement('figcaption', 'Inline', 'Flow', 'Common'); + $def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common'); + return new \HTMLPurifier($config); } diff --git a/lib/models/Courseware/BlockTypes/Text.php b/lib/models/Courseware/BlockTypes/Text.php index 7edeebc9262..4bccd883895 100644 --- a/lib/models/Courseware/BlockTypes/Text.php +++ b/lib/models/Courseware/BlockTypes/Text.php @@ -70,7 +70,9 @@ class Text extends BlockType $files = []; if ($payload['text']) { + $old_libxml_error = libxml_use_internal_errors(true); $document->loadHTML($payload['text']); + libxml_use_internal_errors($old_libxml_error); $imageElements = $document->getElementsByTagName('img'); foreach ($imageElements as $element) { if (!$element instanceof \DOMElement || !$element->hasAttribute('src')) { @@ -82,6 +84,7 @@ class Text extends BlockType } } } + return $files; } diff --git a/resources/assets/stylesheets/scss/content.scss b/resources/assets/stylesheets/scss/content.scss index acfb03e19ec..aca9cb0a96d 100644 --- a/resources/assets/stylesheets/scss/content.scss +++ b/resources/assets/stylesheets/scss/content.scss @@ -54,6 +54,24 @@ pre { // pre-formatted content breaks the Stud.IP Layout! white-space: pre-wrap; } + + figure { + display: table; + margin: 0.9em auto; + + table { + width: 100%; + height: 100%; + border-collapse: collapse; + border-spacing: 0; + + td { + border: unset; + min-width: 2em; + padding: 0.4em; + } + } + } } // Emphasize tt tags a little bit so ##monospace## blocks will stick out. -- GitLab