From c4ffc1c7974d027ca5369cb9472f927ec85ef208 Mon Sep 17 00:00:00 2001 From: Caroline Schulte Date: Sun, 19 Jul 2026 17:19:57 +0200 Subject: [PATCH 1/8] Deutlichere Effekte bei Nutzerinteraktionen --- .idea/dataSources.local.xml | 2 +- css/main.css | 20 +++++++++ css/navbar.css | 90 +++++++++++++++++++++++++++++++++++-- 3 files changed, 108 insertions(+), 4 deletions(-) diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml index b341a8a..707e2b3 100644 --- a/.idea/dataSources.local.xml +++ b/.idea/dataSources.local.xml @@ -1,6 +1,6 @@ - + " diff --git a/css/main.css b/css/main.css index e72f17f..82a8780 100644 --- a/css/main.css +++ b/css/main.css @@ -225,4 +225,24 @@ h1 { text-align: center; text-decoration: none; box-sizing: border-box; +} +/* Deutlichere Klickreaktion für normale Buttons */ +.button:active { + transform: translateY(1px); + box-shadow: none; +} + +/* Deutlichere Klickreaktion für Kategorien */ +.category-link:active { + transform: translateY(1px); + box-shadow: none; +} + +/* Sichtbare Tastatur-Markierung */ +.button:focus-visible, +.category-link:focus-visible, +.article-link a:focus-visible, +.register-link a:focus-visible { + outline: 3px solid #fbbf24; + outline-offset: 3px; } \ No newline at end of file diff --git a/css/navbar.css b/css/navbar.css index d7d3d4a..c68e94f 100644 --- a/css/navbar.css +++ b/css/navbar.css @@ -248,9 +248,9 @@ CSS für die navbar z-index: 1000; transition: left 0.3s ease; padding: 2rem 1rem; - box-shadow: 2px 0 10px rgba(0,0,0,0.5); + box-shadow: 2px 0 10px rgba(0, 0, 0, 0.5); overflow-y: auto; - + /* Genug Abstand oben rechts, damit Links nicht hinter dem X liegen */ padding: 4rem 1.5rem 2rem 1.5rem; } @@ -302,5 +302,89 @@ CSS für die navbar padding: 0.8rem 1rem; cursor: pointer; } +} + /* Deutlichere Hover-Effekte für die Navigation */ -} \ No newline at end of file + .nav__dropdown-toggle, + .nav__link { + border-radius: 6px; + transition: + background-color 0.2s ease, + color 0.2s ease, + transform 0.2s ease; + } + + .nav__dropdown-toggle:hover, + .nav__link:hover { + background-color: #ffffff; + color: #1d4ed8; + transform: translateY(-2px); + } + + /* Sichtbare Reaktion beim Anklicken */ + .nav__dropdown-toggle:active, + .nav__link:active { + transform: translateY(1px); + } + + /* Deutlichere Effekte für Anmelden, Registrieren usw. */ + .nav__button { + transition: + background-color 0.2s ease, + color 0.2s ease, + transform 0.2s ease, + box-shadow 0.2s ease; + } + + .nav__button:hover { + background-color: #2563eb; + color: #ffffff; + transform: translateY(-2px); + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); + } + + .nav__button:active { + transform: translateY(1px); + box-shadow: none; + } + + /* Deutlichere Hervorhebung der Einträge im Dropdown-Menü */ + .nav__dropdown-menu a { + display: block; + transition: + background-color 0.2s ease, + color 0.2s ease, + padding-left 0.2s ease; + } + + .nav__dropdown-menu a:hover { + background-color: #dbeafe; + color: #1d4ed8; + padding-left: 1.4rem; + } + + /* Effekt für den Suchbutton */ + .nav__search-button { + transition: + background-color 0.2s ease, + color 0.2s ease, + transform 0.2s ease; + } + + .nav__search-button:hover { + background-color: #2563eb; + color: #ffffff; + } + + .nav__search-button:active { + transform: scale(0.95); + } + + /* Sichtbare Markierung bei Tastaturbedienung */ + .nav a:focus-visible, + .nav button:focus-visible, + .nav input:focus-visible, + .nav label:focus-visible { + outline: 3px solid #fbbf24; + outline-offset: 3px; + } From 2148ba75f33c55646e9696866b898552efd57b14 Mon Sep 17 00:00:00 2001 From: Caroline Schulte Date: Sun, 19 Jul 2026 17:27:35 +0200 Subject: [PATCH 2/8] =?UTF-8?q?Button=20hervorheben=20und=20Kommentare=20?= =?UTF-8?q?=C3=A4ndern=20versch=C3=B6nert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/main.css | 90 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 85 insertions(+), 5 deletions(-) diff --git a/css/main.css b/css/main.css index 82a8780..02b5bbe 100644 --- a/css/main.css +++ b/css/main.css @@ -154,21 +154,32 @@ h1 { .button { width: 100%; - padding: 12px; + padding: 14px; background-color: #2563eb; color: white; - border: none; + border: 2px solid transparent; border-radius: 8px; font-size: 1rem; font-weight: bold; cursor: pointer; - transition: background-color 0.2s, transform 0.2s, box-shadow 0.2s; + transition: + background-color 0.2s ease, + transform 0.2s ease, + box-shadow 0.2s ease, + border-color 0.2s ease; } .button:hover { + background-color: #1e40af; + border-color: #93c5fd; + transform: translateY(-3px) scale(1.01); + box-shadow: 0 8px 18px rgba(37, 99, 235, 0.35); +} + +.button:active { background-color: #1d4ed8; - transform: translateY(-2px); - box-shadow: 0 4px 10px rgba(0,0,0,0.15); + transform: translateY(1px) scale(0.99); + box-shadow: 0 2px 5px rgba(37, 99, 235, 0.25); } .register-link { @@ -245,4 +256,73 @@ h1 { .register-link a:focus-visible { outline: 3px solid #fbbf24; outline-offset: 3px; +} +/* Kommentarbereich */ + +#comments-list { + display: flex; + flex-direction: column; + gap: 20px; + margin-bottom: 40px; +} + +#comments-list > div, +.comment { + background-color: #ffffff; + border: 1px solid #dbe3ec; + border-radius: 12px; + padding: 24px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); + transition: + transform 0.2s ease, + box-shadow 0.2s ease, + border-color 0.2s ease; +} + +#comments-list > div:hover, +.comment:hover { + transform: translateY(-3px); + border-color: #93c5fd; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); +} + +#comments-list textarea, +#comment-content { + width: 100%; + box-sizing: border-box; + padding: 14px; + border: 1px solid #cbd5e1; + border-radius: 8px; + font-size: 1rem; + resize: vertical; + transition: + border-color 0.2s ease, + box-shadow 0.2s ease; +} + +#comments-list textarea:focus, +#comment-content:focus { + outline: none; + border-color: #2563eb; + box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.18); +} + +#comments-list a { + color: #2563eb; + font-weight: bold; + text-decoration: none; + border-radius: 4px; + transition: + color 0.2s ease, + background-color 0.2s ease; +} + +#comments-list a:hover { + color: #1e40af; + background-color: #dbeafe; + text-decoration: underline; +} + +#comments-list button { + cursor: pointer; } \ No newline at end of file From d9da018ac214911d150eaf71257b1367137157a6 Mon Sep 17 00:00:00 2001 From: Caroline Schulte Date: Sun, 19 Jul 2026 17:31:49 +0200 Subject: [PATCH 3/8] =?UTF-8?q?L=C3=B6schen=20Button=20versch=C3=B6nert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/main.css | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/css/main.css b/css/main.css index 02b5bbe..d34f22e 100644 --- a/css/main.css +++ b/css/main.css @@ -325,4 +325,35 @@ h1 { #comments-list button { cursor: pointer; +}.delete-comment-button { + display: inline-block; + background: #ffffff; + color: #dc2626; + border: 2px solid #dc2626; + border-radius: 8px; + padding: 10px 18px; + font-size: 0.95rem; + font-weight: 600; + cursor: pointer; + transition: + background-color 0.25s ease, + color 0.25s ease, + transform 0.2s ease, + box-shadow 0.2s ease; + } + +.delete-comment-button:hover { + background: #dc2626; + color: #ffffff; + transform: translateY(-2px); + box-shadow: 0 6px 14px rgba(220,38,38,0.25); +} + +.delete-comment-button:active { + transform: translateY(1px); + box-shadow: none; +} +.delete-comment-form { + margin-top: 12px; + margin-bottom: 12px; } \ No newline at end of file From 4f4ad9599d6e04c187809cc5201ef1faa9b81998 Mon Sep 17 00:00:00 2001 From: Caroline Schulte Date: Sun, 19 Jul 2026 17:51:52 +0200 Subject: [PATCH 4/8] =?UTF-8?q?L=C3=B6schen=20Button=20versch=C3=B6nert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/showArticle.php | 40 +++++++++++++++++++++-- css/main.css | 70 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 102 insertions(+), 8 deletions(-) diff --git a/content/showArticle.php b/content/showArticle.php index c5152c1..d6a85c6 100644 --- a/content/showArticle.php +++ b/content/showArticle.php @@ -5,6 +5,28 @@ $repliesByParent = []; $articleObj = null; include_once 'php/controller/showArticle-controller.php'; +require_once 'php/model/UserManager.php'; + +$userManager = UserManager::getInstance(); + +/** + * Liefert den vollständigen Namen zu einer gespeicherten E-Mail-Adresse. + * Falls kein Benutzer gefunden wird, wird die E-Mail als Ersatz angezeigt. + */ +function getCommentAuthorName($email, $userManager) +{ + $user = $userManager->findUser($email); + + if ($user === null) { + return $email; + } + + $fullName = trim( + ($user["vorname"] ?? "") . " " . ($user["nachname"] ?? "") + ); + + return $fullName !== "" ? $fullName : $email; +} /* * Ermittelt, ob ohne JavaScript auf einen Kommentar * geantwortet werden soll. @@ -173,7 +195,14 @@ if ($replyAuthor === null) {

