Files
typo3-13/packages/ep_theme/Resources/Private/Partials/Mainnav.html
T
frommeandClaude Opus 5.5 a598339f67 feat: boot TYPO3 13 with site configs and the theme build
- Site configs for the seven live sites from EP/website, Development
  base variants on *-ep13.ddev.site (DDEV additional_hostnames)
- Webpack Encore build moved to the root, output in
  packages/ep_theme/Resources/Public, public path /_assets/<hash>
- Search UI removed from the kept layouts and partials, as the static
  export already does
- Daytrip room selection and the contingent chain removed (contingent
  import is not ported; no daytrip product has current contingents)
- f:uri.action is final in v13: Uri\AjaxViewHelper invokes it
- Remaining QueryBuilder::execute() and array logicalAnd() calls,
  addRootLineFields, TSFE getData, legacy typo3conf/ext template path
- Rector skips the plugin-to-CType rules; plugins stay list_type

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 14:25:01 +02:00

136 lines
7.3 KiB
HTML

<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers"
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers">
<f:section name="Main">
<div class="fixed top-0 left-0 inset-x-0 z-40 lg:relative lg:z-50 lg:container bg-white shadow-md lg:shadow-none">
<div class="flex items-center hover-hover:lg:items-end justify-between px-4 py-2 lg:px-0 lg:pt-4 lg:pb-0">
<f:link.typolink parameter="{f:if(condition: settings.logoLink, then: settings.logoLink, else: settings.defaultHomeUid)}"
class="block lg:pb-4"
title="zur Startseite">
<f:image src="{settings.logoImage}"
class="block w-auto {ep:themeClasses(classes: '{ep: \'h-10 lg:h-12\', sbw: \'h-14 lg:h-24\', snz: \'h-14 lg:h-24\', suz: \'h-14 lg:h-24\', uch: \'h-12 lg:h-20\', ser: \'h-10 lg:h-12\'}', key: settings.themekey)}"
alt="Bildmarke"/>
</f:link.typolink>
<div class="hidden hover-hover:lg:block">
<f:render section="FirstLevel" arguments="{_all}"/>
</div>
<div class="flex hover-hover:lg:hidden items-center space-x-4">
<button type="button"
class="focus:outline-none text-zinc-800"
aria-label="Navigation öffnen"
data-controller="overlay-toggle"
data-overlay-toggle-id-value="mobilenav"
data-action="overlay-toggle#invokeToggle">
{ep:icon(icon: 'menu', class: 'w-8 h-8 text-zinc-800')}
</button>
</div>
</div>
</div>
</f:section>
<f:section name="FirstLevel">
<nav role="navigation" aria-label="Hauptnavigation">
<ul class="m-0 p-0 list-none flex items-center justify-end space-x-4"
role="menubar" >
<f:for each="{mainnav}" as="topitem">
<li class="group pb-4" role="none" data-controller="nav" data-nav-hidden-class="invisible opacity-0">
<f:if condition="{topitem.children}">
<f:then>
<a href="{f:uri.typolink(parameter: topitem.data.uid)}"
role="menuitem"
id="mainnav-{topitem.data.uid}"
aria-haspopup="true"
aria-expanded="false"
data-nav-target="button"
data-action="keydown.space->nav#toggle"
class="text-zinc-800 uppercase lg:text-lg font-bold flex items-center">
<span>{topitem.title}</span>
{ep:icon(icon: 'chevron-down', class: 'ml-1 w-4 h-4 group-hover:rotate-180')}
</a>
<f:render section="SecondLevel" arguments="{topitem: topitem}"/>
</f:then>
<f:else>
<a href="{topitem.link}"{f:if(condition: '{topitem.doktype} == 3', then: ' target="_blank"')}
role="menuitem"
class="block text-zinc-800 uppercase lg:text-lg font-bold">
{topitem.title}
</a>
</f:else>
</f:if>
</li>
</f:for>
</ul>
</nav>
</f:section>
<f:section name="SecondLevel">
<div class="absolute top-100 left-0 inset-x-0 pt-4 z-50 invisible opacity-0 group-hover:visible group-hover:opacity-100 transition-opacity duration-300 ease-in-out"
aria-hidden="true"
aria-labelledby="mainnav-{topitem.data.uid}"
data-nav-target="subnav">
<div class="bg-white grid grid-cols-3 lg:grid-cols-4 gap-8 p-4 shadow-lg rounded">
<f:for each="{topitem.children}" as="subitem">
<ul class="m-0 p-0 list-none" role="menu">
<li role="none">
<f:if condition="{subitem.doktype} == 3">
<f:then>
<a href="{subitem.link}" target="_blank" role="menuitem">
<f:if condition="{subitem.data.tx_eptheme_context_country_code}">
{ep:icon(icon: 'flag-{subitem.data.tx_eptheme_context_country_code -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6')}
</f:if>
<span class="text-zinc-800 uppercase lg:text-lg">
{subitem.title}
</span>
</a>
</f:then>
<f:else>
<a href="{f:uri.typolink(parameter: subitem.data.uid)}"
role="menuitem"
class="flex items-center space-x-2 underlined">
<f:if condition="{subitem.data.tx_eptheme_context_country_code}">
{ep:icon(icon: 'flag-{subitem.data.tx_eptheme_context_country_code -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6')}
</f:if>
<span class="text-zinc-800 uppercase lg:text-lg">
{subitem.title}
</span>
</a>
</f:else>
</f:if>
</li>
<f:render section="ThirdLevel" arguments="{subitem: subitem}"/>
</ul>
</f:for>
</div>
</div>
</f:section>
<f:section name="ThirdLevel">
<f:for each="{subitem.children}" as="subsubitem">
<f:if condition="{subsubitem.doktype} == 3">
<f:then>
<li role="none">
<a href="{subsubitem.link}"
class="text-zinc-800 text-lg"
target="_blank"
role="menuitem">
{subsubitem.title}
</a>
</li>
</f:then>
<f:else>
<li role="none">
<a href="{f:uri.typolink(parameter: subsubitem.data.uid)}"
class="text-zinc-800 text-lg"
role="menuitem">
{subsubitem.title}
</a>
</li>
</f:else>
</f:if>
</f:for>
</f:section>
</html>