sadasd
All checks were successful
Deploy / deploy (push) Successful in 54s

This commit is contained in:
2026-08-03 22:22:09 +02:00
parent 258a3a2229
commit faf614010d
12 changed files with 40 additions and 38 deletions

View File

@@ -20,7 +20,7 @@ Aktueller Projektstand
- Auch die Konto-E-Mail wird jetzt app-seitig verschluesselt gespeichert; fuer Login, Verifizierung, Passwort-Reset und Dublettenpruefung dient nur ein separater HMAC-Lookup-Hash. - Auch die Konto-E-Mail wird jetzt app-seitig verschluesselt gespeichert; fuer Login, Verifizierung, Passwort-Reset und Dublettenpruefung dient nur ein separater HMAC-Lookup-Hash.
- Der Hinweis auf die verschluesselte Speicherung personenbezogener Profilangaben ist auf der Datenschutz-Seite jetzt zusaetzlich deutlich hervorgehoben. - Der Hinweis auf die verschluesselte Speicherung personenbezogener Profilangaben ist auf der Datenschutz-Seite jetzt zusaetzlich deutlich hervorgehoben.
- Das Profil besitzt jetzt zusaetzlich eine vollstaendige Adresse mit verschluesselter Strasse/Hausnummer sowie eine optionale Adress-Lokalisierung ueber die vorhandenen externen Karten-/Geocoding-Dienste. - Das Profil besitzt jetzt zusaetzlich eine vollstaendige Adresse mit verschluesselter Strasse/Hausnummer sowie eine optionale Adress-Lokalisierung ueber die vorhandenen externen Karten-/Geocoding-Dienste.
- Die Profiladresse unterstuetzt jetzt ausserdem eine Auswahl moeglicher Adress-Treffer, die Uebernahme aus dem Browser-Standort und einen kurzen Hinweisdialog zur lokalen Relevanz. - Die Profiladresse unterstuetzt jetzt ausserdem eine Auswahl moeglicher Adress-Treffer, die Uebernahme aus dem Browser-Standort und einen kurzen Hinweisdialog zur lokalen Relevanz fuer Events, Termine und Treffen.
- Der Profil-Editor im Mitgliederbereich ist jetzt kompakter aufgebaut, in ausklappbare Bereiche gegliedert und enthaelt die bearbeitbare Konto-E-Mail direkt im Formular. - Der Profil-Editor im Mitgliederbereich ist jetzt kompakter aufgebaut, in ausklappbare Bereiche gegliedert und enthaelt die bearbeitbare Konto-E-Mail direkt im Formular.
- Fuer Umkreis- und Distanzfunktionen bleiben nur `lat`/`lng` technisch im Klartext; die eigentliche Strasse/Hausnummer ist verschluesselt. - Fuer Umkreis- und Distanzfunktionen bleiben nur `lat`/`lng` technisch im Klartext; die eigentliche Strasse/Hausnummer ist verschluesselt.
- Alte statische Avatar-Presets und frühere Layer-Assets sind entfernt. - Alte statische Avatar-Presets und frühere Layer-Assets sind entfernt.

View File

