Files
breadcrumb-the-shire/templates/partials/app-main-aside-icon-bar.phtml

76 lines
4.3 KiB
PHTML
Raw Normal View History

2026-02-04 23:31:53 +01:00
<?php
$accountUrl = accountUrl();
2026-02-11 19:28:12 +01:00
$accountName = currentUserDisplayName();
2026-02-04 23:31:53 +01:00
$accountTooltip = $accountName !== '' ? $accountName : t('Account');
2026-03-04 15:56:58 +01:00
$layoutAuth = is_array($viewAuth['layout'] ?? null) ? $viewAuth['layout'] : [];
2026-03-05 08:26:51 +01:00
$hasAdminPanel = layoutHasAdminPanel($layoutAuth);
2026-02-04 23:31:53 +01:00
?>
<aside class="aside-icon-bar" data-app-component="aside-panels" data-aside-storage="app-sidebar-panel">
<nav aria-label="<?php e(t('Main menu')); ?>">
2026-03-05 13:07:43 +01:00
<ul class="aside-icon-group" role="tablist" aria-orientation="vertical">
2026-02-04 23:31:53 +01:00
<li>
<button type="button" id="aside-tab-explorer" data-aside-target="explorer" role="tab"
aria-selected="true" aria-controls="aside-panel-explorer" aria-label="<?php e(t('Explorer')); ?>"
data-tooltip="<?php e(t('Explorer')); ?>" data-tooltip-pos="right" data-icon-swap>
<i class="bi bi-house" data-icon="outline"></i>
<i class="bi bi-house-fill" data-icon="fill"></i>
2026-02-04 23:31:53 +01:00
</button>
</li>
<?php
// ── Module-contributed aside tabs (aside.tab_panel slot) ──
$moduleSlots = is_array($layoutNav['moduleSlots'] ?? null) ? $layoutNav['moduleSlots'] : [];
$moduleTabSlots = is_array($moduleSlots['aside.tab_panel'] ?? null) ? $moduleSlots['aside.tab_panel'] : [];
foreach ($moduleTabSlots as $slot):
if (!is_array($slot)) { continue; }
$slotKey = $slot['key'] ?? '';
$slotLabel = $slot['label'] ?? '';
$slotIcon = $slot['icon'] ?? 'bi-puzzle';
$slotIconFill = $slot['icon_fill'] ?? ($slotIcon !== '' ? $slotIcon . '-fill' : 'bi-puzzle-fill');
$slotHref = $slot['href'] ?? '';
$slotPermission = $slot['permission'] ?? '';
if ($slotPermission !== '' && empty($layoutAuth[$slotPermission])) { continue; }
// Resolve relative route keys via lurl()
if ($slotHref !== '' && !str_starts_with($slotHref, '/') && !str_starts_with($slotHref, 'http')) {
$slotHref = lurl($slotHref);
}
?>
2026-02-04 23:31:53 +01:00
<li>
<button type="button" id="aside-tab-<?php e($slotKey); ?>"
data-aside-target="<?php e($slotKey); ?>"
<?php if ($slotHref !== ''): ?>data-aside-href="<?php e($slotHref); ?>"<?php endif; ?>
role="tab" aria-selected="false"
aria-controls="aside-panel-<?php e($slotKey); ?>"
aria-label="<?php e(t($slotLabel)); ?>"
data-tooltip="<?php e(t($slotLabel)); ?>" data-tooltip-pos="right" data-icon-swap>
<i class="bi <?php e($slotIcon); ?>" data-icon="outline"></i>
<i class="bi <?php e($slotIconFill); ?>" data-icon="fill"></i>
2026-02-04 23:31:53 +01:00
</button>
</li>
<?php endforeach; ?>
</ul>
<div class="aside-icon-footer">
<ul role="list">
2026-02-04 23:31:53 +01:00
<li>
<a href="<?php e($accountUrl); ?>" aria-label="<?php e(t('Account')); ?>"
data-tooltip="<?php e($accountTooltip); ?>" data-tooltip-pos="right" data-aside-shortcut="account" data-icon-swap>
<i class="bi bi-person" data-icon="outline"></i>
<i class="bi bi-person-fill" data-icon="fill"></i>
</a>
2026-02-04 23:31:53 +01:00
</li>
</ul>
<?php if ($hasAdminPanel): ?>
<ul class="aside-icon-group" role="tablist" aria-orientation="vertical">
<li>
<button type="button" id="aside-tab-admin" data-aside-target="admin" role="tab" aria-selected="false"
aria-controls="aside-panel-admin" aria-label="<?php e(t('Admin')); ?>"
data-tooltip="<?php e(t('Admin')); ?>" data-tooltip-pos="right" data-icon-swap>
<i class="bi bi-gear" data-icon="outline"></i>
<i class="bi bi-gear-fill" data-icon="fill"></i>
</button>
</li>
</ul>
2026-02-04 23:31:53 +01:00
<?php endif; ?>
</div>
2026-02-04 23:31:53 +01:00
</nav>
</aside>