2026-04-02 17:48:27 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
$layoutNav = is_array($layoutNav ?? null) ? $layoutNav : [];
|
|
|
|
|
$helpdeskNav = is_array($layoutNav['helpdesk.nav'] ?? null) ? $layoutNav['helpdesk.nav'] : [];
|
|
|
|
|
$canManageSettings = !empty($helpdeskNav['can_manage_settings']);
|
2026-04-05 18:46:54 +02:00
|
|
|
$canViewTeam = !empty($helpdeskNav['can_view_team']);
|
2026-04-06 00:24:48 +02:00
|
|
|
$canViewRiskRadar = !empty($helpdeskNav['can_view_risk_radar']);
|
2026-04-14 22:16:21 +02:00
|
|
|
$canManageSoftwareProducts = !empty($helpdeskNav['can_manage_software_products']);
|
2026-04-02 17:48:27 +02:00
|
|
|
|
2026-04-05 17:58:00 +02:00
|
|
|
$settingsActive = navActive('helpdesk/settings', true);
|
2026-04-05 18:46:54 +02:00
|
|
|
$teamActive = navActive('helpdesk/team', true);
|
2026-04-06 00:24:48 +02:00
|
|
|
$riskRadarActive = navActive('helpdesk/risk-radar', true);
|
2026-04-14 21:34:32 +02:00
|
|
|
$domainsActive = navActive('helpdesk/domains', true);
|
2026-04-14 22:16:21 +02:00
|
|
|
$softwareProductsActive = navActive('helpdesk/software-products', true);
|
2026-04-05 17:58:00 +02:00
|
|
|
$customersActive = navActive('helpdesk', true);
|
2026-04-14 22:16:21 +02:00
|
|
|
if ($settingsActive['isActive'] || $teamActive['isActive'] || $riskRadarActive['isActive'] || $domainsActive['isActive'] || $softwareProductsActive['isActive']) {
|
2026-04-05 17:58:00 +02:00
|
|
|
$customersActive = ['class' => '', 'aria' => '', 'isActive' => false];
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-14 21:34:32 +02:00
|
|
|
$helpdeskNavGroups = [
|
2026-04-02 17:48:27 +02:00
|
|
|
[
|
2026-04-14 21:34:32 +02:00
|
|
|
'key' => 'helpdesk-lookup',
|
|
|
|
|
'label' => t('Lookup'),
|
|
|
|
|
'icon' => 'bi-search',
|
|
|
|
|
'items' => [
|
|
|
|
|
[
|
|
|
|
|
'label' => t('Customers'),
|
|
|
|
|
'path' => 'helpdesk',
|
|
|
|
|
'active' => $customersActive,
|
|
|
|
|
'visible' => true,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'label' => t('Domains'),
|
|
|
|
|
'path' => 'helpdesk/domains',
|
|
|
|
|
'active' => $domainsActive,
|
|
|
|
|
'visible' => true,
|
|
|
|
|
],
|
|
|
|
|
],
|
2026-04-02 17:48:27 +02:00
|
|
|
],
|
2026-04-05 18:46:54 +02:00
|
|
|
[
|
2026-04-14 21:34:32 +02:00
|
|
|
'key' => 'helpdesk-monitoring',
|
|
|
|
|
'label' => t('Monitoring'),
|
|
|
|
|
'icon' => 'bi-bar-chart-line',
|
|
|
|
|
'items' => [
|
|
|
|
|
[
|
|
|
|
|
'label' => t('Team workload'),
|
|
|
|
|
'path' => 'helpdesk/team',
|
|
|
|
|
'active' => $teamActive,
|
|
|
|
|
'visible' => $canViewTeam,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'label' => t('Risk radar'),
|
|
|
|
|
'path' => 'helpdesk/risk-radar',
|
|
|
|
|
'active' => $riskRadarActive,
|
|
|
|
|
'visible' => $canViewRiskRadar,
|
|
|
|
|
],
|
|
|
|
|
],
|
2026-04-05 18:46:54 +02:00
|
|
|
],
|
2026-04-06 00:24:48 +02:00
|
|
|
[
|
2026-04-14 21:34:32 +02:00
|
|
|
'key' => 'helpdesk-administration',
|
|
|
|
|
'label' => t('Administration'),
|
|
|
|
|
'icon' => 'bi-sliders',
|
|
|
|
|
'items' => [
|
2026-04-14 22:16:21 +02:00
|
|
|
[
|
|
|
|
|
'label' => t('Software products'),
|
|
|
|
|
'path' => 'helpdesk/software-products',
|
|
|
|
|
'active' => $softwareProductsActive,
|
|
|
|
|
'visible' => $canManageSoftwareProducts,
|
|
|
|
|
],
|
2026-04-14 21:34:32 +02:00
|
|
|
[
|
|
|
|
|
'label' => t('Settings'),
|
|
|
|
|
'path' => 'helpdesk/settings',
|
|
|
|
|
'active' => $settingsActive,
|
|
|
|
|
'visible' => $canManageSettings,
|
|
|
|
|
],
|
|
|
|
|
],
|
2026-04-02 17:48:27 +02:00
|
|
|
],
|
|
|
|
|
];
|
|
|
|
|
?>
|
2026-04-14 21:34:32 +02:00
|
|
|
<ul>
|
|
|
|
|
<?php foreach ($helpdeskNavGroups as $group):
|
|
|
|
|
$visibleItems = array_values(array_filter($group['items'], static fn (array $item): bool => !empty($item['visible'])));
|
|
|
|
|
if (!$visibleItems) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$groupIsActive = false;
|
|
|
|
|
foreach ($visibleItems as $item) {
|
|
|
|
|
if (!empty(($item['active'] ?? [])['isActive'])) {
|
|
|
|
|
$groupIsActive = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
?>
|
2026-04-02 17:48:27 +02:00
|
|
|
<li class="app-sidebar-group app-sidebar-admin-group">
|
2026-04-14 21:34:32 +02:00
|
|
|
<details data-details-key="<?php e($group['key']); ?>"<?php if ($groupIsActive): ?> open<?php endif; ?>>
|
2026-04-02 17:48:27 +02:00
|
|
|
<summary>
|
2026-04-14 21:34:32 +02:00
|
|
|
<i class="bi <?php e($group['icon']); ?>"></i>
|
|
|
|
|
<span><?php e($group['label']); ?></span>
|
2026-04-02 17:48:27 +02:00
|
|
|
</summary>
|
|
|
|
|
<ul>
|
|
|
|
|
<?php foreach ($visibleItems as $item):
|
|
|
|
|
$active = $item['active'] ?? ['class' => '', 'aria' => ''];
|
|
|
|
|
?>
|
|
|
|
|
<li>
|
2026-04-06 12:08:25 +02:00
|
|
|
<a href="<?php e(lurl($item['path'])); ?>" class="<?php e($active['class'] ?? ''); ?>" <?php echo $active['aria'] ?? ''; // raw-html-ok: pre-built ARIA attribute from navActive() ?>>
|
2026-04-02 17:48:27 +02:00
|
|
|
<?php e($item['label']); ?>
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
<?php endforeach; ?>
|
|
|
|
|
</ul>
|
|
|
|
|
</details>
|
|
|
|
|
</li>
|
2026-04-14 21:34:32 +02:00
|
|
|
<?php endforeach; ?>
|
2026-04-02 17:48:27 +02:00
|
|
|
</ul>
|