Compare commits

...

27 Commits

Author SHA1 Message Date
niklas.ortmann a33f3b27fb Update createArticle-controller.php 2026-06-01 10:08:01 +02:00
niklas.ortmann 71a8dd5f17 updateArticle funktioniert 2026-06-01 09:41:34 +02:00
niklas.ortmann e86fef1766 Update updateArticle-controller.php 2026-06-01 09:36:31 +02:00
niklas.ortmann 3cb63f791a Update updateArticle.php 2026-06-01 09:36:28 +02:00
niklas.ortmann f96415bfe6 Update showArticle.php 2026-06-01 09:36:23 +02:00
niklas.ortmann 365f70af98 Update updateArticle.php 2026-06-01 09:29:06 +02:00
niklas.ortmann c1ddbfdf48 Update updateArticle.php 2026-06-01 09:28:29 +02:00
niklas.ortmann e575e3dfa8 Update updateArticle-controller.php 2026-06-01 09:25:22 +02:00
niklas.ortmann 560f53cfb6 Update updateArticle-controller.php 2026-06-01 09:24:51 +02:00
niklas.ortmann d8c350c20f Update showArticle-controller.php 2026-06-01 09:19:28 +02:00
niklas.ortmann 5b718f24ed Update updateArticle-controller.php 2026-06-01 09:17:00 +02:00
niklas.ortmann 6634bee77b Update home.php 2026-06-01 09:16:58 +02:00
niklas.ortmann 2a3e73d409 updateArticle 2026-06-01 09:11:11 +02:00
NOrtmann1 2cd68873de Update updateArticle.php 2026-05-29 17:50:11 +01:00
NOrtmann1 d987ca271f Update updateArticle.php 2026-05-29 17:48:05 +01:00
NOrtmann1 0a37dd4b8b Update showArticle-controller.php 2026-05-29 17:45:04 +01:00
NOrtmann1 b4ca25db3d Update showArticle-controller.php 2026-05-29 17:44:30 +01:00
NOrtmann1 738b36c406 Update updateArticle-controller.php 2026-05-29 17:43:05 +01:00
NOrtmann1 c785363384 missing_id 2026-05-29 17:40:56 +01:00
NOrtmann1 32cb8a9d9e updateArticle Anpassungen 2026-05-29 17:36:29 +01:00
NOrtmann1 29e23a8d3b Update updateArticle.php 2026-05-29 17:32:57 +01:00
NOrtmann1 1a6403963a Update updateArticle.php 2026-05-29 17:29:26 +01:00
NOrtmann1 e096774233 Update updateArticle-controller.php 2026-05-29 17:29:24 +01:00
NOrtmann1 222759a1bc Update updateArticle.php 2026-05-29 18:21:46 +02:00
NOrtmann1 7a3043f644 Update profile.php 2026-05-29 18:20:27 +02:00
NOrtmann1 f1986bc3f7 Update LocalArticleManager.php 2026-05-29 18:18:31 +02:00
NOrtmann1 75d2f17a3f Update updateArticle-controller.php 2026-05-29 18:18:26 +02:00
10 changed files with 109 additions and 69 deletions
+4 -1
View File
@@ -10,7 +10,7 @@ session_start();
<main class="editor-main"> <main class="editor-main">
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "internal_error"): ?> <?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "internal_error"): ?>
<p class="alert-message is-error"> <p class="alert-message is-error">
Es ist ein Fehler beim Speichern aufgetreten. Bitte versuche es erneut. Es ist ein interner Fehler beim Speichern aufgetreten. Bitte versuche es erneut.
</p> </p>
<?php endif; ?> <?php endif; ?>
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?> <?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?>
@@ -18,6 +18,9 @@ session_start();
Jeder Beitrag muss einen Titel, Kategorie und Inhalt besitzen. Jeder Beitrag muss einen Titel, Kategorie und Inhalt besitzen.
</p> </p>
<?php endif; ?> <?php endif; ?>
<?php
unset($_SESSION["message"]);
?>
<input type="text" id="title" name="title" placeholder="Titel hier eingeben" required> <input type="text" id="title" name="title" placeholder="Titel hier eingeben" required>
<textarea id="content" name="content" placeholder="Schreibe deinen Beitrag..."></textarea> <textarea id="content" name="content" placeholder="Schreibe deinen Beitrag..."></textarea>
</main> </main>
+5 -5
View File
@@ -45,10 +45,9 @@ include_once 'php/controller/profileArticles-controller.php';
<div class="articles-list"> <div class="articles-list">
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "internal_error"): ?> <?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "internal_error"): ?>
<p class="alert-message is-error"> <p class="alert-message is-error">
Es ist ein Fehler beim Speichern aufgetreten. Bitte versuche es erneut. Es ist ein interner Fehler aufgetreten. Bitte versuche es erneut.
</p> </p>
<?php elseif (isset($userArticles) && count($userArticles) > 0): ?> <?php elseif (isset($userArticles) && count($userArticles) > 0): ?>
<?php foreach ($userArticles as $userArticle): ?> <?php foreach ($userArticles as $userArticle): ?>
<!-- Ein einzelner Artikel-Eintrag --> <!-- Ein einzelner Artikel-Eintrag -->
<div class="article-item"> <div class="article-item">
@@ -57,7 +56,6 @@ include_once 'php/controller/profileArticles-controller.php';
<span class="article-category"><?php echo htmlspecialchars($userArticle->getCategory()); ?></span> <span class="article-category"><?php echo htmlspecialchars($userArticle->getCategory()); ?></span>
</div> </div>
<h3 class="article-title"><?php echo htmlspecialchars($userArticle->getTitle()); ?></h3> <h3 class="article-title"><?php echo htmlspecialchars($userArticle->getTitle()); ?></h3>
<?php <?php
$tags = $userArticle->getTags(); $tags = $userArticle->getTags();
if (isset($tags) && !empty($tags)): ?> if (isset($tags) && !empty($tags)): ?>
@@ -78,16 +76,18 @@ include_once 'php/controller/profileArticles-controller.php';
</div> </div>
</div> </div>
<?php endif; ?> <?php endif; ?>
<a href="index.php?pfad=createArticle" class="edit-link-button">Bearbeiten</a> <a href="index.php?pfad=updateArticle&id=<?php echo $userArticle->getID(); ?>" class="edit-link-button">Bearbeiten</a>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
<?php else: ?> <?php else: ?>
<p>Du hast noch keine Beiträge erstellt.</p> <p>Du hast noch keine Beiträge erstellt.</p>
<button type="button" class="login-button" onclick="window.location.href='index.php?pfad=createArticle';"> <button type="button" class="login-button" onclick="window.location.href='index.php?pfad=createArticle';">
Beitrag erstellen! Beitrag erstellen!
</button> </button>
<?php endif; ?> <?php endif; ?>
<?php
unset($_SESSION["message"]);
?>
</div> </div>
</div> </div>
+25
View File
@@ -9,6 +9,31 @@ include_once 'php/controller/showArticle-controller.php';
<!-- Hauptcontainer für die Beitragsansicht (Ausschließlich der Content-Bereich) --> <!-- Hauptcontainer für die Beitragsansicht (Ausschließlich der Content-Bereich) -->
<main class="article-view-container"> <main class="article-view-container">
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "internal_error"): ?>
<p class="alert-message is-error">
Es ist ein interner Fehler aufgetreten. Bitte versuche es erneut.
</p>
<?php endif; ?>
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_id"): ?>
<p class="alert-message is-error">
Es ist ein Fehler aufgetreten. Die ID konnte nicht ausgelesen werden. Bitte versuche es erneut.
</p>
<?php endif; ?>
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?>
<p class="alert-message is-error">
Jeder Beitrag muss einen Titel, Kategorie und Inhalt besitzen.
</p>
<?php endif; ?>
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "article_updated"): ?>
<p class="alert-message is-success">
Dein Beitrag wurde erfolgreich bearbeitet!
</p>
<?php endif; ?>
<?php
unset($_SESSION["message"]);
?>
<!-- Metadaten & Titel --> <!-- Metadaten & Titel -->
<div class="article-view-top-section"> <div class="article-view-top-section">
+12 -4
View File
@@ -1,16 +1,21 @@
<?php <?php
session_start(); include_once 'php/controller/showArticle-controller.php';
?> ?>
<!-- <!--
Seite: Beitrag erstellen Seite: Beitrag erstellen
Inhalt: Formular für die Erstellung eines neuen Beitrags Inhalt: Formular für die Erstellung eines neuen Beitrags
--> -->
<form method="post" action="php/controller/updateArticle-controller.php" id="editor-form" class="article-editor-scope.editor-container article-editor-scope editor-container"> <form method="post" action="php/controller/updateArticle-controller.php?id=<?php if(isset($id) && !empty($id)){echo htmlspecialchars($id);}else{$_SESSION["message"] = "missing_id";} ?>" id="editor-form" class="article-editor-scope.editor-container article-editor-scope editor-container">
<main class="editor-main"> <main class="editor-main">
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "internal_error"): ?> <?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "internal_error"): ?>
<p class="alert-message is-error"> <p class="alert-message is-error">
Es ist ein Fehler beim Speichern aufgetreten. Bitte versuche es erneut. Es ist ein interner Fehler beim Speichern aufgetreten. Bitte versuche es erneut.
</p>
<?php endif; ?>
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_id"): ?>
<p class="alert-message is-error">
Es ist ein Fehler aufgetreten. Die ID konnte nicht ausgelesen werden. Bitte versuche es erneut.
</p> </p>
<?php endif; ?> <?php endif; ?>
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?> <?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?>
@@ -18,6 +23,9 @@ session_start();
Jeder Beitrag muss einen Titel, Kategorie und Inhalt besitzen. Jeder Beitrag muss einen Titel, Kategorie und Inhalt besitzen.
</p> </p>
<?php endif; ?> <?php endif; ?>
<?php
unset($_SESSION["message"]);
?>
<input type="text" id="title" name="title" value="<?php if (isset($title) && !empty($title)){echo htmlspecialchars($title);} ?>" placeholder="Titel hier eingeben" required> <input type="text" id="title" name="title" value="<?php if (isset($title) && !empty($title)){echo htmlspecialchars($title);} ?>" placeholder="Titel hier eingeben" required>
<textarea id="content" name="content" placeholder="Schreibe deinen Beitrag..."> <textarea id="content" name="content" placeholder="Schreibe deinen Beitrag...">
<?php if (isset($content) && !empty($content)){echo htmlspecialchars($content);} ?> <?php if (isset($content) && !empty($content)){echo htmlspecialchars($content);} ?>
@@ -34,7 +42,7 @@ session_start();
<div class="sidebar-block"> <div class="sidebar-block">
<label for="category">Kategorie <span class="required">*</span></label> <label for="category">Kategorie <span class="required">*</span></label>
<select id="category" name="category" required> <select id="category" name="category" required>
<option value="<?php if (isset($category) && !empty($category)){echo htmlspecialchars($category);} ?>" disabled selected>Kategorie wählen...</option> <option disabled selected>Kategorie wählen...</option>
<optgroup label="Sprachen"> <optgroup label="Sprachen">
<option value="deutsch">Deutsch</option> <option value="deutsch">Deutsch</option>
+2 -3
View File
@@ -5,8 +5,9 @@ require_once 'php/model/ArticleManager.php';
if (isset($_GET["id"])){ if (isset($_GET["id"])){
try { try {
$id = $_GET["id"];
$articleManager = ArticleManager::getInstance(); $articleManager = ArticleManager::getInstance();
$article = $articleManager->getArticle($_GET["id"]); $article = $articleManager->getArticle($id);
if($article != null){ if($article != null){
$title = $article->getTitle(); $title = $article->getTitle();
$content = $article->getContent(); $content = $article->getContent();
@@ -15,11 +16,9 @@ if (isset($_GET["id"])){
$tags = $article->getTags(); $tags = $article->getTags();
}else{ }else{
$_SESSION["message"] = "article_not_found"; $_SESSION["message"] = "article_not_found";
echo "article_not_found";
} }
} catch (Exception $e){ } catch (Exception $e){
$_SESSION["message"] = "internal_error"; $_SESSION["message"] = "internal_error";
echo "Fehler aufgetreten: " . $e->getMessage();
} }
}else{ }else{
$_SESSION["message"] = "article_not_found"; $_SESSION["message"] = "article_not_found";
+23 -33
View File
@@ -2,55 +2,45 @@
session_start(); session_start();
require_once '../model/LocalArticleManager.php'; require_once '../model/LocalArticleManager.php';
require_once '../model/ArticleManager.php'; require_once '../model/ArticleManager.php';
require_once '../model/Article.php';
// Angaben aus übergebener ID setzen:
if (isset($_GET["id"])){ // TODO: Später aus Session den Nutzer auslesen und Autorenrechte prüfen!
try {
$articleManager = ArticleManager::getInstance();
$article = $articleManager->getArticle($_GET["id"]);
if($article != null){
$title = $article->getTitle();
$content = $article->getContent();
$category = $article->getCategory();
$author = $article->getAuthor();
$tags = $article->getTags();
}else{
$_SESSION["message"] = "article_not_found";
echo "article_not_found";
}
} catch (Exception $e){
$_SESSION["message"] = "internal_error";
echo "Fehler aufgetreten: " . $e->getMessage();
}
}else{
$_SESSION["message"] = "article_not_found";
}
// Wenn "speichern" gedrückt wurde:
if ($_SERVER["REQUEST_METHOD"] === "POST") { if ($_SERVER["REQUEST_METHOD"] === "POST") {
try {
$id = $_GET["id"];
} catch (Exception $e){
$_SESSION["message"] = "missing_id";
}
if (!isset($_POST["title"]) ||!isset($_POST["content"]) || !isset($_POST["category"])){ if (!isset($_POST["title"]) ||!isset($_POST["content"]) || !isset($_POST["category"])){
$_SESSION["message"] = "missing_parameters"; $_SESSION["message"] = "missing_parameters";
header("location: ../../index.php?pfad=updateArticle"); header("location: ../../index.php?pfad=updateArticle");
} elseif(!isset($id)) {
$_SESSION["message"] = "missing_id";
//header("location: ../../index.php?pfad=updateArticle");
}else{ }else{
$title = $_POST["title"]; $newTitle = $_POST["title"];
$content = $_POST["content"]; $newContent = $_POST["content"];
$category = $_POST["category"]; $newCategory = $_POST["category"];
$author = "max.mustermann"; // TODO: später aus Session den angemeldeten Nutzer beziehen. $author = "max.mustermann"; // TODO: später aus Session den angemeldeten Nutzer beziehen.
$tags = $_POST["tags"]; $newTags = $_POST["tags"];
try { try {
$articleManager = ArticleManager::getInstance(); $articleManager = ArticleManager::getInstance(); // TODO: Später aus Session den Nutzer auslesen und Autorenrechte prüfen!
$articleManager->updateArticle($title, $content, $author, $category, $tags); $article = $articleManager->getArticle($id);
$article->setTitle($newTitle);
$article->setContent($newContent);
$article->setCategory($newCategory);
$article->setTags($newTags);
$articleManager->updateArticle($id ,$article, $author);
} catch (Exception $e){ } catch (Exception $e){
$_SESSION["message"] = "internal_error"; $_SESSION["message"] = "internal_error";
} }
$_SESSION["message"] = "new_article"; $_SESSION["message"] = "article_updated";
// Weiterleitung zur Homepage // Weiterleitung zur Homepage
header("location: ../../index.php"); header("location: ../../index.php?pfad=showArticle&id=$id");
exit();
} }
exit();
} }
?> ?>
+21 -11
View File
@@ -1,7 +1,7 @@
<?php <?php
/** /**
* Klasse: Artikel * Klasse: Artikel
* Diese Klasse stellt alle Daten eines Artikels (Beitrag) bereit * Diese Klasse stellt alle Daten eines Beitrags (Beitrag) bereit
* *
* @author Niklas Ortmann * @author Niklas Ortmann
*/ */
@@ -38,7 +38,7 @@ class Article
} }
/** /**
* Gibt die ID eines Artikels zurück. * Gibt die ID eines Beitrags zurück.
* @return int * @return int
*/ */
public function getId(): int public function getId(): int
@@ -47,7 +47,7 @@ class Article
} }
/** /**
* Gibt den Titel eines Artikels zurück. * Gibt den Titel eines Beitrags zurück.
* @return string * @return string
*/ */
public function getTitle(): string public function getTitle(): string
@@ -56,7 +56,7 @@ class Article
} }
/** /**
* Setzt den Titel eines Artikels * Setzt den Titel eines Beitrags
* @param $title * @param $title
* @return void * @return void
*/ */
@@ -66,7 +66,7 @@ class Article
} }
/** /**
* Gibt den Content eines Artikels zurück. * Gibt den Content eines Beitrags zurück.
* TODO: Content muss noch definiert werden. * TODO: Content muss noch definiert werden.
* @return string * @return string
*/ */
@@ -76,7 +76,7 @@ class Article
} }
/** /**
* Setzt den Content eines Artikels. * Setzt den Content eines Beitrags.
* TODO: Content muss noch definiert werden. * TODO: Content muss noch definiert werden.
* @param $content * @param $content
* @return void * @return void
@@ -87,7 +87,7 @@ class Article
} }
/** /**
* Gibt den Autor eines Artikels zurück. * Gibt den Autor eines Beitrags zurück.
* @return string * @return string
*/ */
public function getAuthor(): string public function getAuthor(): string
@@ -96,7 +96,7 @@ class Article
} }
/** /**
* Gibt das Veröffentlichungsdatum des Artikels zurück. * Gibt das Veröffentlichungsdatum des Beitrags zurück.
* @return string * @return string
*/ */
public function getCreationDate(): string public function getCreationDate(): string
@@ -105,7 +105,7 @@ class Article
} }
/** /**
* Gibt die Kategorie eines Artikels zurück. * Gibt die Kategorie eines Beitrags zurück.
* @return string * @return string
*/ */
public function getCategory(): string public function getCategory(): string
@@ -114,7 +114,17 @@ class Article
} }
/** /**
* Gibt die Schlagworte eines Artikels zurück. * Setzt die Kategorie eines Beitrags.
* @param string $category
* @return void
*/
public function setCategory(string $category)
{
$this->category = $category;
}
/**
* Gibt die Schlagworte eines Beitrags zurück.
* @return string * @return string
*/ */
public function getTags(): string public function getTags(): string
@@ -123,7 +133,7 @@ class Article
} }
/** /**
* Setzt die Schlagworte eines Artikels. * Setzt die Schlagworte eines Beitrags.
* @param string $tags * @param string $tags
*/ */
public function setTags(string $tags) public function setTags(string $tags)
+2 -1
View File
@@ -24,13 +24,14 @@ interface ArticleManagerDAO
* Ändert den gespeicherten Beitrag eines übergebenen Beitrags und eines Autors. * Ändert den gespeicherten Beitrag eines übergebenen Beitrags und eines Autors.
* Es wird geprüft, ob der zu änderne Beitrag existiert und ob der übergebene Autor der Autor des originalen * Es wird geprüft, ob der zu änderne Beitrag existiert und ob der übergebene Autor der Autor des originalen
* Beitrages ist. * Beitrages ist.
* @param $id
* @param $article * @param $article
* @param $author * @param $author
* @return void * @return void
* *
* TODO: Fehlerbeschreibung hinzufügen * TODO: Fehlerbeschreibung hinzufügen
*/ */
public function updateArticle($article, $author); public function updateArticle($id, $article, $author);
/** /**
* Löscht einen Beitrag aus übergebener ID. * Löscht einen Beitrag aus übergebener ID.
+11 -7
View File
@@ -62,35 +62,39 @@ class LocalArticleManager implements ArticleManagerDAO {
$this->saveArticle($articles); $this->saveArticle($articles);
} }
public function updateArticle($article, $author) public function updateArticle($id, $article, $author)
{ {
if (empty($article)) { if (empty($article)) {
// TODO: Implement Exception.
return; return;
} }
// Berechtigungsprüfung: // Berechtigungsprüfung:
if ($article->getAuthor() !== $author) { if ($article->getAuthor() !== $author) {
// TODO: Implement Exception (z.B. throw new Exception("Nicht autorisiert")); // TODO: Implement Exception.
return; return;
} }
// Beitrag aktualisieren:
$articles = $this->getAllArticles(); $articles = $this->getAllArticles();
$updated = false; $updated = false;
// Beitrag aktualisieren:
foreach ($articles as $index => $storedArticle) { foreach ($articles as $index => $storedArticle) {
if (isset($storedArticle['id']) && $storedArticle['id'] == $article->getId()) { if (isset($storedArticle['id']) && $storedArticle['id'] == $id) {
$articles[$index] = [ $articles[$index] = [
"id" => $article->getId(), "id" => $id,
"title" => $article->getTitle(), "title" => $article->getTitle(),
"content" => $article->getContent(), "content" => $article->getContent(),
"author" => $article->getAuthor(), "author" => $author,
"category" => $article->getCategory(), "category" => $article->getCategory(),
"tags" => $article->getTags(), "tags" => $article->getTags(),
"creationDate" => $article->getCreationDate() // Behält das originale Erstelldatum bei "creationDate" => $article->getCreationDate()
]; ];
$updated = true; $updated = true;
break; break;
}else{
// TODO: Implement Exception.
return;
} }
} }