@@ -3,7 +3,7 @@
Stand: 2026-07-31 Stand: 2026-07-31
## Kurzbeschreibung ## Kurzbeschreibung
Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind lokale Treffen/Events, ein Community-Forum, Mitgliederprofile mit optionalen Kinderinfos und ein Moderations-/Adminbereich. Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind lokale Events, Termine und Treffen, ein Community-Forum, Mitgliederprofile mit optionalen Kinderinfos und ein Moderations-/Adminbereich.
## Technischer Rahmen ## Technischer Rahmen
- Kein großes Framework, sondern eigener Front-Controller in `public/index.php` - Kein großes Framework, sondern eigener Front-Controller in `public/index.php`
@@ -20,10 +20,10 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind l
## Wichtige Produktentscheidungen ## Wichtige Produktentscheidungen
- Die Ansprache im Frontend soll immer den aktuellen Nutzer direkt ansprechen. - Die Ansprache im Frontend soll immer den aktuellen Nutzer direkt ansprechen.
- Die Hauptnavigation ist bewusst knapp gehalten: `Home`, `Event Suche`, `Community`. - Die Hauptnavigation ist bewusst knapp gehalten: `Home`, `Event Suche`, `Community`.
- `Termine` ist aktuell kein eigener Hauptpunkt mehr; Events werden über Startseite und Suche erschlossen. - `Events` sind aktuell kein eigener Hauptpunkt mehr; sie werden über Startseite und Suche erschlossen.
- Die Community ist hierarchisch aufgebaut: Kategorien -> Boards -> Threads -> Posts. - Die Community ist hierarchisch aufgebaut: Kategorien -> Boards -> Threads -> Posts.
- Moderation ist getrennt vom normalen Community-Frontend in einem eigenen Adminbereich. - Moderation ist getrennt vom normalen Community-Frontend in einem eigenen Adminbereich.
- Standortfunktionen sind relevant für lokale Treffen und werden künftig weiter ausgebaut. - Standortfunktionen sind relevant für lokale Events, Termine und Treffen und werden künftig weiter ausgebaut.
- Profilbilder werden aktuell über die Mehr-Style-Architektur serverseitig erzeugt; aktiv sind derzeit `lorelei` und `croodles`. - Profilbilder werden aktuell über die Mehr-Style-Architektur serverseitig erzeugt; aktiv sind derzeit `lorelei` und `croodles`.
- Beim Style `croodles` startet die Basisfarbe standardmaessig weiss; der Hintergrund ist standardmaessig nicht vorbelegt. - Beim Style `croodles` startet die Basisfarbe standardmaessig weiss; der Hintergrund ist standardmaessig nicht vorbelegt.
- Stil, Seed und Varianten werden generisch im Profil gespeichert; das fertige SVG wird lokal pro Benutzer unter `ptk-<userId>.svg` abgelegt. - Stil, Seed und Varianten werden generisch im Profil gespeichert; das fertige SVG wird lokal pro Benutzer unter `ptk-<userId>.svg` abgelegt.
@@ -31,7 +31,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind l
## Navigation / Konto ## Navigation / Konto
- Eingeloggte Nutzer sehen rechts ein Profil-Menü statt einzelner `Dashboard`-/`Logout`-Buttons. - Eingeloggte Nutzer sehen rechts ein Profil-Menü statt einzelner `Dashboard`-/`Logout`-Buttons.
- Das Profil-Menü enthält aktuell `Profil`, `Kinder`, `Termine`, `Community`, `Einstellungen`, `Abmelden`. - Das Profil-Menü enthält aktuell `Profil`, `Kinder`, `Events`, `Community`, `Einstellungen`, `Abmelden`.
- Der Mitgliederbereich selbst ist als Layout mit linker Bereichsnavigation aufgebaut. - Der Mitgliederbereich selbst ist als Layout mit linker Bereichsnavigation aufgebaut.
- Kinder koennen im Mitgliederbereich angelegt, nachtraeglich bearbeitet und wieder geloescht werden. - Kinder koennen im Mitgliederbereich angelegt, nachtraeglich bearbeitet und wieder geloescht werden.
- Wenn ein Geburtsdatum gesetzt ist, wird das Alter im Mitgliederbereich automatisch berechnet und spaeter bei Bedarf anhand des Datums aktualisiert; ohne Geburtsdatum gilt der manuelle Alterswert. - Wenn ein Geburtsdatum gesetzt ist, wird das Alter im Mitgliederbereich automatisch berechnet und spaeter bei Bedarf anhand des Datums aktualisiert; ohne Geburtsdatum gilt der manuelle Alterswert.
@@ -39,7 +39,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind l
- Die Konto-E-Mail wird ebenfalls app-seitig verschluesselt gespeichert; fuer Login, Verifizierung, Passwort-Reset und Dublettenpruefung existiert nur ein separater HMAC-Lookup-Hash. - Die Konto-E-Mail wird ebenfalls app-seitig verschluesselt gespeichert; fuer Login, Verifizierung, Passwort-Reset und Dublettenpruefung existiert nur ein separater HMAC-Lookup-Hash.
- Der Hinweis auf die verschluesselte Speicherung personenbezogener Profilangaben ist auf der Datenschutz-Seite jetzt zusaetzlich deutlich hervorgehoben. - Der Hinweis auf die verschluesselte Speicherung personenbezogener Profilangaben ist auf der Datenschutz-Seite jetzt zusaetzlich deutlich hervorgehoben.
- Im Profil koennen jetzt auch Strasse/Hausnummer, PLZ, Ort und Region gepflegt werden; fuer die Adress-Lokalisierung werden die bereits vorhandenen externen Karten-/Geocoding-Dienste wiederverwendet. - Im Profil koennen jetzt auch Strasse/Hausnummer, PLZ, Ort und Region gepflegt werden; fuer die Adress-Lokalisierung werden die bereits vorhandenen externen Karten-/Geocoding-Dienste wiederverwendet.
- Die Profiladresse bietet jetzt zusaetzlich eine Trefferauswahl fuer die Suche, eine Uebernahme aus dem Browser-Standort und einen kurzen Hinweisdialog zur Relevanz fuer lokale Termin-Hinweise. - Die Profiladresse bietet jetzt zusaetzlich eine Trefferauswahl fuer die Suche, eine Uebernahme aus dem Browser-Standort und einen kurzen Hinweisdialog zur Relevanz fuer lokale Event-, Termin- und Treff-Hinweise.
- Der Profil-Editor ist jetzt kompakter gegliedert, nutzt ausklappbare Bereiche fuer Basisdaten, Adresse, Sprache/Beruf und Kurzvorstellung und enthaelt die bearbeitbare Konto-E-Mail direkt im Formular. - Der Profil-Editor ist jetzt kompakter gegliedert, nutzt ausklappbare Bereiche fuer Basisdaten, Adresse, Sprache/Beruf und Kurzvorstellung und enthaelt die bearbeitbare Konto-E-Mail direkt im Formular.
- Im Profil kann der Nutzer aktuell Komponenten wie Augen, Augenbrauen, Mund, Brille, Haare, Bart und Ohrringe direkt per Vorschaubild auswählen. - Im Profil kann der Nutzer aktuell Komponenten wie Augen, Augenbrauen, Mund, Brille, Haare, Bart und Ohrringe direkt per Vorschaubild auswählen.
- Der Button `Random Profilbild` setzt Seed und Varianten des aktiven Styles zufaellig neu und aktualisiert die Vorschau sofort. - Der Button `Random Profilbild` setzt Seed und Varianten des aktiven Styles zufaellig neu und aktualisiert die Vorschau sofort.

