chg: [layout:sidebar] Support of active entries

pull/72/head
mokaddem 2021-09-10 15:37:20 +02:00
parent f00798db44
commit 83bc9732e7
3 changed files with 35 additions and 3 deletions

View File

@ -3,15 +3,33 @@
$icon = $parent['icon'] ?? ''; $icon = $parent['icon'] ?? '';
$label = $parent['label'] ?? ''; $label = $parent['label'] ?? '';
$children = $parent['children'] ?? []; $children = $parent['children'] ?? [];
$active = false;
if (!empty($children)) { if (!empty($children)) {
$url = "#{$seed}"; $url = "#{$seed}";
} else { } else {
$url = $parent['url'] ?? '#'; $url = $parent['url'] ?? '#';
} }
$controller = \Cake\Utility\Inflector::variable($this->request->getParam('controller'));
$action = \Cake\Utility\Inflector::variable($this->request->getParam('action'));
$currentURL = "/{$controller}/{$action}";
if ($url == $currentURL) {
$active = true;
}
$hasActiveChild = false;
if (!empty($children)) {
$flattened = Cake\Utility\Hash::flatten($children);
$flattenedValues = array_values($flattened);
if (in_array($currentURL, $flattenedValues)) {
$hasActiveChild = true;
}
}
?> ?>
<li class="<?= !empty($children) ? 'parent collapsed' : '' ?>"> <li class="<?= !empty($children) ? 'parent collapsed' : '' ?>">
<a class="sidebar-link <?= !empty($children) ? 'collapsed' : '' ?>" href="<?= h($url) ?>" <?= !empty($children) ? 'data-toggle="collapse"' : '' ?>> <a class="sidebar-link <?= !empty($children) ? 'collapsed' : '' ?> <?= $active ? 'active' : '' ?> <?= $hasActiveChild ? 'have-active-child' : '' ?>" href="<?= h($url) ?>" <?= !empty($children) ? 'data-toggle="collapse"' : '' ?> <?= $hasActiveChild ? 'aria-expanded="true"' : '' ?>>
<i class="sidebar-icon <?= $this->FontAwesome->getClass($icon) ?>"></i> <i class="sidebar-icon <?= $this->FontAwesome->getClass($icon) ?>"></i>
<span class="text"><?= h($label) ?></span> <span class="text"><?= h($label) ?></span>
</a> </a>
@ -19,6 +37,7 @@
<?= $this->element('layouts/sidebar/sub-menu', [ <?= $this->element('layouts/sidebar/sub-menu', [
'seed' => $seed, 'seed' => $seed,
'children' => $children, 'children' => $children,
'open' => $hasActiveChild
]); ]);
?> ?>
<?php endif; ?> <?php endif; ?>

View File

@ -2,7 +2,7 @@
$seed = $seed ?? 'sd-' . mt_rand(); $seed = $seed ?? 'sd-' . mt_rand();
?> ?>
<ul id="<?= $seed ?>" class="sub-menu collapse"> <ul id="<?= $seed ?>" class="sub-menu collapse <?= !empty($open) ? 'show' : '' ?>">
<?php foreach ($children as $child): ?> <?php foreach ($children as $child): ?>
<?= $this->element('layouts/sidebar/entry', [ <?= $this->element('layouts/sidebar/entry', [
'parent' => $child, 'parent' => $child,

View File

@ -242,6 +242,19 @@ ul.sidebar-elements li > a.sidebar-link {
color: unset; color: unset;
} }
ul.sidebar-elements li > a.sidebar-link.active {
background-color: #ebebeb;
}
.sidebar ul.sidebar-elements li > a.sidebar-link.have-active-child {
background-color: #ebebeb;
}
.sidebar.expanded ul.sidebar-elements li > a.sidebar-link.have-active-child,
.sidebar:hover ul.sidebar-elements li > a.sidebar-link.have-active-child {
background-color: unset;
}
ul.sidebar-elements > li > a.sidebar-link:hover { ul.sidebar-elements > li > a.sidebar-link:hover {
background-color: #f0f0f0; background-color: #f0f0f0;
} }