From ecfb7a18021c8941fa6f059d35ec900d7bd148f1 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 23 Oct 2024 06:49:17 +0000
Subject: [PATCH] fix syntax highlighting, fixes #4650

Closes #4650

Merge request studip/studip!3459
---
 lib/classes/StudipCoreFormat.php           | 8 +++++---
 resources/assets/javascripts/lib/markup.js | 2 +-
 resources/assets/stylesheets/studip.scss   | 9 ++++++++-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/lib/classes/StudipCoreFormat.php b/lib/classes/StudipCoreFormat.php
index 7e3358c8aab..718d10f9621 100644
--- a/lib/classes/StudipCoreFormat.php
+++ b/lib/classes/StudipCoreFormat.php
@@ -501,9 +501,11 @@ class StudipCoreFormat extends TextFormat
             $codetype = " ".decodeHTML(trim(mb_substr($matches[1], 1)), ENT_QUOTES);
         }
         $code = decodeHTML(trim($matches[2]), ENT_QUOTES);
-        return sprintf('<pre class="usercode %1$s"><code class="%1$s">%2$s</code></pre>',
-                       htmlReady($codetype),
-                       htmlReady($code));
+        return sprintf(
+            '<pre><code class="%s">%s</code></pre>',
+            $codetype ? htmlReady("language-{$codetype}") : '',
+            htmlReady($code)
+        );
     }
 
     /**
diff --git a/resources/assets/javascripts/lib/markup.js b/resources/assets/javascripts/lib/markup.js
index 89eb0a37122..777105693d8 100644
--- a/resources/assets/javascripts/lib/markup.js
+++ b/resources/assets/javascripts/lib/markup.js
@@ -29,7 +29,7 @@ const Markup = {
             });
         },
         codehighlight: function (element) {
-            $('pre.usercode:not(.hljs)', element).each(function (index, block) {
+            $('pre code[class^="language-"]:not(.hljs)', element).each(function (index, block) {
                 STUDIP.loadChunk('code-highlight').then((hljs) => {
                     hljs.highlightBlock(block);
                 });
diff --git a/resources/assets/stylesheets/studip.scss b/resources/assets/stylesheets/studip.scss
index bf4022a96ea..7369a8bb5f8 100644
--- a/resources/assets/stylesheets/studip.scss
+++ b/resources/assets/stylesheets/studip.scss
@@ -474,7 +474,14 @@ h1:hover, h2:hover, h3:hover, h4:hover {
     color: var(--base-gray);
 }
 
-pre.usercode {
+pre {
+    &:has(code[class^="language-"]),
+    &.usercode {
+        margin: 0 0 10px;
+    }
+}
+pre code[class^="language-"],
+pre.usercode code {
     padding: 5px;
     background-color: rgba(255, 255, 255, 0.5);
     border: hsla(0, 0%, 0%, 0.1) 5px solid;
-- 
GitLab