View File

@@ -2,12 +2,12 @@
Stand: 2026-07-31 Stand: 2026-07-31
Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale Treffen, Community-Austausch und einen geschützten Mitgliederbereich. Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale Events, Termine und Treffen, Community-Austausch und einen geschützten Mitgliederbereich.
## Produktumfang ## Produktumfang
- lokale Events und Treffen finden - lokale Events, Termine und Treffen finden
- Community/Forum mit Kategorien, Boards, Threads und Antworten - Community/Forum mit Kategorien, Boards, Threads und Antworten
- Mitgliederbereich für Profil, optionale Kinderinfos und eigene Termine - Mitgliederbereich für Profil, optionale Kinderinfos und eigene Events
- Community-Moderation mit Rollenmodell - Community-Moderation mit Rollenmodell
## Aktueller Stand ## Aktueller Stand
@@ -15,7 +15,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale
- Community mit Board-Navigation und separater Thread-Ansicht - Community mit Board-Navigation und separater Thread-Ansicht
- Community-Admin-Bereich für Bewerbungen, Meldungen, Rollen und Migration - Community-Admin-Bereich für Bewerbungen, Meldungen, Rollen und Migration
- Impressum, Datenschutz-&-Cookies-Seite und Über-uns - Impressum, Datenschutz-&-Cookies-Seite und Über-uns
- standortbasierte Sortierung für die neuesten Treffen - standortbasierte Sortierung für die neuesten Events
- eigener Einstellungsbereich für Standortfreigabe, Browser-Hinweise und Consent-Verwaltung - eigener Einstellungsbereich für Standortfreigabe, Browser-Hinweise und Consent-Verwaltung
- modernes Avatar-System mit zentraler Mehr-Style-Architektur auf Basis von DiceBear - modernes Avatar-System mit zentraler Mehr-Style-Architektur auf Basis von DiceBear
- aktive Avatar-Styles aktuell: `lorelei` und `croodles`; weitere Styles können über `config/avatar.php` freigeschaltet werden - aktive Avatar-Styles aktuell: `lorelei` und `croodles`; weitere Styles können über `config/avatar.php` freigeschaltet werden
@@ -25,7 +25,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale
- `config/avatar.php` enthaelt jetzt pro Style auch explizite Beispielpaletten, Farbgruppen pro Komponente und Beispielprofile als Einbindungsreferenz - `config/avatar.php` enthaelt jetzt pro Style auch explizite Beispielpaletten, Farbgruppen pro Komponente und Beispielprofile als Einbindungsreferenz
- Consent-Manager für Analyse und externe Dienste - Consent-Manager für Analyse und externe Dienste
- Navigation aktuell mit `Home`, `Event Suche`, `Community` - Navigation aktuell mit `Home`, `Event Suche`, `Community`
- eingeloggte Nutzer sehen rechts ein Profil-Menü mit Direktlinks zu `Profil`, `Kinder`, `Termine`, `Community`, `Einstellungen` - eingeloggte Nutzer sehen rechts ein Profil-Menü mit Direktlinks zu `Profil`, `Kinder`, `Events`, `Community`, `Einstellungen`
- der Mitgliederbereich ist als Seitenlayout mit linker Bereichsnavigation aufgebaut - der Mitgliederbereich ist als Seitenlayout mit linker Bereichsnavigation aufgebaut
- im Bereich `Kinder` koennen vorhandene Eintraege jetzt auch nachtraeglich bearbeitet und geloescht werden - im Bereich `Kinder` koennen vorhandene Eintraege jetzt auch nachtraeglich bearbeitet und geloescht werden
- bei Kindern mit Geburtsdatum wird das Alter automatisch berechnet und bei Aufruf des Mitgliederbereichs bei Bedarf jaehrlich nachgezogen; ohne Geburtsdatum gilt das manuell gepflegte Alter - bei Kindern mit Geburtsdatum wird das Alter automatisch berechnet und bei Aufruf des Mitgliederbereichs bei Bedarf jaehrlich nachgezogen; ohne Geburtsdatum gilt das manuell gepflegte Alter
@@ -33,7 +33,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale
- auch Konto-E-Mails werden jetzt app-seitig verschluesselt gespeichert; fuer Login, Verifizierung, Passwort-Reset und Dublettenpruefung wird nur ein separater HMAC-Lookup-Hash verwendet - auch Konto-E-Mails werden jetzt app-seitig verschluesselt gespeichert; fuer Login, Verifizierung, Passwort-Reset und Dublettenpruefung wird nur ein separater HMAC-Lookup-Hash verwendet
- der Hinweis auf die verschluesselte Speicherung personenbezogener Profilangaben ist jetzt auch auf der Datenschutz-Seite deutlich hervorgehoben - der Hinweis auf die verschluesselte Speicherung personenbezogener Profilangaben ist jetzt auch auf der Datenschutz-Seite deutlich hervorgehoben
- das Profil unterstuetzt jetzt eine vollstaendige Adresse mit verschluesselter Strasse/Hausnummer sowie optionaler Adress-Lokalisierung ueber die bereits vorhandenen Karten-/Geocoding-Dienste - das Profil unterstuetzt jetzt eine vollstaendige Adresse mit verschluesselter Strasse/Hausnummer sowie optionaler Adress-Lokalisierung ueber die bereits vorhandenen Karten-/Geocoding-Dienste
- bei der Profiladresse gibt es jetzt eine Trefferauswahl fuer Adresssuche, eine Uebernahme aus dem Browser-Standort sowie einen mobilen Hinweisdialog, warum die Adresse fuer lokale Termine relevant ist - bei der Profiladresse gibt es jetzt eine Trefferauswahl fuer Adresssuche, eine Uebernahme aus dem Browser-Standort sowie einen mobilen Hinweisdialog, warum die Adresse fuer lokale Events, Termine und Treffen relevant ist
- der Profil-Editor im Mitgliederbereich ist jetzt kompakter gruppiert, nutzt ausklappbare Abschnitte und enthaelt die bearbeitbare Konto-E-Mail wieder direkt im Formular - der Profil-Editor im Mitgliederbereich ist jetzt kompakter gruppiert, nutzt ausklappbare Abschnitte und enthaelt die bearbeitbare Konto-E-Mail wieder direkt im Formular
- Debug-Floating-Button nur für `site_admin` im Debug-Modus - Debug-Floating-Button nur für `site_admin` im Debug-Modus