- getAuthor()); ?> + getAuthor(), + $userManager + ) + ); + ?> @@ -304,7 +333,14 @@ if ($replyAuthor === null) {

- getAuthor()); ?> + getAuthor(), + $userManager + ) + ); + ?> diff --git a/css/main.css b/css/main.css index d34f22e..a2bc707 100644 --- a/css/main.css +++ b/css/main.css @@ -237,11 +237,6 @@ h1 { text-decoration: none; box-sizing: border-box; } -/* Deutlichere Klickreaktion für normale Buttons */ -.button:active { - transform: translateY(1px); - box-shadow: none; -} /* Deutlichere Klickreaktion für Kategorien */ .category-link:active { @@ -325,7 +320,8 @@ h1 { #comments-list button { cursor: pointer; -}.delete-comment-button { +} +.delete-comment-button { display: inline-block; background: #ffffff; color: #dc2626; @@ -356,4 +352,66 @@ h1 { .delete-comment-form { margin-top: 12px; margin-bottom: 12px; +} +/* Button zum Öffnen der Kommentarbearbeitung */ +.edit-comment-button { + display: inline-block; + width: auto; + padding: 10px 18px; + background-color: #2563eb; + color: #ffffff; + border: 2px solid #2563eb; + border-radius: 8px; + font-size: 0.95rem; + font-weight: 600; + cursor: pointer; + list-style: none; + transition: + background-color 0.2s ease, + border-color 0.2s ease, + transform 0.2s ease, + box-shadow 0.2s ease; +} + +/* Entfernt das normale Dreieck in einigen Browsern */ +.edit-comment-button::-webkit-details-marker { + display: none; +} + +/* Eigenes Symbol vor dem Text */ +.edit-comment-button::before { + content: "✏ "; +} + +.edit-comment-button:hover { + background-color: #1e40af; + border-color: #1e40af; + transform: translateY(-2px); + box-shadow: 0 5px 12px rgba(37, 99, 235, 0.3); +} + +.edit-comment-button:active { + transform: translateY(1px); + box-shadow: none; +} + +.edit-comment-button:focus-visible { + outline: 3px solid #fbbf24; + outline-offset: 3px; +} + +/* Abstand zwischen Bearbeiten und Löschen */ +.edit-comment-details { + margin-bottom: 12px; +} + +/* Geöffneter Bearbeitungsbereich */ +.edit-comment-details[open] .edit-comment-button { + margin-bottom: 12px; + background-color: #1e40af; +} + +/* Geändertes Symbol, wenn der Bereich geöffnet ist */ +.edit-comment-details[open] .edit-comment-button::before { + content: "▲ "; } \ No newline at end of file From 3a819d6ed2546d2f4719a80e05511cef7cb5d9ff Mon Sep 17 00:00:00 2001 From: Caroline Schulte Date: Sun, 19 Jul 2026 17:57:34 +0200 Subject: [PATCH 5/8] Email aus Kommentar entfernen --- content/showArticle.php | 8 +++++--- php/model/DatabaseUserManager.php | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/content/showArticle.php b/content/showArticle.php index d6a85c6..6b6a7b1 100644 --- a/content/showArticle.php +++ b/content/showArticle.php @@ -15,15 +15,17 @@ $userManager = UserManager::getInstance(); */ function getCommentAuthorName($email, $userManager) { + $email = trim($email); $user = $userManager->findUser($email); if ($user === null) { return $email; } - $fullName = trim( - ($user["vorname"] ?? "") . " " . ($user["nachname"] ?? "") - ); + $vorname = trim($user["vorname"] ?? ""); + $nachname = trim($user["nachname"] ?? ""); + + $fullName = trim($vorname . " " . $nachname); return $fullName !== "" ? $fullName : $email; } diff --git a/php/model/DatabaseUserManager.php b/php/model/DatabaseUserManager.php index 8a7cc47..bfe674d 100644 --- a/php/model/DatabaseUserManager.php +++ b/php/model/DatabaseUserManager.php @@ -75,11 +75,15 @@ class DatabaseUserManager implements UserManagerDAO { try { $db = $this->getConnection(); - $sql = "SELECT * FROM users WHERE email = :email"; + $sql = " + SELECT * + FROM users + WHERE LOWER(TRIM(email)) = LOWER(TRIM(:email)) + "; $command = $db->prepare($sql); $command->execute([ - ":email" => $email + ":email" => trim($email) ]); $user = $command->fetch(PDO::FETCH_ASSOC); From a4b0dfe7ec47187ca2243821d49786aa69275eab Mon Sep 17 00:00:00 2001 From: Caroline Schulte Date: Sun, 19 Jul 2026 18:05:23 +0200 Subject: [PATCH 6/8] Email aus Kommentar entfernen --- php/model/DatabaseUserManager.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/php/model/DatabaseUserManager.php b/php/model/DatabaseUserManager.php index bfe674d..48b3f2a 100644 --- a/php/model/DatabaseUserManager.php +++ b/php/model/DatabaseUserManager.php @@ -75,20 +75,23 @@ class DatabaseUserManager implements UserManagerDAO { try { $db = $this->getConnection(); - $sql = " - SELECT * - FROM users - WHERE LOWER(TRIM(email)) = LOWER(TRIM(:email)) - "; + echo "

";
+            echo "Gesuchte Mail: ";
+            var_dump($email);
+            echo "
"; + + $sql = "SELECT * FROM users"; + $command = $db->prepare($sql); + $command->execute(); - $command->execute([ - ":email" => trim($email) - ]); + $users = $command->fetchAll(PDO::FETCH_ASSOC); - $user = $command->fetch(PDO::FETCH_ASSOC); + echo "
";
+            print_r($users);
+            echo "
"; - return $user ?: null; + exit(); } catch (PDOException $e) { throw new RuntimeException("Benutzer konnte nicht geladen werden."); From 437da98add82923539ddab171cdffdf1d6010c23 Mon Sep 17 00:00:00 2001 From: Caroline Schulte Date: Sun, 19 Jul 2026 18:13:41 +0200 Subject: [PATCH 7/8] Email aus Kommentar entfernen --- php/model/DatabaseUserManager.php | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/php/model/DatabaseUserManager.php b/php/model/DatabaseUserManager.php index 48b3f2a..8a7cc47 100644 --- a/php/model/DatabaseUserManager.php +++ b/php/model/DatabaseUserManager.php @@ -75,23 +75,16 @@ class DatabaseUserManager implements UserManagerDAO { try { $db = $this->getConnection(); - echo "
";
-            echo "Gesuchte Mail: ";
-            var_dump($email);
-            echo "
"; - - $sql = "SELECT * FROM users"; - + $sql = "SELECT * FROM users WHERE email = :email"; $command = $db->prepare($sql); - $command->execute(); - $users = $command->fetchAll(PDO::FETCH_ASSOC); + $command->execute([ + ":email" => $email + ]); - echo "
";
-            print_r($users);
-            echo "
"; + $user = $command->fetch(PDO::FETCH_ASSOC); - exit(); + return $user ?: null; } catch (PDOException $e) { throw new RuntimeException("Benutzer konnte nicht geladen werden."); From 153a612ad673648f5a8fdcc7b559ef5d7d98677a Mon Sep 17 00:00:00 2001 From: Caroline Schulte Date: Sun, 19 Jul 2026 18:21:06 +0200 Subject: [PATCH 8/8] Email aus Kommentar entfernen --- php/ajax/add-comment.php | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/php/ajax/add-comment.php b/php/ajax/add-comment.php index a985aeb..18613c8 100644 --- a/php/ajax/add-comment.php +++ b/php/ajax/add-comment.php @@ -4,6 +4,7 @@ if (session_status() === PHP_SESSION_NONE) { } require_once "../model/CommentManager.php"; +require_once "../model/UserManager.php"; /** * Prüft, ob die Anfrage durch JavaScript per AJAX gesendet wurde. @@ -40,7 +41,6 @@ function sendCommentResponse( $additionalData ) ); - exit(); } @@ -162,13 +162,29 @@ try { $parentCommentId ); + $userManager = UserManager::getInstance(); + $user = $userManager->findUser($_SESSION["user_email"]); + + $authorName = $_SESSION["user_email"]; + + if ($user !== null) { + $vorname = trim($user["vorname"] ?? ""); + $nachname = trim($user["nachname"] ?? ""); + + $fullName = trim($vorname . " " . $nachname); + + if ($fullName !== "") { + $authorName = $fullName; + } + } + sendCommentResponse( true, "Der Kommentar wurde erfolgreich gespeichert.", $articleId, [ "commentId" => $commentId, - "author" => $_SESSION["user_email"], + "author" => $authorName, "content" => $content, "created" => date("Y-m-d H:i:s"), "parentCommentId" => $parentCommentId