Compare commits

...

13 Commits

Author SHA1 Message Date
niklas.ortmann 1735dd28a2 Update README.md 2026-06-03 20:12:14 +02:00
niklas.ortmann 9c3ebc9877 Merge pull request 'WIP Suche implementiert, sowie Sortieren der Ergebnisse' (#19) from ImplementedSearch into dev
Reviewed-on: #19
2026-06-03 16:07:41 +02:00
NOrtmann1 a26e985edf Update README.md 2026-06-02 18:32:57 +02:00
NOrtmann1 cf9ac795eb Readme + Kommentare 2026-06-02 18:20:35 +02:00
niklas.ortmann a519387773 Update updateArticle-controller.php 2026-06-02 15:45:34 +02:00
niklas.ortmann ed40596389 Update createArticle.css 2026-06-02 15:43:37 +02:00
niklas.ortmann 4c855c05ed css 2026-06-02 15:42:07 +02:00
niklas.ortmann e7189245d5 css 2026-06-02 15:37:35 +02:00
niklas.ortmann 709a4ba83c commenting 2026-06-02 15:34:19 +02:00
niklas.ortmann fb54ba2462 updateArticle-Exceptions 2026-06-02 15:31:02 +02:00
niklas.ortmann c6b55030cf updateArticle - Exeptions 2026-06-02 15:22:18 +02:00
niklas.ortmann af04557f58 Update updateArticle-controller.php 2026-06-02 15:04:52 +02:00
niklas.ortmann 2c100bddf2 Update updateArticle-controller.php 2026-06-02 15:04:05 +02:00
15 changed files with 71 additions and 54 deletions
+29 -11
View File
@@ -1,13 +1,31 @@
Team Tag-Buchstabe: DI-14-C-Schulte-Eilers-Ortmann
Namen der Studierenden:
- Name 1 Caroline Schulte
- Name 2 Jacques Eilers
- Name 3 Niklas Ortmann
Abgabe zu Aufgabenblatt 1
# Webprogrammierung: Gruppe DI-14-C
Hinweise:
index.html wurde zu einer index.php umbenannt.
webhook.php bitte ignorieren. Diese dient nur als zukünftige Automatisierung des Repo-Pulls (s. https://docs.gitea.com/usage/webhooks)
## Beteiligte
- Caroline Schulte
- Jacques Eilers
- Niklas Ortmann
Beim Verwenden der Navbar-Links bitte Folgendes beachten: nur die Kategorien Physik, Mathe, Informatik führen exemplarisch auf eine Beispiel-Seite.
Die anderen Links sind erstmal Platzhalter, dessen dynamischer Inhalt später mit PHP in die index.php eingefügt wird. Alle anderen Links führen auf eine 404-Seite.
## Login-Informationen für Dummy-User
Jeweils im Format `Anmeldename, Passwort, Mailadresse`:
- `max.mustermann, test123, mustermann@web.de`
## Weitere Voraussetzungen zur Nutzung
- Per Klick auf das Logo gelangt man auf die Home-Seite.
## Ausgelassene Teilaufgaben
## Bekannte Fehler und Mängel
- Der Beitragseditor fügt beim Laden von Inhalten leere Zeichen ein.
- Bitte auf die gesetzten TODO's achten. Wenn Inhalte fehlen, sind sie i.d.R. als TODO kommentiert.
- Die Navbar hat noch keine onHover-Effekte und erschwert etwas die Bedienung.
- Suchleiste in der Nav ist in der mobilen Ansicht etwas schmal. Ggf. ein alternatives (kleineres) Logo implementieren.
## Besonderheiten des Projektes
- Es wurde ein einfacher Beitrags-Editor erstellt. Mit diesem können Beiträge erstellt oder bearbeitet werden.
Es handelt es sich um eine einfache Version. Später sollen z.B. Bilder und die Positionierung der Elemente folgen.
- Es sind drei Dummy-Beiträge für den Nutzer max.mustermann hinterlegt.
- Beim Verwenden der Navbar-Links bitte Folgendes beachten: nur die Kategorien Physik, Mathe, Informatik führen exemplarisch auf eine Beispiel-Seite.
Die anderen Links sind erstmal Platzhalter und führen auf eine 404-Seite.
- Die Such-Seite umfasst eine Suchfunktion (aber noch nicht nach Tags) und Sortierfunktion. Jedoch fehlt noch eine Filterfunktion (z.B. nur Mathe anzeigen).
Wenn die Filterfunktion implementiert ist, dann können die statischen Seiten "Informatik", "Mathe", "Physik" entfernt und dynamisch auf der Suchseite
nach gefiltertem Fach angezeigt werden. (Vorläufige showCategory.php implementiert)
+1 -1
View File
@@ -62,7 +62,7 @@ if (!isset($_SESSION["user"])) {
<aside class="editor-sidebar">
<div class="sidebar-block">
<button type="submit" class="btn-publish">Veröffentlichen</button>
<button type="submit" id="editor-button" class="button">Veröffentlichen</button>
</div>
<div class="sidebar-block">
+1 -1
View File
@@ -37,7 +37,7 @@ $error = $error ?? null;
<button type="submit"
value="anmelden"
name="loginSubmit"
class="login-button">
class="button">
anmelden
</button>
+3 -3
View File
@@ -33,13 +33,13 @@ $user = $user ?? null;
</form>
<br>
<a href="index.php?pfad=deleteAccount" class="login-button">
<a href="index.php?pfad=deleteAccount" class="button">
Account löschen
</a>
<br><br>
<a href="index.php?pfad=logout" class="login-button">
<a href="index.php?pfad=logout" class="button">
Abmelden
</a>
</div>
@@ -86,7 +86,7 @@ $user = $user ?? null;
<?php endforeach; ?>
<?php else: ?>
<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="button" onclick="window.location.href='index.php?pfad=createArticle';">
Beitrag erstellen!
</button>
<?php endif; ?>
+1 -1
View File
@@ -52,7 +52,7 @@ $error = $error ?? null;
<button type="submit"
value="register"
name="registerSubmit"
class="login-button">
class="button">
kostenlos registrieren
</button>
+6 -1
View File
@@ -53,6 +53,11 @@ include_once 'php/controller/showArticle-controller.php';
Bei der Validierung deiner Daten ist ein Fehler aufgetreten. Bitte versuche es erneut.
</p>
<?php endif; ?>
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "unauthorized_access"): ?>
<p class="alert-message is-error">
Sie sind nicht berechtigt, diesen Beitrag zu bearbeiten.
</p>
<?php endif; ?>
<?php
unset($_SESSION["message"]);
?>
@@ -81,7 +86,7 @@ include_once 'php/controller/showArticle-controller.php';
<aside class="editor-sidebar">
<div class="sidebar-block">
<button type="submit" class="btn-publish">Änderungen speichern</button>
<button type="submit" class="button">Änderungen speichern</button>
</div>
<div class="sidebar-block">
+2 -14
View File
@@ -86,20 +86,8 @@
}
/* Button-Zeugs */
.article-editor-scope .btn-publish {
background-color: #007cba;
color: white;
border: none;
padding: 12px;
border-radius: 4px;
font-weight: 600;
cursor: pointer;
font-size: 1rem;
width: 100%;
}
.article-editor-scope .btn-publish:hover {
background-color: #006ba1;
.button#editor-button {
padding: 18px 12px;
}
/* Responsive Anpassungen unter 760px (für z.B. Smartphones) */
+2 -2
View File
@@ -155,7 +155,7 @@ a, button, input, select, textarea, label, main{
color: #1f2937;
}
.login-button {
.button {
width: 100%;
padding: 12px;
background-color: #2563eb;
@@ -168,7 +168,7 @@ a, button, input, select, textarea, label, main{
transition: background-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.login-button:hover {
.button:hover {
background-color: #1d4ed8;
transform: translateY(-2px);
box-shadow: 0 4px 10px rgba(0,0,0,0.15);
+1
View File
@@ -1,6 +1,7 @@
<!--
Artikel: Datenschutz vs Datensicherheit
Funktion: Inhalt zum Fach Informatik
TODO: entfernen, wenn die Kategorie-Anzeige implementiert ist.
-->
<!DOCTYPE html>
<html lang="de">
-4
View File
@@ -1,4 +0,0 @@
<?php
// mit $_SERVER['DOCUMENT_ROOT'] später umbauen?
$abs_path = __DIR__;
?>
+4 -4
View File
@@ -1,5 +1,5 @@
<?php
session_start();
SESSION_START();
require_once '../model/LocalArticleManager.php';
require_once '../model/ArticleManager.php';
require_once '../model/Article.php';
@@ -8,7 +8,7 @@ require_once '../validator/article-validator.php';
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$_SESSION["old_title"] = $_POST["title"] ?? '';
$_SESSION["old_content"] = $_POST["content"] ?? '';
$_SESSION["old_category"] = $_POST["category"] ?? '';
$_SESSION["old_category"] = $_POST["category"] ?? ''; // TODO: die Kategorie im Dropdown setzen, wenn der Editor erneut geöffnet wird.
$_SESSION["old_tags"] = $_POST["tags"] ?? '';
if (isset($_GET["id"]) && !empty($_GET["id"])) {
@@ -26,7 +26,7 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
}else{
$title = $_POST["title"];
$content = $_POST["content"];
$author = "max.mustermann"; // TODO: später aus Session den angemeldeten Nutzer beziehen.
$author = $_SESSION["user_email"];
$category = $_POST["category"];
$tags = $_POST['tags'] ?? '';
@@ -82,7 +82,7 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
$article->setTags($cleanedTags);
$articleManager->updateArticle($id ,$article, $author);
} catch (Exception $e){
$_SESSION["message"] = "internal_error";
$_SESSION["message"] = $e->getMessage();
header("location: ../../index.php?pfad=updateArticle");
exit();
}
+14 -5
View File
@@ -1,5 +1,10 @@
<?php
require_once "Article.php";
class NotFoundException extends Exception {}
class UnauthorizedAccessException extends Exception {}
class InternalServerErrorException extends Exception {}
/**
* Die Klasse beinhaltet alle Methoden für die Operation mit den Artikel-Daten.
*
@@ -16,7 +21,7 @@ interface ArticleManagerDAO
* @param $tags string optionale Schlagworte für eine bessere Suche
*
* Mögliche Exceptions:
* TODO Fehlerbeschreibung hinzufügen & tags hinzufügen
* TODO: Exceptions implementieren.
*/
public function addArticle($title, $content, $author, $category, $tags);
@@ -29,7 +34,10 @@ interface ArticleManagerDAO
* @param $author
* @return void
*
* TODO: Fehlerbeschreibung hinzufügen
* @throws InternalServerErrorException
* @throws NotFoundException
* @throws UnauthorizedAccessException
* /
*/
public function updateArticle($id, $article, $author);
@@ -38,7 +46,7 @@ interface ArticleManagerDAO
* @param $id
* @return void
*
* TODO: Fehlerbeschreibung hinzufügen
* TODO: Exceptions implementieren.
*/
public function deleteArticle($id);
@@ -48,7 +56,7 @@ interface ArticleManagerDAO
*
* @return Article
* Mögliche Exceptions:
* TODO Fehlerbeschreibung hinzufügen
* TODO: Exceptions implementieren.
*/
public function getArticle($id);
@@ -56,7 +64,7 @@ interface ArticleManagerDAO
* Alle Beiträge aufrufen.
*
* Mögliche Exceptions:
* TODO Fehlerbeschreibung hinzufügen
* TODO: Exceptions implementieren.
*/
public function getAllArticles();
@@ -64,6 +72,7 @@ interface ArticleManagerDAO
* Gibt alle Beiträge eines Nutzer mit einer gegebenen ID aus.
* @param $author
* @return Article[]
* TODO: Exceptions implementieren.
*/
public function getArticlesByAuthor($author);
+5 -7
View File
@@ -36,6 +36,7 @@ class LocalArticleManager implements ArticleManagerDAO {
* Speichert alle Artikel/Beiträge in der Datei.
* @param $articles
* @return void
* TODO: Exceptions implementieren.
*/
public function saveArticle($articles)
{
@@ -65,14 +66,12 @@ class LocalArticleManager implements ArticleManagerDAO {
public function updateArticle($id, $article, $author)
{
if (empty($article)) {
// TODO: Implement Exception.
return;
throw new InternalServerErrorException("internal_error");
}
// Berechtigungsprüfung:
if ($article->getAuthor() !== $author) {
// TODO: Implement Exception.
return;
throw new UnauthorizedAccessException("unauthorized_access");
}
// Beitrag aktualisieren:
@@ -92,15 +91,14 @@ class LocalArticleManager implements ArticleManagerDAO {
];
$updated = true;
break;
}else{
// TODO: Implement Exception.
return;
}
}
// Nur speichern, wenn Beitrag geändert wurde:
if ($updated) {
$this->saveArticle($articles);
} else {
throw new NotFoundException("missing_id");
}
}
+1
View File
@@ -1,6 +1,7 @@
<!--
Artikel: Satz des Pythagoras
Funktion: Inhalt zum Fach Mathe
TODO: entfernen, wenn die Kategorie-Anzeige implementiert ist.
-->
<!DOCTYPE html>
<html lang="de">
+1
View File
@@ -1,6 +1,7 @@
<!--
Artikel: Tunneleffekt
Funktion: Inhalt zum Fach Physik
TODO: entfernen, wenn die Kategorie-Anzeige implementiert ist.
-->
<!DOCTYPE html>
<html lang="de">