From a7e76edeecad5820de8994ee873984bc838e52cd Mon Sep 17 00:00:00 2001 From: Henning Leutz <leutz@pcsg.de> Date: Thu, 22 Sep 2016 08:13:42 +0200 Subject: [PATCH] feat: MegaMenu -> Icon Menu -> Children with icons --- settings.xml | 1 + src/QUI/Menu/Mega/Icons.css | 68 ++++++++++++++++++++++++++++++++++++ src/QUI/Menu/Mega/Icons.html | 38 ++++++++++++++++++++ src/QUI/Menu/Mega/Icons.php | 53 ++++++++++++++++++++++++++++ src/QUI/Menu/MegaMenu.php | 5 +++ 5 files changed, 165 insertions(+) create mode 100644 src/QUI/Menu/Mega/Icons.css create mode 100644 src/QUI/Menu/Mega/Icons.html create mode 100644 src/QUI/Menu/Mega/Icons.php diff --git a/settings.xml b/settings.xml index 63e6060..b5d3dea 100644 --- a/settings.xml +++ b/settings.xml @@ -26,6 +26,7 @@ <text>Header-Logo</text> <option value="Standard">MegaMenu - mit Unterseiten</option> <option value="Image">MegaMenu - Grosse Seitenbilder</option> + <option value="Icons">MegaMenu - mit Icons</option> </select> </settings> </category> diff --git a/src/QUI/Menu/Mega/Icons.css b/src/QUI/Menu/Mega/Icons.css new file mode 100644 index 0000000..6a49236 --- /dev/null +++ b/src/QUI/Menu/Mega/Icons.css @@ -0,0 +1,68 @@ +.quiqqer-menu-megaMenu-children-icons { + display: flex; + flex-direction: row; + width: 100%; +} + +/* ul */ +.quiqqer-menu-megaMenu-children-icons-list { + display: flex; + flex-wrap: wrap; +} + +/* li's */ +.quiqqer-menu-megaMenu-children-icons-list-entry { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + float: left; + font-size: 14px; + font-weight: bold; + list-style-type: none; + padding: 20px; + width: 33.3333%; +} + +.quiqqer-menu-megaMenu-children-icons-list-entry:hover { + background: rgba(0, 0, 0, 0.1); +} + +.quiqqer-menu-megaMenu-children-icons-list-entry li { + list-style-type: none; +} + +.quiqqer-menu-megaMenu-children-icons-list-entry-short { + clear: both; + float: left; + font-size: 12px; + font-weight: normal; + margin: 10px 0 0; + width: 100%; +} + +.quiqqer-menu-megaMenu-children-icons-list-entry-short li { + float: left; + margin-bottom: 7px; + width: 100%; +} + +.quiqqer-menu-megaMenu-children-icons-list-entry-short-link .quiqqer-icon { + float: left; + line-height: 18px; + width: 20px; +} + +.quiqqer-menu-megaMenu-children-icons-list-entry-short-link-title { + float: left; + width: calc(100% - 20px); +} + +.quiqqer-menu-megaMenu-children-icons-list-short-text { + color: rgba(0, 0, 0, 0.4); +} + +.quiqqer-menu-megaMenu-children-icons-entry-short ul { + margin-left: 20px; +} + +.quiqqer-menu-megaMenu-children-icons-list-entry:nth-child(3n+1) { + clear: both; +} diff --git a/src/QUI/Menu/Mega/Icons.html b/src/QUI/Menu/Mega/Icons.html new file mode 100644 index 0000000..a623c24 --- /dev/null +++ b/src/QUI/Menu/Mega/Icons.html @@ -0,0 +1,38 @@ +<ul class="quiqqer-menu-megaMenu-children-icons-list"> + {foreach $children as $Child} + <li class="quiqqer-menu-megaMenu-children-icons-list-entry"> + <a href="{url site=$Child}" + title="{$Child->getAttribute('title')|escape:" html"}"> + {$Child->getAttribute('title')} + </a> + + {assign var=subchildren value=$Child->getNavigation()} + + {if count($subchildren)} + <div class="quiqqer-menu-megaMenu-children-icons-list-entry-short"> + <ul> + {foreach $subchildren as $SubChild} + <li> + <a href="{url site=$SubChild}" + title="{$SubChild->getAttribute('title')|escape:" html"}" + class="quiqqer-menu-megaMenu-children-icons-list-entry-short-link" + > + {image src=$SubChild->getAttribute('image_site') onlyicon=1} + <span class="quiqqer-menu-megaMenu-children-icons-list-entry-short-link-title"> + {$SubChild->getAttribute('title')} + </span> + </a> + </li> + {/foreach} + </ul> + </div> + {else} + {if $Child->getAttribute('short')} + <div class="quiqqer-menu-megaMenu-children-icons-list-entry-short quiqqer-menu-megaMenu-children-icons-list-short-text"> + {$Child->getAttribute('short')} + </div> + {/if} + {/if} + </li> + {/foreach} +</ul> diff --git a/src/QUI/Menu/Mega/Icons.php b/src/QUI/Menu/Mega/Icons.php new file mode 100644 index 0000000..55eeacf --- /dev/null +++ b/src/QUI/Menu/Mega/Icons.php @@ -0,0 +1,53 @@ +<?php + +/** + * This file contains QUI\Menu\Mega\Icons + */ +namespace QUI\Menu\Mega; + +use QUI; + +/** + * Class Icons + * + * @package QUI\Menu + */ +class Icons extends AbstractChild +{ + /** + * @var null + */ + protected $children = null; + + /** + * Standard constructor. + * + * @param array $params + */ + public function __construct(array $params = array()) + { + parent::__construct($params); + + $this->addCSSClass('quiqqer-menu-megaMenu-children-icons'); + $this->addCSSFile(dirname(__FILE__) . '/Icons.css'); + } + + /** + * Return the html body + * + * @return string + * @throws QUI\Exception + */ + public function getBody() + { + $Engine = QUI::getTemplateManager()->getEngine(); + + $Engine->assign(array( + 'this' => $this, + 'children' => $this->getChildren(), + 'Site' => $this->getSite() + )); + + return $Engine->fetch(dirname(__FILE__) . '/Icons.html'); + } +} diff --git a/src/QUI/Menu/MegaMenu.php b/src/QUI/Menu/MegaMenu.php index d41560d..2ab6f8a 100644 --- a/src/QUI/Menu/MegaMenu.php +++ b/src/QUI/Menu/MegaMenu.php @@ -46,6 +46,11 @@ public function getBody() $childControl = QUI\Menu\Mega\Image::class; break; + case 'Icons': + case QUI\Menu\Mega\Icons::class: + $childControl = QUI\Menu\Mega\Icons::class; + break; + default: case 'Standard': case QUI\Menu\Mega\Standard::class: -- GitLab