protected function normalizeItems($items, &$active)
{
foreach ($items as $i => $item) {
if (isset($item['visible']) && !$item['visible']) {
unset($items[$i]);
continue;
}
if (!isset($item['label'])) {
$item['label'] = '';
}
$encodeLabel = isset($item['encode']) ? $item['encode'] : $this->encodeLabels;
$items[$i]['label'] = $encodeLabel ? Html::encode($item['label']) : $item['label'];
$hasActiveChild = false;
if (isset($item['items'])) {
$items[$i]['items'] = $this->normalizeItems($item['items'], $hasActiveChild);
if (empty($items[$i]['items']) && $this->hideEmptyItems) {
unset($items[$i]['items']);
if (!isset($item['url'])) {
unset($items[$i]);
continue;
}
}
}
if (!isset($item['active'])) {
if ($this->activateParents && $hasActiveChild || $this->activateItems && $this->isItemActive($item)) {
$active = $items[$i]['active'] = true;
} else {
$items[$i]['active'] = false;
}
} elseif ($item['active']) {
$active = true;
}
}
return array_values($items);
}
protected function normalizeItems($items, &$active) { $currentUrl = ltrim(P::$app->getRequest()->getUrl(), '/'); $langList = []; foreach (P::$app->getLocale()->enableLocales as $lang) { if ($lang !== P::$app->getLocale()->defaultLocale) { $langList[] = $lang; } } foreach ($items as $i => $item) { if (!isset($item['lang'])) { throw new InvalidConfigException('The "lang" element is required for each item.'); } if (in_array($item['lang'], $langList)) { $items[$i]['url'] = '/' . $item['lang'] . '/' . $currentUrl; } else { $items[$i]['url'] = $currentUrl; } } return parent::normalizeItems($items, $active); }