Newer
Older
<?php
/**
* This file contains \QUI\Menu\DropDownMenu
*/
namespace QUI\Menu;
use QUI;
/**
* Class DropDownMenu
* Creates an Drop Down Menu
*
* @package QUI\Menu
* @author www.pcsg.de (Henning Leutz)
*/
class DropDownMenu extends QUI\Control
{
/**
* @param array $attributes
*/
public function __construct($attributes = [])
{
$this->setAttribute('class', 'qui-menu-dropdown');
$this->setAttribute('qui-class', 'package/quiqqer/menu/bin/DropDownMenu');
$this->setAttribute('icons', false);
parent::__construct($attributes);
$this->addCSSFile(\dirname(__FILE__) . '/DropDownMenu.css');
}
/**
* Create the Body
*
* @return string
* @throws QUI\Exception
*/
public function getBody()
{
$cache = EventHandler::menuCacheName() . '/dropDownMenu/';
$attributes = $this->getAttributes();
$attributes = \array_filter($attributes, function ($entry) {
return \is_object($entry) === false;
});
$cache .= \md5(
\serialize($attributes)
try {
return QUI\Cache\Manager::get($cache);
} catch (QUI\Exception $Exception) {
}
$Engine = QUI::getTemplateManager()->getEngine();
$Engine->assign([
'this' => $this,
'Site' => $this->getSite(),
'Project' => $this->getProject(),
'FileMenu' => \dirname(__FILE__) . '/DropDownMenu.Children.html'
$result = $Engine->fetch(\dirname(__FILE__) . '/DropDownMenu.html');
QUI\Cache\Manager::set($cache, $result);
return $result;
}
/**
* Return the current site
*
* @return mixed|QUI\Projects\Site
*/
{
if ($this->getAttribute('Site')) {
return $this->getAttribute('Site');
}
return QUI::getRewrite()->getSite();
}