From 5401e89a2bc77f84554b1d26ee00085a1b34a435 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Wed, 19 Aug 2026 20:33:08 +0200 Subject: [PATCH] ydasd --- Internal/de/PROJECT_CONTEXT.md | 1 + Internal/en/PROJECT_CONTEXT.md | 1 + README.md | 1 + partials/landing/account/dashboard.php | 26 ++++++++++++++++++++------ src/App/AccountPages.php | 18 ++++++++++++++---- 5 files changed, 37 insertions(+), 10 deletions(-) diff --git a/Internal/de/PROJECT_CONTEXT.md b/Internal/de/PROJECT_CONTEXT.md index fc1b91d..e7721d8 100644 --- a/Internal/de/PROJECT_CONTEXT.md +++ b/Internal/de/PROJECT_CONTEXT.md @@ -54,6 +54,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind l - Kategorien liegen nicht mehr unter `System`, sondern in einem eigenen Mitgliederbereichspunkt `Kategorien`; dort werden nur neue Kategorien angezeigt und per Vorschlagsfeld mit bestehenden Kategorien aus der Datenbank zusammengeführt. - Neue Kategorien bleiben dort sichtbar, bis sie von einem Berechtigten bestätigt oder mit einer bestehenden Kategorie zusammengeführt werden. - Im Bereich `Kategorien` gibt es zusätzlich eine Suche über bestehende Kategorien, damit sie gezielt gefunden und zusammengeführt werden können. +- Beim Zusammenführen kann explizit festgelegt werden, welche der beiden Kategorien erhalten bleibt. - Community-Level können zusätzlich die Rechte für Kategorien sowie für die Freigabe von Orten und Veranstaltungen tragen. ## Technischer Rahmen diff --git a/Internal/en/PROJECT_CONTEXT.md b/Internal/en/PROJECT_CONTEXT.md index 771a38d..0dd205d 100644 --- a/Internal/en/PROJECT_CONTEXT.md +++ b/Internal/en/PROJECT_CONTEXT.md @@ -54,6 +54,7 @@ Papa-Kind-Treff is a PHP-based platform for fathers. Core areas are local events - Categories no longer live under `System`, but in their own member-area section `Categories`; that area only shows newly created categories and merges them into existing database categories through a suggestion field. - New categories remain visible there until an authorized user confirms them or merges them into an existing category. - The `Categories` area also includes a search across existing categories so they can be found and merged directly. +- During merging, it is now possible to explicitly choose which of the two categories should be kept. - Community levels can now additionally carry the rights for category handling as well as place and event approvals. ## Technical Frame diff --git a/README.md b/README.md index 86f8d8f..99f5ce7 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf: - Kategorien wurden aus `System` in den eigenen Mitgliederbereichspunkt `Kategorien` verschoben; dort werden nur neue Kategorien angezeigt und per Vorschlagsfeld mit bestehenden Kategorien aus der Datenbank zusammengeführt - Neue Kategorien bleiben im Bereich `Kategorien` sichtbar, bis sie von einem Berechtigten bestätigt oder zusammengeführt werden - Im Bereich `Kategorien` gibt es zusätzlich eine Suche über bestehende Kategorien, damit sie gezielt gefunden und zusammengeführt werden können +- Beim Zusammenführen von Kategorien kann jetzt explizit festgelegt werden, welche der beiden Kategorien erhalten bleibt - Community-Level können jetzt zusätzlich die Rechte für Kategorien sowie für die Freigabe von Orten und Veranstaltungen tragen - 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 diff --git a/partials/landing/account/dashboard.php b/partials/landing/account/dashboard.php index 345e3b4..5464d7b 100755 --- a/partials/landing/account/dashboard.php +++ b/partials/landing/account/dashboard.php @@ -999,18 +999,25 @@ if (!empty($canManageSystemSettings)) {
- +
- +
+
+ + +
@@ -1044,18 +1051,25 @@ if (!empty($canManageSystemSettings)) { - +
- +
+
+ + +
diff --git a/src/App/AccountPages.php b/src/App/AccountPages.php index aba57ba..f79c260 100755 --- a/src/App/AccountPages.php +++ b/src/App/AccountPages.php @@ -333,12 +333,22 @@ final class AccountPages if (!$canManageCategories || !$listingCatalog) { throw new \RuntimeException('Keine Berechtigung für die Kategorien-Verwaltung.'); } - $targetCategorySlug = $listingCatalog->resolveExistingCategorySlug((string)($_POST['target_category_input'] ?? '')); - if ($targetCategorySlug === null) { - throw new \RuntimeException('Bitte wähle eine vorhandene Zielkategorie aus den Vorschlägen.'); + $currentCategorySlug = trim((string)($_POST['current_category_slug'] ?? '')); + $otherCategorySlug = $listingCatalog->resolveExistingCategorySlug((string)($_POST['other_category_input'] ?? '')); + if ($currentCategorySlug === '') { + throw new \RuntimeException('Bitte wähle eine Ausgangskategorie aus.'); } + if ($otherCategorySlug === null) { + throw new \RuntimeException('Bitte wähle eine vorhandene zweite Kategorie aus den Vorschlägen.'); + } + if ($currentCategorySlug === $otherCategorySlug) { + throw new \RuntimeException('Bitte wähle zwei unterschiedliche Kategorien aus.'); + } + $keepChoice = (string)($_POST['keep_category_choice'] ?? 'current'); + $targetCategorySlug = $keepChoice === 'other' ? $otherCategorySlug : $currentCategorySlug; + $sourceCategorySlug = $keepChoice === 'other' ? $currentCategorySlug : $otherCategorySlug; $listingCatalog->mergeCategories( - (string)($_POST['source_category_slug'] ?? ''), + $sourceCategorySlug, $targetCategorySlug ); $info = 'Kategorie zusammengeführt.';