Only display custom menu renders on XHR requests and not in regular HTML

The main navigation should be rendered without a working backend.

fixes #7143
This commit is contained in:
Matthias Jentsch 2014-09-09 15:33:42 +02:00
parent b7c207a9cb
commit 71f55e388f
3 changed files with 17 additions and 3 deletions

View File

@ -23,7 +23,7 @@ class LayoutController extends ActionController
$url = Url::fromRequest();
$menu = new MenuRenderer(Menu::load(), $url->getRelativeUrl());
$this->view->menuRenderer = $menu->useCustomRenderers();
$this->view->menuRenderer = $menu->useCustomRenderer();
}
/**

View File

@ -12,7 +12,7 @@ if (! $this->auth()->isAuthenticated()) {
?>
<div
id="menu" data-base-target="_main" class="container" data-icinga-url="<?=$this->href('layout/menu');?>"
id="menu" data-last-update="<?= (time() - 14) ?>000" data-base-target="_main" class="container" data-icinga-url="<?=$this->href('layout/menu');?>"
data-icinga-refresh="15"
>
<? if (SearchDashboard::search('dummy')->getPane('search')->hasComponents()): ?>

View File

@ -25,6 +25,11 @@ class MenuRenderer extends RecursiveIteratorIterator
*/
protected $tags = array();
/**
* @var bool
*/
protected $useCustomRenderer = false;
/**
* Create a new MenuRenderer
*
@ -41,6 +46,15 @@ class MenuRenderer extends RecursiveIteratorIterator
parent::__construct($menu, RecursiveIteratorIterator::CHILD_FIRST);
}
/**
* @param bool $value
*/
public function useCustomRenderer($value = true)
{
$this->useCustomRenderer = $value;
return $this;
}
/**
* Register the outer ul opening html-tag
*/
@ -91,7 +105,7 @@ class MenuRenderer extends RecursiveIteratorIterator
*/
public function renderChild(Menu $child)
{
if ($child->getRenderer() !== null) {
if ($child->getRenderer() !== null && $this->useCustomRenderer) {
return $child->getRenderer()->render($child);
}
return sprintf(