Compare commits

...

46 Commits

Author SHA1 Message Date
NOrtmann1 7f77297100 Update search-results.php 2026-05-29 00:30:28 +02:00
NOrtmann1 e8693f282f Update search-results.php 2026-05-29 00:28:32 +02:00
NOrtmann1 8477462e07 Update search-results.php 2026-05-29 00:18:16 +02:00
NOrtmann1 c28268faf3 search-results-controller.php 2026-05-29 00:09:47 +02:00
NOrtmann1 24a759c61a search-results-controller.php 2026-05-28 23:54:35 +02:00
NOrtmann1 0d0a7dba90 Update search-results.php 2026-05-28 23:50:49 +02:00
NOrtmann1 6de87c9e6c Update search-results.php 2026-05-28 23:23:11 +02:00
NOrtmann1 104f265e9b Update search-results.php 2026-05-28 23:21:58 +02:00
NOrtmann1 f21d819c77 Update search-results.css 2026-05-28 22:49:30 +02:00
NOrtmann1 ac1828b5f9 Update search-results.css 2026-05-28 22:48:58 +02:00
NOrtmann1 22bb2de043 Update search-results.css 2026-05-28 22:47:01 +02:00
NOrtmann1 664ad37181 Update search-results.css 2026-05-28 22:38:10 +02:00
NOrtmann1 c2c98d12bc footer in Suchergebnisleiste 2026-05-28 22:28:10 +02:00
NOrtmann1 cdc8b85f3c css 2026-05-28 22:19:31 +02:00
NOrtmann1 c0d9949037 Seitenleiste mit Filteroptionen 2026-05-28 22:16:55 +02:00
NOrtmann1 5dbe7a99b9 search-results.php + css 2026-05-28 21:55:55 +02:00
NOrtmann1 3ddd66dcbb Update navbar.php 2026-05-26 12:43:21 +02:00
NOrtmann1 8af0367edf Update navbar.css 2026-05-26 12:43:00 +02:00
NOrtmann1 b95fc1adbe Update navbar.php 2026-05-26 12:42:40 +02:00
NOrtmann1 63f400995b Update navbar.css 2026-05-26 12:41:49 +02:00
NOrtmann1 8aa657ed99 doppelte ID entfernt 2026-05-26 12:41:05 +02:00
NOrtmann1 627c72bb7f Update navbar.php 2026-05-26 12:39:05 +02:00
niklas.ortmann a8a75d90ac Merge pull request 'FooterAnsEnde' (#9) from footerAnsEnde into dev
Reviewed-on: #9
2026-05-26 12:30:37 +02:00
niklas.ortmann 0b1b704115 Merge pull request 'MobileNavSchließen' (#10) from MobileNavSchließen into dev
Reviewed-on: #10
2026-05-26 12:30:27 +02:00
niklas.ortmann 0babc42359 Merge pull request 'Update main.css' (#11) from responsiveHomepage into dev
Reviewed-on: #11
2026-05-26 12:30:14 +02:00
rirat-0 4a80d42dda Update main.css
Anpassung der flexbox um inhalte besser zu skalieren
2026-05-26 11:41:11 +02:00
NOrtmann1 a2daded6b3 Footer-Link-Anpassungen (dynamisch wie navbar) 2026-05-26 11:25:47 +02:00
NOrtmann1 d3169eba18 Update navbar.css 2026-05-26 11:19:57 +02:00
NOrtmann1 2d967c200c x-Button in der Sidebar 2026-05-26 11:18:58 +02:00
NOrtmann1 193e526e67 Update main.css 2026-05-26 11:00:25 +02:00
NOrtmann1 f77643af44 body-css-anpassungen 2026-05-26 10:59:07 +02:00
NOrtmann1 9e900a3436 Update footer.css 2026-05-26 10:54:40 +02:00
NOrtmann1 75988ffe71 Update footer.css 2026-05-26 10:54:02 +02:00
NOrtmann1 cb1f3f0d07 Update footer.css 2026-05-26 10:52:57 +02:00
NOrtmann1 4d8017aa2b Update footer.css 2026-05-26 10:51:32 +02:00
NOrtmann1 ee7986bef3 Update index.php 2026-05-21 21:03:38 +02:00
NOrtmann1 8de1b1bdb5 Update index.php 2026-05-21 21:02:46 +02:00
NOrtmann1 4a663391ef Update navbar.css 2026-05-21 21:00:20 +02:00
niklas.ortmann 4cd877ea4c Merge pull request 'PHP: Dynamischer Content' (#8) from PHP_DynamischerContent into dev
Reviewed-on: #8
2026-05-21 20:57:26 +02:00
NOrtmann1 0f573d30ae linkanpassungen 2026-05-21 17:36:18 +02:00
NOrtmann1 fdd56c10b8 Update home.php 2026-05-21 17:33:42 +02:00
NOrtmann1 46daf72a14 Update index.php 2026-05-21 17:32:43 +02:00
NOrtmann1 896e6abcd8 login & register -> /content/ 2026-05-21 17:31:45 +02:00
NOrtmann1 95e5cf0908 navbar linkanpassungen 2026-05-21 17:30:07 +02:00
NOrtmann1 be35a00cef Dateien in richtige Ordner + statische HTML vom content entfernt 2026-05-21 17:19:40 +02:00
NOrtmann1 b616251511 dynamic content test
profil wird dynamisch in die index.php integriert (Test)
2026-05-21 17:13:52 +02:00
22 changed files with 550 additions and 404 deletions
-40
View File
@@ -1,40 +0,0 @@
<!--
Seite: 404 Seite nicht gefunden
Funktion: Wenn eine Seite nicht gefunden wurde oder noch fehlt, dann wird hierauf verwiesen.
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main>
<h1>404 - Seite nicht vorhanden</h1>
<p>
Später im Projekt sollen über index.php?pfad= ... der Inhalt der index.php dynamisch gesetzt werden.
Alle Content-Links der Navbar führen zunächst hier her. Exemplarisch wurden für die Fächer Informatik, Physik, Mathematik der Content als Seite erstellt und kann über die Navbar ausgekundschaftet werden.
</p>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
+12
View File
@@ -0,0 +1,12 @@
<!--
Seite: 404 Seite nicht gefunden
Funktion: Wenn eine Seite nicht gefunden wurde oder noch fehlt, dann wird hierauf verwiesen.
-->
<main>
<h1>404 - Seite nicht vorhanden</h1>
<p>
Später im Projekt sollen über index.php?pfad= ... der Inhalt der index.php dynamisch gesetzt werden.
Alle Content-Links der Navbar führen zunächst hier her. Exemplarisch wurden für die Fächer Informatik, Physik, Mathematik der Content als Seite erstellt und kann über die Navbar ausgekundschaftet werden.
</p>
</main>
@@ -2,28 +2,6 @@
Seite: Datenschutzerklärung
Inhalt: Informationen zur Datenverarbeitung gemäß DSGVO
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main>
<h1>Datenschutz</h1>
@@ -38,10 +16,3 @@ include_once 'includes/navbar.php';
</p>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
+3 -3
View File
@@ -17,21 +17,21 @@
<!-- Flexbox -->
<div class="flexbox">
<div class="container">
<a href="informatik.php" class="category-link">Informatik</a>
<a href="index.php?pfad=informatik" class="category-link">Informatik</a>
<div class="article-link">
<a href="datenschutzVSdatensicherheit.php">Datenschutz vs. Datensicherheit</a>
</div>
</div>
<div class="container">
<a href="mathe.php" class="category-link">Mathe</a>
<a href="index.php?pfad=mathe" class="category-link">Mathe</a>
<div class="article-link">
<a href="pythagoras.php">Satz des Pythagoras</a>
</div>
</div>
<div class="container">
<a href="physik.php" class="category-link">Physik</a>
<a href="index.php?pfad=physik" class="category-link">Physik</a>
<div class="article-link">
<a href="tunneleffekt.php">Der Tunneleffekt</a>
</div>
-28
View File
@@ -2,27 +2,6 @@
Seite: Impressum
Inhalt: wer wie was auf der Webseite
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main>
@@ -38,10 +17,3 @@ include_once 'includes/navbar.php';
</p>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
-27
View File
@@ -2,26 +2,6 @@
Seite: Informatik
Inhalt: Eine Übersicht über alle Beiträge zum Fach
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main>
<h1>Informatik</h1>
@@ -39,10 +19,3 @@ include_once 'includes/navbar.php';
<a href="datenschutzVSdatensicherheit.php">Datenschutz vs. Datensicherheit</a>
</div>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
-28
View File
@@ -2,27 +2,6 @@
Form: Login-Bereich
Funktion: Benutzerauthentifizierung und Zugang zum eigenen Profil, Erstellen von Beiträgen, etc.
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main class="login-page">
<div class="login-container">
@@ -51,10 +30,3 @@ include_once 'includes/navbar.php';
</form>
</div>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
-28
View File
@@ -2,27 +2,6 @@
Seite: Mathe
Inhalt: Eine Übersicht über alle Beiträge zum Fach
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main>
<h1>Mathe</h1>
@@ -41,10 +20,3 @@ include_once 'includes/navbar.php';
<a href="pythagoras.php">Satz des Pythagoras</a>
</div>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
@@ -10,10 +10,10 @@
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<link rel="icon" type="image/x-icon" href="../images/logos/logo_icon.ico">
<link rel="stylesheet" href="../css/main.css">
<link rel="stylesheet" href="../css/navbar.css">
<link rel="stylesheet" href="../css/footer.css">
<title>EduForge</title>
</head>
-28
View File
@@ -2,27 +2,6 @@
Seite: Physik
Inhalt: Eine Übersicht über alle Beiträge zum Fach
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main>
<h1>Physik</h1>
@@ -42,10 +21,3 @@ include_once 'includes/navbar.php';
</div>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
+1 -28
View File
@@ -1,27 +1,7 @@
<!--
Seite: Profil
Content: Profil
Inhalt: Das eigene Profil, wenn man angemeldet ist. Dort hat man die Möglichkeit seine Angaben zu ändern.
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main class="form-page">
@@ -64,10 +44,3 @@ include_once 'includes/navbar.php';
</div>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
-27
View File
@@ -2,27 +2,6 @@
Form: Registrierung
Funktion: Erstellung neuer Benutzerkonten
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="description" content="EduForge">
<meta name="author" content="Niklas Ortmann">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="images/logos/logo_icon.ico">
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<title>EduForge</title>
</head>
<body>
<?php
include_once 'includes/navbar.php';
?>
<main class="login-page">
<div class="login-container">
@@ -51,9 +30,3 @@ include_once 'includes/navbar.php';
</form>
</div>
</main>
<?php
include_once 'includes/footer.php';
?>
</body>
</html>
+125
View File
@@ -0,0 +1,125 @@
<?php
session_start();
?>
<!--
Seite: Suchergebnisse
Inhalt: Zeigt die Ergebnisse einer Suche an
-->
<div class="s-res-layout-grid">
<!-- Links: Seitenleiste für Filter und Suche -->
<aside class="s-res-sidebar">
<!-- Suchleiste Box -->
<div class="s-res-sidebar-box">
<h3 class="s-res-sidebar-title">Suche anpassen</h3>
<form action="#" method="GET" class="s-res-search-form">
<input type="search" id="site-search" name="q" placeholder="Suchen..." class="nav__search">
<button type="submit" class="nav__search-button">Suchen</button>
</form>
</div>
<!-- Sortierfuntion Box -->
<div class="s-res-sidebar-box">
<h3 class="s-res-sidebar-title">Sortierung</h3>
<div class="s-res-filter-group">
<label class="s-res-filter-option">
<input type="radio" name="sort" value="alphabet" checked>
<span>Alphabetisch</span>
</label>
<label class="s-res-filter-option">
<input type="radio" name="sort" value="likes">
<span>Beliebtheit (Likes)</span>
</label>
<label class="s-res-filter-option">
<input type="radio" name="sort" value="newest">
<span>Neueste Beiträge</span>
</label>
<label class="s-res-filter-option">
<input type="radio" name="sort" value="oldest">
<span>Älteste Beiträge</span>
</label>
</div>
</div>
</aside>
<main class="s-res-main-content">
<div class="s-res-header">
<h1 class="s-res-main-title">Suchergebnisse</h1>
<p class="s-res-meta">3 Treffer für Ihre Suchanfrage</p>
</div>
<!-- Ergebnisliste -->
<div class="s-res-list">
<?php
if(isset($_SESSION['message']) && $_SESSION['message'] == "new_search_results"): ?>
<!-- TODO: Hier die Beiträge ausgeben. -->
<?php elseif (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?>
<p>
Bitte überprüfe deine Sucheingabe und versuche es erneut!
</p>
<?php endif; ?>
<?php
unset($_SESSION["message"]);
?>
<!-- Beispielbeitrag -->
<div class="s-res-item">
<div class="s-res-content">
<h2 class="s-res-item-title">
<a href="#" class="s-res-link">Pythagoras</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
<!-- Beispielbeitrag -->
<div class="s-res-item">
<div class="s-res-content">
<h2 class="s-res-item-title">
<a href="#" class="s-res-link">Pythagoras</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
<!-- Beispielbeitrag -->
<div class="s-res-item">
<div class="s-res-content">
<h2 class="s-res-item-title">
<a href="#" class="s-res-link">Pythagoras</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
</div>
<div class="s-res-pagination-footer">
<!-- Auswahl der Ergebnisse pro Seite -->
<div class="s-res-limit-selector">
<label for="s-res-per-page" class="s-res-limit-label">Ergebnisse pro Seite:</label>
<select id="s-res-per-page" name="limit" class="s-res-limit-select">
<option value="10" selected>10</option>
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
<div class="s-res-page-navigation">
<button type="button" class="s-res-page-btn" disabled>&laquo;</button>
<button type="button" class="s-res-page-btn s-res-page-btn-active">1</button>
<button type="button" class="s-res-page-btn">&raquo;</button>
</div>
</div>
</main>
</div>
-2
View File
@@ -1,7 +1,5 @@
/* FooterGrundlayout */
footer {
position: fixed;
bottom: 0;
width: 100%;
background: #333d43;
text-align: center;
+10 -1
View File
@@ -3,12 +3,19 @@ main {
max-width:1200px;
margin: 0 auto;
padding: 20px;
width: 100%;
box-sizing: border-box;
}
body {
background-color: #eef2f7;
color: #1f2937;
margin: 0;
min-height: 100vh;
display: grid;
grid-template-rows: auto 1fr auto; /* Header(auto), Inhalt (bekommt Rest), Footer(auto) */
}
a, button, input, select, textarea, label, main{
@@ -17,7 +24,8 @@ a, button, input, select, textarea, label, main{
.flexbox {
display: flex;
flex-direction: column;
flex-direction: row;
flex-wrap: wrap;
gap: 20px;
margin-top: 30px;
}
@@ -29,6 +37,7 @@ a, button, input, select, textarea, label, main{
border: 1px solid #dbe3ec;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
transition: transform 0.2s, box-shadow 0.2s;
flex: 1 1 300px;
}
.container:hover {
+21 -2
View File
@@ -149,8 +149,8 @@ CSS für die navbar
display: none;
}
/* Responsive Anpassungen unter 660px (für z.B. Smartphones) */
@media (max-width: 660px) {
/* Responsive Anpassungen unter 760px (für z.B. Smartphones) */
@media (max-width: 760px) {
.nav {
flex-direction: row;
flex-wrap: wrap;
@@ -205,6 +205,10 @@ CSS für die navbar
margin-left: 4px;
}
.nav__search-button:hover {
background-color: #f8f9fa;
}
/* restliche desktop-navbar aus */
.nav__center,
.nav__right .nav__button,
@@ -227,6 +231,9 @@ CSS für die navbar
padding: 2rem 1rem;
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;
}
.nav__checkbox:checked ~ .nav__mobile-menu {
@@ -237,6 +244,18 @@ CSS für die navbar
left: 0;
}
.nav__close-btn {
position: absolute;
top: 1rem;
right: 1.5rem;
font-size: 2rem;
color: #fff;
cursor: pointer;
line-height: 1;
user-select: none;
transition: color 0.2s ease, transform 0.2s ease;
}
.nav__mobile-menu a {
color: #fff;
text-decoration: none;
+263
View File
@@ -0,0 +1,263 @@
/*
CSS für die Suchergebnis-Seite
*/
/* Container und Layout-Schutz vor globalen Styles */
.s-res-layout-grid {
box-sizing: border-box;
max-width: 95%; /* Nutzt jetzt 95% der Bildschirmbreite statt starrer Pixel */
width: 95%; /* Erhöht das Limit für extrem große Monitore von 1200px auf 1600px */
margin: 2rem auto;
padding: 0 1rem;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
color: #212529;
line-height: 1.5;
/* Grid für die Zweispaltigkeit */
display: grid;
grid-template-columns: 320px 1fr; /* Seitenleiste leicht verbreitert, Inhalt nimmt den gesamten Rest ein */
gap: 2.5rem; /* Etwas mehr Abstand zwischen Seitenleiste und Inhalt für das breitere Layout */
}
.s-res-layout-grid * {
box-sizing: border-box;
}
/* --- SEITENLEISTE (FILTER & SUCHE) --- */
.s-res-sidebar {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.s-res-sidebar-box {
background-color: #ffffff;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 1.25rem;
}
.s-res-sidebar-title {
font-size: 1rem;
font-weight: 700;
color: #1a202c;
margin: 0 0 1rem 0;
text-transform: uppercase;
letter-spacing: 0.05em;
}
/* Formular & deine Suchleisten-Klassen */
.s-res-search-form {
display: flex;
align-items: center;
}
/* Filter Radio-Buttons */
.s-res-filter-group {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.s-res-filter-option {
display: flex;
align-items: center;
gap: 0.5rem;
cursor: pointer;
font-size: 0.95rem;
color: #4a5568;
}
.s-res-filter-option input[type="radio"] {
margin: 0;
accent-color: #3182ce; /* Moderne Färbung des Radio-Buttons */
}
/* --- HAUPTINHALT (ERGEBNISSE) --- */
.s-res-main-content {
min-width: 0; /* Verhindert das Ausbrechen von Flex-Elementen */
}
.s-res-header {
margin-bottom: 2rem;
border-bottom: 2px solid #dee2e6;
padding-bottom: 1rem;
}
.s-res-main-title {
font-size: 2rem;
color: #1a202c;
margin: 0 0 0.5rem 0;
font-weight: 700;
}
.s-res-meta {
color: #6c757d;
font-size: 0.95rem;
margin: 0;
}
.s-res-list {
display: flex;
flex-direction: column;
gap: 1rem;
}
/* Einzelner Beitrag */
.s-res-item {
background-color: #ffffff;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 1.25rem;
display: flex;
justify-content: space-between;
align-items: center;
transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.s-res-item:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
border-color: #cbd5e1;
}
.s-res-content {
flex: 1;
}
.s-res-item-title {
font-size: 1.25rem;
margin: 0 0 0.25rem 0;
font-weight: 600;
}
.s-res-link {
color: #3182ce;
text-decoration: none;
transition: color 0.2s ease;
}
.s-res-link:hover {
text-decoration: underline;
color: #2b6cb0;
}
.s-res-author {
font-size: 0.875rem;
color: #4a5568;
margin: 0;
}
.s-res-author-name {
font-weight: 600;
color: #2d3748;
}
.s-res-arrow {
font-size: 1.5rem;
color: #a0aec0;
padding-left: 1rem;
transition: color 0.2s ease, transform 0.2s ease;
}
.s-res-item:hover .s-res-arrow {
color: #3182ce;
transform: translateX(3px);
}
/* --- ERGEBNISSE PRO SEITE & PAGINIERUNG --- */
.s-res-pagination-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 2rem;
padding-top: 1.5rem;
border-top: 1px solid #e2e8f0;
}
/* Dropdown-Auswahl */
.s-res-limit-selector {
display: flex;
align-items: center;
gap: 0.5rem;
}
.s-res-limit-label {
font-size: 0.9rem;
color: #4a5568;
}
.s-res-limit-select {
padding: 0.35rem 1.5rem 0.35rem 0.5rem;
font-size: 0.9rem;
color: #2d3748;
background-color: #ffffff;
border: 1px solid #cbd5e1;
border-radius: 4px;
cursor: pointer;
outline: none;
transition: border-color 0.2s;
/* Diskreter nativer Pfeil-Style */
appearance: none;
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://w3.org' viewBox='0 0 24 24' fill='none' stroke='%234a5568' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 0.4rem center;
background-size: 1em;
}
.s-res-limit-select:focus {
border-color: #3182ce;
}
/* Seitennummern Navigation */
.s-res-page-navigation {
display: flex;
gap: 0.25rem;
}
.s-res-page-btn {
background-color: #ffffff;
border: 1px solid #cbd5e1;
color: #4a5568;
padding: 0.35rem 0.75rem;
font-size: 0.9rem;
font-weight: 500;
border-radius: 4px;
cursor: pointer;
transition: all 0.2s ease;
}
.s-res-page-btn:hover:not(:disabled) {
background-color: #f8f9fa;
border-color: #cbd5e1;
color: #2d3748;
}
.s-res-page-btn-active {
background-color: #3182ce;
border-color: #3182ce;
color: #ffffff;
cursor: default;
}
.s-res-page-btn:disabled {
background-color: #f1f5f9;
border-color: #e2e8f0;
color: #94a3b8;
cursor: not-allowed;
}
/* --- RESPONSIVE DESIGN (MOBILGERÄTE) --- */
@media (max-width: 768px) {
.s-res-layout-grid {
grid-template-columns: 1fr; /* Stapelt Seitenleiste und Inhalt untereinander */
gap: 1.5rem;
margin: 1rem auto;
}
.s-res-pagination-footer {
flex-direction: column;
gap: 1rem;
align-items: flex-start;
}
}
+3 -3
View File
@@ -1,5 +1,5 @@
<footer>
<a href="impressum.php">Impressum</a>
<a href="datenschutz.php">Datenschutz</a>
<a href="nutzungsbedingungen.php">Nutzungsbedingungen</a>
<a href="index.php?pfad=impressum">Impressum</a>
<a href="index.php?pfad=datenschutz">Datenschutz</a>
<a href="index.php?pfad=nutzungsbedingungen">Nutzungsbedingungen</a>
</footer>
+61 -58
View File
@@ -15,56 +15,59 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
</label>
<ul id="mobile-nav" class="nav__mobile-menu">
<li><a href="profile.php">Profil</a></li>
<li><a href="login.php">Anmelden</a></li>
<li><a href="register.php">Registrieren</a></li>
<li>
<label for="nav-toggle" class="nav__close-btn">&times;</label>
</li>
<li><a href="index.php?pfad=profile">Profil</a></li>
<li><a href="index.php?pfad=login">Anmelden</a></li>
<li><a href="index.php?pfad=register">Registrieren</a></li>
<li>
<label class="nav__mobile-label">Sprachen</label>
<ul class="nav__mobile-submenu">
<li><a href="404.php">Deutsch</a></li>
<li><a href="404.php">Englisch</a></li>
<li><a href="404.php">Französisch</a></li>
<li><a href="404.php">Latein</a></li>
<li><a href="404.php">Literatur</a></li>
<li><a href="index.php?pfad=deutsch">Deutsch</a></li>
<li><a href="index.php?pfad=englisch">Englisch</a></li>
<li><a href="index.php?pfad=franzoesisch">Französisch</a></li>
<li><a href="index.php?pfad=latein">Latein</a></li>
<li><a href="index.php?pfad=literatur">Literatur</a></li>
</ul>
</li>
<li>
<label class="nav__mobile-label">MINT</label>
<ul class="nav__mobile-submenu">
<li><a href="mathe.php">Mathematik</a></li>
<li><a href="404.php">Biologie</a></li>
<li><a href="404.php">Chemie</a></li>
<li><a href="physik.php">Physik</a></li>
<li><a href="informatik.php">Informatik</a></li>
<li><a href="404.php">Astronomie</a></li>
<li><a href="index.php?pfad=mathe">Mathematik</a></li>
<li><a href="index.php?pfad=biologie">Biologie</a></li>
<li><a href="index.php?pfad=chemie">Chemie</a></li>
<li><a href="index.php?pfad=englisch">Physik</a></li>
<li><a href="index.php?pfad=informatik">Informatik</a></li>
<li><a href="index.php?pfad=astronomie">Astronomie</a></li>
</ul>
</li>
<li>
<label class="nav__mobile-label">Gesellschaft & Werte</label>
<ul class="nav__mobile-submenu">
<li><a href="404.php">Geschichte</a></li>
<li><a href="404.php">Erdkunde</a></li>
<li><a href="404.php">Sozialkunde</a></li>
<li><a href="404.php">Wirtschaftskunde</a></li>
<li><a href="404.php">Religion</a></li>
<li><a href="404.php">Ethikunterricht</a></li>
<li><a href="404.php">Philosophie</a></li>
<li><a href="404.php">Psychologie</a></li>
<li><a href="404.php">Kunst</a></li>
<li><a href="404.php">Musik</a></li>
<li><a href="404.php">Theater</a></li>
<li><a href="index.php?pfad=geschichte">Geschichte</a></li>
<li><a href="index.php?pfad=erdkunde">Erdkunde</a></li>
<li><a href="index.php?pfad=sozialkunde">Sozialkunde</a></li>
<li><a href="index.php?pfad=wirtschaft">Wirtschaftskunde</a></li>
<li><a href="index.php?pfad=religion">Religion</a></li>
<li><a href="index.php?pfad=ethik">Ethikunterricht</a></li>
<li><a href="index.php?pfad=philosophie">Philosophie</a></li>
<li><a href="index.php?pfad=psychologie">Psychologie</a></li>
<li><a href="index.php?pfad=kunst">Kunst</a></li>
<li><a href="index.php?pfad=musik">Musik</a></li>
<li><a href="index.php?pfad=theater">Theater</a></li>
</ul>
</li>
<li>
<label class="nav__mobile-label">Technik & Praxis</label>
<ul class="nav__mobile-submenu">
<li><a href="404.php">Technik</a></li>
<li><a href="404.php">Werken</a></li>
<li><a href="404.php">Hauswirtschaft</a></li>
<li><a href="404.php">Sport</a></li>
<li><a href="index.php?pfad=technik">Technik</a></li>
<li><a href="index.php?pfad=werken">Werken</a></li>
<li><a href="index.php?pfad=hauswirtschaft">Hauswirtschaft</a></li>
<li><a href="index.php?pfad=sport">Sport</a></li>
</ul>
</li>
</ul>
@@ -74,59 +77,59 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
<div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">Sprachen</button>
<div class="nav__dropdown-menu">
<a href="404.php">Deutsch</a>
<a href="404.php">Englisch</a>
<a href="404.php">Französisch</a>
<a href="404.php">Latein</a>
<a href="404.php">Literatur</a>
<a href="index.php?pfad=deutsch">Deutsch</a>
<a href="index.php?pfad=englisch">Englisch</a>
<a href="index.php?pfad=franzoesisch">Französisch</a>
<a href="index.php?pfad=latein">Latein</a>
<a href="index.php?pfad=literatur">Literatur</a>
</div>
</div>
<div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">MINT</button>
<div class="nav__dropdown-menu">
<a href="mathe.php">Mathematik</a>
<a href="404.php">Biologie</a>
<a href="404.php">Chemie</a>
<a href="physik.php">Physik</a>
<a href="informatik.php">Informatik</a>
<a href="404.php">Astronomie</a>
<a href="index.php?pfad=mathe">Mathematik</a>
<a href="index.php?pfad=biologie">Biologie</a>
<a href="index.php?pfad=chemie">Chemie</a>
<a href="index.php?pfad=physik">Physik</a>
<a href="index.php?pfad=informatik">Informatik</a>
<a href="index.php?pfad=astronomie">Astronomie</a>
</div>
</div>
<div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">Gesellschaft & Werte</button>
<div class="nav__dropdown-menu">
<a href="404.php">Geschichte</a>
<a href="404.php">Erdkunde</a>
<a href="404.php">Sozialkunde</a>
<a href="404.php">Wirtschaftskunde</a>
<a href="404.php">Religion</a>
<a href="404.php">Ethikunterricht</a>
<a href="404.php">Philosophie</a>
<a href="404.php">Psychologie</a>
<a href="404.php">Kunst</a>
<a href="404.php">Musik</a>
<a href="404.php">Theater</a>
<a href="index.php?pfad=geschichte">Geschichte</a>
<a href="index.php?pfad=erdkunde">Erdkunde</a>
<a href="index.php?pfad=sozialkunde">Sozialkunde</a>
<a href="index.php?pfad=wirtschaft">Wirtschaftskunde</a>
<a href="index.php?pfad=religion">Religion</a>
<a href="index.php?pfad=ethik">Ethikunterricht</a>
<a href="index.php?pfad=philosophie">Philosophie</a>
<a href="index.php?pfad=psychologie">Psychologie</a>
<a href="index.php?pfad=kunst">Kunst</a>
<a href="index.php?pfad=musik">Musik</a>
<a href="index.php?pfad=theater">Theater</a>
</div>
</div>
<div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">Technik & Praxis</button>
<div class="nav__dropdown-menu">
<a href="404.php">Technik</a>
<a href="404.php">Werken</a>
<a href="404.php">Hauswirtschaft</a>
<a href="404.php">Sport</a>
<a href="index.php?pfad=technik">Technik</a>
<a href="index.php?pfad=werken">Werken</a>
<a href="index.php?pfad=hauswirtschaft">Hauswirtschaft</a>
<a href="index.php?pfad=sport">Sport</a>
</div>
</div>
</div>
<div class="nav__right">
<a href = "profile.php" class="nav_item nav__link">Profil</a>
<a href="index.php?pfad=profile" class="nav_item nav__link">Profil</a>
<div class="nav__search">
<?php
include_once 'search.php';
?>
</div>
<a href = "login.php" class="nav__item nav__button">Anmelden</a>
<a href = "register.php" class="nav__item nav__button">Registrieren</a>
<a href = "index.php?pfad=login" class="nav__item nav__button">Anmelden</a>
<a href = "index.php?pfad=register" class="nav__item nav__button">Registrieren</a>
</div>
</nav>
+13 -7
View File
@@ -1,6 +1,6 @@
<!--
Seite: Hompage der Lernplattform
Funktion: Webseitengerüst, Anzeigen von Beiträgen, Suchfunktion etc.
Seite: Index der Lernplattform
Funktion: Webseitengerüst, Anzeigen von Content
-->
<!DOCTYPE html>
<html lang="de">
@@ -14,6 +14,7 @@
<link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/navbar.css">
<link rel="stylesheet" href="css/footer.css">
<link rel="stylesheet" href="css/search-results.css">
<title>EduForge</title>
</head>
@@ -22,11 +23,16 @@
<?php
include_once 'includes/navbar.php';
//Dynamischer Inhalt (später mit php...):
include_once 'content/home.php';
?>
<?php
//Dynamischer Inhalt:
if (isset($_GET["pfad"])) {
if (file_exists('content/' . $_GET["pfad"] . '.php')) {
include_once 'content/' . $_GET["pfad"] . '.php';
} else {
include_once 'content/404.php';
}
} else {
include_once 'content/home.php';
}
include_once 'includes/footer.php';
?>
</body>
@@ -0,0 +1,29 @@
<?php
session_start();
require_once '../model/LocalArticleManager.php';
require_once '../model/ArticleManager.php';
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if(!isset($_POST["search"])){
$_SESSION["message"] = "missing_parameters";
header("location: ../../index.php?pfad=search-results");
} else {
$search = $_POST["search"];
try {
$articleManager = ArticleManager::getInstance();
$articleManager->search($search); // TODO: Methode implementieren.
} catch (Exception $e){
$_SESSION["message"] = "internal_error";
}
$_SESSION["message"] = "new_search_results";
// TODO: Liste mit Artikeln in der Suchreihenfolge übertragen.
// Weiterleitung zur Suchergebnisanzeige
header("location: ../../index.php?pfad=search-results");
exit();
}
}
?>
-56
View File
@@ -1,56 +0,0 @@
<?php
// Webhook: erfasst einen push auf dem dev (und aktualisiert das Webverzeichnis des Servers)
// Quelle: https://docs.gitea.com/usage/webhooks
ini_set('error_log', __DIR__ . '/tmp.log');
$secret_key = '763489347';
// check for POST request
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
error_log('FAILED - not POST - '. $_SERVER['REQUEST_METHOD']);
exit();
}
// get content type
$content_type = isset($_SERVER['CONTENT_TYPE']) ? strtolower(trim($_SERVER['CONTENT_TYPE'])) : '';
if ($content_type != 'application/json') {
error_log('FAILED - not application/json - '. $content_type);
exit();
}
// get payload
$payload = trim(file_get_contents("php://input"));
if (empty($payload)) {
error_log('FAILED - no payload');
exit();
}
// get header signature
$header_signature = isset($_SERVER['HTTP_X_GITEA_SIGNATURE']) ? $_SERVER['HTTP_X_GITEA_SIGNATURE'] : '';
if (empty($header_signature)) {
error_log('FAILED - header signature missing');
exit();
}
// calculate payload signature
$payload_signature = hash_hmac('sha256', $payload, $secret_key, false);
// check payload signature against header signature
if ($header_signature !== $payload_signature) {
error_log('FAILED - payload signature');
exit();
}
// convert json to array
$decoded = json_decode($payload, true);
// check for json decode errors
if (json_last_error() !== JSON_ERROR_NONE) {
error_log('FAILED - json decode - '. json_last_error());
exit();
}
// success, do something
error_log('SUCCESS - Webhook hat funktioniert');