From cb7256aebc2e14d9198ae7bd4b475c02caf51ba8 Mon Sep 17 00:00:00 2001 From: fs Date: Thu, 12 Mar 2026 16:47:53 +0100 Subject: [PATCH] variablen und empty states --- i18n/default_de.json | 1 + i18n/default_en.json | 1 + pages/admin/departments/index(default).phtml | 2 +- pages/admin/permissions/index(default).phtml | 2 +- pages/admin/roles/index(default).phtml | 2 +- pages/admin/tenants/index(default).phtml | 2 +- pages/admin/users/index(default).phtml | 2 +- .../partials/app-details-aside-actions.phtml | 47 +++++++++ templates/partials/app-details-titlebar.phtml | 52 ++++++++++ templates/partials/app-empty-state.phtml | 10 +- templates/partials/app-main-aside.phtml | 49 ++++++---- web/css/base/variables.base.css | 50 +++++++++- web/css/base/variables.contrast.css | 28 ++++++ web/css/components/app-buttons.css | 95 ++++++++++++++++--- web/css/components/app-empty-state.css | 29 +++++- 15 files changed, 323 insertions(+), 49 deletions(-) diff --git a/i18n/default_de.json b/i18n/default_de.json index 760afeb..dd67c2b 100644 --- a/i18n/default_de.json +++ b/i18n/default_de.json @@ -521,6 +521,7 @@ "Assigned departments": "Zugewiesene Abteilungen", "Select departments": "Abteilungen auswählen", "Departments for tenant": "Abteilungen für Mandant", + "No departments": "Keine Abteilungen", "No departments available for this tenant": "Für diesen Mandanten sind keine Abteilungen verfügbar", "Assign tenants first to select departments": "Bitte zuerst Mandanten zuweisen, um Abteilungen auszuwählen", "Department options refresh after save": "Abteilungsoptionen werden nach dem Speichern aktualisiert", diff --git a/i18n/default_en.json b/i18n/default_en.json index 8680d59..de67329 100644 --- a/i18n/default_en.json +++ b/i18n/default_en.json @@ -521,6 +521,7 @@ "Assigned departments": "Assigned departments", "Select departments": "Select departments", "Departments for tenant": "Departments for tenant", + "No departments": "No departments", "No departments available for this tenant": "No departments available for this tenant", "Assign tenants first to select departments": "Assign tenants first to select departments", "Department options refresh after save": "Department options refresh after save", diff --git a/pages/admin/departments/index(default).phtml b/pages/admin/departments/index(default).phtml index 1459ca8..deb2d8f 100644 --- a/pages/admin/departments/index(default).phtml +++ b/pages/admin/departments/index(default).phtml @@ -25,7 +25,7 @@ $listTitle = t('Departments'); ob_start(); ?> - + diff --git a/pages/admin/permissions/index(default).phtml b/pages/admin/permissions/index(default).phtml index 34f6690..d6d299b 100644 --- a/pages/admin/permissions/index(default).phtml +++ b/pages/admin/permissions/index(default).phtml @@ -23,7 +23,7 @@ $listTitle = t('Permissions'); ob_start(); ?> - + diff --git a/pages/admin/roles/index(default).phtml b/pages/admin/roles/index(default).phtml index ff0ab41..10d0deb 100644 --- a/pages/admin/roles/index(default).phtml +++ b/pages/admin/roles/index(default).phtml @@ -23,7 +23,7 @@ $listTitle = t('Roles'); ob_start(); ?> - + diff --git a/pages/admin/tenants/index(default).phtml b/pages/admin/tenants/index(default).phtml index a57bced..bc7a2ef 100644 --- a/pages/admin/tenants/index(default).phtml +++ b/pages/admin/tenants/index(default).phtml @@ -23,7 +23,7 @@ $listTitle = t('Tenants'); ob_start(); ?> - + diff --git a/pages/admin/users/index(default).phtml b/pages/admin/users/index(default).phtml index 7fc6235..d61315f 100644 --- a/pages/admin/users/index(default).phtml +++ b/pages/admin/users/index(default).phtml @@ -65,7 +65,7 @@ ob_start(); - + diff --git a/templates/partials/app-details-aside-actions.phtml b/templates/partials/app-details-aside-actions.phtml index 5a8cd87..4568400 100644 --- a/templates/partials/app-details-aside-actions.phtml +++ b/templates/partials/app-details-aside-actions.phtml @@ -12,6 +12,38 @@ $asideActions = is_array($asideActions ?? null) ? $asideActions : []; if (!$asideActions) { return; } +$appendCssClass = static function (string $baseClass, string $appendClass): string { + $combined = trim($baseClass . ' ' . $appendClass); + return preg_replace('/\s+/', ' ', $combined) ?? $combined; +}; +$resolveToneClass = static function (string $tone, string $detailActionKind, string $name, string $value): string { + $normalizedTone = strtolower(trim($tone)); + if ($normalizedTone === 'success') { + return 'app-action-success'; + } + if ($normalizedTone === 'danger') { + return 'app-action-danger'; + } + if ($normalizedTone === 'neutral') { + return ''; + } + + $normalizedActionKind = strtolower(trim($detailActionKind)); + if (in_array($normalizedActionKind, ['delete', 'danger', 'purge', 'revoke'], true)) { + return 'app-action-danger'; + } + + $normalizedName = strtolower(trim($name)); + $normalizedValue = strtolower(trim($value)); + if ( + $normalizedName === 'action' + && in_array($normalizedValue, ['create', 'create_close', 'save_close'], true) + ) { + return 'app-action-success'; + } + + return ''; +}; ?>
@@ -42,7 +74,14 @@ if (!$asideActions) { $itemTarget = (string) ($item['target'] ?? ''); $itemDetailActionKind = strtolower(trim((string) ($item['detailActionKind'] ?? ''))); $itemDetailSubmitLock = strtolower(trim((string) ($item['detailSubmitLock'] ?? ''))); + $itemTone = (string) ($item['tone'] ?? ''); + $itemName = (string) ($item['name'] ?? ''); + $itemValue = (string) ($item['value'] ?? ''); $itemFields = is_array($item['fields'] ?? null) ? $item['fields'] : []; + $itemButtonClass = $appendCssClass( + $itemButtonClass, + $resolveToneClass($itemTone, $itemDetailActionKind, $itemName, $itemValue) + ); ?>