From 9d5bad8294608ac6e4f24b5840c4dee0e115931b Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Aug 2026 00:05:18 +0200 Subject: [PATCH] adasd --- Internal/de/PROJECT_CONTEXT.md | 4 + Internal/de/PROJECT_STRUCTURE.md | 1 + Internal/de/README.md | 1 + Internal/en/PROJECT_CONTEXT.md | 4 + Internal/en/PROJECT_STRUCTURE.md | 1 + Internal/en/README.md | 1 + README.md | 1 + partials/landing/account/dashboard.php | 138 +++++++++++++++++++ partials/landing/community/thread.php | 2 +- partials/structure/nav.php | 9 ++ src/App/AccountPages.php | 103 ++++++++++++++ src/App/Community.php | 184 +++++++++++++++++++++++-- src/App/CommunityAccess.php | 14 +- src/App/SystemSettings.php | 1 + 14 files changed, 451 insertions(+), 13 deletions(-) diff --git a/Internal/de/PROJECT_CONTEXT.md b/Internal/de/PROJECT_CONTEXT.md index 7c6a3b0..88761d2 100644 --- a/Internal/de/PROJECT_CONTEXT.md +++ b/Internal/de/PROJECT_CONTEXT.md @@ -17,6 +17,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind l ## Konto / Mitgliederbereich - Profil-Menü aktuell: `Profil`, `Kinder`, `Events`, `Orte & Veranstaltungen`, `Community`, `Einstellungen`, `Abmelden` +- Für `SiteOwner` kommt zusätzlich der Bereich `Profil-Levels` dazu. - Kinder können angelegt, bearbeitet und gelöscht werden. - Wenn ein Geburtsdatum gesetzt ist, wird das Alter automatisch berechnet und später bei Bedarf aktualisiert. - Die Konto-E-Mail wird app-seitig verschlüsselt gespeichert und über einen separaten HMAC-Lookup-Hash adressiert. @@ -43,6 +44,9 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind l - Bei `Veranstaltung aus Datenbank` muss das Event-Datum innerhalb des hinterlegten Gültigkeitszeitraums dieser Veranstaltungs-Quelle liegen. - Kategorien werden im Mitgliederbereich per Sucheingabe mit bestehenden Vorschlägen und automatischer Neuanlage gepflegt. - Eigene Events unterstützen optionalen Beschreibungstext, Ja/Nein-Angabe `Mit Kindern`, optionale Platzzahl, optionales Bild sowie eine Location aus Datenbank oder benutzerdefinierte Adresse. +- `Profil-Levels` ist ein Owner-Bereich für Community-Level und die Übersicht der System-Level. +- Community-Level sind jetzt über `system_settings.community_levels_json` editierbar und enthalten aktuell die Rechte `Hilfreiche Antworten hervorheben` und `Bewerbung als Forum-Admin`. +- System-Level bleiben getrennt als Rollen `Forum-Admin`, `Site-Admin` und `SiteOwner`. ## Technischer Rahmen - eigener Front-Controller in `public/index.php` diff --git a/Internal/de/PROJECT_STRUCTURE.md b/Internal/de/PROJECT_STRUCTURE.md index 7902057..9ec49cf 100644 --- a/Internal/de/PROJECT_STRUCTURE.md +++ b/Internal/de/PROJECT_STRUCTURE.md @@ -20,6 +20,7 @@ Stand: 2026-08-10 - Event-Quellen aus Datenbank plus Speicherung der Event-Location-Herkunft: `partials/landing/account/dashboard.php`, `src/App/AccountPages.php`, `Internal/db/schema.sql` - Consent- und rechtliche Texte: `public/page/datenschutz.php` - System-Einstellungen: `src/App/SystemSettings.php` +- Profil-Levels für Owner: `partials/landing/account/dashboard.php`, `src/App/AccountPages.php`, `src/App/Community.php`, `src/App/CommunityAccess.php`, `src/App/SystemSettings.php` - neue Listing-/Ort-Basis: `src/App/ListingCatalog.php` - Kalender-Export und abonnierbarer Feed: `src/App/CalendarSync.php` plus `public/page/calendar/export.php` und `public/page/calendar/feed.php` - UI für getrennte Bereiche `Events` und `Orte & Veranstaltungen` im Mitgliederbereich: `partials/landing/account/dashboard.php` diff --git a/Internal/de/README.md b/Internal/de/README.md index 3e75644..466c524 100644 --- a/Internal/de/README.md +++ b/Internal/de/README.md @@ -17,6 +17,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale - standortbasierte Sortierung für die neuesten Events - Mitgliederbereich mit linker Bereichsnavigation - Profil-Menü mit `Profil`, `Kinder`, `Events`, `Orte & Veranstaltungen`, `Community`, `Einstellungen` +- Für `SiteOwner` gibt es zusätzlich den Punkt `Profil-Levels` - Konto-E-Mails sowie sensible Profilfelder werden app-seitig verschlüsselt gespeichert - Kinder können angelegt, bearbeitet und gelöscht werden - Profiladresse mit verschlüsselter Straße/Hausnummer, Adresssuche, Browser-Übernahme und Validierung diff --git a/Internal/en/PROJECT_CONTEXT.md b/Internal/en/PROJECT_CONTEXT.md index 2f3713f..d7cea63 100644 --- a/Internal/en/PROJECT_CONTEXT.md +++ b/Internal/en/PROJECT_CONTEXT.md @@ -17,6 +17,7 @@ Papa-Kind-Treff is a PHP-based platform for fathers. Core areas are local events ## Account / Member Area - Profile menu currently contains `Profile`, `Children`, `Events`, `Places & Events`, `Community`, `Settings`, `Logout`. +- `SiteOwner` additionally gets the area `Profile Levels`. - Children can be created, edited, and deleted. - If a birth date is set, age is calculated automatically and updated later when needed. - Account email is encrypted application-side and addressed through a separate HMAC lookup hash. @@ -43,6 +44,9 @@ Papa-Kind-Treff is a PHP-based platform for fathers. Core areas are local events - When `event from database` is selected, the event date must fall inside that source event's valid date window. - Categories in the member area are handled via a search input with existing suggestions and automatic creation when needed. - Own events support an optional description, a clear `with children` yes/no field, optional capacity, an optional image, and either a database-backed location or a custom address. +- `Profile Levels` is an owner-only area for community levels and the overview of system levels. +- Community levels are now editable through `system_settings.community_levels_json` and currently carry the rights `highlight helpful replies` and `apply for forum admin`. +- System levels remain separate as the roles `Forum Admin`, `Site Admin`, and `SiteOwner`. ## Technical Frame - custom front controller in `public/index.php` diff --git a/Internal/en/PROJECT_STRUCTURE.md b/Internal/en/PROJECT_STRUCTURE.md index 8b78bf0..84a23fe 100644 --- a/Internal/en/PROJECT_STRUCTURE.md +++ b/Internal/en/PROJECT_STRUCTURE.md @@ -20,6 +20,7 @@ Updated: 2026-08-10 - database-backed event location sources plus persisted event location origin: `partials/landing/account/dashboard.php`, `src/App/AccountPages.php`, `Internal/db/schema.sql` - consent and legal texts: `public/page/datenschutz.php` - system settings: `src/App/SystemSettings.php` +- owner profile-level management: `partials/landing/account/dashboard.php`, `src/App/AccountPages.php`, `src/App/Community.php`, `src/App/CommunityAccess.php`, `src/App/SystemSettings.php` - new listing/place base: `src/App/ListingCatalog.php` - calendar export and subscribable feed: `src/App/CalendarSync.php` plus `public/page/calendar/export.php` and `public/page/calendar/feed.php` - separated `Events` and `Places & Events` UI in member area: `partials/landing/account/dashboard.php` diff --git a/Internal/en/README.md b/Internal/en/README.md index 1b52071..f9d304f 100644 --- a/Internal/en/README.md +++ b/Internal/en/README.md @@ -17,6 +17,7 @@ Papa-Kind-Treff is a PHP-based platform for fathers focused on local events, app - location-based ordering for the newest events - member area with left-side section navigation - profile menu with `Profile`, `Children`, `Events`, `Places & Events`, `Community`, `Settings` +- `SiteOwner` additionally gets the member-area item `Profile Levels` - account emails and sensitive profile fields are stored encrypted application-side - children can be created, edited, and deleted - profile address supports encrypted street/house number, address search, browser import, and validation diff --git a/README.md b/README.md index 0b07e14..1b67563 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf: - `Termine` und `Treffen` ergänzend in SEO- und Erklärungstexten - Hauptnavigation aktuell: `Home`, `Event Suche`, `Community` - Profil-Menü aktuell: `Profil`, `Kinder`, `Events`, `Orte & Veranstaltungen`, `Community`, `Einstellungen`, `Abmelden` +- Für `SiteOwner` gibt es zusätzlich den Mitgliederbereichspunkt `Profil-Levels` - neue interne Grundstruktur: `listing_places`, `listings`, `listing_occurrences`, `listing_prices`, `listing_benefits` - Seiten-Admins haben zusätzlich eine System-Sektion für globale Wartungs- und Diensteschalter - Im Mitgliederbereich ist `Events` jetzt wieder auf echte eigene Events und Event-Teilnahmen beschränkt diff --git a/partials/landing/account/dashboard.php b/partials/landing/account/dashboard.php index a4fcccf..3174203 100755 --- a/partials/landing/account/dashboard.php +++ b/partials/landing/account/dashboard.php @@ -142,6 +142,9 @@ $sectionLinks = [ 'community' => 'Community', 'settings' => 'Einstellungen', ]; +if (!empty($canManageProfileLevels)) { + $sectionLinks['profile-levels'] = 'Profil-Levels'; +} $showEventTypeChoice = !$editing && (($section ?? 'events') === 'places') && $requestedCreateListingKind === null; $modalSectionTarget = ($editingListing || ($section ?? '') === 'places') ? 'places' : 'events'; if (!empty($canManageSystemSettings)) { @@ -321,6 +324,141 @@ if (!empty($canManageSystemSettings)) { + + +
+ + +
+ +