Fehlerbehebung

This commit is contained in:
2026-06-15 23:41:28 +02:00
parent e20b59b43d
commit c4c299eed6
4 changed files with 66 additions and 30 deletions
+44 -11
View File
@@ -16,15 +16,24 @@ document.addEventListener("DOMContentLoaded", function () {
}
/**
* Registriert alle Antwort-Buttons.
* Aktiviert einen einzelnen Antworten-Button.
*
* @param {HTMLButtonElement} button Antworten-Button
*/
document.querySelectorAll(".reply-button").forEach(function (button) {
function registerReplyButton(button) {
button.addEventListener("click", function () {
parentCommentInput.value = button.dataset.commentId;
replyInfo.textContent = "Antwort auf " + button.dataset.author;
replyInfo.style.display = "block";
commentContent.focus();
});
}
/**
* Registriert alle bereits vorhandenen Antwort-Buttons.
*/
document.querySelectorAll(".reply-button").forEach(function (button) {
registerReplyButton(button);
});
/**
@@ -58,17 +67,15 @@ document.addEventListener("DOMContentLoaded", function () {
if (parentCommentId) {
commentElement.classList.add("comment-reply");
}
commentElement.innerHTML = `
<p>
<strong>${escapeHtml(data.author)}</strong>
<span>${escapeHtml(data.created)}</span>
</p>
<p>${escapeHtml(data.content).replace(/\n/g, "<br>")}</p>
`;
commentElement.innerHTML = `
<p>
<strong>${escapeHtml(data.author)}</strong>
<span>${escapeHtml(data.created)}</span>
</p>
<p>${escapeHtml(data.content).replace(/\n/g, "<br>")}</p>
`;
if (parentCommentId) {
const parentReplies = document.querySelector(
`.comment-item[data-comment-id="${parentCommentId}"] .comment-replies`
);
@@ -76,8 +83,34 @@ document.addEventListener("DOMContentLoaded", function () {
if (parentReplies) {
parentReplies.appendChild(commentElement);
}
} else {
commentElement.dataset.commentId = data.commentId;
commentElement.innerHTML = `
<p>
<strong>${escapeHtml(data.author)}</strong>
<span>${escapeHtml(data.created)}</span>
</p>
<p>${escapeHtml(data.content).replace(/\n/g, "<br>")}</p>
<button type="button"
class="reply-button"
data-comment-id="${escapeHtml(data.commentId)}"
data-author="${escapeHtml(data.author)}">
Antworten
</button>
<div class="comment-replies"></div>
`;
commentsList.prepend(commentElement);
const newReplyButton = commentElement.querySelector(".reply-button");
if (newReplyButton) {
registerReplyButton(newReplyButton);
}
}
commentContent.value = "";
+2 -1
View File
@@ -32,7 +32,7 @@ if (empty($articleId) || empty($content)) {
try {
$commentManager = CommentManager::getInstance();
$commentManager->addComment(
$commentId = $commentManager->addComment(
$articleId,
$_SESSION["user_email"],
$content,
@@ -41,6 +41,7 @@ try {
echo json_encode([
"success" => true,
"commentId" => $commentId,
"author" => $_SESSION["user_email"],
"content" => $content,
"created" => date("Y-m-d H:i:s"),
+1 -1
View File
@@ -23,7 +23,7 @@ interface CommentManagerDAO
* @param string $content Inhalt des Kommentars
* @param int|null $parentCommentId ID des Eltern-Kommentars oder null
*
* @return void
* @return int ID des neu gespeicherten Kommentars
*/
public function addComment(
$articleId,
+19 -17
View File
@@ -102,7 +102,7 @@ class DatabaseCommentManager implements CommentManagerDAO
* @param string $content Inhalt des Kommentars
* @param int|null $parentCommentId ID des Eltern-Kommentars oder null
*
* @return void
* @return int ID des neu gespeicherten Kommentars
*/
public function addComment(
$articleId,
@@ -141,6 +141,8 @@ class DatabaseCommentManager implements CommentManagerDAO
":content" => $content
]);
return intval($db->lastInsertId());
} catch (PDOException $e) {
throw new RuntimeException(
"Kommentar konnte nicht gespeichert werden."
@@ -162,22 +164,22 @@ class DatabaseCommentManager implements CommentManagerDAO
$db = $this->getConnection();
$sql = "
SELECT
id,
article_id,
CASE
WHEN parent_comment_id IS NULL THEN NULL
WHEN parent_comment_id = '' THEN NULL
WHEN parent_comment_id = 0 THEN NULL
ELSE parent_comment_id
END AS parent_comment_id,
author,
content,
created
FROM comments
WHERE article_id = :articleId
ORDER BY created ASC
";
SELECT
id,
article_id,
CASE
WHEN parent_comment_id IS NULL THEN NULL
WHEN parent_comment_id = '' THEN NULL
WHEN parent_comment_id = 0 THEN NULL
ELSE parent_comment_id
END AS parent_comment_id,
author,
content,
created
FROM comments
WHERE article_id = :articleId
ORDER BY created ASC
";
$command = $db->prepare($sql);