View File

@@ -16,7 +16,7 @@ $childModalTitle = $editingChild ? 'Kind bearbeiten' : 'Kind hinzufügen';
$sectionLinks = [ $sectionLinks = [
'profile' => 'Profil', 'profile' => 'Profil',
'children' => 'Kinder', 'children' => 'Kinder',
'events' => 'Termine', 'events' => 'Events',
'community' => 'Community', 'community' => 'Community',
'settings' => 'Einstellungen', 'settings' => 'Einstellungen',
]; ];
@@ -114,7 +114,7 @@ $sectionLinks = [
<section class="account-panel"> <section class="account-panel">
<div class="account-panel__head"> <div class="account-panel__head">
<h2>Deine Kinder</h2> <h2>Deine Kinder</h2>
<p class="muted">Optionale Angaben, die dir bei Planung und passenden Treffen helfen können.</p> <p class="muted">Optionale Angaben, die dir bei Planung und passenden Events und Treffen helfen können.</p>
</div> </div>
<div class="account-panel__body"> <div class="account-panel__body">
<?php if (!$children): ?> <?php if (!$children): ?>
@@ -202,8 +202,8 @@ $sectionLinks = [
<?php if ($section === 'events'): ?> <?php if ($section === 'events'): ?>
<section class="account-panel" id="events"> <section class="account-panel" id="events">
<div class="account-panel__head"> <div class="account-panel__head">
<h2>Deine Termine</h2> <h2>Deine Events</h2>
<p class="muted">Erstelle, bearbeite und verwalte deine eigenen Treffen.</p> <p class="muted">Erstelle, bearbeite und verwalte deine eigenen Events und finde passende Termine fuer gemeinsame Treffen.</p>
</div> </div>
<div class="account-panel__body"> <div class="account-panel__body">
<div class="flex gap-12" style="margin:0 0 16px 0; flex-wrap: wrap;"> <div class="flex gap-12" style="margin:0 0 16px 0; flex-wrap: wrap;">
@@ -629,7 +629,7 @@ $sectionLinks = [
<button class="btn ghost" type="button" data-modal-close>✕</button> <button class="btn ghost" type="button" data-modal-close>✕</button>
</div> </div>
<div class="stack gap-12"> <div class="stack gap-12">
<p class="muted" style="margin:0;">Deine Adresse hilft uns, dir die neuesten Termine und Events in deiner Umgebung gezielter anzuzeigen.</p> <p class="muted" style="margin:0;">Deine Adresse hilft uns, dir passende Events, Termine und Treffen in deiner Umgebung gezielter anzuzeigen.</p>
<p class="muted" style="margin:0;">Wenn keine Adresse hinterlegt ist, koennen wir lokale Bedarfe und passende Angebote deutlich schlechter einschaetzen.</p> <p class="muted" style="margin:0;">Wenn keine Adresse hinterlegt ist, koennen wir lokale Bedarfe und passende Angebote deutlich schlechter einschaetzen.</p>
<p class="muted small" style="margin:0;">Die Adresse wird nur fuer diese Plattform-Funktionen genutzt. Strasse und Hausnummer werden verschluesselt gespeichert.</p> <p class="muted small" style="margin:0;">Die Adresse wird nur fuer diese Plattform-Funktionen genutzt. Strasse und Hausnummer werden verschluesselt gespeichert.</p>
<div class="flex gap-12"> <div class="flex gap-12">
@@ -790,7 +790,7 @@ $sectionLinks = [
</div> </div>
</div> </div>
<label class="label" style="display:flex; align-items:center; gap:8px;"> <label class="label" style="display:flex; align-items:center; gap:8px;">
<input type="checkbox" name="allow_kids" <?= $allowNoKidsChecked ? 'checked' : '' ?>> Treffen ohne Kinder <input type="checkbox" name="allow_kids" <?= $allowNoKidsChecked ? 'checked' : '' ?>> Event ohne Kinder
</label> </label>
<div class="flex gap-12"> <div class="flex gap-12">
<button class="btn ghost" type="button" data-modal-close>Abbrechen</button> <button class="btn ghost" type="button" data-modal-close>Abbrechen</button>

View File

@@ -43,7 +43,7 @@ $emailPrefill = $vm['emailPrefill'] ?? '';
<aside class="auth-aside"> <aside class="auth-aside">
<img class="auth-logo" src="/assets/bilder/logo_male.png" alt="Papa-Kind-Treff Logo"> <img class="auth-logo" src="/assets/bilder/logo_male.png" alt="Papa-Kind-Treff Logo">
<h3>Neu hier?</h3> <h3>Neu hier?</h3>
<p class="auth-meta">Registriere dich kostenlos, lege dein Profil an und finde Treffen in deiner Nähe. Kinderinfos kannst du später hinzufügen.</p> <p class="auth-meta">Registriere dich kostenlos, lege dein Profil an und finde Events, Termine und Treffen in deiner Nähe. Kinderinfos kannst du später hinzufügen.</p>
<div class="stack gap-12" style="margin-top: 12px;"> <div class="stack gap-12" style="margin-top: 12px;">
<a class="btn block" href="/register">Kostenlos registrieren</a> <a class="btn block" href="/register">Kostenlos registrieren</a>
<a class="btn ghost block" href="/">Zur Startseite</a> <a class="btn ghost block" href="/">Zur Startseite</a>

View File

@@ -69,8 +69,8 @@ try {
<div class="container hero__single"> <div class="container hero__single">
<div class="hero__text"> <div class="hero__text">
<h1>Knüpfe Kontakte und organisiere gemeinsame Zeit mit anderen Vätern.</h1> <h1>Knüpfe Kontakte und organisiere gemeinsame Zeit mit anderen Vätern.</h1>
<p class="lede">Finde auf einen Blick Termine in deiner Umgebung, lerne andere Väter kennen, beteilige dich an Gesprächen in der Community und werde Schritt für Schritt ein fester Teil davon.</p> <p class="lede">Finde auf einen Blick lokale Events, Termine und Treffen in deiner Umgebung, lerne andere Väter kennen, beteilige dich an Gesprächen in der Community und werde Schritt für Schritt ein fester Teil davon.</p>
<p class="hero__copy">Als registrierter Teil der Community kannst du dein Profil mit deinen Kinderinfos pflegen, eigene Treffen organisieren und dich unkompliziert zu bestehenden Terminen dazugesellen.</p> <p class="hero__copy">Als registrierter Teil der Community kannst du dein Profil mit deinen Kinderinfos pflegen, eigene Events organisieren und dich unkompliziert zu bestehenden Treffen und Terminen dazugesellen.</p>
<div class="hero__actions hero__actions--center"> <div class="hero__actions hero__actions--center">
<a class="btn" href="/register">Gleich kostenlos registrieren</a> <a class="btn" href="/register">Gleich kostenlos registrieren</a>
</div> </div>
@@ -88,7 +88,8 @@ try {
<section class="section alt" id="quicksearch"> <section class="section alt" id="quicksearch">
<div class="container"> <div class="container">
<div class="section__intro"> <div class="section__intro">
<h2>Suche nach Treffen in deiner Nähe</h2> <h2>Events in deiner Nähe suchen</h2>
<p>Entdecke Vater-Kind-Events, lokale Termine und gemeinsame Treffen passend zu Ort, Thema und Entfernung.</p>
</div> </div>
<form id="quickSearchForm" class="grid grid-3 quicksearch-form" style="gap: 12px; align-items:flex-end;" action="/search" method="get"> <form id="quickSearchForm" class="grid grid-3 quicksearch-form" style="gap: 12px; align-items:flex-end;" action="/search" method="get">
<div class="stack gap-6"> <div class="stack gap-6">
@@ -122,7 +123,8 @@ try {
<section class="container section" id="events"> <section class="container section" id="events">
<div class="section__intro"> <div class="section__intro">
<h2>Die neuesten Treffen</h2> <h2>Die neuesten Events</h2>
<p>Neue Events, Termine und Treffen fuer Vaeter und Kinder in deiner Region.</p>
</div> </div>
<div class="slider"> <div class="slider">
<button class="btn ghost slider__nav" type="button" data-slider-prev aria-label="Zurück"></button> <button class="btn ghost slider__nav" type="button" data-slider-prev aria-label="Zurück"></button>
@@ -170,11 +172,11 @@ try {
</ul> </ul>
</div> </div>
<div class="surface border rounded p-4"> <div class="surface border rounded p-4">
<h3 class="mt-0">Deine Termine</h3> <h3 class="mt-0">Deine Events</h3>
<ul class="list"> <ul class="list">
<li>Veranstaltungen finden, speichern und schneller wiederfinden.</li> <li>Events finden, speichern und schneller wiederfinden.</li>
<li>Eigene Treffen veröffentlichen und jederzeit aktualisieren.</li> <li>Eigene Events veröffentlichen und jederzeit aktualisieren.</li>
<li>Mit wenigen Angaben aus einer Idee einen konkreten Termin machen.</li> <li>Mit wenigen Angaben aus einer Idee einen konkreten Termin oder ein Treffen machen.</li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@@ -46,15 +46,15 @@ if ($pdo && ($q !== '' || $loc !== '' || ($lat !== null && $lng !== null))) {
<div class="container"> <div class="container">
<h1>Events suchen</h1> <h1>Events suchen</h1>
<p class="muted" style="max-width:72ch; margin:10px 0 0;"> <p class="muted" style="max-width:72ch; margin:10px 0 0;">
Finde lokale Vater-Kind-Events, Papa-Treffen, Familienaktionen und gemeinsame Freizeitangebote in deiner Naehe. Finde lokale Vater-Kind-Events, Termine, Papa-Treffen, Familienaktionen und gemeinsame Freizeitangebote in deiner Naehe.
Mit der Event Suche kannst du nach Ort, PLZ, Titel oder Beschreibung passende Termine schnell filtern. Mit der Event Suche kannst du nach Ort, PLZ, Titel oder Beschreibung passende Events und Treffen schnell filtern.
</p> </p>
<p class="muted" style="max-width:72ch; margin:8px 0 0;"> <p class="muted" style="max-width:72ch; margin:8px 0 0;">
Du moechtest selbst ein Treffen anlegen? Du moechtest selbst ein Event oder Treffen anlegen?
<?php if ($isLoggedIn): ?> <?php if ($isLoggedIn): ?>
<a href="/dashboard?section=events">Zur Event-Erstellung</a>. <a href="/dashboard?section=events">Zur Event-Erstellung</a>.
<?php else: ?> <?php else: ?>
<a href="/login">Einloggen</a> oder <a href="/register">registrieren</a>, um eigene Events zu erstellen. <a href="/login">Einloggen</a> oder <a href="/register">registrieren</a>, um eigene Events und Treffen zu erstellen.
<?php endif; ?> <?php endif; ?>
</p> </p>
<form method="get" class="form-grid single" style="margin: 14px 0; gap:12px; align-items:end;" id="searchForm"> <form method="get" class="form-grid single" style="margin: 14px 0; gap:12px; align-items:end;" id="searchForm">

View File

@@ -51,7 +51,7 @@ if ($debugEnabled) {
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= htmlspecialchars(t('common.title'), ENT_QUOTES) ?></title> <title><?= htmlspecialchars(t('common.title'), ENT_QUOTES) ?></title>
<meta name="description" content="Papa-Kind-Treff: Väter vernetzen sich für Treffen mit und ohne Kinder, Events in der Nähe entdecken und sicher Kontakte knüpfen."> <meta name="description" content="Papa-Kind-Treff: Väter vernetzen sich für Events, Termine und Treffen mit und ohne Kinder, entdecken lokale Angebote und knüpfen sicher Kontakte.">
<?php if (defined('APP_ROBOTS')): ?> <?php if (defined('APP_ROBOTS')): ?>
<meta name="robots" content="<?= htmlspecialchars(APP_ROBOTS, ENT_QUOTES) ?>"> <meta name="robots" content="<?= htmlspecialchars(APP_ROBOTS, ENT_QUOTES) ?>">
<?php endif; ?> <?php endif; ?>

View File

@@ -58,7 +58,7 @@ if ($isLoggedIn) {
<div class="profile-menu__dropdown" role="menu"> <div class="profile-menu__dropdown" role="menu">
<a href="/dashboard?section=profile" role="menuitem">Profil</a> <a href="/dashboard?section=profile" role="menuitem">Profil</a>
<a href="/dashboard?section=children" role="menuitem">Kinder</a> <a href="/dashboard?section=children" role="menuitem">Kinder</a>
<a href="/dashboard?section=events" role="menuitem">Termine</a> <a href="/dashboard?section=events" role="menuitem">Events</a>
<a href="/dashboard?section=community" role="menuitem">Community</a> <a href="/dashboard?section=community" role="menuitem">Community</a>
<a href="/dashboard?section=settings" role="menuitem">Einstellungen</a> <a href="/dashboard?section=settings" role="menuitem">Einstellungen</a>
<?php if ($showAdminLink): ?> <?php if ($showAdminLink): ?>
@@ -81,7 +81,7 @@ if ($isLoggedIn) {
<?php if ($isLoggedIn): ?> <?php if ($isLoggedIn): ?>
<a class="btn ghost" href="/dashboard?section=profile">Profil</a> <a class="btn ghost" href="/dashboard?section=profile">Profil</a>
<a class="btn ghost" href="/dashboard?section=children">Kinder</a> <a class="btn ghost" href="/dashboard?section=children">Kinder</a>
<a class="btn ghost" href="/dashboard?section=events">Termine</a> <a class="btn ghost" href="/dashboard?section=events">Events</a>
<a class="btn ghost" href="/dashboard?section=community">Community</a> <a class="btn ghost" href="/dashboard?section=community">Community</a>
<a class="btn ghost" href="/dashboard?section=settings">Einstellungen</a> <a class="btn ghost" href="/dashboard?section=settings">Einstellungen</a>
<?php if ($showAdminLink): ?> <?php if ($showAdminLink): ?>

View File

@@ -71,7 +71,7 @@ $clientCookie = $config->cookiePrefix() . 'client';
<section> <section>
<h2>4. Community, Beiträge und Events</h2> <h2>4. Community, Beiträge und Events</h2>
<p> <p>
Wenn du Themen, Antworten oder Termine veröffentlichst, werden diese Inhalte mit deinem Konto verknüpft und Wenn du Themen, Antworten oder Events veröffentlichst, werden diese Inhalte mit deinem Konto verknüpft und
entsprechend der jeweiligen Sichtbarkeit innerhalb der Plattform angezeigt. Moderationsvorgänge wie Meldungen, entsprechend der jeweiligen Sichtbarkeit innerhalb der Plattform angezeigt. Moderationsvorgänge wie Meldungen,
Rollen, Bewerbungen oder Community-Sperren werden verarbeitet, soweit dies für den Betrieb einer sicheren und Rollen, Bewerbungen oder Community-Sperren werden verarbeitet, soweit dies für den Betrieb einer sicheren und
funktionsfähigen Community erforderlich ist. funktionsfähigen Community erforderlich ist.
@@ -150,7 +150,7 @@ $clientCookie = $config->cookiePrefix() . 'client';
<p> <p>
Wenn du standortbezogene Funktionen nutzt oder freigibst, kann der Browser deinen aktuellen Standort abfragen. Wenn du standortbezogene Funktionen nutzt oder freigibst, kann der Browser deinen aktuellen Standort abfragen.
Je nach Auswahl wird dieser nur für den aktuellen Besuch oder darüber hinaus lokal gespeichert, Je nach Auswahl wird dieser nur für den aktuellen Besuch oder darüber hinaus lokal gespeichert,
damit dir passende Treffen in deiner Nähe angezeigt werden können. damit dir passende Events, Termine und Treffen in deiner Nähe angezeigt werden können.
</p> </p>
<p> <p>
Zusätzlich kannst du im Mitgliederbereich deine Profiladresse über die gleichen externen Adressdienste Zusätzlich kannst du im Mitgliederbereich deine Profiladresse über die gleichen externen Adressdienste

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
</p> </p>
<p> <p>
Die Idee zu dieser Seite ist deshalb nicht nur entstanden, um Termine und Treffen sichtbar zu machen, sondern auch, Die Idee zu dieser Seite ist deshalb nicht nur entstanden, um Events, Termine und Treffen sichtbar zu machen, sondern auch,
um Freundschaften zu Gleichgesinnten möglich zu machen. Ich wollte einen Ort schaffen, an dem Väter unkompliziert um Freundschaften zu Gleichgesinnten möglich zu machen. Ich wollte einen Ort schaffen, an dem Väter unkompliziert
zueinanderfinden können, ohne große Hürden, ohne unangenehmes Fremdeln und ohne das Gefühl, mit den eigenen Themen zueinanderfinden können, ohne große Hürden, ohne unangenehmes Fremdeln und ohne das Gefühl, mit den eigenen Themen
allein zu sein. Es geht mir um ehrlichen Austausch, um aktuelle Themen aus dem Familienalltag, um Fragen, Gedanken, allein zu sein. Es geht mir um ehrlichen Austausch, um aktuelle Themen aus dem Familienalltag, um Fragen, Gedanken,

View File

@@ -14,7 +14,7 @@ final class I18n
$this->fallback = [ $this->fallback = [
'common' => [ 'common' => [
'title' => 'Papa-Kind-Treff', 'title' => 'Papa-Kind-Treff',
'intro' => 'Väter vernetzen sich für Treffen mit und ohne Kinder.', 'intro' => 'Väter vernetzen sich für Events, Termine und Treffen mit und ohne Kinder.',
], ],
'cta' => [ 'cta' => [
'primary' => 'Weiter', 'primary' => 'Weiter',