WIP Debootstrapify

This commit is contained in:
Björn Fromme
2021-08-06 18:34:43 +02:00
parent 793dec972a
commit ab194081b3
54 changed files with 1018 additions and 791 deletions
@@ -79,8 +79,7 @@ class SliderProcessor implements DataProcessorInterface
if ($slides) {
$fileRepository = GeneralUtility::makeInstance(FileRepository::class);
foreach ($slides as $slide)
{
foreach ($slides as $slide) {
$processedData['slides'][$slide['uid']] = $slide;
$processedData['slides'][$slide['uid']]['image'] = $fileRepository->findByRelation(
'tx_eptheme_domain_model_slide',
@@ -90,6 +89,10 @@ class SliderProcessor implements DataProcessorInterface
}
}
if (1 === count($slides)) {
$processedData['slide'] = reset($processedData['slides']);
}
return $processedData;
}
@@ -101,8 +104,7 @@ class SliderProcessor implements DataProcessorInterface
$rootlineUtility = new RootlineUtility($GLOBALS['TSFE']->id);
$rootline = $rootlineUtility->get();
foreach ($rootline as $parentPage)
{
foreach ($rootline as $parentPage) {
if ((int) $parentPage['tx_eptheme_slides'] > 0) {
return (int) $parentPage['uid'];
}
@@ -123,6 +123,7 @@ TCEFORM {
fe_group.disabled = 1
editlock.disabled = 1
sys_language_uid.disabled = 1
tx_yoastseo_linking_suggestions.disabled = 1
}
pages {
@@ -2,6 +2,7 @@
plugin.tx_news {
view {
layoutRootPaths.100 = EXT:ep_theme/Resources/Private/Layouts/News/
templateRootPaths.100 = EXT:ep_theme/Resources/Private/Templates/News/
partialRootPaths.100 = EXT:ep_theme/Resources/Private/Partials/News/
widget.GeorgRinger\News\ViewHelpers\Widget\PaginateViewHelper.templateRootPath = EXT:ep_theme/Resources/Private/Templates/News/
@@ -0,0 +1,34 @@
{
"name": "",
"css_prefix_text": "icon-",
"css_use_suffix": false,
"hinting": true,
"units_per_em": 1000,
"ascent": 850,
"glyphs": [
{
"uid": "12f4ece88e46abd864e40b35e05b11cd",
"css": "ok",
"code": 59392,
"src": "fontawesome"
},
{
"uid": "9f7e588c66cfd6891f6f507cf6f6596b",
"css": "phone",
"code": 59393,
"src": "fontawesome"
},
{
"uid": "ccc2329632396dc096bb638d4b46fb98",
"css": "mail-alt",
"code": 61664,
"src": "fontawesome"
},
{
"uid": "43ab845088317bd348dee1d975700c48",
"css": "ok-circled",
"code": 59394,
"src": "fontawesome"
}
]
}
@@ -1,4 +1,2 @@
require('font-awesome/css/font-awesome.min.css')
require('cookieconsent/build/cookieconsent.min.css')
@@ -1,10 +0,0 @@
'use strict';
// Main app
require('./_app');
// Main and vendor styles
require('./_styles');
// Brand specific styles
require('../scss/main_boarderweek.scss');
@@ -6,6 +6,7 @@ export default props => ({
loading: false,
picker: null,
uri: props.uri,
sticky: props.sticky || false,
searchParams: props.initialSearchParams,
filterOptions: props.initialFilterOptions,
datePresets: props.datePresets,
@@ -1,8 +1,5 @@
// Main app
require('./_app');
// Main and vendor styles
require('./_styles');
// Main styles
require('../scss/main.scss');
@@ -1,10 +0,0 @@
'use strict';
// Main app
require('./_app');
// Main and vendor styles
require('./_styles');
// Brand specific styles
require('../scss/main_snowzone.scss');
@@ -1,10 +0,0 @@
'use strict';
// Main app
require('./_app');
// Main and vendor styles
require('./_styles');
// Brand specific styles
require('../scss/main_unichamp.scss');
@@ -1,7 +0,0 @@
ul {
@apply list-disc;
}
ol {
@apply list-decimal;
}
@@ -41,3 +41,42 @@
url('../../fonts/lato-v17-latin-900.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('../../fonts/lato-v17-latin-900.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
/* Fontello icons */
@font-face {
font-family: 'fontello';
font-weight: normal;
font-style: normal;
font-display: swap;
src: local(''),
url('../../fonts/fontello.woff2') format('woff2'),
url('../../fonts/fontello.woff') format('woff');
}
[class^="icon-"]:before, [class*=" icon-"]:before {
font-family: "fontello";
font-style: normal;
font-weight: normal;
speak: never;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
font-variant: normal;
text-transform: none;
line-height: 1em;
margin-left: .2em;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-check:before { content: '\e800'; }
.icon-phone:before { content: '\e801'; }
.icon-check-circle:before { content: '\e802'; }
.icon-mail:before { content: '\f0e0'; }
@@ -0,0 +1,9 @@
.scale,
.img-responsive {
@apply block w-full h-auto;
}
img.lazyloading {
background: url(../../images/lazy.png) no-repeat top center;
}
@@ -0,0 +1,11 @@
ul {
@apply list-disc pl-4 mb-8;
}
ol {
@apply list-decimal pl-4 mb-8;
}
p {
@apply mb-8;
}
@@ -0,0 +1,48 @@
h1,
.headline--primary {
@apply block text-3xl md:text-4xl text-gray-800 font-normal;
}
h2,
.headline--secondary {
@apply block text-2xl md:text-3xl text-gray-800 font-normal;
}
h3,
.headline--3 {
@apply block text-xl md:text-2xl text-gray-800 font-normal;
}
h4,
.headline--4 {
@apply block md:text-lg text-gray-800 font-normal uppercase;
}
.headline--underlined:after {
@apply block border-b-4 border-ep-primary sbw:border-sbw-primary pb-4 mb-4 w-20;
content: '';
}
.subline {
@apply block text-sm md:text-base uppercase font-light tracking-widest leading-6 md:leading-10 pb-2 md:pb-0;
}
// Lists
.check-list {
@apply list-none p-0;
li {
@apply relative pl-8;
&:before {
@apply absolute left-0 top-0 w-6 h-6 text-ep-primary text-lg;
font-family: 'fontello';
content: '\e800';
}
}
&--inverted {
li:before {
content: '\e802';
}
}
}
@@ -0,0 +1,25 @@
.button {
@apply inline-block p-4 md:px-8;
@apply uppercase leading-none text-center outline-none focus:outline-none;
@apply transition-colors;
@apply bg-ep-secondary text-white;
&--active,
&--secondary {
@apply bg-ep-primary;
}
&:hover {
@apply bg-ep-primary-dark;
}
&--light {
@apply bg-white text-ep-primary border-2 border-ep-primary rounded;
@apply font-bold;
&:hover,
&.active {
@apply bg-white border-ep-secondary text-ep-secondary;
}
}
}
@@ -0,0 +1,18 @@
@import "~cookieconsent/build/cookieconsent.min.css";
.cc-window.cc-floating {
@apply p-8;
}
.cc-message,
.cc-btn {
font-size: 75% !important;
@screen sm {
font-size: 100% !important;
}
}
.cc-link {
font-size: 100% !important;
}
@@ -1,8 +1,12 @@
.searchbar {
@apply hidden relative lg:block lg:container lg:px-0 -mt-20 mb-8;
@apply bg-gradient-to-tr from-ep-primary-light via-ep-primary-medium to-ep-primary-dark;
&--fixed {
@apply m-0 max-w-full;
}
.searchbar--fixed {
@apply fixed z-40 top-0 left-0 mt-8 mb-0 inset-x-0 max-w-full;
&--sticky {
@apply fixed z-50 top-0 left-0 mt-8 mb-0 inset-x-0 max-w-full shadow-lg;
}
}
@@ -4,13 +4,15 @@
@layer base {
@import "base/fonts";
@import "base/typography";
@import "base/images";
[x-cloak] {
@apply hidden;
}
[data-rte-content] {
@import "rte-content";
@import "base/rte-content";
}
// LEGACY FROM HERE
@@ -28,51 +30,51 @@
@import "~bourbon/app/assets/stylesheets/bourbon";
@import "remix/breakpoints";
@import "remix/mixins";
@import "remix/base";
//@import "remix/base";
@import "remix/badges";
@import "remix/buttons";
//@import "remix/buttons";
//@import "remix/area-nav";
@import "remix/pagehead";
//@import "remix/pagehead";
@import "remix/slider";
@import "remix/header";
//@import "remix/herounit";
//@import "remix/calendar";
@import "remix/partnerlogos";
//@import "remix/partnerlogos";
//@import "remix/osm-map";
//@import "remix/video";
//@import "remix/newsletterform";
@import "remix/layout";
//@import "remix/layout";
@import "remix/teaserbox";
@import "remix/searchresult";
//@import "remix/tables";
@import "remix/product";
//@import "remix/socialmedia";
//@import "remix/datepicker";
@import "remix/sidebar";
@import "remix/blog";
//@import "remix/sidebar";
//@import "remix/blog";
//@import "remix/forms";
//@import "remix/contactnav";
@import "remix/faq";
@import "remix/destination-pulldown";
@import "remix/watchlist";
@import "remix/calculator";
//@import "remix/faq";
//@import "remix/destination-pulldown";
//@import "remix/watchlist";
//@import "remix/calculator";
// core config
//@import "fonts";
@import "base";
@import "btn";
@import "input";
//@import "base";
//@import "btn";
//@import "input";
//@import "breadcrumb";
@import "modal";
//@import "modal";
//components
//@import "mainnavi";
//@import "footer";
//@import "searchbar";
@import "searchbox";
@import "newsletter";
@import "disturber";
@import "product";
//@import "newsletter";
//@import "disturber";
//@import "product";
@import "sidebar";
@import "subpage";
@import "searchpage";
@@ -81,6 +83,7 @@
@layer components {
@import "~microtip/microtip";
@import "components/cookie-consent";
@import "components/background";
@import "components/calendar";
@import "components/searchbar";
@@ -92,6 +95,7 @@
@import "components/contact-bar";
@import "components/misc";
@import "components/tiles";
@import "components/buttons"
}
@layer utilities {
@@ -99,6 +103,9 @@
.max-w-screen-2xl {
max-width: 1440px;
}
.max-w-1\/2 {
max-width: 50%;
}
}
.has-validation-error input {
@apply text-red-500 border-red-500;
@@ -26,220 +26,220 @@
// }
//}
a {
color: $color-brand-primary;
//a {
// color: $color-brand-primary;
//
// &:active,
// &:hover {
// color: $color-brand-primary;
// text-decoration:none;
// outline: none;
// }
//
// &:focus {
// color: $color-font-base;
// text-decoration:none;
// outline: none;
// }
//
// &:visited {
// outline: none;
// }
//
// .alert & {
// color: inherit;
// font-weight: $font-weight-bold;
// text-decoration: underline;
// }
//}
&:active,
&:hover {
color: $color-brand-primary;
text-decoration:none;
outline: none;
}
&:focus {
color: $color-font-base;
text-decoration:none;
outline: none;
}
&:visited {
outline: none;
}
.alert & {
color: inherit;
font-weight: $font-weight-bold;
text-decoration: underline;
}
}
s {
opacity: 0.75;
}
//s {
// opacity: 0.75;
//}
// Block elements
ul {
padding: 0 0 0 18px;
//ul {
// padding: 0 0 0 18px;
&.plain-list {
list-style: none;
padding: 0;
}
&.check-list {
list-style: none;
padding: 0;
//&.plain-list {
// list-style: none;
// padding: 0;
//}
//&.check-list {
// list-style: none;
// padding: 0;
//
// li {
// position: relative;
// padding-left: 24px;
// }
//
// li::before {
// position: absolute;
// top: 0;
// left: 0;
// font-family: 'FontAwesome';
// content: "\f00c";
// font-size: 18px;
// color: $color-brand-primary;
// }
//
// &--inverted {
// li::before {
// content: "\f058";
// }
// }
//}
//&.inline-list {
// display: flex;
// > li {
// flex: 1;
// }
//}
//}
li {
position: relative;
padding-left: 24px;
}
li::before {
position: absolute;
top: 0;
left: 0;
font-family: 'FontAwesome';
content: "\f00c";
font-size: 18px;
color: $color-brand-primary;
}
&--inverted {
li::before {
content: "\f058";
}
}
}
&.inline-list {
display: flex;
> li {
flex: 1;
}
}
}
ol {
padding: 0 0 0 18px;
}
//ol {
// padding: 0 0 0 18px;
//}
// Images
.scale {
width: 100%;
height: auto;
display: block;
}
//.scale {
// width: 100%;
// height: auto;
// display: block;
//}
// Headlines
h1 {
font-size: 28px;
font-weight: 400;
color: black;
//// Headlines
//h1 {
// font-size: 28px;
// font-weight: 400;
// color: black;
//
// @include mq($from: tablet) {
// font-size: 36px;
// }
//}
//
//h2 {
// font-size: 24px;
// font-weight: 400;
// color: black;
//
// @include mq($from: tablet) {
// font-size: 32px;
// }
//}
//
//h3 {
// font-size: 20px;
// font-weight: 400;
// color: black;
//
// @include mq($from: tablet) {
// font-size: 26px;
// }
//}
//
//h4 {
// font-size: 16px;
// font-weight: 400;
// color: black;
// text-transform: uppercase;
// margin-bottom: 10px;
//
// @include mq($from: tablet) {
// font-size: 18px;
// }
//}
//
//.headline {
// display: block;
//
// &--primary {
// @extend h1;
// }
//
// &--secondary {
// @extend h2;
// }
//
// &--3 {
// @extend h3;
// }
//
// &--4 {
// @extend h4;
// }
//
// &--disturber {
// color: white;
// text-align: center;
// text-transform: none;
// margin-bottom: 20px;
// font-weight: 700;
//
// @include mq($from: tablet) {
// text-transform: uppercase;
// text-align: left;
// }
//
// &-large {
// @include mq($from: desktop) {
// text-align: right;
// }
// }
// }
//
// &--underlined:after{
// content:'';
// display:block;
// border-bottom:4px solid $color-brand-primary;
// padding-bottom: 30px;
// margin-bottom: 35px;
// width: 80px;
// }
//
// &--teaser {
// min-height: 54px;
// }
//
// &--light {
// font-weight: 300;
// }
//
// &--footer {
// color: white;
// font-weight: 700;
// }
//
// &--nav {
// display: inline-block;
// color: white;
//
// @include mq($from: tablet) {
// color: black;
// }
// }
//}
//
//.headline__subline {
// display: block;
// font-size: 14px;
// text-transform: uppercase;
// font-weight: 300;
// letter-spacing: 2px;
// line-height: 24px;
// padding-bottom: 8px;
//
// @include mq($from: tablet) {
// line-height: 40px;
// padding-bottom: 0;
// font-size: 16px;
// }
//}
@include mq($from: tablet) {
font-size: 36px;
}
}
h2 {
font-size: 24px;
font-weight: 400;
color: black;
@include mq($from: tablet) {
font-size: 32px;
}
}
h3 {
font-size: 20px;
font-weight: 400;
color: black;
@include mq($from: tablet) {
font-size: 26px;
}
}
h4 {
font-size: 16px;
font-weight: 400;
color: black;
text-transform: uppercase;
margin-bottom: 10px;
@include mq($from: tablet) {
font-size: 18px;
}
}
.headline {
display: block;
&--primary {
@extend h1;
}
&--secondary {
@extend h2;
}
&--3 {
@extend h3;
}
&--4 {
@extend h4;
}
&--disturber {
color: white;
text-align: center;
text-transform: none;
margin-bottom: 20px;
font-weight: 700;
@include mq($from: tablet) {
text-transform: uppercase;
text-align: left;
}
&-large {
@include mq($from: desktop) {
text-align: right;
}
}
}
&--underlined:after{
content:'';
display:block;
border-bottom:4px solid $color-brand-primary;
padding-bottom: 30px;
margin-bottom: 35px;
width: 80px;
}
&--teaser {
min-height: 54px;
}
&--light {
font-weight: 300;
}
&--footer {
color: white;
font-weight: 700;
}
&--nav {
display: inline-block;
color: white;
@include mq($from: tablet) {
color: black;
}
}
}
.headline__subline {
display: block;
font-size: 14px;
text-transform: uppercase;
font-weight: 300;
letter-spacing: 2px;
line-height: 24px;
padding-bottom: 8px;
@include mq($from: tablet) {
line-height: 40px;
padding-bottom: 0;
font-size: 16px;
}
}
strong {
&.uppercase {
text-transform: uppercase;
}
}
//strong {
// &.uppercase {
// text-transform: uppercase;
// }
//}
@@ -1,60 +1,60 @@
.blog-entry {
width: 100%;
&:not(:last-child) {
margin-bottom: 20px;
}
}
//.blog-entry {
// width: 100%;
// &:not(:last-child) {
// margin-bottom: 20px;
// }
//}
.blog-entry__info {
margin: 0 0 20px;
}
//.blog-entry__info {
// margin: 0 0 20px;
//}
.blog-entry__inner {
display: flex;
flex-direction: column;
//.blog-entry__inner {
// display: flex;
// flex-direction: column;
//
// @include mq($from: tablet) {
// flex-direction: row;
// }
//}
@include mq($from: tablet) {
flex-direction: row;
}
}
//.blog-entry__image {
// width: 100%;
// margin-bottom: 8px;
//
// @include mq($from: tablet) {
// width: percentage(1/2);
// }
//}
.blog-entry__image {
width: 100%;
margin-bottom: 8px;
//.blog-entry__info {
// font-style: italic;
// font-size: 90%;
//}
@include mq($from: tablet) {
width: percentage(1/2);
}
}
//.blog-entry__headline {
// margin-top: 0;
//}
.blog-entry__info {
font-style: italic;
font-size: 90%;
}
.blog-entry__headline {
margin-top: 0;
}
.blog-entry__teaser {
width: 100%;
@include mq($from: tablet) {
padding-left: 16px;
width: percentage(1/2);
}
p {
margin-bottom: 16px;
&:last-child {
margin-bottom: 8px;
}
}
}
.blog-tags {
list-style: none;
padding: 0;
}
//.blog-entry__teaser {
// width: 100%;
//
// @include mq($from: tablet) {
// padding-left: 16px;
// width: percentage(1/2);
// }
//
// p {
// margin-bottom: 16px;
//
// &:last-child {
// margin-bottom: 8px;
// }
//
// }
//}
//
//.blog-tags {
// list-style: none;
// padding: 0;
//}
@@ -1,94 +1,94 @@
.pagehead {
position: relative;
@include container($header-width-max);
margin-bottom: 20px;
height: 320px;
//.pagehead {
// position: relative;
// @include container($header-width-max);
// margin-bottom: 20px;
// height: 320px;
//
// @include mq($from: tablet) {
// height: 360px;
// }
//
// @include mq($from: desktop) {
// margin-top: 80px;
//
// .ep-core-events & {
// margin-top: 160px;
// }
// }
//
// .frontpage & {
// height: 380px;
//
// @include mq($from: tablet) {
// height: 410px;
// }
//
// @include mq($from: desktop) {
// height: 580px;
// margin-bottom: 0;
// margin-top: 120px;
// }
// }
//
//
// .subpage & {
// @include mq($from: desktop) {
// margin-top: 185px;
// }
// }
//
// &--searchresult {
// height: 10px;
//
// @include mq($from: tablet) {
// height: 160px;
// }
// }
//
//}
@include mq($from: tablet) {
height: 360px;
}
//.pagehead__image {
// position: relative;
// background-size: cover;
// background-position: center center;
// background-repeat: no-repeat;
// height: 240px;
//
// @include mq($from: tablet) {
// height: 100%;
// }
//
// .pagehead--searchresult & {
// display: none;
// height: 100%;
//
// @include mq($from: tablet) {
// display: block;
// }
// }
//
//}
@include mq($from: desktop) {
margin-top: 80px;
//.pagehead__main {
// position: absolute;
// left: 0;
// bottom: 0;
// padding: 0 16px;
// width: 100%;
// @include mq($from: tablet) {
// bottom: 50%;
// transform: translateY(50%);
// }
//}
.ep-core-events & {
margin-top: 160px;
}
}
.frontpage & {
height: 380px;
@include mq($from: tablet) {
height: 410px;
}
@include mq($from: desktop) {
height: 580px;
margin-bottom: 0;
margin-top: 120px;
}
}
.subpage & {
@include mq($from: desktop) {
margin-top: 185px;
}
}
&--searchresult {
height: 10px;
@include mq($from: tablet) {
height: 160px;
}
}
}
.pagehead__image {
position: relative;
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
height: 240px;
@include mq($from: tablet) {
height: 100%;
}
.pagehead--searchresult & {
display: none;
height: 100%;
@include mq($from: tablet) {
display: block;
}
}
}
.pagehead__main {
position: absolute;
left: 0;
bottom: 0;
padding: 0 16px;
width: 100%;
@include mq($from: tablet) {
bottom: 50%;
transform: translateY(50%);
}
}
.pagehead__inner {
@include mq($from: desktop) {
@include container(960px);
}
@include mq($from: wide) {
@include container();
}
}
//.pagehead__inner {
// @include mq($from: desktop) {
// @include container(960px);
// }
// @include mq($from: wide) {
// @include container();
// }
//}
.pagehead__badge {
position: absolute;
@@ -0,0 +1,9 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
data-namespace-typo3-fluid="true">
<div itemscope="itemscope" itemtype="http://schema.org/Article">
<f:render section="content" />
</div>
</html>
@@ -4,14 +4,14 @@
<f:render partial="GoogleTagManager" arguments="{googleTagManagerId: settings.googleTagManagerId}"/>
<f:render partial="FacebookPixelCode"/>
<div class="lg:mt-16">
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<f:render partial="HeaderSliderSmall" arguments="{_all}"/>
<div class="lg:mt-8">
<f:if condition="{data.tx_eptheme_hide_searchbar}">
<f:else>
<f:cObject typoscriptObjectPath="lib.searchBarFixed"/>
</f:else>
</f:if>
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<f:render partial="HeaderSliderSmall" arguments="{_all}"/>
<f:render section="Content"/>
<f:render section="Teasers"/>
<f:render partial="Footer" arguments="{_all}"/>
@@ -4,14 +4,14 @@
<f:render partial="GoogleTagManager" arguments="{googleTagManagerId: settings.googleTagManagerId}"/>
<f:render partial="FacebookPixelCode"/>
<div class="lg:mt-16">
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<f:render partial="HeaderSliderSmall" arguments="{_all}"/>
<div class="lg:mt-8">
<f:if condition="{data.tx_eptheme_hide_searchbar}">
<f:else>
<f:cObject typoscriptObjectPath="lib.searchBarFixed"/>
</f:else>
</f:if>
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<f:render partial="HeaderSliderSmall" arguments="{_all}"/>
<f:render section="Header" optional="true"/>
<div class="container grid grid-cols-3 gap-8">
<div class="col-span-3 lg:col-span-1">
@@ -4,14 +4,14 @@
<f:render partial="GoogleTagManager" arguments="{googleTagManagerId: settings.googleTagManagerId}"/>
<f:render partial="FacebookPixelCode"/>
<div class="lg:mt-16">
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<f:render partial="HeaderSliderSmall" arguments="{_all}"/>
<div class="lg:mt-8">
<f:if condition="{data.tx_eptheme_hide_searchbar}">
<f:else>
<f:cObject typoscriptObjectPath="lib.searchBarFixed"/>
</f:else>
</f:if>
<f:render partial="Mainnav" section="Main" arguments="{_all}"/>
<f:render partial="HeaderSliderSmall" arguments="{_all}"/>
<f:render section="Header" optional="true"/>
<div class="container grid grid-cols-3 gap-8">
<div class="col-span-3 lg:col-span-2">
@@ -4,13 +4,7 @@
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<div class="bg-winter">
<svg class="hidden md:block transform -translate-y-2" viewBox="0 0 1440 79" xmlns="http://www.w3.org/2000/svg">
<path d="M0,58.3L119,17.7L701.7,52L1072.3,0L1440,32.3L1440,79L0,79L0,58.3Z" style="fill:rgb(60,141,207);fill-rule:nonzero;"/>
<path d="M119,17.7L0,25.8L0,58.3L119,17.7Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M1072.3,0L701.7,52L572,44.4L1072.3,0Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M1440,32.3L1323.7,22.1L1440,2L1440,32.3Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M0,0L0,25.8L119,17.7L572,44.4L1072.3,0L1323.7,22.1L1440,2L1440,0L0,0Z" style="fill:white;fill-rule:nonzero;"/>
</svg>
<f:render partial="Disrupter/Outlines" section="Top2" arguments="{classes: 'hidden md:block transform -translate-y-2 text-white'}"/>
<div class="container grid grid-cols-2 gap-8" data-rte-content>
<div class="col-span-2 md:col-span-1">
<f:if condition="{image}">
@@ -24,13 +18,13 @@
</f:if>
<div>
<div>Ihr habt Fragen?<br>Wir helfen euch gerne!</div>
<a class="headline headline--3 headline--disturber" href="tel:{settings.phoneNumber -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}" rel="nofollow">{settings.phoneNumber}</a>
<a class="headline headline--3 text-white" href="tel:{settings.phoneNumber -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}" rel="nofollow">{settings.phoneNumber}</a>
</div>
<div><a class="call-btn" href="tel:{settings.phoneNumber -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}" rel="nofollow"><i class="fa fa-phone" aria-hidden="true"></i></a></div>
</div>
<div class="col-span-2 md:col-span-1">
<span class="headline headline--secondary headline--disturber headline--light">{data.subheadline}</span>
<div class="headline headline--secondary headline--disturber headline--light">{data.headline}</div>
<span class="headline--secondary font-light text-white">{data.subheadline}</span>
<div class="headline--secondary font-light text-white">{data.headline}</div>
{data.text -> f:format.html()}
<br>
<f:for each="{data.flexForm.buttons -> v:iterator.slice(start: 0, length: 4) -> v:iterator.chunk(count: 2)}" as="buttons">
@@ -49,6 +43,7 @@
</f:for>
</div>
</div>
<f:render partial="Disrupter/Outlines" section="Bottom2" arguments="{classes: 'hidden md:block transform translate-y-2 text-white'}"/>
</div>
</html>
@@ -3,7 +3,9 @@
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<div class="container-fluid ep-disturber-last-chance" data-rte-content>
<div class="bg-winter">
<f:render partial="Disrupter/Outlines" section="Top1" arguments="{classes: 'hidden md:block transform -translate-y-2 text-white'}"/>
<div class="max-w-screen-lg mx-auto" data-rte-content>
<div>{data.headline}</div>
<div>{data.text -> f:format.html()}</div>
<div>
@@ -11,5 +13,7 @@
<a href="{f:uri.typolink(parameter: button.container.link)}" class="btn btn-info" title="{button.container.label -> f:format.raw()}">{button.container.label -> f:format.raw()}</a>
</div>
</div>
<f:render partial="Disrupter/Outlines" section="Bottom1" arguments="{classes: 'hidden md:block transform translate-y-2 text-white'}"/>
</div>
</html>
@@ -0,0 +1,47 @@
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:section name="Top1">
<svg class="{classes}" viewBox="0 0 1440 79" xmlns="http://www.w3.org/2000/svg">
<rect y="0" width="1440" height="45.1" fill="currentColor"/>
<polyline points="1440,25.1 1359.3,23.2 1210.3,32.3 1055.4,20.5 720.5,39.6 533.9,15.2 443.5,30.5 292.3,44.9 129.9,14.9 0,44.1 0,61.8 171,45.1 345,45.1 451.9,60.6 618.5,48 793,63.1 987,51.9 1044.7,59.7 1298.8,48.4 1320.7,59.7 1440,45.1" fill="#f9c700"/>
</svg>
</f:section>
<f:section name="Bottom1">
<svg class="{classes}" viewBox="0 0 1440 80" xmlns="http://www.w3.org/2000/svg">
<rect y="40" class="st0" width="1440" height="40" fill="currentColor"/>
<polygon class="st1" points="0,40 166.8,51.6 384.9,40 641.7,58.2 702.2,40 1011.5,52.9 1181.7,40 1440,49.1 1440,28.3 1302.1,35.6 1053.4,31 861.8,38.9 657,23.6 559.2,38.3 412.2,23.6 233.3,33.6 0,28.3 " fill="#F9C700"/>
</svg>
</f:section>
<f:section name="Top2">
<svg class="{classes}" viewBox="0 0 1440 79" xmlns="http://www.w3.org/2000/svg">
<rect y="0" class="st0" width="1440" height="45.1" fill="currentColor"/>
<polyline points="1440,42.4 1324.9,39.5 1227.9,44.8 1155.9,34.7 979.9,44.6 872.3,43.5 826.9,31.3 727.3,44.6 654.8,37.8 514.8,42.3 443.5,30.5 292.3,44.9 147.3,29.4 0,44.1 0,45.1 121.8,48.9 185.9,45.1 265,45.3 301.4,50.7 339.7,45.3 493.7,47.4 589.6,45.3 691.9,47.9 707.7,45.3 987,51.9 1088.6,46.1 1165.6,51.8 1298.8,45.3 1409.7,49.9 1440,45.1 " fill="#f9c700"/>
</svg>
</f:section>
<f:section name="Bottom2">
<svg class="{classes}" viewBox="0 0 1440 80" xmlns="http://www.w3.org/2000/svg">
<rect y="40" class="st0" width="1440" height="40" fill="currentColor"/>
<polygon points="0,40 170.3,33.2 334,40 436.8,26.1 478.9,40 692.2,33 938.3,40 1101,29.6 1115.2,40 1220.3,33 1440,40 1440,41.5 1427.9,40.7 1297.4,48.2 1240.5,40.3 913.9,48.2 736.6,40.3 433.7,48.2 195.6,40.3 0,48.2" fill="#f9c700"/>
</svg>
</f:section>
<f:section name="Top3">
<svg class="{classes}" viewBox="0 0 1440 79" xmlns="http://www.w3.org/2000/svg">
<rect y="0" class="st0" width="1440" height="45.1" fill="currentColor"/>
<polyline points="1440,44.6 1423.9,43.9 1409.5,40.9 1370.6,43.8 1324.9,39.5 1227.9,44.8 1203.3,38 1093.3,44 1071.7,40.3 984.5,44.2 971.2,40.8 926.2,44.4 833.4,37.9 815.5,43.6 786.9,41.6 727.3,44.6 654.8,37.8 641.4,41.6 616.4,39 514.8,42.3 459.6,36 449.4,42.1 396.4,43.7 379.3,36.6 292.3,44.9 272.7,41.6 188,43 153.6,32.6 136.2,37.2 61.8,44.2 0,39.2 0,45.1 17,46.3 48.6,45.5 121.8,48.9 154.8,45.8 189.4,46.2 209.7,50.2 225.3,45.3 251.4,47.2 339.7,45.3 373.3,48.8 404.1,46.2 462.9,47.8 498.3,49.4 511.3,45.9 548.5,46.6 569.4,45.3 651.5,48.9 663.7,45.8 710.5,47.8 720.5,45.3 808.5,49.4 823,46.7 905.5,45.5 955.1,48.7 994.2,46 1088.6,46.1 1129.9,50 1151.1,46.8 1298.8,45.3 1368.6,50.2 1434.1,47.5 1440,45.1 " fill="#f9c700"/>
</svg>
</f:section>
<f:section name="Bottom3">
<svg class="{classes}" viewBox="0 0 1440 80" xmlns="http://www.w3.org/2000/svg">
<rect y="40" class="st0" width="1440" height="40" fill="currentColor"/>
<polygon points="0,34.5 79.5,26.5 152.6,37.6 191.6,32.1 357.9,40 412,29.2 454.1,38.1 482.1,40 528.6,31 636.4,40 769.8,20.3 799.5,40 895.3,30.2 1104.6,40 1228.7,26.1 1305,40 1397.2,27.4 1440,32.7 1440,47.8 1414.9,42 1255.3,44.3 1198.1,40 1139.6,46 1068,45.1 1044,40.5 942.3,42.7 894,40.5 775.8,43.4 742.3,40.3 598.9,45.6 591.6,40.3 536.4,43.8 468.3,41.4 392.7,43.6 254.1,47.8 228.9,40.7 125.3,43.4 0,40 " fill="#f9c700"/>
</svg>
</f:section>
</html>
@@ -3,12 +3,7 @@
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<div class="bg-winter">
<svg class="hidden md:block transform -translate-y-2" viewBox="0 0 1440 79" xmlns="http://www.w3.org/2000/svg">
<path d="M119,17.7L0,25.8L0,58.3L119,17.7Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M1072.3,0L701.7,52L572,44.4L1072.3,0Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M1440,32.3L1323.7,22.1L1440,2L1440,32.3Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M0,0L0,25.8L119,17.7L572,44.4L1072.3,0L1323.7,22.1L1440,2L1440,0L0,0Z" style="fill:white;fill-rule:nonzero;"/>
</svg>
<f:render partial="Disrupter/Outlines" section="Top1" arguments="{classes: 'hidden md:block transform -translate-y-2 text-white'}"/>
<div class="max-w-screen-lg mx-auto" data-rte-content>
<div class="md:flex md:items-start py-4">
<div class="px-16 pb-4 md:px-4 md:pb-0 md:w-1/6">
@@ -24,14 +19,14 @@
</f:if>
</div>
<div class="px-16 md:px-4 md:w-5/6 md:pl-8 text-center text-white md:text-left" data-rte-content>
<span class="headline headline--3 headline--disturber">
<span class="headline--3 text-white uppercase">
{data.headline}
</span>
{data.text -> f:format.html()}
<div class="flex flex-col space-y-4 md:flex-row md:items-center md:space-y-0 md:space-x-4">
<f:for each="{data.flexForm.buttons}" as="button" iteration="iteration">
<f:if condition="{iteration.cycle} <= 3">
<f:link.typolink parameter="{button.container.link}" class="btn btn-warning btn-shadow">
<f:link.typolink parameter="{button.container.link}" class="button shadow-lg">
{button.container.label}
</f:link.typolink>
</f:if>
@@ -40,12 +35,7 @@
</div>
</div>
</div>
<svg class="hidden md:block transform translate-y-2" viewBox="0 0 1440 79" xmlns="http://www.w3.org/2000/svg">
<path d="M1321,61.3L1440,53.2L1440,20.7L1321,61.3Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M367.7,79L738.3,27L868,34.6L367.7,79Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M0,46.7L116.3,56.9L0,77L0,46.7Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M1440,79L1440,53.2L1321,61.3L868,34.6L367.7,79L116.3,56.9L0,77L0,79L1440,79Z" style="fill:white;fill-rule:nonzero;"/>
</svg>
<f:render partial="Disrupter/Outlines" section="Bottom1" arguments="{classes: 'hidden md:block transform translate-y-2 text-white'}"/>
</div>
</html>
@@ -3,26 +3,22 @@
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<svg viewBox="0 0 1440 190" xmlns="http://www.w3.org/2000/svg">
<path d="M0,192L0,164.5L189,90L221,73.5L479.5,103.5L964,147.5L1440,35.5L1440,192L0,192Z" style="fill:#3d8ccb;fill-rule:nonzero;"/>
<path d="M0,113.8L189,90L0,179.5L0,113.8Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M479.5,102.818L969.5,131.626L1440,0.5L1440,62.089L968,150.5L479.5,102.818Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
</svg>
<div class="bg-ep-primary py-4">
<div class="bg-winter">
<div class="bg-winter mt-8">
<f:render partial="Disrupter/Outlines" section="Top1" arguments="{classes: 'transform -translate-y-2 text-white'}"/>
<div class="py-4">
<div class="container grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 pb-4">
<v:menu pageUid="{settings.footerNavPid}" levels="2" expandAll="true">
<f:for each="{menu}" as="menuheader" iteration="iteration">
<div x-data="collapse(true, 991)">
<span class="headline headline--4 headline--footer hidden md:block">
<span class="headline--4 text-white hidden md:block">
{menuheader.title}
</span>
<button class="headline headline--4 headline--footer md:hidden"
<button class="headline--4 text-white md:hidden"
x-bind="trigger">
{menuheader.title}
</button>
<v:menu pageUid="{menuheader.uid}" useShortcutUid="true" as="submenu">
<ul class="list-disc text-white mb-0"
<ul class="list-disc text-white mb-0 pl-4"
x-bind="container"
x-transition>
<f:for each="{submenu}" as="submenuitem">
@@ -1,42 +1,48 @@
<f:if condition="{header}">
<f:switch expression="{layout}">
<f:case value="1">
<h1 class="headline headline--primary">
<h1>
<f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink>
</h1>
</f:case>
<f:case value="2">
<h2 class="headline headline--secondary">
<h2>
<f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink>
</h2>
</f:case>
<f:case value="3">
<h3><f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink></h3>
<h3>
<f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink>
</h3>
</f:case>
<f:case value="4">
<h4><f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink></h4>
<h4>
<f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink>
</h4>
</f:case>
<f:case value="5">
<h5><f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink></h5>
<h5>
<f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink>
</h5>
</f:case>
<f:case value="6">
<h1 class="headline headline--primary headline--underlined">
<h1 class="headline--underlined">
<f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink>
</h1>
</f:case>
<f:case value="7">
<h2 class="headline headline--secondary headline--underlined">
<h2 class="headline--underlined">
<f:link.typolink parameter="{link}">{header -> f:format.raw()}</f:link.typolink>
</h2>
</f:case>
<f:case value="8">
<h1 class="headline headline--primary headline--underlined{f:if(condition: subheader, then: ' headline--has-subline')}">
<f:if condition="{subheader}"><span class="headline__subline">{subheader -> f:format.raw()}&nbsp;</span></f:if>{header -> f:format.raw()}
<h1 class="headline--underlined{f:if(condition: subheader, then: ' headline--has-subline')}">
<f:if condition="{subheader}"><span class="subline">{subheader -> f:format.raw()}&nbsp;</span></f:if>{header -> f:format.raw()}
</h1>
</f:case>
<f:case value="9">
<h2 class="headline headline--secondary headline--underlined{f:if(condition: subheader, then: ' headline--has-subline')}">
<f:if condition="{subheader}"><span class="headline__subline">{subheader -> f:format.raw()}&nbsp;</span></f:if>{header -> f:format.raw()}
<h2 class="headline--underlined{f:if(condition: subheader, then: ' headline--has-subline')}">
<f:if condition="{subheader}"><span class="subline">{subheader -> f:format.raw()}&nbsp;</span></f:if>{header -> f:format.raw()}
</h2>
</f:case>
<f:case value="100">
@@ -2,7 +2,7 @@
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<div class="lg:mt-24">
<div class="lg:-mt-8">
<div class="splide slider slider--header" data-slider="header">
<div class="splide__track">
<ul class="splide__list">
@@ -3,21 +3,21 @@
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:if condition="{slide}">
<div class="relative lg:mt-64">
<div class="relative max-w-screen-2xl mx-auto h-80 lg:h-96 mb-8 lg:-mt-8">
<f:alias map="{image: slide.image.0}">
<div class="pagehead__image">
<picture class="w-full h-full">
<f:if condition="{image}">
<picture>
<source srcset="{f:uri.image(image: image, width: '1370', cropVariant: 'sliderPageHeader')}" media="(min-width: 768px)">
<source srcset="{f:uri.image(image: image, height: '320', cropVariant: 'sliderPageHeader')}" media="(max-width: 767px)">
<img class="block w-full h-full object-cover"
src="{f:uri.image(image: image, height: '320', cropVariant: 'sliderPageHeader')}"
alt="{image.alternative}">
</picture>
</div>
</f:if>
</f:alias>
<div class="pagehead__main">
<div class="pagehead__inner">
<div class="header-caption">
<div class="absolute bottom-0 left-0 inset-x-0 px-8 md:bottom-1/2 md:transform md:translate-y-1/2">
<div class="lg:container">
<div class="bg-ep-primary-80 py-4 lg:py-8 px-4 mb-8 md:max-w-1/2 p-16">
<div class="header-caption__inner header-caption__inner--small">
<div class="header-caption__text">
<span>{slide.headline}</span><br>{slide.subline}
@@ -35,7 +35,7 @@
<f:if condition="{settings.showSkipassBadge}">
<f:link.typolink parameter="{settings.skipassPageUid}" title="Skipass inklusive">
<f:image src="EXT:ep_theme/Resources/Public/images/badge_skipass.png" alt="Skipass inklusive"
class="pagehead__badge pagehead__badge--skipass" />
class="absolute top-0 lg:top-8 right-8 lg:right-28 w-20 lg:w-auto" />
</f:link.typolink>
</f:if>
<f:if condition="{badge}">
@@ -58,7 +58,9 @@
</f:alias>
</f:if>
<f:if condition="{slide.image.0.description}">
<div class="pagehead__picturecredit">{slide.image.0.description -> f:format.htmlspecialchars()}</div>
<div class="absolute bottom-0 right-0 bg-overlay-white font-sm text-gray-700">
{slide.image.0.description -> f:format.htmlspecialchars()}
</div>
</f:if>
</div>
</f:if>
@@ -23,7 +23,7 @@
</div>
<div class="teaserbox__main">
<div class="teaserbox__header">
<p class="headline headline__subline searchresult-item__headline">
<p class="subline searchresult-item__headline">
{product.region.name}<f:if condition="{product.concept.code} == 'evt'"><strong> | {product.name}</strong></f:if>
</p>
<p class="searchresult-item__subline">{item.hotel.name -> f:format.nl2br()}</p>
@@ -5,7 +5,7 @@
xmlns:ep="http://typo3.org/ns/EP/EpTheme/ViewHelpers">
<f:section name="Main">
<div{f:if(condition: settings.searchbarFixed, else: ' class="lg:absolute lg:top-0 lg:left-0 lg:inset-x-0 lg:mt-8 z-50"')}>
<div{f:if(condition: settings.searchbarFixed, else: ' class="relative z-40"')}>
<div class="relative lg:container shadow-lg bg-white">
<div class="flex items-center lg:items-end justify-between px-4 pt-4">
<a href="{f:uri.typolink(parameter: settings.defaultHomeUid)}"
@@ -2,16 +2,16 @@
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
data-namespace-typo3-fluid="true">
<div class="blog-entry" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="mb-8" itemscope="itemscope" itemtype="http://schema.org/Article">
<n:excludeDisplayedNews newsItem="{newsItem}"/>
<div class="blog-entry__inner">
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}" class="blog-entry__image">
<div class="flex flex-col md:flex-row md:space-x-8">
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}" class="mb-4 md:w-1/2">
<f:if condition="{newsItem.mediaPreviews}">
<f:then>
<f:if condition="{newsItem.mediaPreviews.0}">
<f:alias map="{mediaElement: '{newsItem.mediaPreviews.0}'}">
<img class="scale lazyload"
data-src="{f:uri.image(image: mediaElement, crop: mediaElement.crop, width: '640', height: '360c+50')}"
<img class="block w-full h-auto lazyload"
data-src="{f:uri.image(image: mediaElement, width: '640', height: '360c+50')}"
alt="{mediaElement.originalResource.alternative}"
title="{mediaElement.originalResource.title}">
</f:alias>
@@ -20,8 +20,8 @@
<f:else>
<f:if condition="{newsItem.media}">
<f:alias map="{mediaElement: '{newsItem.media.0}'}">
<img class="scale lazyload"
data-src="{f:uri.image(image: mediaElement, crop: mediaElement.crop, width: '640', height: '360c+50')}"
<img class="block w-full h-auto lazyload"
data-src="{f:uri.image(image: mediaElement, width: '640', height: '360c+50')}"
alt="{mediaElement.originalResource.alternative}"
title="{mediaElement.originalResource.title}">
</f:alias>
@@ -29,13 +29,13 @@
</f:else>
</f:if>
</n:link>
<div class="blog-entry__teaser">
<div class="md:flex-1">
<h3 class="blog-entry__headline">
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}">
<span itemprop="headline">{newsItem.title}</span>
</n:link>
</h3>
<p class="blog-entry__info">
<p class="text-sm italic mb-4">
<f:if condition="{newsItem.author}">{newsItem.author} am </f:if>
<time itemprop="datePublished" datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}"><f:format.date format="{f:translate(key:'dateFormat')}">{newsItem.datetime}</f:format.date></time>
<f:if condition="{newsItem.tags}"> in
@@ -48,14 +48,16 @@
</f:if>
</p>
<n:removeMediaTags>
<div class="mb-4" itemprop="description">
<f:if condition="{newsItem.teaser}">
<f:then>
<div itemprop="description">{newsItem.teaser -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}</div>
{newsItem.teaser -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}
</f:then>
<f:else>
<div itemprop="description">{newsItem.bodytext -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}</div>
{newsItem.bodytext -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}
</f:else>
</f:if>
</div>
</n:removeMediaTags>
<n:link newsItem="{newsItem}" settings="{settings}" class="button button--default button--small" title="{newsItem.title}">
<f:translate key="more-link"/>
@@ -28,11 +28,11 @@
<div class="teaserbox__header">
<f:if condition="{teaser.concept.code} == 'evt'">
<f:then>
<span class="product-teaser__headline headline headline__subline">{teaser.product.name -> f:format.nl2br()}</span>
<span class="product-teaser__headline subline">{teaser.product.name -> f:format.nl2br()}</span>
<span class="product-teaser__subline">{teaser.region.name}</span>
</f:then>
<f:else>
<span class="product-teaser__headline headline headline__subline">{teaser.region.name}</span>
<span class="product-teaser__headline subline">{teaser.region.name}</span>
<span class="product-teaser__subline">{teaser.product.name -> f:format.nl2br()}{f:if(condition: teaser.product.subline, then: '<br>{teaser.product.subline}')}</span>
</f:else>
</f:if>
@@ -24,7 +24,7 @@
</div>
<div class="teaserbox__main">
<div class="teaserbox__header">
<span class="headline headline__subline searchresult-item__headline">
<span class="subline searchresult-item__headline">
{teaser.region.name}<f:if condition="{teaser.concept.code} == 'evt'"><strong> | {teaser.product.name}</strong></f:if>
</span>
<f:if condition="{teaser.hotelCount} == 1">
@@ -6,13 +6,13 @@
</div>
</f:then>
<f:else>
<h2 class="headline headline--secondary headline--has-subline">
<h2 class="headline--has-subline">
<f:if condition="{region.season} == 's'">
<f:then>
<span class="headline__subline">Urlaub im</span> Gebiet {region.name -> f:format.raw()}
<span class="subline">Urlaub im</span> Gebiet {region.name -> f:format.raw()}
</f:then>
<f:else>
<span class="headline__subline">Skiurlaub im</span> Skigebiet {region.name -> f:format.raw()}
<span class="subline">Skiurlaub im</span> Skigebiet {region.name -> f:format.raw()}
</f:else>
</f:if>
</h2>
@@ -1,18 +1,21 @@
{namespace v=FluidTYPO3\Vhs\ViewHelpers}
<html data-namespace-typo3-fluid="true" lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:if condition="{region.awardImage}">
<div class="ep-sidebar ep-snow region-award">
<p><strong>{region.awardLabel -> v:or(alternative: 'Auszeichnung')}</strong></p>
<div>
<div class="bg-gray-200 p-4 mb-8">
<span class="block font-bold mb-8">
{region.awardLabel -> v:or(alternative: 'Auszeichnung')}
</span>
<f:link.typolink parameter="{region.awardLink}" title="{region.name}">
<f:image src="{region.awardImage.uid}"
treatIdAsReference="1"
crop="{region.awardImage.crop}"
<f:image image="{region.awardImage}"
alt="{region.awardImage.alternative}"
title="{region.awardImage.title}"
maxWidth="165"
class="region-award__image"
class="block max-w-full mx-auto"
/>
</f:link.typolink>
</div>
</div>
</f:if>
</html>
@@ -34,7 +34,7 @@
<hr>
{data.bodytext -> f:format.html()}
</div>
<button class="button button--full">{data.button -> v:or(alternative: 'Details')}</button>
<button class="button w-full">{data.button -> v:or(alternative: 'Details')}</button>
</f:section>
</html>
@@ -1,6 +1,5 @@
<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:f="http://typo3.org/ns/fluid/ViewHelpers">
<f:section name="Content">
@@ -6,15 +6,10 @@
<f:section name="Main">
<div class="bg-winter">
<svg viewBox="0 0 1440 80" xmlns="http://www.w3.org/2000/svg">
<path d="M0,-166.6L0,56.5L157.2,2L320.6,43.4L469.4,32.9L643.4,0.4L1104.4,50L1288.1,12.6L1364.5,47.5L1440,23.9L1440,-166.6L0,-166.6Z" style="fill:white;fill-rule:nonzero;"/>
<path d="M157.2,2L0,40.1L0.4,80L157.2,2Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M1288.1,12.6L1365.4,35.3L1440,23.9L1367,56.5L1288.1,12.6Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M320.6,43.4L643.4,0.4L470.2,43.4L320.6,43.4Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
</svg>
<f:render partial="Disrupter/Outlines" section="Top1" arguments="{classes: 'hidden md:block transform -translate-y-2 text-white'}"/>
<div class="container grid grid-cols-3 gap-8 py-8">
<div class="col-span-3 md:col-span-1 left-content">
<span class="headline headline--secondary headline--disturber headline--disturber-large">
<span class="headline--primary text-white">
SchneEPchen
</span>
</div>
@@ -39,11 +34,7 @@
</div>
</div>
</div>
<svg viewBox="0 0 1440 110" xmlns="http://www.w3.org/2000/svg">
<path d="M1440.4,162L1440,105.8L1017.4,29.4L701.1,45.6L467,51.3L210.1,29.4L0.4,13.9L0.4,162L1440.4,162Z" style="fill:white;fill-rule:nonzero;"/>
<path d="M1017.4,29.4L680.8,23.7L467,51.3L694.6,51.3L1017.4,29.4Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
<path d="M210.1,29.4L0.4,3.4L0.4,23.7L210.1,29.4Z" style="fill:rgb(249,199,0);fill-rule:nonzero;"/>
</svg>
<f:render partial="Disrupter/Outlines" section="Bottom1" arguments="{classes: 'hidden md:block transform translate-y-2 text-white'}"/>
</div>
</f:section>
@@ -5,23 +5,21 @@
<f:section name="Main">
<f:spaceless>
<f:if condition="{menu}">
<ul class="list-none m-0 p-0 space-y-2">
<div class="flex flex-col space-y-2">
<f:for each="{menu}" as="page">
<f:if condition="{page.content}">
<f:for each="{page.content}" as="element">
<f:if condition="{element.data.header}">
<li>
<a href="{page.link}#c{element.data.uid}"
class="btn btn-warning ep-sidebar"
class="button w-full"
x-data="scrollTo('c{element.data.uid}')">
{element.data.header}
</a>
</li>
</f:if>
</f:for>
</f:if>
</f:for>
</ul>
</div>
</f:if>
</f:spaceless>
</f:section>
@@ -5,9 +5,8 @@
<f:section name="Main">
<f:if condition="{menu}">
<ul class="list-none m-0 p-0 space-y-2">
<div class="flex flex-col space-y-2">
<f:for each="{menu}" as="page">
<li>
<a href="{page.link}"{f:if(condition: page.target, then: ' target="{page.target}"')} title="{page.title}">
{page.title}
</a>
@@ -22,9 +21,8 @@
</f:for>
</ul>
</f:if>
</li>
</f:for>
</ul>
</div>
</f:if>
</f:section>
@@ -5,16 +5,14 @@
<f:section name="Main">
<f:if condition="{menu}">
<ul class="list-none m-0 p-0 space-y-2 mb-8">
<div class="flex flex-col space-y-2 mb-8">
<f:for each="{menu}" as="page">
<li>
<f:link.typolink parameter="{page.data.uid}"
class="btn btn-warning w-full{f:if(condition: '{page.active}', then: ' active')}">
class="button button--light w-full{f:if(condition: '{page.active}', then: ' active')}">
{page.data.title}
</f:link.typolink>
</li>
</f:for>
</ul>
</div>
</f:if>
</f:section>
@@ -7,7 +7,6 @@
<f:section name="content">
<f:if condition="{newsItem}">
<f:then>
<div class="blog-entry blog-entry--detail">
<n:format.nothing>
<n:excludeDisplayedNews newsItem="{newsItem}" />
<f:if condition="{newsItem.alternativeTitle}">
@@ -24,8 +23,10 @@
</f:if>
<f:render partial="Detail/Opengraph" arguments="{newsItem: newsItem, settings:settings}" />
</n:format.nothing>
<h1 class="headline headline--primary headline--underlined" itemprop="headline">{newsItem.title}</h1>
<p class="blog-entry__info">
<h1 class="headline headline--primary headline--underlined" itemprop="headline">
{newsItem.title}
</h1>
<p class="text-sm italic mb-4">
<f:if condition="{newsItem.author}">{newsItem.author} am </f:if>
<time itemprop="datePublished" datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}"><f:format.date format="{f:translate(key:'dateFormat')}">{newsItem.datetime}</f:format.date></time>
<f:if condition="{newsItem.tags}"> in
@@ -38,16 +39,26 @@
</f:if>
</p>
<f:if condition="{newsItem.teaser}">
<f:format.html>{newsItem.teaser}</f:format.html>
<p class="text-lg">
<f:format.nl2br>{newsItem.teaser}</f:format.nl2br>
</p>
</f:if>
<n:renderMedia news="{newsItem}" imgClass="img-responsive" videoClass="video-wrapper" audioClass="audio-wrapper">
<n:renderMedia news="{newsItem}" imgClass="block w-full h-auto mb-4" videoClass="video-wrapper" audioClass="audio-wrapper">
<f:render partial="Detail/MediaContainer" arguments="{media: newsItem.media, settings:settings, id: newsItem.uid}" />
<f:format.html>{newsItem.bodytext}</f:format.html>
</n:renderMedia>
<f:cObject typoscriptObjectPath="lib.tx_news.contentElementRendering">{newsItem.contentElementIdList}</f:cObject>
<f:alias map="{contentElements: '{f:cObject(typoscriptObjectPath: \'lib.tx_news.contentElementRendering\', data: newsItem.contentElementIdList)}'}">
<f:if condition="{contentElements}">
<div class="flex flex-col space-y-4">
{contentElements -> f:format.raw()}
</div>
</f:if>
</f:alias>
<f:if condition="{newsItem.relatedFiles}">
<h3 class="headline headline--underlined">Dateien</h3>
<ul>
<h3 class="headline headline--underlined">
Dateien
</h3>
<ul class="list-none p-0 mb-4">
<f:for each="{newsItem.relatedFiles}" as="relatedFile">
<li>
<a href="{relatedFile.originalResource.publicUrl -> f:format.htmlspecialchars()}" target="_blank">
@@ -58,8 +69,10 @@
</ul>
</f:if>
<f:if condition="{newsItem.allRelatedSorted}">
<h3 class="headline headline--underlined">Ähnliche Beiträge</h3>
<ul>
<h3 class="headline headline--underlined">
Ähnliche Beiträge
</h3>
<ul class="list-none p-0 mb-4">
<f:for each="{newsItem.allRelatedSorted}" as="related">
<li>
<n:link newsItem="{related}" settings="{settings}" title="{related.title}">
@@ -75,7 +88,6 @@
<f:translate key="back-link" />
</f:link.typolink>
</f:if>
</div>
</f:then>
</f:if>
</f:section>
@@ -10,21 +10,29 @@
<f:if condition="{contentObjectData.header}">
<f:if condition="{tags.0}">
<f:then>
<h1 class="headline headline--primary headline--underlined">Blog: {tags.0.title}</h1>
<h1 class="headline headline--primary headline--underlined">
Blog: {tags.0.title}
</h1>
</f:then>
<f:else>
<h1 class="headline headline--primary headline--underlined">Blog</h1>
<h1 class="headline headline--primary headline--underlined">
Blog
</h1>
</f:else>
</f:if>
</f:if>
<f:if condition="{settings.hidePagination}">
<f:then>
<f:for each="{news}" as="newsItem" iteration="iterator">
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
<f:render partial="List/Item"
arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>
</f:then>
<f:else>
<n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}" initial="{offset:settings.offset,limit:settings.limit,recordId:contentObjectData.uid}">
<n:widget.paginate objects="{news}"
as="paginatedNews"
configuration="{settings.list.paginate}"
initial="{offset:settings.offset,limit:settings.limit,recordId:contentObjectData.uid}">
<f:for each="{paginatedNews}" as="newsItem" iteration="iterator">
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>
@@ -10,10 +10,12 @@
uri: "{ep:uri.ajax(controller: "AjaxSearchbar", action: "update", pageUid: settings.defaultAjaxUid)}",
initialSearchParams: {searchParams -> f:format.json()},
initialFilterOptions: {filterOptions -> f:format.json()},
datePresets: {settings.datePickerPresets -> f:format.json()}
datePresets: {settings.datePickerPresets -> f:format.json()},
sticky: <f:if condition="{fixed}"><f:then>true</f:then><f:else>false</f:else></f:if>
</f:format.raw>
})'>
<div class="searchbar z-10{f:if(condition: fixed, then: ' searchbar--fixed')}"{f:if(condition: fixed, else: ' x-data="sticky(650)" x-bind:class="sticky && \'searchbar--fixed\'"')}>
<div class="searchbar {f:if(condition: fixed, then: ' searchbar--fixed')}"{f:if(condition: fixed, else: ' x-data="sticky(650)" x-bind:class="sticky && \'searchbar--sticky\'"')}>
<div class="max-w-screen-lg mx-auto">
<f:form action="processSearch" controller="Search" method="post" name="searchParams"
object="{searchParams}" pluginName="searchresult" extensionName="epproducts"
pageUid="{settings.defaultSearchPageUid}" additionalAttributes="{ref: 'form'}">
@@ -25,7 +27,7 @@
<f:form.hidden property="pax" additionalAttributes="{x-model: 'searchParams.pax'}"/>
<f:form.hidden property="priceRange" additionalAttributes="{x-model: 'searchParams.priceRange'}"/>
<f:form.hidden property="pageUid" additionalAttributes="{x-model: 'searchParams.pageUid'}"/>
<div class="flex items-start pt-8 px-8">
<div class="flex items-start" x-bind:class="{ 'py-8': sticky, 'pt-8 px-8': ! sticky }">
<div class="w-4/12">
<div class="relative border-b border-r border-white mr-8" x-init="initDatePicker()">
<input type="text"
@@ -165,7 +167,9 @@
</div>
</div>
</div>
<div class="flex justify-end mt-4">
<div class="flex justify-end mt-4"
x-show="!sticky"
x-cloak>
<button type="submit" class="w-1/3 text-white uppercase py-2" x-bind:disabled="loading">
Detailsuche
</button>
@@ -176,6 +180,7 @@
</f:form>
</div>
</div>
</div>
</f:section>
</html>
@@ -6,10 +6,13 @@
<f:section name="Main">
<ep:container data="{data}">
<div class="watchlist" x-data='watchlist("<ep:uri.ajax action="list" controller="AjaxWatchlist" pageUid="{settings.defaultAjaxUid}"/>")'>
<div class="relative"
x-data='watchlist("<ep:uri.ajax action="list" controller="AjaxWatchlist" pageUid="{settings.defaultAjaxUid}"/>")'>
<div x-ref="watchlist"></div>
<div x-show="loading" class="loader">
<f:image src="EXT:ep_theme/Resources/Public/images/ajax-loader-white.gif" alt="Loading"/>
<div x-show="loading" class="absolute top-0 left-0 inset-0 bg-overlay-white">
<f:image class="absolute top-1/2 left-1/2 transform -translate-xy-1/2"
src="EXT:ep_theme/Resources/Public/images/ajax-loader-white.gif"
alt="Loading"/>
</div>
</div>
</ep:container>
+13 -10
View File
@@ -50,7 +50,7 @@ module.exports = {
},
'ep': {
'primary': '#3d8ccb',
'secondary': '#f0bc44',
'secondary': '#f9c700',
'primary-light': '#009fff',
'primary-medium': '#165883',
'primary-dark': '#18527B',
@@ -94,15 +94,18 @@ module.exports = {
},
},
variants: {
backgroundColor: ({ after }) => after([ 'sbw', 'sbw-hover', 'snz', 'snz-hover', 'uch', 'uch-hover', 'even', 'odd' ]),
textColor: ({ after }) => after([ 'sbw', 'sbw-hover', 'snz', 'snz-hover', 'uch', 'uch-hover' ]),
borderColor: ({ after }) => after([ 'sbw','snz', 'uch' ]),
display: ({ after }) => after(['group-hover']),
visibility: ({ after }) => after(['group-hover']),
opacity: ({ after }) => after(['group-hover']),
rotate: ({ after }) => after(['group-hover']),
flexDirection: ({ after }) => after(['even', 'odd']),
padding: ({ after }) => after(['even', 'odd']),
extend: {
backgroundColor: [ 'sbw', 'sbw-hover', 'snz', 'snz-hover', 'uch', 'uch-hover', 'even', 'odd' ],
textColor: [ 'sbw', 'sbw-hover', 'snz', 'snz-hover', 'uch', 'uch-hover' ],
borderColor: [ 'sbw','snz', 'uch' ],
display: ['group-hover'],
visibility: ['group-hover'],
opacity: ['group-hover'],
rotate: ['group-hover'],
flexDirection: ['even', 'odd'],
padding: ['even', 'odd', 'first', 'last'],
margin: ['even', 'odd', 'first', 'last'],
},
},
plugins: [
require('tailwindcss-alt')({