mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-25 14:54:24 +02:00
parent
c3ad665c15
commit
67dee62c57
@ -581,17 +581,24 @@ class NavigationItem implements IteratorAggregate
|
|||||||
/**
|
/**
|
||||||
* Create and return the given renderer
|
* Create and return the given renderer
|
||||||
*
|
*
|
||||||
* @param string $name
|
* @param string|array $name
|
||||||
*
|
*
|
||||||
* @return NavigationItemRenderer
|
* @return NavigationItemRenderer
|
||||||
*/
|
*/
|
||||||
protected function createRenderer($name)
|
protected function createRenderer($name)
|
||||||
{
|
{
|
||||||
|
if (is_array($name)) {
|
||||||
|
$options = array_splice($name, 1);
|
||||||
|
$name = $name[0];
|
||||||
|
} else {
|
||||||
|
$options = array();
|
||||||
|
}
|
||||||
|
|
||||||
$renderer = null;
|
$renderer = null;
|
||||||
foreach (Icinga::app()->getModuleManager()->getLoadedModules() as $module) {
|
foreach (Icinga::app()->getModuleManager()->getLoadedModules() as $module) {
|
||||||
$classPath = 'Icinga\\Module\\' . $module->getName() . '\\' . static::RENDERER_NS . '\\' . $name;
|
$classPath = 'Icinga\\Module\\' . $module->getName() . '\\' . static::RENDERER_NS . '\\' . $name;
|
||||||
if (class_exists($classPath)) {
|
if (class_exists($classPath)) {
|
||||||
$renderer = new $classPath();
|
$renderer = new $classPath($options);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -599,7 +606,7 @@ class NavigationItem implements IteratorAggregate
|
|||||||
if ($renderer === null) {
|
if ($renderer === null) {
|
||||||
$classPath = 'Icinga\\' . static::RENDERER_NS . '\\' . $name;
|
$classPath = 'Icinga\\' . static::RENDERER_NS . '\\' . $name;
|
||||||
if (class_exists($classPath)) {
|
if (class_exists($classPath)) {
|
||||||
$renderer = new $classPath();
|
$renderer = new $classPath($options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -619,7 +626,7 @@ class NavigationItem implements IteratorAggregate
|
|||||||
/**
|
/**
|
||||||
* Set this item's renderer
|
* Set this item's renderer
|
||||||
*
|
*
|
||||||
* @param string|NavigationItemRenderer $renderer
|
* @param string|array|NavigationItemRenderer $renderer
|
||||||
*
|
*
|
||||||
* @return $this
|
* @return $this
|
||||||
*
|
*
|
||||||
@ -627,10 +634,12 @@ class NavigationItem implements IteratorAggregate
|
|||||||
*/
|
*/
|
||||||
public function setRenderer($renderer)
|
public function setRenderer($renderer)
|
||||||
{
|
{
|
||||||
if (is_string($renderer)) {
|
if (is_string($renderer) || is_array($renderer)) {
|
||||||
$renderer = $this->createRenderer($renderer);
|
$renderer = $this->createRenderer($renderer);
|
||||||
} elseif (! $renderer instanceof NavigationItemRenderer) {
|
} elseif (! $renderer instanceof NavigationItemRenderer) {
|
||||||
throw new InvalidArgumentException('Argument $renderer must be of type string or NavigationItemRenderer');
|
throw new InvalidArgumentException(
|
||||||
|
'Argument $renderer must be of type string, array or NavigationItemRenderer'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->renderer = $renderer;
|
$this->renderer = $renderer;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
namespace Icinga\Web\Navigation\Renderer;
|
namespace Icinga\Web\Navigation\Renderer;
|
||||||
|
|
||||||
use Icinga\Application\Icinga;
|
use Icinga\Application\Icinga;
|
||||||
|
use Icinga\Util\String;
|
||||||
use Icinga\Web\Navigation\NavigationItem;
|
use Icinga\Web\Navigation\NavigationItem;
|
||||||
use Icinga\Web\View;
|
use Icinga\Web\View;
|
||||||
|
|
||||||
@ -19,6 +20,35 @@ class NavigationItemRenderer
|
|||||||
*/
|
*/
|
||||||
protected $view;
|
protected $view;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new NavigationItemRenderer
|
||||||
|
*
|
||||||
|
* @param array $options
|
||||||
|
*/
|
||||||
|
public function __construct(array $options = null)
|
||||||
|
{
|
||||||
|
if (! empty($options)) {
|
||||||
|
$this->setOptions($options);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the given options
|
||||||
|
*
|
||||||
|
* @param array $options
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function setOptions(array $options)
|
||||||
|
{
|
||||||
|
foreach ($options as $name => $value) {
|
||||||
|
$setter = 'set' . String::cname($name);
|
||||||
|
if (method_exists($this, $setter)) {
|
||||||
|
$this->$setter($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the view
|
* Return the view
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user