Fix navigation reload
Activate the correct menu item with JavaScript after relaod and don't render it on server-side on XHR requests.
This commit is contained in:
parent
56b779af4d
commit
157818c8e7
|
@ -21,8 +21,9 @@ class LayoutController extends ActionController
|
||||||
$this->setAutorefreshInterval(15);
|
$this->setAutorefreshInterval(15);
|
||||||
$this->_helper->layout()->disableLayout();
|
$this->_helper->layout()->disableLayout();
|
||||||
|
|
||||||
$url = Url::fromPath($this->getParam('url'));
|
$url = Url::fromRequest();
|
||||||
$this->view->menuRenderer = new MenuRenderer(Menu::load(), $url->getRelativeUrl());
|
$menu = new MenuRenderer(Menu::load(), $url->getRelativeUrl());
|
||||||
|
$this->view->menuRenderer = $menu->useCustomRenderers();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -9,14 +9,11 @@ use Icinga\Web\Widget\SearchDashboard;
|
||||||
if (! $this->auth()->isAuthenticated()) {
|
if (! $this->auth()->isAuthenticated()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$dataIcingaUrl = $this->href(
|
|
||||||
'layout/menu',
|
|
||||||
array('url' => Url::fromRequest()->without('renderLayout')->getAbsoluteUrl())
|
|
||||||
);
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<div
|
<div
|
||||||
id="menu" data-base-target="_main" class="container" data-icinga-url="<?= $dataIcingaUrl?>" data-icinga-refresh="15"
|
id="menu" data-base-target="_main" class="container" data-icinga-url="<?=$this->href('layout/menu');?>"
|
||||||
|
data-icinga-refresh="15"
|
||||||
>
|
>
|
||||||
<? if (SearchDashboard::search('dummy')->getPane('search')->hasComponents()): ?>
|
<? if (SearchDashboard::search('dummy')->getPane('search')->hasComponents()): ?>
|
||||||
<form action="<?= $this->href('search') ?>" method="get" role="search">
|
<form action="<?= $this->href('search') ?>" method="get" role="search">
|
||||||
|
|
|
@ -151,8 +151,14 @@
|
||||||
|
|
||||||
// restore menu state
|
// restore menu state
|
||||||
if (activeMenuId) {
|
if (activeMenuId) {
|
||||||
$('#menu .active').removeClass('active');
|
$('li.active', el).removeClass('active');
|
||||||
$('#' + activeMenuId).addClass('active');
|
|
||||||
|
var $selectedMenu = $('#' + activeMenuId, el);
|
||||||
|
var $outerMenu = $selectedMenu.parent().closest('li');
|
||||||
|
if ($outerMenu.size()) {
|
||||||
|
$selectedMenu = $outerMenu;
|
||||||
|
}
|
||||||
|
$selectedMenu.addClass('active');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -576,7 +582,6 @@
|
||||||
$li.addClass('active');
|
$li.addClass('active');
|
||||||
activeMenuId = $($li).attr('id');
|
activeMenuId = $($li).attr('id');
|
||||||
if ($li.hasClass('hover')) {
|
if ($li.hasClass('hover')) {
|
||||||
$('#menu .active').removeClass('active');
|
|
||||||
$li.removeClass('hover');
|
$li.removeClass('hover');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -601,6 +606,9 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (isMenuLink) {
|
||||||
|
activeMenuId = $(event.target).closest('li').attr('id');
|
||||||
|
}
|
||||||
$target = self.getLinkTargetFor($a);
|
$target = self.getLinkTargetFor($a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue