diff --git a/modules/addressbook/pages/address-book/index().php b/modules/addressbook/pages/address-book/index().php
index a65eb42..08ec1bd 100644
--- a/modules/addressbook/pages/address-book/index().php
+++ b/modules/addressbook/pages/address-book/index().php
@@ -76,6 +76,10 @@ $csrfKey = Session::$csrfSessionKey;
$csrfToken = $session[$csrfKey] ?? '';
Buffer::set('title', t('Address book'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Address book')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
Buffer::set(
'grid_csrf',
diff --git a/modules/addressbook/pages/address-book/index(default).phtml b/modules/addressbook/pages/address-book/index(default).phtml
index 89ccbd9..916af0f 100644
--- a/modules/addressbook/pages/address-book/index(default).phtml
+++ b/modules/addressbook/pages/address-book/index(default).phtml
@@ -16,13 +16,6 @@ $filterChipMeta = is_array($filterChipMeta ?? null) ? $filterChipMeta : [];
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Address book')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
- t('Home'), 'path' => 'admin'],
+ ['label' => t('Address book'), 'path' => 'address-book'],
+ ['label' => $title],
+];
diff --git a/modules/api-docs/pages/api-docs/index().php b/modules/api-docs/pages/api-docs/index().php
index 578d086..275b1d9 100644
--- a/modules/api-docs/pages/api-docs/index().php
+++ b/modules/api-docs/pages/api-docs/index().php
@@ -8,4 +8,8 @@ Guard::requireLogin();
Guard::requireAbilityOrForbidden(ApiDocsAuthorizationPolicy::ABILITY_VIEW);
Buffer::set('title', t('API docs'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('API docs')],
+];
Buffer::set('style_groups', json_encode(['api-docs']));
diff --git a/modules/api-docs/pages/api-docs/index(default).phtml b/modules/api-docs/pages/api-docs/index(default).phtml
index 5a2447d..aabb453 100644
--- a/modules/api-docs/pages/api-docs/index(default).phtml
+++ b/modules/api-docs/pages/api-docs/index(default).phtml
@@ -1,10 +1,5 @@
t('Home'), 'path' => 'admin'],
- ['label' => t('API docs')],
-];
$specUrl = lurl('admin/api-docs/spec');
-require templatePath('partials/app-breadcrumb.phtml');
?>
diff --git a/modules/audit/pages/audit/api-audit/index().php b/modules/audit/pages/audit/api-audit/index().php
index e6ff29d..3663e32 100644
--- a/modules/audit/pages/audit/api-audit/index().php
+++ b/modules/audit/pages/audit/api-audit/index().php
@@ -17,6 +17,10 @@ $viewAuth['page'] = app(UiAccessService::class)->pageCapabilities(
);
Buffer::set('title', t('API audit logs'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('API audit logs')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$filterSchema = require __DIR__ . '/filter-schema.php';
diff --git a/modules/audit/pages/audit/api-audit/index(default).phtml b/modules/audit/pages/audit/api-audit/index(default).phtml
index cbf3333..4bfed9f 100644
--- a/modules/audit/pages/audit/api-audit/index(default).phtml
+++ b/modules/audit/pages/audit/api-audit/index(default).phtml
@@ -11,13 +11,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('API audit logs')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/modules/audit/pages/audit/api-audit/view($id).php b/modules/audit/pages/audit/api-audit/view($id).php
index 16da877..f7ee2c4 100644
--- a/modules/audit/pages/audit/api-audit/view($id).php
+++ b/modules/audit/pages/audit/api-audit/view($id).php
@@ -13,3 +13,8 @@ $auditLog = AuditPageHelper::findOrRedirect(
'View API audit entry',
$id ?? null
);
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('API audit logs'), 'path' => 'audit/api-audit'],
+ ['label' => t('View')],
+];
diff --git a/modules/audit/pages/audit/api-audit/view(default).phtml b/modules/audit/pages/audit/api-audit/view(default).phtml
index 304d4b6..dd268f1 100644
--- a/modules/audit/pages/audit/api-audit/view(default).phtml
+++ b/modules/audit/pages/audit/api-audit/view(default).phtml
@@ -51,13 +51,6 @@ $tokenTenantId = (int) ($auditLog['token_tenant_id'] ?? 0);
t('Home'), 'path' => 'admin'],
- ['label' => t('API audit logs'), 'path' => 'audit/api-audit'],
- ['label' => t('View')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
-
$titlebar = [
'title' => t('View API audit entry'),
'backHref' => 'audit/api-audit',
diff --git a/modules/audit/pages/audit/import-audit/index().php b/modules/audit/pages/audit/import-audit/index().php
index 9be8378..eacaea8 100644
--- a/modules/audit/pages/audit/import-audit/index().php
+++ b/modules/audit/pages/audit/import-audit/index().php
@@ -17,6 +17,10 @@ $viewAuth['page'] = app(UiAccessService::class)->pageCapabilities(
);
Buffer::set('title', t('Import audit logs'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Import audit logs')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$filterSchema = require __DIR__ . '/filter-schema.php';
diff --git a/modules/audit/pages/audit/import-audit/index(default).phtml b/modules/audit/pages/audit/import-audit/index(default).phtml
index 4325402..0281a1c 100644
--- a/modules/audit/pages/audit/import-audit/index(default).phtml
+++ b/modules/audit/pages/audit/import-audit/index(default).phtml
@@ -11,13 +11,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Import audit logs')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/modules/audit/pages/audit/import-audit/view($id).php b/modules/audit/pages/audit/import-audit/view($id).php
index c51cc4e..2a6864d 100644
--- a/modules/audit/pages/audit/import-audit/view($id).php
+++ b/modules/audit/pages/audit/import-audit/view($id).php
@@ -13,3 +13,8 @@ $auditRun = AuditPageHelper::findOrRedirect(
'View import audit entry',
$id ?? null
);
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Import audit logs'), 'path' => 'audit/import-audit'],
+ ['label' => t('View')],
+];
diff --git a/modules/audit/pages/audit/import-audit/view(default).phtml b/modules/audit/pages/audit/import-audit/view(default).phtml
index 076b376..50ba0c7 100644
--- a/modules/audit/pages/audit/import-audit/view(default).phtml
+++ b/modules/audit/pages/audit/import-audit/view(default).phtml
@@ -54,13 +54,6 @@ if ($tenantLabel === '') {
t('Home'), 'path' => 'admin'],
- ['label' => t('Import audit logs'), 'path' => 'audit/import-audit'],
- ['label' => t('View')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
-
$titlebar = [
'title' => t('View import audit entry'),
'backHref' => 'audit/import-audit',
diff --git a/modules/audit/pages/audit/system-audit/index().php b/modules/audit/pages/audit/system-audit/index().php
index f22f23c..12c0889 100644
--- a/modules/audit/pages/audit/system-audit/index().php
+++ b/modules/audit/pages/audit/system-audit/index().php
@@ -17,6 +17,10 @@ $viewAuth['page'] = app(UiAccessService::class)->pageCapabilities(
);
Buffer::set('title', t('System audit logs'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('System audit logs')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$filterSchema = require __DIR__ . '/filter-schema.php';
diff --git a/modules/audit/pages/audit/system-audit/index(default).phtml b/modules/audit/pages/audit/system-audit/index(default).phtml
index a288dc1..064feb1 100644
--- a/modules/audit/pages/audit/system-audit/index(default).phtml
+++ b/modules/audit/pages/audit/system-audit/index(default).phtml
@@ -10,13 +10,6 @@ $filterChipMeta = is_array($filterChipMeta ?? null) ? $filterChipMeta : [];
$clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchema : [];
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
-?>
- t('Home'), 'path' => 'admin'],
- ['label' => t('System audit logs')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
?>
t('Home'), 'path' => 'admin'],
+ ['label' => t('System audit logs'), 'path' => 'audit/system-audit'],
+ ['label' => t('View')],
+];
diff --git a/modules/audit/pages/audit/system-audit/view(default).phtml b/modules/audit/pages/audit/system-audit/view(default).phtml
index 43da6f8..55bee26 100644
--- a/modules/audit/pages/audit/system-audit/view(default).phtml
+++ b/modules/audit/pages/audit/system-audit/view(default).phtml
@@ -47,13 +47,6 @@ if ($tenantLabel === '') {
t('Home'), 'path' => 'admin'],
- ['label' => t('System audit logs'), 'path' => 'audit/system-audit'],
- ['label' => t('View')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
-
$titlebar = [
'title' => t('View system audit entry'),
'backHref' => 'audit/system-audit',
diff --git a/modules/audit/pages/audit/user-lifecycle-audit/index().php b/modules/audit/pages/audit/user-lifecycle-audit/index().php
index 30f29a8..765c099 100644
--- a/modules/audit/pages/audit/user-lifecycle-audit/index().php
+++ b/modules/audit/pages/audit/user-lifecycle-audit/index().php
@@ -20,6 +20,10 @@ $viewAuth['page'] = app(UiAccessService::class)->pageCapabilities(
);
Buffer::set('title', t('User lifecycle logs'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('User lifecycle logs')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$filterSchema = require __DIR__ . '/filter-schema.php';
diff --git a/modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml b/modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml
index aea2096..ca33265 100644
--- a/modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml
+++ b/modules/audit/pages/audit/user-lifecycle-audit/index(default).phtml
@@ -11,13 +11,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('User lifecycle logs')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/modules/audit/pages/audit/user-lifecycle-audit/view($id).php b/modules/audit/pages/audit/user-lifecycle-audit/view($id).php
index 2d26b01..9e522ce 100644
--- a/modules/audit/pages/audit/user-lifecycle-audit/view($id).php
+++ b/modules/audit/pages/audit/user-lifecycle-audit/view($id).php
@@ -18,6 +18,11 @@ $auditLog = AuditPageHelper::findOrRedirect(
'View user lifecycle audit entry',
$id ?? null
);
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('User lifecycle logs'), 'path' => 'audit/user-lifecycle-audit'],
+ ['label' => t('View')],
+];
$auditService = app(UserLifecycleAuditService::class);
$snapshot = null;
diff --git a/modules/audit/pages/audit/user-lifecycle-audit/view(default).phtml b/modules/audit/pages/audit/user-lifecycle-audit/view(default).phtml
index a3eeaec..d65e6b4 100644
--- a/modules/audit/pages/audit/user-lifecycle-audit/view(default).phtml
+++ b/modules/audit/pages/audit/user-lifecycle-audit/view(default).phtml
@@ -29,13 +29,6 @@ $isRestorable = $canRestore
t('Home'), 'path' => 'admin'],
- ['label' => t('User lifecycle logs'), 'path' => 'audit/user-lifecycle-audit'],
- ['label' => t('View')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
-
$titlebar = [
'title' => t('View user lifecycle audit entry'),
'backHref' => 'audit/user-lifecycle-audit',
diff --git a/modules/helpdesk/pages/helpdesk/debitor($id).php b/modules/helpdesk/pages/helpdesk/debitor($id).php
index 622613b..b69da27 100644
--- a/modules/helpdesk/pages/helpdesk/debitor($id).php
+++ b/modules/helpdesk/pages/helpdesk/debitor($id).php
@@ -126,3 +126,8 @@ $contactsFilterChipMeta = [
Buffer::set('title', $customerName . ' — ' . t('Helpdesk'));
Buffer::set('style_groups', json_encode(['helpdesk']));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Helpdesk'), 'path' => 'helpdesk'],
+ ['label' => $customerName],
+];
diff --git a/modules/helpdesk/pages/helpdesk/debitor(default).phtml b/modules/helpdesk/pages/helpdesk/debitor(default).phtml
index b10f432..6951994 100644
--- a/modules/helpdesk/pages/helpdesk/debitor(default).phtml
+++ b/modules/helpdesk/pages/helpdesk/debitor(default).phtml
@@ -37,15 +37,6 @@ $searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
data-controlling-dashboard-url=""
>
- t('Home'), 'path' => 'admin'],
- ['label' => t('Helpdesk'), 'path' => 'helpdesk'],
- ['label' => $customerName],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
- ?>
-
isConfigured();
Buffer::set('title', t('Customers'));
Buffer::set('style_groups', json_encode(['helpdesk']));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Helpdesk')],
+];
diff --git a/modules/helpdesk/pages/helpdesk/index(default).phtml b/modules/helpdesk/pages/helpdesk/index(default).phtml
index 23e14f9..e7e6cb0 100644
--- a/modules/helpdesk/pages/helpdesk/index(default).phtml
+++ b/modules/helpdesk/pages/helpdesk/index(default).phtml
@@ -9,13 +9,6 @@ $searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
$filterChipMeta = is_array($filterChipMeta ?? null) ? $filterChipMeta : [];
$isConfigured = $isConfigured ?? false;
?>
- t('Home'), 'path' => 'admin'],
- ['label' => t('Helpdesk')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
diff --git a/modules/helpdesk/pages/helpdesk/settings/index().php b/modules/helpdesk/pages/helpdesk/settings/index().php
index 2e0f624..92a6637 100644
--- a/modules/helpdesk/pages/helpdesk/settings/index().php
+++ b/modules/helpdesk/pages/helpdesk/settings/index().php
@@ -163,3 +163,8 @@ $controllingConfigSource = (string) ($controllingConfigEnvelope['source'] ?? 'de
Buffer::set('title', t('Helpdesk settings'));
Buffer::set('style_groups', json_encode(['helpdesk']));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Helpdesk'), 'path' => 'helpdesk'],
+ ['label' => t('Settings')],
+];
diff --git a/modules/helpdesk/pages/helpdesk/settings/index(default).phtml b/modules/helpdesk/pages/helpdesk/settings/index(default).phtml
index 996234f..7fffc11 100644
--- a/modules/helpdesk/pages/helpdesk/settings/index(default).phtml
+++ b/modules/helpdesk/pages/helpdesk/settings/index(default).phtml
@@ -52,13 +52,6 @@ $isOAuth2 = $authMode === HelpdeskSettingsGateway::AUTH_MODE_OAUTH2;
t('Home'), 'path' => 'admin'],
- ['label' => t('Helpdesk'), 'path' => 'helpdesk'],
- ['label' => t('Settings')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
-
$titlebar = [
'title' => t('Helpdesk settings'),
'backHref' => lurl('helpdesk'),
diff --git a/modules/helpdesk/pages/helpdesk/ticket($id).php b/modules/helpdesk/pages/helpdesk/ticket($id).php
index b0ac040..b1e0020 100644
--- a/modules/helpdesk/pages/helpdesk/ticket($id).php
+++ b/modules/helpdesk/pages/helpdesk/ticket($id).php
@@ -44,3 +44,11 @@ $ticketCommunicationUrl = lurl('helpdesk/ticket-communication-data');
Buffer::set('title', $ticketDescription . ' — ' . t('Helpdesk'));
Buffer::set('style_groups', json_encode(['helpdesk']));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Helpdesk'), 'path' => 'helpdesk'],
+];
+if ($ticketCustomerNo !== '') {
+ $breadcrumbs[] = ['label' => (string) ($ticket['Company_Contact_Name'] ?? $ticketCustomerNo), 'path' => 'helpdesk/debitor/' . rawurlencode($ticketCustomerNo)];
+}
+$breadcrumbs[] = ['label' => t('Ticket') . ' ' . $ticketNo];
diff --git a/modules/helpdesk/pages/helpdesk/ticket(default).phtml b/modules/helpdesk/pages/helpdesk/ticket(default).phtml
index abc2f07..2bc6d89 100644
--- a/modules/helpdesk/pages/helpdesk/ticket(default).phtml
+++ b/modules/helpdesk/pages/helpdesk/ticket(default).phtml
@@ -26,18 +26,6 @@ $backUrl = $ticketCustomerNo !== '' ? lurl('helpdesk/debitor/' . rawurlencode($t
data-ticket-communication-url=""
>
- t('Home'), 'path' => 'admin'],
- ['label' => t('Helpdesk'), 'path' => 'helpdesk'],
- ];
- if ($ticketCustomerNo !== '') {
- $breadcrumbs[] = ['label' => (string) ($ticket['Company_Contact_Name'] ?? $ticketCustomerNo), 'path' => 'helpdesk/debitor/' . rawurlencode($ticketCustomerNo)];
- }
- $breadcrumbs[] = ['label' => t('Ticket') . ' ' . $ticketNo];
- require templatePath('partials/app-breadcrumb.phtml');
- ?>
-
t('Ticket') . ' ' . $ticketNo,
diff --git a/pages/admin/departments/create().php b/pages/admin/departments/create().php
index 403b3cf..7918337 100644
--- a/pages/admin/departments/create().php
+++ b/pages/admin/departments/create().php
@@ -100,3 +100,8 @@ if ($request->isMethod('POST')) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
Buffer::set('title', t('Create department'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Departments'), 'path' => 'admin/departments'],
+ ['label' => t('Create department')],
+];
diff --git a/pages/admin/departments/create(default).phtml b/pages/admin/departments/create(default).phtml
index 4bbfadf..7a0d165 100644
--- a/pages/admin/departments/create(default).phtml
+++ b/pages/admin/departments/create(default).phtml
@@ -10,12 +10,6 @@
t('Home'), 'path' => 'admin'],
- ['label' => t('Departments'), 'path' => 'admin/departments'],
- ['label' => t('Create department')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('Create department'),
'backHref' => 'admin/departments',
diff --git a/pages/admin/departments/edit($id).php b/pages/admin/departments/edit($id).php
index 298d330..c85157d 100644
--- a/pages/admin/departments/edit($id).php
+++ b/pages/admin/departments/edit($id).php
@@ -151,4 +151,10 @@ if ($request->isMethod('POST')) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
-Buffer::set('title', $canUpdateDepartment ? t('Edit department') : t('View department'));
+$titleText = $canUpdateDepartment ? t('Edit department') : t('View department');
+Buffer::set('title', $titleText);
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Departments'), 'path' => 'admin/departments'],
+ ['label' => $titleText],
+];
diff --git a/pages/admin/departments/edit(default).phtml b/pages/admin/departments/edit(default).phtml
index 52c11b5..5dede92 100644
--- a/pages/admin/departments/edit(default).phtml
+++ b/pages/admin/departments/edit(default).phtml
@@ -21,12 +21,6 @@ $titleText = $isReadOnly ? t('View department') : t('Edit department');
t('Home'), 'path' => 'admin'],
- ['label' => t('Departments'), 'path' => 'admin/departments'],
- ['label' => $titleText],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => $titleText,
'backHref' => 'admin/departments',
diff --git a/pages/admin/departments/index().php b/pages/admin/departments/index().php
index 5847a12..b05f8f7 100644
--- a/pages/admin/departments/index().php
+++ b/pages/admin/departments/index().php
@@ -42,6 +42,10 @@ usort($tenants, static function ($a, $b) {
});
Buffer::set('title', t('Departments'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Departments')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$csrfKey = Session::$csrfSessionKey;
$csrfToken = $session[$csrfKey] ?? '';
diff --git a/pages/admin/departments/index(default).phtml b/pages/admin/departments/index(default).phtml
index deb2d8f..cde2294 100644
--- a/pages/admin/departments/index(default).phtml
+++ b/pages/admin/departments/index(default).phtml
@@ -14,13 +14,6 @@ $activeTenant = (string) ($activeTenant ?? ($toolbarFilterState['tenant'] ?? '')
$showTenantTabs = isset($tenants) && is_array($tenants) && count($tenants) > 1;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Departments')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/pages/admin/docs/index($slug).php b/pages/admin/docs/index($slug).php
index d586485..a22eaa2 100644
--- a/pages/admin/docs/index($slug).php
+++ b/pages/admin/docs/index($slug).php
@@ -54,5 +54,11 @@ $currentSlug = $slug;
$currentTitle = (string) $allDocs[$slug];
Buffer::set('title', $currentTitle . ' - ' . t('Documentation'));
+
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Documentation'), 'path' => 'admin/docs/' . $defaultSlug],
+ ['label' => $currentTitle],
+];
Buffer::set('style_groups', json_encode(['docs']));
Buffer::set('docs_rendered_html', $renderedHtml);
diff --git a/pages/admin/docs/index(default).phtml b/pages/admin/docs/index(default).phtml
index a1df697..a1acc09 100644
--- a/pages/admin/docs/index(default).phtml
+++ b/pages/admin/docs/index(default).phtml
@@ -44,14 +44,6 @@
- t('Home'), 'path' => 'admin'],
- ['label' => t('Documentation'), 'path' => 'admin/docs/' . $defaultSlug],
- ['label' => $currentTitle],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
- ?>
diff --git a/pages/admin/imports/index().php b/pages/admin/imports/index().php
index 9ae015d..c6c9d96 100644
--- a/pages/admin/imports/index().php
+++ b/pages/admin/imports/index().php
@@ -136,3 +136,8 @@ foreach ($profileOptions as $option) {
}
Buffer::set('title', t('Imports'));
+
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Imports')],
+];
diff --git a/pages/admin/imports/index(default).phtml b/pages/admin/imports/index(default).phtml
index c278ff6..fae6e16 100644
--- a/pages/admin/imports/index(default).phtml
+++ b/pages/admin/imports/index(default).phtml
@@ -1,10 +1,5 @@
t('Home'), 'path' => 'admin'],
- ['label' => t('Imports')],
-];
-
$hasAllowedProfile = !empty($allowedProfileOptions);
$renderErrorTable = static function (array $rows): void {
@@ -43,7 +38,6 @@ $renderErrorTable = static function (array $rows): void {
-
diff --git a/pages/admin/index().php b/pages/admin/index().php
index 565160c..05d0c04 100644
--- a/pages/admin/index().php
+++ b/pages/admin/index().php
@@ -11,3 +11,8 @@ $user = $session['user'] ?? null;
$first_name = $user['first_name'] ?? '';
Buffer::set('title', t('Admin'));
+
+$breadcrumbs = [
+ ['label' => t('Login'), 'path' => 'logout'],
+ ['label' => t('Home')],
+];
diff --git a/pages/admin/index(default).phtml b/pages/admin/index(default).phtml
index 4dfa118..87b60e6 100644
--- a/pages/admin/index(default).phtml
+++ b/pages/admin/index(default).phtml
@@ -6,13 +6,6 @@
*/
-?>
- t('Login'), 'path' => 'logout'],
- ['label' => t('Home')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
?>
diff --git a/pages/admin/mail-log/index().php b/pages/admin/mail-log/index().php
index b35a369..c4b70c6 100644
--- a/pages/admin/mail-log/index().php
+++ b/pages/admin/mail-log/index().php
@@ -41,6 +41,10 @@ $clientFilterSchema = $listFilterContext['clientFilterSchema'];
$searchConfig = $listFilterContext['searchConfig'];
Buffer::set('title', t('Mail logs'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Mail logs')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$csrfKey = Session::$csrfSessionKey;
$csrfToken = $session[$csrfKey] ?? '';
diff --git a/pages/admin/mail-log/index(default).phtml b/pages/admin/mail-log/index(default).phtml
index 5f1c7fc..b691b94 100644
--- a/pages/admin/mail-log/index(default).phtml
+++ b/pages/admin/mail-log/index(default).phtml
@@ -10,13 +10,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Mail logs')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/pages/admin/mail-log/view($id).php b/pages/admin/mail-log/view($id).php
index 123421b..95bd805 100644
--- a/pages/admin/mail-log/view($id).php
+++ b/pages/admin/mail-log/view($id).php
@@ -17,3 +17,8 @@ if (!$mailLog) {
}
Buffer::set('title', t('View mail log'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Mail logs'), 'path' => 'admin/mail-log'],
+ ['label' => t('View')],
+];
diff --git a/pages/admin/mail-log/view(default).phtml b/pages/admin/mail-log/view(default).phtml
index 751a41a..b9694b4 100644
--- a/pages/admin/mail-log/view(default).phtml
+++ b/pages/admin/mail-log/view(default).phtml
@@ -13,14 +13,6 @@ $statusBadge = $status->badgeVariant();
- t('Home'), 'path' => 'admin'],
- ['label' => t('Mail logs'), 'path' => 'admin/mail-log'],
- ['label' => t('View')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
- ?>
diff --git a/pages/admin/permissions/create().php b/pages/admin/permissions/create().php
index 7c08260..5bd68ef 100644
--- a/pages/admin/permissions/create().php
+++ b/pages/admin/permissions/create().php
@@ -66,3 +66,8 @@ if ($request->isMethod('POST')) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
Buffer::set('title', t('Create permission'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Permissions'), 'path' => 'admin/permissions'],
+ ['label' => t('Create permission')],
+];
diff --git a/pages/admin/permissions/create(default).phtml b/pages/admin/permissions/create(default).phtml
index 65fdb02..d95003a 100644
--- a/pages/admin/permissions/create(default).phtml
+++ b/pages/admin/permissions/create(default).phtml
@@ -9,12 +9,6 @@
t('Home'), 'path' => 'admin'],
- ['label' => t('Permissions'), 'path' => 'admin/permissions'],
- ['label' => t('Create permission')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('Create permission'),
'backHref' => 'admin/permissions',
diff --git a/pages/admin/permissions/edit($id).php b/pages/admin/permissions/edit($id).php
index a2787ea..39d4e65 100644
--- a/pages/admin/permissions/edit($id).php
+++ b/pages/admin/permissions/edit($id).php
@@ -112,4 +112,10 @@ if ($request->isMethod('POST')) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
-Buffer::set('title', $canUpdatePermission ? t('Edit permission') : t('View permission'));
+$titleText = $canUpdatePermission ? t('Edit permission') : t('View permission');
+Buffer::set('title', $titleText);
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Permissions'), 'path' => 'admin/permissions'],
+ ['label' => $titleText],
+];
diff --git a/pages/admin/permissions/edit(default).phtml b/pages/admin/permissions/edit(default).phtml
index d393756..e3f9490 100644
--- a/pages/admin/permissions/edit(default).phtml
+++ b/pages/admin/permissions/edit(default).phtml
@@ -13,18 +13,12 @@ use MintyPHP\Session;
$canUpdatePermission = (bool) ($canUpdatePermission ?? false);
$canDeletePermission = (bool) ($canDeletePermission ?? false);
$isReadOnly = !$canUpdatePermission;
-$titleText = $isReadOnly ? t('View permission') : t('Edit permission');
+$titleText = $titleText ?? ($isReadOnly ? t('View permission') : t('Edit permission'));
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Permissions'), 'path' => 'admin/permissions'],
- ['label' => $titleText],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => $titleText,
'backHref' => 'admin/permissions',
diff --git a/pages/admin/permissions/index().php b/pages/admin/permissions/index().php
index a45efef..8b9885e 100644
--- a/pages/admin/permissions/index().php
+++ b/pages/admin/permissions/index().php
@@ -49,6 +49,10 @@ $clientFilterSchema = $listFilterContext['clientFilterSchema'];
$searchConfig = $listFilterContext['searchConfig'];
Buffer::set('title', t('Permissions'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Permissions')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$csrfKey = Session::$csrfSessionKey;
$csrfToken = $session[$csrfKey] ?? '';
diff --git a/pages/admin/permissions/index(default).phtml b/pages/admin/permissions/index(default).phtml
index d6d299b..c6373e2 100644
--- a/pages/admin/permissions/index(default).phtml
+++ b/pages/admin/permissions/index(default).phtml
@@ -12,13 +12,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Permissions')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/pages/admin/roles/create().php b/pages/admin/roles/create().php
index 0d2f2a2..0f3e080 100644
--- a/pages/admin/roles/create().php
+++ b/pages/admin/roles/create().php
@@ -116,3 +116,8 @@ if ($request->isMethod('POST')) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
Buffer::set('title', t('Create role'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Roles'), 'path' => 'admin/roles'],
+ ['label' => t('Create role')],
+];
diff --git a/pages/admin/roles/create(default).phtml b/pages/admin/roles/create(default).phtml
index f9c9a8a..651f31a 100644
--- a/pages/admin/roles/create(default).phtml
+++ b/pages/admin/roles/create(default).phtml
@@ -9,12 +9,6 @@
t('Home'), 'path' => 'admin'],
- ['label' => t('Roles'), 'path' => 'admin/roles'],
- ['label' => t('Create role')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('Create role'),
'backHref' => 'admin/roles',
diff --git a/pages/admin/roles/edit($id).php b/pages/admin/roles/edit($id).php
index 08f8fba..e0ac029 100644
--- a/pages/admin/roles/edit($id).php
+++ b/pages/admin/roles/edit($id).php
@@ -128,4 +128,10 @@ if ($request->isMethod('POST')) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
-Buffer::set('title', $canUpdateRole ? t('Edit role') : t('View role'));
+$titleText = $canUpdateRole ? t('Edit role') : t('View role');
+Buffer::set('title', $titleText);
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Roles'), 'path' => 'admin/roles'],
+ ['label' => $titleText],
+];
diff --git a/pages/admin/roles/edit(default).phtml b/pages/admin/roles/edit(default).phtml
index 725c8ac..7038bcc 100644
--- a/pages/admin/roles/edit(default).phtml
+++ b/pages/admin/roles/edit(default).phtml
@@ -21,12 +21,6 @@ $titleText = $isReadOnly ? t('View role') : t('Edit role');
t('Home'), 'path' => 'admin'],
- ['label' => t('Roles'), 'path' => 'admin/roles'],
- ['label' => $titleText],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => $titleText,
'backHref' => 'admin/roles',
diff --git a/pages/admin/roles/index().php b/pages/admin/roles/index().php
index a9d4c22..1242989 100644
--- a/pages/admin/roles/index().php
+++ b/pages/admin/roles/index().php
@@ -49,6 +49,10 @@ $clientFilterSchema = $listFilterContext['clientFilterSchema'];
$searchConfig = $listFilterContext['searchConfig'];
Buffer::set('title', t('Roles'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Roles')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$csrfKey = Session::$csrfSessionKey;
$csrfToken = $session[$csrfKey] ?? '';
diff --git a/pages/admin/roles/index(default).phtml b/pages/admin/roles/index(default).phtml
index 10d0deb..f377913 100644
--- a/pages/admin/roles/index(default).phtml
+++ b/pages/admin/roles/index(default).phtml
@@ -12,13 +12,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Roles')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/pages/admin/scheduled-jobs/edit($id).php b/pages/admin/scheduled-jobs/edit($id).php
index 669a5cc..2f51f34 100644
--- a/pages/admin/scheduled-jobs/edit($id).php
+++ b/pages/admin/scheduled-jobs/edit($id).php
@@ -73,5 +73,11 @@ $scheduleSummary = $scheduledJobService->scheduleSummary($job ?? []);
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
-Buffer::set('title', $canManage ? t('Edit scheduled job') : t('View scheduled job'));
+$titleText = $canManage ? t('Edit scheduled job') : t('View scheduled job');
+Buffer::set('title', $titleText);
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Scheduled jobs'), 'path' => 'admin/scheduled-jobs'],
+ ['label' => $titleText],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
diff --git a/pages/admin/scheduled-jobs/edit(default).phtml b/pages/admin/scheduled-jobs/edit(default).phtml
index 88c3b51..453b7cb 100644
--- a/pages/admin/scheduled-jobs/edit(default).phtml
+++ b/pages/admin/scheduled-jobs/edit(default).phtml
@@ -39,13 +39,6 @@ if ($canRunNow) {
t('Home'), 'path' => 'admin'],
- ['label' => t('Scheduled jobs'), 'path' => 'admin/scheduled-jobs'],
- ['label' => $titleText],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
-
$titlebar = [
'title' => $titleText,
'backHref' => 'admin/scheduled-jobs',
diff --git a/pages/admin/scheduled-jobs/index().php b/pages/admin/scheduled-jobs/index().php
index 5c3f4c5..f9cd860 100644
--- a/pages/admin/scheduled-jobs/index().php
+++ b/pages/admin/scheduled-jobs/index().php
@@ -46,4 +46,8 @@ $clientFilterSchema = $listFilterContext['clientFilterSchema'];
$searchConfig = $listFilterContext['searchConfig'];
Buffer::set('title', t('Scheduled jobs'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Scheduled jobs')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
diff --git a/pages/admin/scheduled-jobs/index(default).phtml b/pages/admin/scheduled-jobs/index(default).phtml
index 115c873..0318f9e 100644
--- a/pages/admin/scheduled-jobs/index(default).phtml
+++ b/pages/admin/scheduled-jobs/index(default).phtml
@@ -10,13 +10,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Scheduled jobs')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/pages/admin/settings/index().php b/pages/admin/settings/index().php
index 5f911e6..0855507 100644
--- a/pages/admin/settings/index().php
+++ b/pages/admin/settings/index().php
@@ -81,3 +81,8 @@ if ($request->isMethod('POST')) {
}
Buffer::set('title', t('Settings'));
+
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Settings')],
+];
diff --git a/pages/admin/settings/index(default).phtml b/pages/admin/settings/index(default).phtml
index fc39b6f..51e85d4 100644
--- a/pages/admin/settings/index(default).phtml
+++ b/pages/admin/settings/index(default).phtml
@@ -104,11 +104,6 @@ $disabledAttr = $isReadOnly ? 'disabled' : '';
t('Home'), 'path' => 'admin'],
- ['label' => t('Settings')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('Settings'),
'actions' => $canUpdateSettings ? [
diff --git a/pages/admin/stats/index().php b/pages/admin/stats/index().php
index c5f5a3f..3f1aad4 100644
--- a/pages/admin/stats/index().php
+++ b/pages/admin/stats/index().php
@@ -17,3 +17,8 @@ $currentUserId = (int) ($session['user']['id'] ?? 0);
$viewAuth['page'] = app(UiAccessService::class)->pageCapabilities($currentUserId, UiCapabilityMap::PAGE_STATS_INDEX);
Buffer::set('title', t('Statistics'));
+
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Statistics')],
+];
diff --git a/pages/admin/stats/index(default).phtml b/pages/admin/stats/index(default).phtml
index dbdd206..0ccbefc 100644
--- a/pages/admin/stats/index(default).phtml
+++ b/pages/admin/stats/index(default).phtml
@@ -107,13 +107,6 @@ $canViewAuditTab = (bool) ($auditStatsAvailable ?? false) && (
|| ($canViewUserLifecycleAudit && (bool) ($userLifecycleAuditStatsAvailable ?? false))
);
-?>
- t('Home'), 'path' => 'admin'],
- ['label' => t('Statistics')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
?>
diff --git a/pages/admin/system-info/index().php b/pages/admin/system-info/index().php
index aa2c143..fe4c47b 100644
--- a/pages/admin/system-info/index().php
+++ b/pages/admin/system-info/index().php
@@ -14,3 +14,8 @@ $permissions = $pageData['permissions'] ?? [];
$healthChecks = $overview['health_checks'] ?? [];
Buffer::set('title', t('System Info'));
+
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('System Info')],
+];
diff --git a/pages/admin/system-info/index(default).phtml b/pages/admin/system-info/index(default).phtml
index 67bf6b3..c341e59 100644
--- a/pages/admin/system-info/index(default).phtml
+++ b/pages/admin/system-info/index(default).phtml
@@ -12,13 +12,6 @@ $modules = $modules ?? [];
$permissions = $permissions ?? [];
$healthChecks = $healthChecks ?? [];
-?>
- t('Home'), 'path' => 'admin'],
- ['label' => t('System Info')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
?>
diff --git a/pages/admin/tenants/create().php b/pages/admin/tenants/create().php
index 0ada726..7dc2516 100644
--- a/pages/admin/tenants/create().php
+++ b/pages/admin/tenants/create().php
@@ -135,3 +135,8 @@ if ($request->isMethod('POST')) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
Buffer::set('title', t('Create tenant'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Tenants'), 'path' => 'admin/tenants'],
+ ['label' => t('Create tenant')],
+];
diff --git a/pages/admin/tenants/create(default).phtml b/pages/admin/tenants/create(default).phtml
index 5d39f57..748b391 100644
--- a/pages/admin/tenants/create(default).phtml
+++ b/pages/admin/tenants/create(default).phtml
@@ -11,12 +11,6 @@
t('Home'), 'path' => 'admin'],
- ['label' => t('Tenants'), 'path' => 'admin/tenants'],
- ['label' => t('Create tenant')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('Create tenant'),
'backHref' => 'admin/tenants',
diff --git a/pages/admin/tenants/edit($id).php b/pages/admin/tenants/edit($id).php
index aca5d1d..d0acad4 100644
--- a/pages/admin/tenants/edit($id).php
+++ b/pages/admin/tenants/edit($id).php
@@ -182,4 +182,10 @@ if ($canManageSso && empty($ldapUiState)) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
-Buffer::set('title', $canUpdateTenant ? t('Edit tenant') : t('View tenant'));
+$titleText = $canUpdateTenant ? t('Edit tenant') : t('View tenant');
+Buffer::set('title', $titleText);
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Tenants'), 'path' => 'admin/tenants'],
+ ['label' => $titleText],
+];
diff --git a/pages/admin/tenants/edit(default).phtml b/pages/admin/tenants/edit(default).phtml
index 656ca3f..9c75aa2 100644
--- a/pages/admin/tenants/edit(default).phtml
+++ b/pages/admin/tenants/edit(default).phtml
@@ -27,12 +27,6 @@ $hasFavicon = $avatarUuid !== '' && $tenantFaviconService->hasFavicon($avatarUui
t('Home'), 'path' => 'admin'],
- ['label' => t('Tenants'), 'path' => 'admin/tenants'],
- ['label' => $titleText],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => $titleText,
'backHref' => 'admin/tenants',
diff --git a/pages/admin/tenants/index().php b/pages/admin/tenants/index().php
index 3f8fb23..db73fe4 100644
--- a/pages/admin/tenants/index().php
+++ b/pages/admin/tenants/index().php
@@ -46,6 +46,10 @@ $clientFilterSchema = $listFilterContext['clientFilterSchema'];
$searchConfig = $listFilterContext['searchConfig'];
Buffer::set('title', t('Tenants'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Tenants')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$csrfKey = Session::$csrfSessionKey;
$csrfToken = $session[$csrfKey] ?? '';
diff --git a/pages/admin/tenants/index(default).phtml b/pages/admin/tenants/index(default).phtml
index bc7a2ef..31ce279 100644
--- a/pages/admin/tenants/index(default).phtml
+++ b/pages/admin/tenants/index(default).phtml
@@ -12,13 +12,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Tenants')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/pages/admin/users/create().php b/pages/admin/users/create().php
index 498b0ef..aaa972c 100644
--- a/pages/admin/users/create().php
+++ b/pages/admin/users/create().php
@@ -214,3 +214,8 @@ if (!$customFieldDefinitionsByTenant && $selectedTenantIds) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
Buffer::set('title', t('Create user'));
+$breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Users'), 'path' => 'admin/users'],
+ ['label' => t('Create user')],
+];
diff --git a/pages/admin/users/create(default).phtml b/pages/admin/users/create(default).phtml
index a7c2d20..dd1e605 100644
--- a/pages/admin/users/create(default).phtml
+++ b/pages/admin/users/create(default).phtml
@@ -12,12 +12,6 @@
t('Home'), 'path' => 'admin'],
- ['label' => t('Users'), 'path' => 'admin/users'],
- ['label' => t('Create user')],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
$titlebar = [
'title' => t('Create user'),
'backHref' => 'admin/users',
diff --git a/pages/admin/users/edit($id).php b/pages/admin/users/edit($id).php
index d8f1b0e..49e788d 100644
--- a/pages/admin/users/edit($id).php
+++ b/pages/admin/users/edit($id).php
@@ -300,4 +300,12 @@ if ($request->isMethod('POST')) {
$validationSummaryErrors = $errorBag->toArray();
$errors = $errorBag->toFlatList();
-Buffer::set('title', $isOwnAccount ? t('My account') : ($canEditUser ? t('Edit user') : t('View user')));
+$titleText = $isOwnAccount ? t('My account') : ($canEditUser ? t('Edit user') : t('View user'));
+Buffer::set('title', $titleText);
+if (!($isOwnAccount && !$canViewUsers)) {
+ $breadcrumbs = [
+ ['label' => t('Home'), 'path' => 'admin'],
+ ['label' => t('Users'), 'path' => 'admin/users'],
+ ['label' => $titleText],
+ ];
+}
diff --git a/pages/admin/users/edit(default).phtml b/pages/admin/users/edit(default).phtml
index 734e186..5d3f7e0 100644
--- a/pages/admin/users/edit(default).phtml
+++ b/pages/admin/users/edit(default).phtml
@@ -46,16 +46,6 @@ if ($lastLoginAt !== '') {
-
- t('Home'), 'path' => 'admin'],
- ['label' => t('Users'), 'path' => 'admin/users'],
- ['label' => $titleText],
- ];
- require templatePath('partials/app-breadcrumb.phtml');
- ?>
-
t('Home'), 'path' => 'admin'],
+ ['label' => t('Users')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$csrfKey = Session::$csrfSessionKey;
$csrfToken = $session[$csrfKey] ?? '';
diff --git a/pages/admin/users/index(default).phtml b/pages/admin/users/index(default).phtml
index d61315f..3c50c1a 100644
--- a/pages/admin/users/index(default).phtml
+++ b/pages/admin/users/index(default).phtml
@@ -22,13 +22,6 @@ $currentUserUuid = (string) ($_SESSION['user']['uuid'] ?? '');
$showTenantTabs = isset($tenants) && is_array($tenants) && count($tenants) > 1;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Users')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/pages/help/hotkeys(default).phtml b/pages/help/hotkeys(default).phtml
index 4dfa8de..83516a9 100644
--- a/pages/help/hotkeys(default).phtml
+++ b/pages/help/hotkeys(default).phtml
@@ -13,7 +13,6 @@ $hotkeyRows = HotkeyService::list();
['label' => t('Home'), 'path' => 'admin'],
['label' => t('Keyboard shortcuts')],
];
- require templatePath('partials/app-breadcrumb.phtml');
?>
t('Home'), 'path' => 'admin'],
+ ['label' => t('Search')],
+];
Buffer::set('grid_lang', json_encode(gridLang(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
Buffer::set(
'grid_csrf',
diff --git a/pages/search/index(default).phtml b/pages/search/index(default).phtml
index 56abd78..0e7924f 100644
--- a/pages/search/index(default).phtml
+++ b/pages/search/index(default).phtml
@@ -8,13 +8,6 @@ $clientFilterSchema = is_array($clientFilterSchema ?? null) ? $clientFilterSchem
$searchConfig = is_array($searchConfig ?? null) ? $searchConfig : null;
?>
t('Home'), 'path' => 'admin'],
- ['label' => t('Search')],
-];
-require templatePath('partials/app-breadcrumb.phtml');
-?>
-
diff --git a/templates/partials/app-breadcrumb.phtml b/templates/partials/app-breadcrumb.phtml
index e65e102..a4670fd 100644
--- a/templates/partials/app-breadcrumb.phtml
+++ b/templates/partials/app-breadcrumb.phtml
@@ -1,6 +1,5 @@
-