Skip to content
Code-Schnipsel Gruppen Projekte
Commit 456dcab2 erstellt von Michael Danielczok's avatar Michael Danielczok
Dateien durchsuchen

feat: add project setting to activate floating nav

Übergeordneter 3c79657c
No related branches found
No related tags found
2 Merge Requests!34Update 'next-4.x' with latest changes from 'main',!33Next 3.x
Pipeline #11991 bestanden mit Phase
in 2 Minuten und 9 Sekunden
......@@ -5,4 +5,5 @@
<event on="onSmartyInit" fire="\QUI\Menu\EventHandler::onSmartyInit"/>
<event on="onAdminLoadFooter" fire="\QUI\Menu\EventHandler::onAdminLoadFooter"/>
<event on="onQuiqqerMenuIndependentClear" fire="\QUI\Menu\EventHandler::onQuiqqerMenuIndependentClear"/>
<event on="onQuiqqer::template::body::end" fire="\QUI\Menu\EventHandler::onQuiqqerTemplateBodyEnd"/>
</events>
......@@ -719,6 +719,53 @@
<de><![CDATA[Das Menü wurde erfolgreich gespeichert.]]></de>
<en><![CDATA[The menu has been saved successfully.]]></en>
</locale>
<!-- floating menu -->
<locale name="floatingMenu.settings.title">
<de><![CDATA[Schwebendes Menü]]></de>
<en><![CDATA[Floated menu]]></en>
</locale>
<locale name="floatingMenu.settings.desc">
<de><![CDATA[Ein "Schwebendes Menü" ist ein Menü, das sich über den Inhalt der Seite legt und dabei oft an einer bestimmten Position "schwebt" oder fixiert bleibt, selbst wenn man nach unten scrollt. Dieses Menü kann z.B. am Rand des Bildschirms oder in einer Ecke platziert sein und bleibt sichtbar, damit der Nutzer jederzeit schnell darauf zugreifen kann.]]></de>
<en><![CDATA[A "Floating menu" is a menu that is superimposed over the content of the page and often "floats" or remains fixed in a certain position, even when scrolling down. This menu can be placed at the edge of the screen or in a corner, for example, and remains visible so that the user can access it quickly at any time.]]></en>
</locale>
<locale name="floatingMenu.settings.menuId">
<de><![CDATA[Menu ID]]></de>
<en><![CDATA[Menu ID]]></en>
</locale>
<locale name="floatingMenu.settings.menuId.desc">
<de><![CDATA[Wenn hier ein Menü ausgewählt wird, wird es automatisch aktiviert und für die Benutzer auf der Seite sichtbar. Zuvor muss ein Menü unter <i>Einstellungen → Menü Verwaltung</i> erstellt werden. Möchte man das schwebende Menü deaktivieren, muss lediglich das ausgewählte Menü durch Klick auf den X Button entfernt werden.]]></de>
<en><![CDATA[If a menu is selected here, it is automatically activated and visible to users on the page. A menu must first be created under <i>Settings → Menu management</i>. If you want to deactivate the floating menu, simply remove the selected menu by clicking on the X button.]]></en>
</locale>
<locale name="floatingMenu.settings.showLangSwitch">
<de><![CDATA[Sprachewechsel aktivieren]]></de>
<en><![CDATA[Enable lang switch]]></en>
</locale>
<locale name="floatingMenu.settings.showLangSwitch.desc">
<de><![CDATA[Wenn das Projekt mehrsprachig ist, kann man mit dieser Option den Sprachwechsel aktivieren.]]></de>
<en><![CDATA[If the project is multilingual, you can use this option to enable language switching.]]></en>
</locale>
<locale name="floatingMenu.settings.toggleButton">
<de><![CDATA[Umschaltbutton]]></de>
<en><![CDATA[Toggle button]]></en>
</locale>
<locale name="floatingMenu.settings.toggleButton.desc">
<de><![CDATA[Der Umschaltbutton zeigt und versteckt die schwebende Navigation. Mit dieser Option kann festgelegt werden, wann er angezeigt wird oder ob er vollständig verborgen bleibt.]]></de>
<en><![CDATA[The toggle button shows and hides the floating navigation. This option allows you to specify when it is displayed or if it remains completely hidden.]]></en>
</locale>
<locale name="floatingMenu.settings.toggleButton.mobile">
<de><![CDATA[Nur mobile anzeigen]]></de>
<en><![CDATA[Show only mobile]]></en>
</locale>
<locale name="floatingMenu.settings.toggleButton.always">
<de><![CDATA[Mobile und Desktop anzeigen]]></de>
<en><![CDATA[Show on mobile and on desktop]]></en>
</locale>
<locale name="floatingMenu.settings.toggleButton.hide">
<de><![CDATA[Deaktivieren]]></de>
<en><![CDATA[Disabled]]></en>
</locale>
</groups>
<groups name="quiqqer/menu" datatype="js">
......
......@@ -31,7 +31,7 @@
<type><![CDATA[number]]></type>
<defaultvalue>1</defaultvalue>
</conf>
</section>`
</section>
<section name="mobileMenu.slideoutAdvanced.settings">
<conf name="homeLink">
<type><![CDATA[number]]></type>
......@@ -41,6 +41,19 @@
<type><![CDATA[number]]></type>
</conf>
</section>
<section name="floatingMenu.settings">
<conf name="menuId">
<type><![CDATA[number]]></type>
</conf>
<conf name="showLangSwitch">
<type><![CDATA[bool]]></type>
<defaultvalue>false</defaultvalue>
</conf>
<conf name="toggleButton">
<type><![CDATA[text]]></type>
<defaultvalue>mobile</defaultvalue>
</conf>
</section>
</config>
<window>
......@@ -176,6 +189,56 @@
</description>
</input>
</settings>
<!-- floated menu -->
<settings title="floatingMenu.settings" name="floatingMenu.settings">
<title>
<locale group="quiqqer/menu" var="floatingMenu.settings.title"/>
</title>
<text>
<locale group="quiqqer/menu" var="floatingMenu.settings.desc"/>
</text>
<input conf="floatingMenu.settings.menuId" type="text"
data-qui="package/quiqqer/menu/bin/Controls/Independent/Input"
>
<text>
<locale group="quiqqer/menu" var="floatingMenu.settings.menuId"/>
</text>
<description>
<locale group="quiqqer/menu" var="floatingMenu.settings.menuId.desc"/>
</description>
</input>
<input conf="floatingMenu.settings.showLangSwitch" type="checkbox">
<text>
<locale group="quiqqer/menu" var="floatingMenu.settings.showLangSwitch"/>
</text>
<description>
<locale group="quiqqer/menu" var="floatingMenu.settings.showLangSwitch.desc"/>
</description>
</input>
<!-- <select conf="floatingMenu.settings.toggleButton">-->
<!-- <text>-->
<!-- <locale group="quiqqer/menu" var="floatingMenu.settings.toggleButton"/>-->
<!-- </text>-->
<!-- <description>-->
<!-- <locale group="quiqqer/menu" var="floatingMenu.settings.toggleButton.desc"/>-->
<!-- </description>-->
<!-- <option value="mobile">-->
<!-- <locale group="quiqqer/menu" var="floatingMenu.settings.toggleButton.mobile"/>-->
<!-- </option>-->
<!-- <option value="always">-->
<!-- <locale group="quiqqer/menu" var="floatingMenu.settings.toggleButton.always"/>-->
<!-- </option>-->
<!-- <option value="hide">-->
<!-- <locale group="quiqqer/menu" var="floatingMenu.settings.toggleButton.hide"/>-->
<!-- </option>-->
<!-- </select>-->
</settings>
</category>
</categories>
......
......@@ -3,9 +3,11 @@
namespace QUI\Menu;
use QUI;
use QUI\Config;
use QUI\Interfaces\Projects\Site;
use Smarty;
use SmartyException;
use QUI\Smarty\Collector;
/**
* Class EventHandler
......@@ -14,6 +16,11 @@
*/
class EventHandler
{
/**
* Cache Manager Configs
*/
public static ?Config $Config = null;
/**
* @return string
*/
......@@ -76,4 +83,32 @@ public static function onQuiqqerMenuIndependentClear($menuId): void
{
QUI\Cache\Manager::clear(self::menuCacheName());
}
/**
* @param Collector $Collector
* @param QUI\Template $Template
* @return void
*/
public static function onQuiqqerTemplateBodyEnd(Collector $Collector, QUI\Template $Template): void
{
$Projekt = $Template->getAttribute('Project');
$menuId = intval($Projekt->getConfig('floatingMenu.settings.menuId'));
if (!$menuId) {
return;
}
$showLandSwitch = $Projekt->getConfig('floatingMenu.settings.showLangSwitch');
$toggleButton = $Projekt->getConfig('floatingMenu.settings.toggleButton');
// todo - showToggleButton works not correctly in FloatedNav
$toggleButton = 'mobile';
$FloatingMenu = new QUI\Menu\Controls\FloatedNav([
'menuId' => $menuId,
'showLangSwitch' => $showLandSwitch,
'showToggleButton' => $toggleButton
]);
$Collector->append($FloatingMenu->create());
}
}
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren