Support $user.local_name$ macro in navigation items
This commit is contained in:
parent
3b6a10ecaa
commit
7e7e2415dc
|
@ -4,6 +4,7 @@
|
||||||
namespace Icinga\Web\Navigation;
|
namespace Icinga\Web\Navigation;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Icinga\Authentication\Auth;
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
use IteratorAggregate;
|
use IteratorAggregate;
|
||||||
use Icinga\Application\Icinga;
|
use Icinga\Application\Icinga;
|
||||||
|
@ -601,12 +602,15 @@ class NavigationItem implements IteratorAggregate
|
||||||
public function setUrl($url)
|
public function setUrl($url)
|
||||||
{
|
{
|
||||||
if (is_string($url)) {
|
if (is_string($url)) {
|
||||||
$url = Url::fromPath($url);
|
$url = Url::fromPath($this->resolveMacros($url));
|
||||||
} elseif (! $url instanceof Url) {
|
} elseif ($url instanceof Url) {
|
||||||
|
$url = Url::fromPath($this->resolveMacros($url->getAbsoluteUrl()));
|
||||||
|
} else {
|
||||||
throw new InvalidArgumentException('Argument $url must be of type string or Url');
|
throw new InvalidArgumentException('Argument $url must be of type string or Url');
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->url = $url;
|
$this->url = $url;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -915,4 +919,28 @@ class NavigationItem implements IteratorAggregate
|
||||||
return IcingaException::describe($e);
|
return IcingaException::describe($e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve all macros in the given URL
|
||||||
|
*
|
||||||
|
* @param string $url
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function resolveMacros($url)
|
||||||
|
{
|
||||||
|
if (strpos($url, '$') === false) {
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
$macros = [];
|
||||||
|
if (Auth::getInstance()->isAuthenticated()) {
|
||||||
|
$macros['$user.local_name$'] = Auth::getInstance()->getUser()->getLocalUsername();
|
||||||
|
}
|
||||||
|
if (! empty($macros)) {
|
||||||
|
$url = str_replace(array_keys($macros), array_values($macros), $url);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue