Skip to content
Code-Schnipsel Gruppen Projekte
MegaMenu.php 2,71 KiB
Newer Older
Henning Leutz's avatar
Henning Leutz committed
<?php

/**
 * This file contains QUI\Menu\MegaMenu
 */
namespace QUI\Menu;

use QUI;

/**
 * Class MegaMenu
 *
 * @package QUI\Menu
 */
class MegaMenu extends AbstractMenu
Henning Leutz's avatar
Henning Leutz committed
{
    /**
     * @param array $attributes
     */
    public function __construct($attributes = array())
    {
        $this->setAttributes(array(
Henning Leutz's avatar
Henning Leutz committed
            'showStart' => false,
            'Start'     => false,
            'data-qui'  => 'package/quiqqer/menu/bin/MegaMenu',
            'display'   => $this->getProject()->getConfig('menu.settings.type')
Henning Leutz's avatar
Henning Leutz committed
        ));

        parent::__construct($attributes);

        $this->addCSSClass('quiqqer-menu-megaMenu');
        $this->addCSSFile(dirname(__FILE__) . '/MegaMenu.css');
    }

    /**
     * @return string
     * @throws QUI\Exception
     */
    public function getBody()
    {
        $Engine = QUI::getTemplateManager()->getEngine();

Henning Leutz's avatar
Henning Leutz committed
        switch ($this->getAttribute('display')) {
            case 'Image':
            case QUI\Menu\Mega\Image::class:
                $childControl = QUI\Menu\Mega\Image::class;
                break;

            case 'Icons':
            case QUI\Menu\Mega\Icons::class:
                $childControl = QUI\Menu\Mega\Icons::class;
                break;

            case 'IconsDescription':
            case QUI\Menu\Mega\IconsDescription::class:
                $childControl = QUI\Menu\Mega\IconsDescription::class;
                break;

Henning Leutz's avatar
Henning Leutz committed
            case 'Standard':
            case QUI\Menu\Mega\Standard::class:
                $childControl = QUI\Menu\Mega\Standard::class;
                break;
        }

Henning Leutz's avatar
Henning Leutz committed
        $Engine->assign(array(
            'this'         => $this,
            'Site'         => $this->getSite(),
            'Project'      => $this->getProject(),
            'Start'        => $this->getStart(),
            'children'     => $this->getStart()->getNavigation(),
            'Rewrite'      => QUI::getRewrite(),
            'jsControl'    => 'package/quiqqer/menu/bin/MegaMenu',
            'prepend'      => $this->prepend,
            'append'       => $this->append,
            'childControl' => $childControl
Henning Leutz's avatar
Henning Leutz committed
        ));

        return $Engine->fetch(dirname(__FILE__) . '/MegaMenu.html');
    }

    /**
     * @return QUI\Projects\Site
     */
    public function getStart()
    {
        if ($this->getAttribute('Start')) {
            return $this->getAttribute('Start');
        }

        return $this->getProject()->firstChild();
    }

    /**
     * Return the current site
     *
     * @return mixed|QUI\Projects\Site
     */
    protected function getSite()
    {
        if ($this->getAttribute('Site')) {
            return $this->getAttribute('Site');
        }

        return QUI::getRewrite()->getSite();
    }
}