forked from fa/breadcrumb-the-shire
feat: show "View X" instead of "Edit X" for read-only users
Titlebar, breadcrumbs, and page title now reflect the user's actual permission level across all 6 edit pages (roles, users, departments, tenants, permissions, scheduled jobs). Added i18n keys for de and en. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -145,6 +145,7 @@
|
||||
"Permission key": "Berechtigungs-Schlüssel",
|
||||
"Create permission": "Berechtigung erstellen",
|
||||
"Edit permission": "Berechtigung bearbeiten",
|
||||
"View permission": "Berechtigung anzeigen",
|
||||
"Delete this permission?": "Diese Berechtigung löschen?",
|
||||
"Permission created": "Berechtigung erstellt",
|
||||
"Permission updated": "Berechtigung aktualisiert",
|
||||
@@ -232,6 +233,7 @@
|
||||
"Create user": "Benutzer anlegen",
|
||||
"Add a new user account": "Neues Benutzerkonto anlegen",
|
||||
"Edit user": "Benutzer bearbeiten",
|
||||
"View user": "Benutzer anzeigen",
|
||||
"Update account details": "Kontodaten aktualisieren",
|
||||
"Create": "Erstellen",
|
||||
"Create & close": "Erstellen & schließen",
|
||||
@@ -482,6 +484,7 @@
|
||||
"Tenants": "Mandanten",
|
||||
"Create tenant": "Mandant anlegen",
|
||||
"Edit tenant": "Mandant bearbeiten",
|
||||
"View tenant": "Mandant anzeigen",
|
||||
"Tenant created": "Mandant erstellt",
|
||||
"Tenant updated": "Mandant aktualisiert",
|
||||
"Tenant deleted": "Mandant gelöscht",
|
||||
@@ -508,6 +511,7 @@
|
||||
"Departments": "Abteilungen",
|
||||
"Create department": "Abteilung anlegen",
|
||||
"Edit department": "Abteilung bearbeiten",
|
||||
"View department": "Abteilung anzeigen",
|
||||
"Department created": "Abteilung erstellt",
|
||||
"Department updated": "Abteilung aktualisiert",
|
||||
"Department deleted": "Abteilung gelöscht",
|
||||
@@ -532,6 +536,7 @@
|
||||
"Assignable roles": "Zuweisbare Rollen",
|
||||
"Create role": "Rolle anlegen",
|
||||
"Edit role": "Rolle bearbeiten",
|
||||
"View role": "Rolle anzeigen",
|
||||
"Role created": "Rolle erstellt",
|
||||
"Role updated": "Rolle aktualisiert",
|
||||
"Role deleted": "Rolle gelöscht",
|
||||
@@ -1093,6 +1098,7 @@
|
||||
"Scheduled job could not be saved": "Geplante Aufgabe konnte nicht gespeichert werden",
|
||||
"Scheduled job saved": "Geplante Aufgabe gespeichert",
|
||||
"Edit scheduled job": "Geplante Aufgabe bearbeiten",
|
||||
"View scheduled job": "Geplante Aufgabe anzeigen",
|
||||
"Job": "Aufgabe",
|
||||
"Job key": "Aufgaben-Key",
|
||||
"Run history": "Laufhistorie",
|
||||
|
||||
@@ -145,6 +145,7 @@
|
||||
"Permission key": "Permission key",
|
||||
"Create permission": "Create permission",
|
||||
"Edit permission": "Edit permission",
|
||||
"View permission": "View permission",
|
||||
"Delete this permission?": "Delete this permission?",
|
||||
"Permission created": "Permission created",
|
||||
"Permission updated": "Permission updated",
|
||||
@@ -232,6 +233,7 @@
|
||||
"Create user": "Create user",
|
||||
"Add a new user account": "Add a new user account",
|
||||
"Edit user": "Edit user",
|
||||
"View user": "View user",
|
||||
"Update account details": "Update account details",
|
||||
"Create": "Create",
|
||||
"Create & close": "Create & close",
|
||||
@@ -482,6 +484,7 @@
|
||||
"Tenants": "Tenants",
|
||||
"Create tenant": "Create tenant",
|
||||
"Edit tenant": "Edit tenant",
|
||||
"View tenant": "View tenant",
|
||||
"Tenant created": "Tenant created",
|
||||
"Tenant updated": "Tenant updated",
|
||||
"Tenant deleted": "Tenant deleted",
|
||||
@@ -508,6 +511,7 @@
|
||||
"Departments": "Departments",
|
||||
"Create department": "Create department",
|
||||
"Edit department": "Edit department",
|
||||
"View department": "View department",
|
||||
"Department created": "Department created",
|
||||
"Department updated": "Department updated",
|
||||
"Department deleted": "Department deleted",
|
||||
@@ -532,6 +536,7 @@
|
||||
"Assignable roles": "Assignable roles",
|
||||
"Create role": "Create role",
|
||||
"Edit role": "Edit role",
|
||||
"View role": "View role",
|
||||
"Role created": "Role created",
|
||||
"Role updated": "Role updated",
|
||||
"Role deleted": "Role deleted",
|
||||
@@ -1093,6 +1098,7 @@
|
||||
"Scheduled job could not be saved": "Scheduled job could not be saved",
|
||||
"Scheduled job saved": "Scheduled job saved",
|
||||
"Edit scheduled job": "Edit scheduled job",
|
||||
"View scheduled job": "View scheduled job",
|
||||
"Job": "Job",
|
||||
"Job key": "Job key",
|
||||
"Run history": "Run history",
|
||||
|
||||
@@ -151,4 +151,4 @@ if ($request->isMethod('POST')) {
|
||||
|
||||
$validationSummaryErrors = $errorBag->toArray();
|
||||
$errors = $errorBag->toFlatList();
|
||||
Buffer::set('title', t('Edit department'));
|
||||
Buffer::set('title', $canUpdateDepartment ? t('Edit department') : t('View department'));
|
||||
|
||||
@@ -13,6 +13,7 @@ $pageAuth = is_array($viewAuth['page'] ?? null) ? $viewAuth['page'] : [];
|
||||
$canUpdateDepartment = (bool) ($pageAuth['can_update_department'] ?? false);
|
||||
$canDeleteDepartment = (bool) ($pageAuth['can_delete_department'] ?? false);
|
||||
$isReadOnly = !$canUpdateDepartment;
|
||||
$titleText = $isReadOnly ? t('View department') : t('Edit department');
|
||||
|
||||
?>
|
||||
|
||||
@@ -23,11 +24,11 @@ $isReadOnly = !$canUpdateDepartment;
|
||||
$breadcrumbs = [
|
||||
['label' => t('Home'), 'path' => 'admin'],
|
||||
['label' => t('Departments'), 'path' => 'admin/departments'],
|
||||
['label' => t('Edit department')],
|
||||
['label' => $titleText],
|
||||
];
|
||||
require templatePath('partials/app-breadcrumb.phtml');
|
||||
$titlebar = [
|
||||
'title' => t('Edit department'),
|
||||
'title' => $titleText,
|
||||
'backHref' => 'admin/departments',
|
||||
'backTitle' => t('Cancel'),
|
||||
'actions' => $canUpdateDepartment ? [
|
||||
|
||||
@@ -112,4 +112,4 @@ if ($request->isMethod('POST')) {
|
||||
|
||||
$validationSummaryErrors = $errorBag->toArray();
|
||||
$errors = $errorBag->toFlatList();
|
||||
Buffer::set('title', t('Edit permission'));
|
||||
Buffer::set('title', $canUpdatePermission ? t('Edit permission') : t('View permission'));
|
||||
|
||||
@@ -12,6 +12,8 @@ use MintyPHP\Session;
|
||||
|
||||
$canUpdatePermission = (bool) ($canUpdatePermission ?? false);
|
||||
$canDeletePermission = (bool) ($canDeletePermission ?? false);
|
||||
$isReadOnly = !$canUpdatePermission;
|
||||
$titleText = $isReadOnly ? t('View permission') : t('Edit permission');
|
||||
|
||||
?>
|
||||
<div class="app-details-container">
|
||||
@@ -20,11 +22,11 @@ $canDeletePermission = (bool) ($canDeletePermission ?? false);
|
||||
$breadcrumbs = [
|
||||
['label' => t('Home'), 'path' => 'admin'],
|
||||
['label' => t('Permissions'), 'path' => 'admin/permissions'],
|
||||
['label' => t('Edit permission')],
|
||||
['label' => $titleText],
|
||||
];
|
||||
require templatePath('partials/app-breadcrumb.phtml');
|
||||
$titlebar = [
|
||||
'title' => t('Edit permission'),
|
||||
'title' => $titleText,
|
||||
'backHref' => 'admin/permissions',
|
||||
'backTitle' => t('Cancel'),
|
||||
'actions' => $canUpdatePermission ? [
|
||||
|
||||
@@ -128,4 +128,4 @@ if ($request->isMethod('POST')) {
|
||||
|
||||
$validationSummaryErrors = $errorBag->toArray();
|
||||
$errors = $errorBag->toFlatList();
|
||||
Buffer::set('title', t('Edit role'));
|
||||
Buffer::set('title', $canUpdateRole ? t('Edit role') : t('View role'));
|
||||
|
||||
@@ -14,6 +14,7 @@ $values = $form ?? $role ?? [];
|
||||
$canUpdateRole = (bool) ($canUpdateRole ?? false);
|
||||
$canDeleteRole = (bool) ($canDeleteRole ?? false);
|
||||
$isReadOnly = !$canUpdateRole;
|
||||
$titleText = $isReadOnly ? t('View role') : t('Edit role');
|
||||
|
||||
?>
|
||||
|
||||
@@ -23,11 +24,11 @@ $isReadOnly = !$canUpdateRole;
|
||||
$breadcrumbs = [
|
||||
['label' => t('Home'), 'path' => 'admin'],
|
||||
['label' => t('Roles'), 'path' => 'admin/roles'],
|
||||
['label' => t('Edit role')],
|
||||
['label' => $titleText],
|
||||
];
|
||||
require templatePath('partials/app-breadcrumb.phtml');
|
||||
$titlebar = [
|
||||
'title' => t('Edit role'),
|
||||
'title' => $titleText,
|
||||
'backHref' => 'admin/roles',
|
||||
'backTitle' => t('Cancel'),
|
||||
'actions' => $canUpdateRole ? [
|
||||
|
||||
@@ -73,5 +73,5 @@ $scheduleSummary = $scheduledJobService->scheduleSummary($job ?? []);
|
||||
$validationSummaryErrors = $errorBag->toArray();
|
||||
$errors = $errorBag->toFlatList();
|
||||
|
||||
Buffer::set('title', t('Edit scheduled job'));
|
||||
Buffer::set('title', $canManage ? t('Edit scheduled job') : t('View scheduled job'));
|
||||
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
|
||||
@@ -38,15 +38,16 @@ if ($canRunNow) {
|
||||
<div class="app-details-container">
|
||||
<section>
|
||||
<?php
|
||||
$titleText = $canManage ? t('Edit scheduled job') : t('View scheduled job');
|
||||
$breadcrumbs = [
|
||||
['label' => t('Home'), 'path' => 'admin'],
|
||||
['label' => t('Scheduled jobs'), 'path' => 'admin/scheduled-jobs'],
|
||||
['label' => t('Edit')],
|
||||
['label' => $titleText],
|
||||
];
|
||||
require templatePath('partials/app-breadcrumb.phtml');
|
||||
|
||||
$titlebar = [
|
||||
'title' => t('Edit scheduled job'),
|
||||
'title' => $titleText,
|
||||
'backHref' => 'admin/scheduled-jobs',
|
||||
'backTitle' => t('Back'),
|
||||
'actions' => $canManage ? [
|
||||
|
||||
@@ -158,4 +158,4 @@ if ($canManageSso && empty($ssoUiState)) {
|
||||
|
||||
$validationSummaryErrors = $errorBag->toArray();
|
||||
$errors = $errorBag->toFlatList();
|
||||
Buffer::set('title', t('Edit tenant'));
|
||||
Buffer::set('title', $canUpdateTenant ? t('Edit tenant') : t('View tenant'));
|
||||
|
||||
@@ -15,6 +15,7 @@ $canDeleteTenant = (bool) ($pageAuth['can_delete_tenant'] ?? false);
|
||||
$canManageCustomFields = (bool) ($pageAuth['can_manage_custom_fields'] ?? false);
|
||||
$canManageSso = (bool) ($pageAuth['can_manage_sso'] ?? false);
|
||||
$isReadOnly = !$canUpdateTenant;
|
||||
$titleText = $isReadOnly ? t('View tenant') : t('Edit tenant');
|
||||
$avatarUuid = (string) ($values['uuid'] ?? '');
|
||||
$tenantAvatarService = app(\MintyPHP\Service\Tenant\TenantAvatarService::class);
|
||||
$tenantFaviconService = app(\MintyPHP\Service\Tenant\TenantFaviconService::class);
|
||||
@@ -29,11 +30,11 @@ $hasFavicon = $avatarUuid !== '' && $tenantFaviconService->hasFavicon($avatarUui
|
||||
$breadcrumbs = [
|
||||
['label' => t('Home'), 'path' => 'admin'],
|
||||
['label' => t('Tenants'), 'path' => 'admin/tenants'],
|
||||
['label' => t('Edit tenant')],
|
||||
['label' => $titleText],
|
||||
];
|
||||
require templatePath('partials/app-breadcrumb.phtml');
|
||||
$titlebar = [
|
||||
'title' => t('Edit tenant'),
|
||||
'title' => $titleText,
|
||||
'backHref' => 'admin/tenants',
|
||||
'backTitle' => t('Cancel'),
|
||||
'actions' => $canUpdateTenant ? [
|
||||
|
||||
@@ -300,4 +300,4 @@ if ($request->isMethod('POST')) {
|
||||
|
||||
$validationSummaryErrors = $errorBag->toArray();
|
||||
$errors = $errorBag->toFlatList();
|
||||
Buffer::set('title', $isOwnAccount ? t('My account') : t('Edit user'));
|
||||
Buffer::set('title', $isOwnAccount ? t('My account') : ($canEditUser ? t('Edit user') : t('View user')));
|
||||
|
||||
@@ -14,7 +14,8 @@ $userAvatarService = app(\MintyPHP\Service\User\UserAvatarService::class);
|
||||
$hasAvatar = $avatarUuid !== '' && $userAvatarService->hasAvatar($avatarUuid);
|
||||
$currentUserId = (int) ($_SESSION['user']['id'] ?? 0);
|
||||
$isOwnAccount = $currentUserId > 0 && $currentUserId === (int) ($values['id'] ?? 0);
|
||||
$titleText = $isOwnAccount ? t('My account') : t('Edit user');
|
||||
$canEditUser = !empty($canEditUser);
|
||||
$titleText = $isOwnAccount ? t('My account') : ($canEditUser ? t('Edit user') : t('View user'));
|
||||
$canViewUsers = !empty($canViewUsers);
|
||||
$canViewUserMeta = !empty($canViewUserMeta);
|
||||
$canViewUserAudit = !empty($canViewUserAudit);
|
||||
|
||||
Reference in New Issue
Block a user