Implement and apply icon viewhelper
This commit is contained in:
@@ -4,49 +4,33 @@ namespace EP\EpTheme\ViewHelpers;
|
||||
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Extbase\Service\ImageService;
|
||||
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
|
||||
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
|
||||
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
|
||||
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
|
||||
|
||||
class IconViewHelper extends AbstractViewHelper
|
||||
class IconViewHelper extends AbstractTagBasedViewHelper
|
||||
{
|
||||
use CompileWithRenderStatic;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
* @var string
|
||||
*/
|
||||
protected $escapeOutput = false;
|
||||
protected $tagName = 'svg';
|
||||
|
||||
public function initializeArguments()
|
||||
{
|
||||
parent::initializeArguments();
|
||||
|
||||
$this->registerArgument('icon', 'string', 'Icon name');
|
||||
$this->registerArgument('class', 'string', 'CSS classes');
|
||||
$this->registerUniversalTagAttributes();
|
||||
$this->registerArgument('icon', 'string', 'Icon name', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $arguments
|
||||
* @param \Closure $renderChildrenClosure
|
||||
* @param RenderingContextInterface $renderingContext
|
||||
* @return mixed
|
||||
*/
|
||||
public static function renderStatic(
|
||||
array $arguments,
|
||||
\Closure $renderChildrenClosure,
|
||||
RenderingContextInterface $renderingContext
|
||||
)
|
||||
public function render(): string
|
||||
{
|
||||
$imageService = self::getImageService();
|
||||
$sprite = $imageService->getImage('EXT:ep_theme/Resources/Public/images/icons_sprite.svg', null, false);
|
||||
$imageUrl = $sprite->getPublicUrl();
|
||||
|
||||
return sprintf(
|
||||
'<svg class="%s"><use href="%s#icon-%s"></use></svg>',
|
||||
$arguments['class'],
|
||||
$imageUrl,
|
||||
$arguments['icon']
|
||||
);
|
||||
$content = sprintf('<use href="%s#icon-%s"></use>', $imageUrl, $this->arguments['icon']);
|
||||
$this->tag->setContent($content);
|
||||
|
||||
return $this->tag->render();
|
||||
}
|
||||
|
||||
protected static function getImageService()
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
<f:section name="Teaser">
|
||||
<a href="{f:uri.typolink(parameter: city.detailPage)}" class="flex flex-col" title="{city.name}">
|
||||
<div class="relative">
|
||||
<svg class="w-8 h-6 absolute top-0 left-0">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-{city.country.code -> f:format.case(mode: 'lower')}"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'flag-{city.country.code -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6 absolute top-0 left-0')}
|
||||
<f:alias map="{teaserImage: city.teaserImage, defaultImage: city.images.0}">
|
||||
<f:if condition="{teaserImage}">
|
||||
<f:then>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
|
||||
<div class="contact-bar">
|
||||
@@ -18,9 +19,7 @@
|
||||
class="contact-bar__item"
|
||||
title="Telefonische Beratung"
|
||||
rel="nofollow">
|
||||
<svg class="contact-bar__icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-phone"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'phone', class: 'contact-bar__icon')}
|
||||
<div class="hidden md:block">
|
||||
{settings.phoneNumber}
|
||||
</div>
|
||||
@@ -28,9 +27,7 @@
|
||||
<f:link.email email="{settings.contactFormToEmail}"
|
||||
class="contact-bar__item"
|
||||
title="E-Mail">
|
||||
<svg class="contact-bar__icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-email"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'email', class: 'contact-bar__icon')}
|
||||
<div class="contact-bar__label">
|
||||
{settings.contactFormToEmail}
|
||||
</div>
|
||||
@@ -40,9 +37,7 @@
|
||||
title="Whatsapp"
|
||||
target="_blank"
|
||||
rel="nofollow">
|
||||
<svg class="contact-bar__icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-whatsapp"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'whatsapp', class: 'contact-bar__icon')}
|
||||
<div class="contact-bar__label">
|
||||
{settings.whatsApp}
|
||||
</div>
|
||||
@@ -51,9 +46,7 @@
|
||||
class="contact-bar__item"
|
||||
target="_blank"
|
||||
rel="nofollow">
|
||||
<svg class="contact-bar__icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-facebook"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'facebook', class: 'contact-bar__icon')}
|
||||
<div class="contact-bar__label">
|
||||
Facebook
|
||||
</div>
|
||||
@@ -62,9 +55,7 @@
|
||||
class="contact-bar__item"
|
||||
target="_blank"
|
||||
rel="nofollow">
|
||||
<svg class="contact-bar__icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-instagram"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'instagram', class: 'contact-bar__icon')}
|
||||
<div class="contact-bar__label">
|
||||
Instagram
|
||||
</div>
|
||||
@@ -73,18 +64,14 @@
|
||||
class="contact-bar__item"
|
||||
target="_blank"
|
||||
rel="nofollow">
|
||||
<svg class="contact-bar__icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-youtube"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'youtube', class: 'contact-bar__icon')}
|
||||
<div class="contact-bar__label">
|
||||
Youtube
|
||||
</div>
|
||||
</a>
|
||||
<f:if condition="{settings.englishPageUid}">
|
||||
<f:link.typolink parameter="{settings.englishPageUid}" title="English" class="contact-bar__item">
|
||||
<svg class="contact-bar__icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-gb"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'flag-gb', class: 'contact-bar__icon')}
|
||||
<div class="contact-bar__label">
|
||||
English
|
||||
</div>
|
||||
@@ -92,9 +79,7 @@
|
||||
</f:if>
|
||||
<f:if condition="{settings.germanPageUid}">
|
||||
<f:link.typolink parameter="{settings.germanPageUid}" title="English" class="contact-bar__item">
|
||||
<svg class="contact-bar__icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-de"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'flag-de', class: 'contact-bar__icon')}
|
||||
<div class="contact-bar__label">
|
||||
Deutsch
|
||||
</div>
|
||||
|
||||
@@ -24,9 +24,7 @@
|
||||
<a href="tel:{settings.phoneNumber -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}"
|
||||
rel="nofollow"
|
||||
class="absolute bottom-0 left-1/2 transform -translate-x-1/2 -mb-8 rounded-full py-4 px-6 flex items-center space-x-2 {ep:themeClasses(classes: '{ep: \'bg-ep-secondary\', sbw: \'bg-sbw-secondary\', snz: \'bg-snz-secondary\', uch: \'bg-uch-secondary\'}', key: settings.themekey)}">
|
||||
<svg class="w-10 h-10 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-phone"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'phone', class: 'w-10 h-10 text-white')}
|
||||
<div class="text-center text-white">
|
||||
<span class="block whitespace-nowrap">
|
||||
Ihr habt Fragen?
|
||||
|
||||
@@ -25,9 +25,7 @@
|
||||
<a href="tel:{settings.phoneNumber -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}"
|
||||
rel="nofollow"
|
||||
class="absolute bottom-0 left-1/2 transform -translate-x-1/2 -mb-8 rounded-full py-4 px-6 flex items-center space-x-2 {ep:themeClasses(classes: '{ep: \'bg-ep-secondary\', sbw: \'bg-sbw-secondary\', snz: \'bg-snz-secondary\', uch: \'bg-uch-secondary\'}', key: settings.themekey)}">
|
||||
<svg class="w-10 h-10 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-phone"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'phone', class: 'w-10 h-10 text-white')}
|
||||
<div class="text-center text-white">
|
||||
<span class="block whitespace-nowrap">
|
||||
Ihr habt Fragen?
|
||||
|
||||
@@ -14,9 +14,7 @@
|
||||
<ul class="list-none inline-flex lg:flex flex-col space-y-1 lg:space-y-2">
|
||||
<f:for each="{listItems -> v:iterator.explode(glue: ';')}" as="listItem">
|
||||
<li class="flex items-center space-x-2 text-white">
|
||||
<svg class="w-6 h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-check"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'check', class: 'w-6 h-6')}
|
||||
<span>{listItem -> f:format.raw()}</span>
|
||||
</li>
|
||||
</f:for>
|
||||
|
||||
@@ -1,24 +1,29 @@
|
||||
<f:if condition="{facts -> f:count()} > 0">
|
||||
<div class="bg-gray-50 p-4 mb-4">
|
||||
<h2 class="text-base font-bold mb-1">
|
||||
<f:if condition="{title}">
|
||||
<f:then>
|
||||
Skiurlaub {title} Facts
|
||||
</f:then>
|
||||
<f:else>
|
||||
Facts
|
||||
</f:else>
|
||||
</f:if>
|
||||
</h2>
|
||||
<ul class="list-none m-0 p-0">
|
||||
<f:for each="{facts}" as="fact">
|
||||
<li class="flex items-center space-x-2">
|
||||
<svg class="w-6 h-6 text-ep-primary-light">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-check"></use>
|
||||
</svg>
|
||||
<span>{fact.name}</span>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
<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:if condition="{facts -> f:count()} > 0">
|
||||
<div class="bg-gray-50 p-4 mb-4">
|
||||
<h2 class="text-base font-bold mb-1">
|
||||
<f:if condition="{title}">
|
||||
<f:then>
|
||||
Skiurlaub {title} Facts
|
||||
</f:then>
|
||||
<f:else>
|
||||
Facts
|
||||
</f:else>
|
||||
</f:if>
|
||||
</h2>
|
||||
<ul class="list-none m-0 p-0">
|
||||
<f:for each="{facts}" as="fact">
|
||||
<li class="flex items-center space-x-2">
|
||||
{ep:icon(icon: 'check', class: 'w-6 h-6 text-ep-primary-light')}
|
||||
<span>{fact.name}</span>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -1,58 +1,58 @@
|
||||
<f:if condition="{faqs}">
|
||||
<div class="bg-winter my-2">
|
||||
<div class="bg-ep-primary-80 sbw:bg-sbw-primary-80 uch:bg-uch-primary-80">
|
||||
<f:render partial="Disrupter/Outlines" section="Top2" arguments="{classes: 'hidden md:block text-white'}"/>
|
||||
<div class="container"
|
||||
data-controller="faq">
|
||||
<span class="headline--3 text-white uppercase mb-4">
|
||||
Häufig gestellte Fragen
|
||||
</span>
|
||||
<f:if condition="{filter}">
|
||||
<div class="mb-4 pr-2 w-80 border-b border-r border-white flex items-center justify-between">
|
||||
<input type="text"
|
||||
data-action="faq#filter"
|
||||
class="bg-transparent border-0 uppercase ring-0 focus:ring-0 placeholder-white text-white"
|
||||
placeholder="Suchbegriff">
|
||||
<svg class="w-6 h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-search"></use>
|
||||
</svg>
|
||||
</div>
|
||||
</f:if>
|
||||
<f:for each="{faqs}" as="faq" iteration="iteration">
|
||||
<div class="p-4 rounded mb-2"
|
||||
data-controller="collapse"
|
||||
data-collapse-collapsed-value="{f:if(condition: iteration.isFirst, then: 'false', else: 'true')}"
|
||||
data-faq-target="entry">
|
||||
<button type="button"
|
||||
class="uppercase text-lg text-white flex items-center space-x-4"
|
||||
data-action="collapse#toggle">
|
||||
<svg class="w-4 h-4 text-white transform transition duration-200 ease-in-out"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-chevron-right"></use>
|
||||
</svg>
|
||||
<span>
|
||||
{faq.question}
|
||||
</span>
|
||||
</button>
|
||||
<div class="text-white pt-2 transition-transform ease-out overflow-hidden origin-top transform hidden"
|
||||
data-collapse-target="container"
|
||||
data-rte-content>
|
||||
{faq.answer -> f:format.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:if condition="{faqs}">
|
||||
<div class="bg-winter my-2">
|
||||
<div class="bg-ep-primary-80 sbw:bg-sbw-primary-80 uch:bg-uch-primary-80">
|
||||
<f:render partial="Disrupter/Outlines" section="Top2" arguments="{classes: 'hidden md:block text-white'}"/>
|
||||
<div class="container"
|
||||
data-controller="faq">
|
||||
<span class="headline--3 text-white uppercase mb-4">
|
||||
Häufig gestellte Fragen
|
||||
</span>
|
||||
<f:if condition="{filter}">
|
||||
<div class="mb-4 pr-2 w-80 border-b border-r border-white flex items-center justify-between">
|
||||
<input type="text"
|
||||
data-action="faq#filter"
|
||||
class="bg-transparent border-0 uppercase ring-0 focus:ring-0 placeholder-white text-white"
|
||||
placeholder="Suchbegriff">
|
||||
{ep:icon(icon: 'search', class: 'w-6 h-6 text-white')}
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
<f:if condition="{settings.infoPageUid}">
|
||||
<div class="flex items-center justify-end space-x-2 text-sm text-white">
|
||||
<svg class="w-4 h-4">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-info-circle"></use>
|
||||
</svg>
|
||||
<a href="{f:uri.typolink(parameter: settings.infoPageUid)}">
|
||||
Weitere Reiseinfos findet ihr <span class="underline">hier</span>
|
||||
</a>
|
||||
</div>
|
||||
</f:if>
|
||||
</f:if>
|
||||
<f:for each="{faqs}" as="faq" iteration="iteration">
|
||||
<div class="p-4 rounded mb-2"
|
||||
data-controller="collapse"
|
||||
data-collapse-collapsed-value="{f:if(condition: iteration.isFirst, then: 'false', else: 'true')}"
|
||||
data-faq-target="entry">
|
||||
<button type="button"
|
||||
class="uppercase text-lg text-white flex items-center space-x-4"
|
||||
data-action="collapse#toggle">
|
||||
{ep:icon(icon: 'chevron-right', class: 'w-4 h-4 text-white transform transition-transform duration-200 ease-in-out', data: '{collapse-target: \'icon\'}')}
|
||||
<span>
|
||||
{faq.question}
|
||||
</span>
|
||||
</button>
|
||||
<div class="text-white pt-2 transition-transform ease-out overflow-hidden origin-top transform hidden"
|
||||
data-collapse-target="container"
|
||||
data-rte-content>
|
||||
{faq.answer -> f:format.html()}
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
<f:if condition="{settings.infoPageUid}">
|
||||
<div class="flex items-center justify-end space-x-2 text-sm text-white">
|
||||
{ep:icon(icon: 'info-circle', class: 'w-4 h-4')}
|
||||
<a href="{f:uri.typolink(parameter: settings.infoPageUid)}">
|
||||
Weitere Reiseinfos findet ihr <span class="underline">hier</span>
|
||||
</a>
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
<f:render partial="Disrupter/Outlines" section="Bottom2" arguments="{classes: 'hidden md:block transform translate-y-2 text-white'}"/>
|
||||
</div>
|
||||
<f:render partial="Disrupter/Outlines" section="Bottom2" arguments="{classes: 'hidden md:block transform translate-y-2 text-white'}"/>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
</f:if>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -36,9 +36,7 @@
|
||||
<div class="grid grid-cols-2 gap-16">
|
||||
<div class="flex">
|
||||
<div class="flex items-start space-x-2 pr-4">
|
||||
<svg class="w-12 h-12 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-phone"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'phone', class: 'w-12 h-12 text-white')}
|
||||
<div class="text-white">
|
||||
<span class="block uppercase text-xl">
|
||||
Service-Telefon
|
||||
@@ -62,9 +60,7 @@
|
||||
</div>
|
||||
<div class="flex">
|
||||
<div class="flex items-start space-x-2 pr-4">
|
||||
<svg class="w-12 h-12 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-whatsapp"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'whatsapp', class: 'w-12 h-12 text-white')}
|
||||
<div class="text-white">
|
||||
<span class="block uppercase text-xl">
|
||||
WhatsApp
|
||||
@@ -131,25 +127,19 @@
|
||||
title="E&P bei Facebook"
|
||||
rel="nofollow"
|
||||
target="_blank">
|
||||
<svg class="w-6 h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-facebook"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'facebook', class: 'w-6 h-6 text-white')}
|
||||
</a>
|
||||
<a href="{settings.instagramUrl}"
|
||||
title="E&P bei Instagram"
|
||||
rel="nofollow"
|
||||
target="_blank">
|
||||
<svg class="w-6 h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-instagram"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'instagram', class: 'w-6 h-6 text-white')}
|
||||
</a>
|
||||
<a href="{settings.youtubeUrl}"
|
||||
title="E&P bei YouTube"
|
||||
rel="nofollow"
|
||||
target="_blank">
|
||||
<svg class="w-6 h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-youtube"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'youtube', class: 'w-6 h-6 text-white')}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -174,10 +164,8 @@
|
||||
<button type="button"
|
||||
data-controller="scroll-top"
|
||||
data-action="scroll-top#scroll"
|
||||
class="hidden fixed bottom-0 right-0 mb-16 md:mb-8 mr-4 md:mr-8 z-10 h-10 w-10 flex items-center justify-center rounded bg-ep-secondary-80 ser:bg-ser-secondary">
|
||||
<svg class="w-8 h-8 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-chevron-up"></use>
|
||||
</svg>
|
||||
class="hidden fixed bottom-0 right-0 mb-16 md:mb-8 mr-4 md:mr-8 z-10 h-10 w-10 flex items-center justify-center rounded bg-ep-secondary-80">
|
||||
{ep:icon(icon: 'chevron-up', class: 'w-8 h-8 text-white')}
|
||||
</button>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -36,16 +36,12 @@
|
||||
class="opacity-50"
|
||||
data-action="teasergrid#grid"
|
||||
data-teasergrid-target="button">
|
||||
<svg class="w-5 h-5 text-ep-primary">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-teaser-grid"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'teaser-grid', class: 'w-5 h-5 text-ep-primary')}
|
||||
</button>
|
||||
<button type="button"
|
||||
data-action="teasergrid#block"
|
||||
data-teasergrid-target="button">
|
||||
<svg class="w-5 h-5 text-ep-primary">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-teaser-single"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'teaser-single', class: 'w-5 h-5 text-ep-primary')}
|
||||
</button>
|
||||
</div>
|
||||
<div class="grid grid-cols-2 xl:grid-cols-3 gap-4 md:gap-8"
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
<f:section name="Teaser">
|
||||
<a href="{f:uri.typolink(parameter: hotel.detailPage)}" title="{hotel.name}" class="flex flex-col">
|
||||
<div class="relative">
|
||||
<svg class="w-8 h-6 absolute top-0 left-0">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-{hotel.country.code -> f:format.case(mode: 'lower')}"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'flag-{hotel.country.code -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6 absolute top-0 left-0')}
|
||||
<f:if condition="{hotel.images.original.0}">
|
||||
<f:then>
|
||||
<ep:lazyLoadImage image="{hotel.images.original.0}"
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
<div class="relative mb-4"
|
||||
data-controller="lightbox">
|
||||
<div class="absolute top-0 right-0 mt-4 mr-4 flex space-x-2 text-white">
|
||||
<svg class="w-8 h-8 md:w-10 h-10">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-search"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'search', class: 'w-8 h-8 md:w-10 md:h-10')}
|
||||
<span class="text-4xl">
|
||||
{images -> f:count()}
|
||||
</span>
|
||||
|
||||
@@ -24,9 +24,7 @@
|
||||
data-controller="overlay-toggle"
|
||||
data-overlay-toggle-id-value="mobile-search"
|
||||
data-action="overlay-toggle#invokeToggle">
|
||||
<svg class="w-8 h-8 text-gray-800">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-search"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'search', class: 'w-8 h-8 text-gray-800')}
|
||||
</button>
|
||||
</f:else>
|
||||
</f:if>
|
||||
@@ -35,9 +33,7 @@
|
||||
data-controller="overlay-toggle"
|
||||
data-overlay-toggle-id-value="mobilenav"
|
||||
data-action="overlay-toggle#invokeToggle">
|
||||
<svg class="w-8 h-8 text-gray-800">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-menu"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'menu', class: 'w-8 h-8 text-gray-800')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -55,9 +51,7 @@
|
||||
class="block text-gray-800 uppercase lg:text-lg font-bold flex items-center"
|
||||
title="{topitem.title}">
|
||||
<span>{topitem.title}</span>
|
||||
<svg class="ml-1 w-4 h-4 transform group-hover:rotate-180">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-chevron-down"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'chevron-down', class: 'ml-1 w-4 h-4 transform group-hover:rotate-180')}
|
||||
</a>
|
||||
<f:render section="SecondLevel" arguments="{topitem: topitem}"/>
|
||||
</f:then>
|
||||
@@ -79,16 +73,12 @@
|
||||
<button type="button"
|
||||
data-controller="searchbar-toggle"
|
||||
data-action="searchbar-toggle#toggle">
|
||||
<svg class="w-6 h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-search"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'search', class: 'w-6 h-6')}
|
||||
</button>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:link.typolink parameter="{settings.defaultSearchPageUid}">
|
||||
<svg class="w-6 h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-search"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'search', class: 'w-6 h-6')}
|
||||
</f:link.typolink>
|
||||
</f:else>
|
||||
</f:if>
|
||||
@@ -109,9 +99,7 @@
|
||||
<f:then>
|
||||
<a href="{subitem.link}" target="_blank" title="{subitem.title}">
|
||||
<f:if condition="{subitem.data.tx_eptheme_context_country_code}">
|
||||
<svg class="block w-8 h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-{subitem.data.tx_eptheme_context_country_code -> f:format.case(mode: 'lower')}"></use>
|
||||
</svg>
|
||||
{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-gray-800 uppercase lg:text-lg">
|
||||
{subitem.title}
|
||||
@@ -123,9 +111,7 @@
|
||||
class="flex items-center space-x-2 underlined"
|
||||
title="{subitem.title}">
|
||||
<f:if condition="{subitem.data.tx_eptheme_context_country_code}">
|
||||
<svg class="block w-8 h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-{subitem.data.tx_eptheme_context_country_code -> f:format.case(mode: 'lower')}"></use>
|
||||
</svg>
|
||||
{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-gray-800 uppercase lg:text-lg">
|
||||
{subitem.title}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
|
||||
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
|
||||
<f:section name="Main">
|
||||
@@ -23,18 +24,14 @@
|
||||
data-controller="overlay-toggle"
|
||||
data-overlay-toggle-id-value="search"
|
||||
data-action="overlay-toggle#invokeToggle">
|
||||
<svg class="w-8 h-8 text-gray-800">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-search"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'search', class: 'w-8 h-8 text-gray-800')}
|
||||
</button>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<button type="button"
|
||||
class="focus:outline-none"
|
||||
data-action="overlay-toggle#invokeToggle">
|
||||
<svg class="w-8 h-8">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-close"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'close', class: 'w-8 h-8')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -56,9 +53,7 @@
|
||||
class="button button--primary flex items-center space-x-2"
|
||||
title="Anrufen"
|
||||
rel="nofollow">
|
||||
<svg class="w-6 h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-phone"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'phone', class: 'w-6 h-6 text-white')}
|
||||
<span class="hidden sm:block">
|
||||
Anrufen
|
||||
</span>
|
||||
@@ -68,9 +63,7 @@
|
||||
title="WhatsApp"
|
||||
rel="nofollow"
|
||||
target="_blank">
|
||||
<svg class="w-6 h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-whatsapp"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'whatsapp', class: 'w-6 h-6 text-white')}
|
||||
<span class="hidden sm:block">
|
||||
Whatsapp
|
||||
</span>
|
||||
@@ -79,9 +72,7 @@
|
||||
<a href="{f:uri.typolink(parameter: settings.faqPageUid)}"
|
||||
class="button button--primary flex items-center space-x-2"
|
||||
title="FAQ">
|
||||
<svg class="w-6 h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-faq"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'faq', class: 'w-6 h-6 text-white')}
|
||||
<span class="hidden sm:block">
|
||||
FAQ
|
||||
</span>
|
||||
@@ -109,9 +100,7 @@
|
||||
<button type="button"
|
||||
class="focus:outline-none bg-ep-primary-dark p-1"
|
||||
data-action="collapse#toggle">
|
||||
<svg class="h-6 w-6 transform text-white" data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-chevron-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'chevron-right', class: 'w-6 h-6 transform text-white', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
</div>
|
||||
<div data-collapse-target="container" class="bg-ep-primary-dark pr-4">
|
||||
@@ -150,9 +139,7 @@
|
||||
<button type="button"
|
||||
class="focus:outline-none bg-ep-primary p-1"
|
||||
data-action="collapse#toggle">
|
||||
<svg class="h-6 w-6 transform text-white" data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-chevron-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'chevron-right', class: 'w-6 h-6 transform text-white', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
</div>
|
||||
<div data-collapse-target="container">
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers"
|
||||
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers">
|
||||
|
||||
<f:if condition="{pricetable -> f:count()} == 0">
|
||||
<f:then>
|
||||
@@ -62,18 +63,14 @@
|
||||
data-pricetable-target="busIcon"
|
||||
data-bus-included="{row.busIncluded}"
|
||||
data-bus-price="{row.busPrice}">
|
||||
<svg class="w-4 h-4 md:w-5 md:h-5">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-bus"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'bus', class: 'w-4 h-4 md:w-5 md:h-5')}
|
||||
</span>
|
||||
</f:if>
|
||||
<f:if condition="{row.skipassIncluded}">
|
||||
<span data-cooltipz-dir="top"
|
||||
aria-label="Skipass"
|
||||
role="tooltip">
|
||||
<svg class="w-4 h-4 md:w-5 md:h-5">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-tag"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'tag', class: 'w-4 h-4 md:w-5 md:h-5')}
|
||||
</span>
|
||||
</f:if>
|
||||
</td>
|
||||
@@ -86,9 +83,7 @@
|
||||
data-cooltipz-dir="top"
|
||||
aria-label="Alle Zusatzleistungen anzeigen"
|
||||
role="tooltip">
|
||||
<svg class="w-4 h-4 md:w-5 md:h-5">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-plus-circle"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'plus-circle', class: 'w-4 h-4 md:w-5 md:h-5')}
|
||||
</button>
|
||||
</f:if>
|
||||
</td>
|
||||
@@ -129,9 +124,7 @@
|
||||
<button type="button"
|
||||
class="inline-block"
|
||||
data-action="modal#close">
|
||||
<svg class="w-8 h-8">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-close"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'close', class: 'w-8 h-8')}
|
||||
</button>
|
||||
</div>
|
||||
<div class="h-128 p-4 overflow-y-scroll bg-white rounded-b">
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers"
|
||||
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers">
|
||||
|
||||
<f:alias map="{headerImage: product.headerImages.0, defaultImage: product.images.0}">
|
||||
<f:if condition="{headerImage}">
|
||||
@@ -30,22 +31,16 @@
|
||||
{product.region.name}
|
||||
</span>
|
||||
<div class="flex items-center space-x-4 mt-4">
|
||||
<svg class="w-8 h-6 md:w-10 md:h-8">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-{product.country.code -> f:format.case(mode: 'lower')}"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'flag-{product.country.code -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6 md:w-10 md:h-8')}
|
||||
<f:if condition="{hotel}">
|
||||
<f:then>
|
||||
<a href="{ep:gmapsUrl(hotel: hotel)}" target="_blank" class="block bg-ep-primary-light px-2 py-1">
|
||||
<svg class="w-4 h-4 md:w-6 md:h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-location-marker"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'location-marker', class: 'w-4 h-4 md:w-6 md:h-6 text-white')}
|
||||
</a>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<a href="{ep:gmapsUrl(region: product.region)}" target="_blank" class="block bg-ep-primary-light px-2 py-1">
|
||||
<svg class="w-4 h-4 md:w-6 md:h-6 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-location-marker"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'location-marker', class: 'w-4 h-4 md:w-6 md:h-6 text-white')}
|
||||
</a>
|
||||
</f:else>
|
||||
</f:if>
|
||||
@@ -57,9 +52,7 @@
|
||||
</div>
|
||||
<f:if condition="{referringUrl}">
|
||||
<a href="{referringUrl}" class="button button--small mt-8">
|
||||
<svg class="w-4 h-4 text-white">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-chevron-left"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'chevron-left', class: 'w-4 h-4 text-white')}
|
||||
<span>{backlinkLabel}</span>
|
||||
</a>
|
||||
</f:if>
|
||||
|
||||
@@ -24,18 +24,14 @@
|
||||
<div class="grid grid-cols-3 gap-4 mb-4">
|
||||
<div class="flex items-center space-x-2"
|
||||
data-cooltipz-dir="top-left" aria-label="Pisten" role="tooltip">
|
||||
<svg class="w-4 h-4 md:w-6 md:h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-ski"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'ski', class: 'w-4 h-4 md:w-6 md:h-6')}
|
||||
<span class="text-sm md:text-base whitespace-nowrap">
|
||||
{region.length}
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2"
|
||||
data-cooltipz-dir="top-left" aria-label="Höhe" role="tooltip">
|
||||
<svg class="w-4 h-4 md:w-6 md:h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-mountain"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'mountain', class: 'w-4 h-4 md:w-6 md:h-6')}
|
||||
<span class="text-sm md:text-base whitespace-nowrap">
|
||||
{region.height}
|
||||
</span>
|
||||
@@ -43,9 +39,7 @@
|
||||
<f:if condition="{region.lifts}">
|
||||
<div class="flex items-center space-x-2"
|
||||
data-cooltipz-dir="top-left" aria-label="Lifte" role="tooltip">
|
||||
<svg class="w-4 h-4 md:w-6 md:h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-lift"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'lift', class: 'w-4 h-4 md:w-6 md:h-6')}
|
||||
<span class="text-sm md:text-base whitespace-nowrap">
|
||||
{region.lifts}
|
||||
</span>
|
||||
@@ -69,16 +63,12 @@
|
||||
class="opacity-50"
|
||||
data-action="teasergrid#grid"
|
||||
data-teasergrid-target="button">
|
||||
<svg class="w-5 h-5 text-ep-primary">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-teaser-grid"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'teaser-grid', class: 'w-5 h-5 text-ep-primary')}
|
||||
</button>
|
||||
<button type="button"
|
||||
data-action="teasergrid#block"
|
||||
data-teasergrid-target="button">
|
||||
<svg class="w-5 h-5 text-ep-primary">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-teaser-single"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'teaser-single', class: 'w-5 h-5 text-ep-primary')}
|
||||
</button>
|
||||
</div>
|
||||
<div class="grid grid-cols-2 xl:grid-cols-3 gap-4 md:gap-8"
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
<f:section name="Teaser">
|
||||
<a href="{f:uri.typolink(parameter: region.detailPage)}" title="{region.name}" class="flex flex-col">
|
||||
<div class="relative">
|
||||
<svg class="w-8 h-6 absolute top-0 left-0">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-{region.country.code -> f:format.case(mode: 'lower')}"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'flag-{region.country.code -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6 absolute top-0 left-0')}
|
||||
<ep:lazyLoadImage image="{region.teaserImages.0}"
|
||||
loaderimg="EXT:ep_theme/Resources/Public/images/lazy.png"
|
||||
class="block w-full h-full object-cover"
|
||||
|
||||
@@ -1,37 +1,38 @@
|
||||
<div class="bg-gray-50 p-4 mb-4">
|
||||
<p class="font-bold mb-1">
|
||||
Gebietsinfo
|
||||
</p>
|
||||
<ul>
|
||||
<f:if condition="{region.length}">
|
||||
<li class="flex items-center space-x-2">
|
||||
<svg class="w-4 h-4">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-ski"></use>
|
||||
</svg>
|
||||
<span>
|
||||
Pisten: {region.length}
|
||||
</span>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{region.height}">
|
||||
<li class="flex items-center space-x-2">
|
||||
<svg class="w-4 h-4">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-mountain"></use>
|
||||
</svg>
|
||||
<span>
|
||||
Höhe: {region.height}
|
||||
</span>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{region.lifts}">
|
||||
<li class="flex items-center space-x-2">
|
||||
<svg class="w-4 h-4">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-lift"></use>
|
||||
</svg>
|
||||
<span>
|
||||
Lifte: {region.lifts}
|
||||
</span>
|
||||
</li>
|
||||
</f:if>
|
||||
</ul>
|
||||
</div>
|
||||
<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">
|
||||
|
||||
<div class="bg-gray-50 p-4 mb-4">
|
||||
<p class="font-bold mb-1">
|
||||
Gebietsinfo
|
||||
</p>
|
||||
<ul>
|
||||
<f:if condition="{region.length}">
|
||||
<li class="flex items-center space-x-2">
|
||||
{ep:icon(icon: 'ski', class: 'w-4 h-4')}
|
||||
<span>
|
||||
Pisten: {region.length}
|
||||
</span>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{region.height}">
|
||||
<li class="flex items-center space-x-2">
|
||||
{ep:icon(icon: 'mountain', class: 'w-4 h-4')}
|
||||
<span>
|
||||
Höhe: {region.height}
|
||||
</span>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{region.lifts}">
|
||||
<li class="flex items-center space-x-2">
|
||||
{ep:icon(icon: 'lift', class: 'w-4 h-4')}
|
||||
<span>
|
||||
Lifte: {region.lifts}
|
||||
</span>
|
||||
</li>
|
||||
</f:if>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -9,16 +9,11 @@
|
||||
<button type="button"
|
||||
data-action="click->collapse#toggle"
|
||||
class="flex items-center justify-between w-full bg-brand-gradient p-4">
|
||||
<svg class="w-6 h-6 text-white mr-2">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-calendar"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'calendar', class: 'w-6 h-6 text-white mr-2')}
|
||||
<span class="flex-1 uppercase font-bold text-white text-left">
|
||||
Reisezeitraum
|
||||
</span>
|
||||
<svg class="w-6 h-6 text-white transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 text-white transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container">
|
||||
<f:form.hidden property="dateFrom"
|
||||
@@ -37,9 +32,7 @@
|
||||
<input type="text"
|
||||
class="border-px border-white text-white text-xl p-2 w-full bg-transparent focus:border-white focus:ring-0"
|
||||
data-datepicker-target="field">
|
||||
<svg class="w-6 h-6 text-white absolute top-0 right-0 transform translate-y-1/2 mr-2">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-calendar"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'calendar', class: 'w-6 h-6 text-white absolute top-0 right-0 transform translate-y-1/2 mr-2')}
|
||||
</div>
|
||||
<f:if condition="{settings.datePickerPresets}">
|
||||
<div class="flex flex-col divide-y divide-overlay-white mt-2">
|
||||
@@ -49,9 +42,7 @@
|
||||
data-preset='{preset -> f:format.json() -> f:format.raw()}'
|
||||
data-action="datepicker#selectPreset">
|
||||
<span class="uppercase font-bold">{preset.label}</span>
|
||||
<svg class="w-6 h-6 transform">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6')}
|
||||
</button>
|
||||
</f:for>
|
||||
</div>
|
||||
@@ -73,16 +64,11 @@
|
||||
<button type="button"
|
||||
data-action="click->collapse#toggle"
|
||||
class="flex items-center justify-between w-full bg-brand-gradient p-4">
|
||||
<svg class="w-6 h-6 text-white mr-2">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-concept"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'concept', class: 'w-6 h-6 text-white mr-2')}
|
||||
<span class="flex-1 uppercase font-bold text-white text-left">
|
||||
Reisekonzepte
|
||||
</span>
|
||||
<svg class="w-6 h-6 text-white transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 text-white transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container"
|
||||
class="p-4 border-t border-overlay-white bg-brand-gradient">
|
||||
@@ -124,10 +110,7 @@
|
||||
<span class="uppercase font-bold">
|
||||
Reiseziel
|
||||
</span>
|
||||
<svg class="w-6 h-6 transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 text-white transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container">
|
||||
<ul class="mb-0 p-0 pt-4">
|
||||
@@ -141,9 +124,7 @@
|
||||
<span class="pl-2 leading-none">
|
||||
<strong>{destination.country.label}</strong>
|
||||
</span>
|
||||
<svg class="absolute top-0 right-0 w-8 h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-{destination.country.code -> f:format.case(mode: 'lower')}"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'flag-{destination.country.code -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6 absolute top-0 right-0')}
|
||||
</label>
|
||||
<f:if condition="{destination.regions}">
|
||||
<ul class="py-2 space-y-2">
|
||||
@@ -177,10 +158,7 @@
|
||||
<span class="uppercase font-bold">
|
||||
Preis
|
||||
</span>
|
||||
<svg class="w-6 h-6 transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 text-white transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container">
|
||||
<ul class="mb-0 p-0 pt-4 space-y-2">
|
||||
@@ -210,10 +188,7 @@
|
||||
<span class="uppercase font-bold">
|
||||
Personen
|
||||
</span>
|
||||
<svg class="w-6 h-6 transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 text-white transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container">
|
||||
<f:form.select class="w-full border-0 focus:ring-0 bg-right bg-transparent text-white lg:bg-white lg:text-gray-800 mt-2 p-0"
|
||||
@@ -239,10 +214,7 @@
|
||||
<span class="uppercase font-bold">
|
||||
Unterkunft
|
||||
</span>
|
||||
<svg class="w-6 h-6 transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 text-white transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container">
|
||||
<ul class="mb-0 p-0 pt-4 space-y-2">
|
||||
@@ -272,10 +244,7 @@
|
||||
<span class="uppercase font-bold">
|
||||
Verpflegung
|
||||
</span>
|
||||
<svg class="w-6 h-6 transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 text-white transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container">
|
||||
<ul class="mb-0 p-0 pt-4 space-y-2">
|
||||
@@ -315,10 +284,7 @@
|
||||
<span class="uppercase font-bold">
|
||||
Zimmerarten/Apart.
|
||||
</span>
|
||||
<svg class="w-6 h-6 transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 text-white transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container">
|
||||
<ul class="mb-0 p-0 p-0 pt-4 space-y-2">
|
||||
@@ -346,13 +312,10 @@
|
||||
<button type="button"
|
||||
data-action="click->collapse#toggle"
|
||||
class="flex items-center justify-between w-full">
|
||||
<span class="uppercase font-bold">
|
||||
Anreise
|
||||
</span>
|
||||
<svg class="w-6 h-6 transform"
|
||||
data-collapse-target="icon">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-arrow-right"></use>
|
||||
</svg>
|
||||
<span class="uppercase font-bold">
|
||||
Anreise
|
||||
</span>
|
||||
{ep:icon(icon: 'arrow-right', class: 'w-6 h-6 transform', data: '{collapse-target: \'icon\'}')}
|
||||
</button>
|
||||
<div data-collapse-target="container">
|
||||
<ul class="mb-0 p-0 pt-4 space-y-2">
|
||||
|
||||
@@ -15,9 +15,7 @@
|
||||
</a>
|
||||
<button type="button"
|
||||
class="focus:outline-none" data-action="mobile-search#close">
|
||||
<svg class="w-8 h-8">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-close"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'close', class: 'w-8 h-8')}
|
||||
</button>
|
||||
</div>
|
||||
<div data-mobile-search-target="container"
|
||||
@@ -26,9 +24,7 @@
|
||||
<div class="fixed top-0 left-0 z-20 w-full h-full hidden"
|
||||
data-mobile-search-target="loadingIndicator">
|
||||
<div class="absolute top-1/2 left-1/2 transform -translate-xy-1/2 flex items-center space-x-4 bg-ep-secondary text-white text-lg p-4 rounded">
|
||||
<svg class="w-6 h-6">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-spinner"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'spinner', class: 'w-6 h-6')}
|
||||
<span>Suche wird geladen...</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers"
|
||||
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers">
|
||||
|
||||
<div class="flex items-center space-x-4 text-white text-lg p-4 mb-4 {f:if(condition: '{meta.organic} && {meta.total} > 0', then: 'bg-green-600', else: 'bg-red-600')}">
|
||||
<svg class="w-6 h-6">
|
||||
<f:if condition="{meta.organic} && {meta.total} > 0">
|
||||
<f:then>
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-emoji-happy"></use>
|
||||
{ep:icon(icon: 'emoji-happy', class: 'w-6 h-6')}
|
||||
</f:then>
|
||||
<f:else>
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-emoji-sad"></use>
|
||||
{ep:icon(icon: 'emoji-sad', class: 'w-6 h-6')}
|
||||
</f:else>
|
||||
</f:if>
|
||||
</svg>
|
||||
<span class="flex-1">
|
||||
Deine Suche
|
||||
<f:if condition="{meta.organic}">
|
||||
@@ -55,16 +54,12 @@
|
||||
class="opacity-50"
|
||||
data-action="teasergrid#grid"
|
||||
data-teasergrid-target="button">
|
||||
<svg class="w-5 h-5 text-ep-primary">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-teaser-grid"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'teaser-grid', class: 'w-5 h-5 text-ep-primary')}
|
||||
</button>
|
||||
<button type="button"
|
||||
data-action="teasergrid#block"
|
||||
data-teasergrid-target="button">
|
||||
<svg class="w-5 h-5 text-ep-primary">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-teaser-single"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'teaser-single', class: 'w-5 h-5 text-ep-primary')}
|
||||
</button>
|
||||
</div>
|
||||
<div class="grid grid-cols-2 xl:grid-cols-3 gap-4 md:gap-8"
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
<a href="{f:uri.typolink(parameter: data.header_link)}" class="flex flex-col group">
|
||||
<div class="relative">
|
||||
<f:if condition="{context.country}">
|
||||
<svg class="w-8 h-6 absolute top-0 left-0">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-flag-{context.country.code -> f:format.case(mode: 'lower')}"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'flag-{context.country.code -> f:format.case(mode: \'lower\')}', class: 'w-8 h-6 absolute top-0 left-0')}
|
||||
</f:if>
|
||||
<ep:lazyLoadImage image="{teaserImage}"
|
||||
loaderimg="EXT:ep_theme/Resources/Public/images/lazy.png"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
|
||||
<f:if condition="{settings.hideAreaNavigation}">
|
||||
@@ -8,9 +9,7 @@
|
||||
<div class="container">
|
||||
<nav role="navigation" class="topnav__nav">
|
||||
<f:link.typolink parameter="9" class="topnav__item" title="E&P">
|
||||
<svg class="w-5 h-5">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-home"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'home', class: 'w-5 h-5')}
|
||||
</f:link.typolink>
|
||||
<f:if condition="{settings.topNavPid}">
|
||||
<div class="flex-1 flex items-center divide-x divide-overlay-white-50">
|
||||
@@ -25,9 +24,7 @@
|
||||
</f:if>
|
||||
<f:if condition="{settings.myEpPageUid}">
|
||||
<f:link.typolink parameter="{settings.myEpPageUid}" class="topnav__item" title="My E&P">
|
||||
<svg class="w-5 h-5">
|
||||
<use href="{f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/icons_sprite.svg')}#icon-user"></use>
|
||||
</svg>
|
||||
{ep:icon(icon: 'user', class: 'w-5 h-5')}
|
||||
</f:link.typolink>
|
||||
</f:if>
|
||||
</nav>
|
||||
|
||||
Reference in New Issue
Block a user