mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-31 01:34:09 +02:00
MenuItem renamed, small fixes
* One less namespace, better naming * hasItem() added * throws Exception when trying to access invalid Items * Automagically creates missing parents when adding named childs
This commit is contained in:
parent
56abc53a2b
commit
3d636423c8
@ -31,7 +31,7 @@ namespace Icinga\Web;
|
|||||||
|
|
||||||
use Icinga\Application\Config;
|
use Icinga\Application\Config;
|
||||||
use Icinga\Application\Icinga;
|
use Icinga\Application\Icinga;
|
||||||
use Icinga\Web\Menu\Item as MenuItem;
|
use Icinga\Web\MenuItem;
|
||||||
|
|
||||||
class Menu extends MenuItem
|
class Menu extends MenuItem
|
||||||
{
|
{
|
||||||
|
@ -2,9 +2,11 @@
|
|||||||
// {{{ICINGA_LICENSE_HEADER}}}
|
// {{{ICINGA_LICENSE_HEADER}}}
|
||||||
// {{{ICINGA_LICENSE_HEADER}}}
|
// {{{ICINGA_LICENSE_HEADER}}}
|
||||||
|
|
||||||
namespace Icinga\Web\Menu;
|
namespace Icinga\Web;
|
||||||
|
|
||||||
class Item
|
use Icinga\Exception\ProgrammingError;
|
||||||
|
|
||||||
|
class MenuItem
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Item id
|
* Item id
|
||||||
@ -245,17 +247,12 @@ class Item
|
|||||||
} else {
|
} else {
|
||||||
// Submenu item
|
// Submenu item
|
||||||
list($parentId, $id) = explode('.', $id, 2);
|
list($parentId, $id) = explode('.', $id, 2);
|
||||||
$parent = $this->getChild($parentId);
|
if ($this->hasChild($parentId)) {
|
||||||
if ($parent !== null) {
|
$parent = $this->getChild($parentId);
|
||||||
$menuItem = $parent->addChild($id, $itemConfig);
|
|
||||||
} else {
|
} else {
|
||||||
// Parent does not exist, auto-generate a knot to inform the user
|
$parent = $this->addChild($parentId);
|
||||||
$autoId = 'Auto-generated knot because submenu items refer to a non-existent parent menu item';
|
|
||||||
if (($auto = $this->getChild($autoId)) === null) {
|
|
||||||
$auto = $this->addChild($autoId);
|
|
||||||
}
|
|
||||||
$menuItem = $auto->addChild($id, $itemConfig);
|
|
||||||
}
|
}
|
||||||
|
$menuItem = $parent->addChild($id, $itemConfig);
|
||||||
}
|
}
|
||||||
return $menuItem;
|
return $menuItem;
|
||||||
}
|
}
|
||||||
@ -282,20 +279,33 @@ class Item
|
|||||||
return $this->children;
|
return $this->children;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether a given child id exists
|
||||||
|
*
|
||||||
|
* @param string $id
|
||||||
|
*
|
||||||
|
* @return self|$default
|
||||||
|
*/
|
||||||
|
public function hasChild($id)
|
||||||
|
{
|
||||||
|
return array_key_exists($id, $this->children);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get child by its id
|
* Get child by its id
|
||||||
*
|
*
|
||||||
* @param string $id
|
* @param string $id
|
||||||
* @param mixed $default
|
* @param mixed $default
|
||||||
*
|
*
|
||||||
* @return self|$default
|
* @return MenuItem
|
||||||
|
* @throws ProgrammingError
|
||||||
*/
|
*/
|
||||||
public function getChild($id, $default = null)
|
public function getChild($id)
|
||||||
{
|
{
|
||||||
if (array_key_exists($id, $this->children)) {
|
if ($this->hasChild($id)) {
|
||||||
return $this->children[$id];
|
return $this->children[$id];
|
||||||
}
|
}
|
||||||
return $default;
|
throw new ProgrammingError(sprintf('Trying to get invalid Menu child "%s"', $id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user