feat: hotel, region, city, country and concept plugins, FAQ, team, maps and price table on TYPO3 13

Controllers, templates and FlexForms restored from a46918d, ported with
Rector/Fractor and by hand (settings and rows missing from older
records read as empty, as PHP 7.4 did). They stay list_type plugins for
now. The pages match TYPO3 10 apart from data that changed since (dates,
prices, edited texts).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
frommeandClaude Opus 5.5 committed 2026-10-24 12:27:26 +02:00
1 parent 53faeccb70
commit a042eff41d
48 files changed
+3100 -75

No files matched your search

@@ -0,0 +1,49 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers"
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers">
<f:layout name="Default"/>
<f:section name="Main">
<div class="container">
<f:for each="{members -> v:iterator.chunk(count: 4)}" as="group">
<div class="grid grid-cols-4 gap-8 mb-8">
<f:for each="{group}" as="member">
<f:render section="Member" arguments="{member: member}"/>
</f:for>
</div>
</f:for>
</div>
</f:section>
<f:section name="Member">
<div class="col-span-4 sm:col-span-2 md:col-span-1">
<a href="{f:uri.action(
pageUid: settings.teamShowPID,
action: 'show',
extensionName: 'epproducts',
pluginName: 'teammembers',
arguments: '{member: member}'
)}">
<f:if condition="{member.image}">
<f:image image="{member.image}"
loading="lazy"
class="block w-full h-auto rounded-full"
width="400"
height="400c"
alt="{member.name}"/>
</f:if>
<div class="text-center text-zinc-800 pt-2">
<span class="block font-bold text-xl">
{member.name}
</span>
<span class="block">
{member.tasks -> f:format.nl2br()}
</span>
</div>
</a>
</div>
</f:section>
</html>
@@ -0,0 +1,48 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:layout name="Default"/>
<f:section name="Main">
<div class="container">
<div class="grid grid-cols-3 gap-8">
<div class="col-span-3 md:col-span-1 px-8">
<f:if condition="{member.image}">
<f:image class="rounded-full" image="{member.image}" width="400" height="400c" title="{member.name}" alt="{member.name}"/>
</f:if>
</div>
<div class="col-span-3 md:col-span-2">
<f:render partial="Header/Header" arguments="{header: member.name, subheader: member.tasks, layout: 8}" />
<div data-rte-content>
{member.description -> f:format.html()}
</div>
<f:if condition="{member.email} || {member.phone}">
<div class="mb-8 flex flex-col space-y-2">
<f:if condition="{member.email}">
<f:link.email class="flex items-center space-x-2" email="{member.email}">
<svg class="w-6 h-6 text-ep-primary">
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-email"></use>
</svg>
<span>{member.email}</span>
</f:link.email>
</f:if>
<f:if condition="{member.phone}">
<a class="flex items-center space-x-2" href="tel:{member.phone -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}" rel="nofollow">
<svg class="w-6 h-6 text-ep-primary">
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-phone"></use>
</svg>
<span>{member.phone}</span>
</a>
</f:if>
</div>
</f:if>
<a href="javascript:history.back()" class="button bg-button">
zurück
</a>
</div>
</div>
</div>
</f:section>
</html>