feat: contact, text with image, YouTube/Vimeo video, disrupter and map elements on TYPO3 13
Restored from a46918d, TCA ported to TYPO3 13. Their markup matches
TYPO3 10 on every page that renders. Headers with the default layout
stay hidden, as on TYPO3 10.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
49b96df21a
commit
2999abc16c
19 files changed
+746
No files matched your search
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'label' => 'Ansprechpartner',
|
||||
'value' => 'contact',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser_booking_link',
|
||||
'after'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['columns']['tx_eptheme_contact'] = [
|
||||
'exclude' => 0,
|
||||
'label' => 'Mitarbeiter',
|
||||
'config' => [
|
||||
'type' => 'select',
|
||||
'default' => 0,
|
||||
'renderType' => 'selectSingle',
|
||||
'foreign_table' => 'tx_epproducts_domain_model_teammember',
|
||||
'foreign_table_where' => 'ORDER BY name',
|
||||
'minitems' => 1,
|
||||
'maxitems' => 1,
|
||||
]
|
||||
];
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['contact'] = [
|
||||
'showitem' => '
|
||||
--palette--;' . $frontendLanguageFilePrefix . 'palette.general;general,
|
||||
tx_eptheme_contact,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.access,
|
||||
hidden;' . $frontendLanguageFilePrefix . 'field.default.hidden,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.extended
|
||||
',
|
||||
];
|
||||
|
||||
});
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'label' => 'Störer (neu)',
|
||||
'value' => 'disrupter',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser_product',
|
||||
'after'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['columns']['tx_eptheme_disrupter'] = [
|
||||
'exclude' => 0,
|
||||
'label' => 'Störer',
|
||||
'config' => [
|
||||
'type' => 'select',
|
||||
'renderType' => 'selectSingle',
|
||||
'foreign_table' => 'tx_eptheme_domain_model_disrupter',
|
||||
'maxitems' => 1,
|
||||
'minitems' => 1,
|
||||
'foreign_table_where' => 'ORDER BY headline ASC',
|
||||
'MM' => 'tx_eptheme_ttcontent_tx_eptheme_disrupter_mm',
|
||||
],
|
||||
];
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['disrupter'] = [
|
||||
'showitem' => '
|
||||
--palette--;' . $frontendLanguageFilePrefix . 'palette.general;general, tx_eptheme_disrupter,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.appearance,
|
||||
layout;' . $frontendLanguageFilePrefix . 'layout_formlabel, tx_eptheme_background,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.access,
|
||||
hidden;' . $frontendLanguageFilePrefix . 'field.default.hidden,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.extended
|
||||
',
|
||||
'columnsOverrides' => [
|
||||
]
|
||||
];
|
||||
|
||||
ExtensionManagementUtility::addPiFlexFormValue(
|
||||
'*',
|
||||
'FILE:EXT:ep_theme/Configuration/FlexForms/flexform_disturber.xml',
|
||||
'disrupter'
|
||||
);
|
||||
|
||||
});
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'label' => 'Google Map',
|
||||
'value' => 'gmap',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'ytvideo',
|
||||
'after'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['gmap'] = [
|
||||
'showitem' => '
|
||||
--palette--;' . $frontendLanguageFilePrefix . 'palette.general;general,
|
||||
tx_eptheme_context_region, tx_eptheme_context_hotel,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.access,
|
||||
hidden;' . $frontendLanguageFilePrefix . 'field.default.hidden,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.extended
|
||||
',
|
||||
];
|
||||
|
||||
});
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'label' => 'YouTube/Vimeo Video',
|
||||
'value' => 'ytvideo',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'textmedia',
|
||||
'after'
|
||||
);
|
||||
|
||||
$GLOBALS['TCA']['tt_content']['types']['ytvideo'] = [
|
||||
'showitem' => '
|
||||
--palette--;' . $frontendLanguageFilePrefix . 'palette.general;general,
|
||||
layout, header_link,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.access,
|
||||
hidden;' . $frontendLanguageFilePrefix . 'field.default.hidden,
|
||||
--div--;' . $frontendLanguageFilePrefix . 'tabs.extended
|
||||
',
|
||||
'columnsOverrides' => [
|
||||
'header_link' => [
|
||||
'label' => 'YouTube URL/Vimeo ID',
|
||||
],
|
||||
'layout' => [
|
||||
'label' => 'Typ',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
});
|
||||
@@ -0,0 +1,198 @@
|
||||
<?php
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'Störer',
|
||||
'default_sortby' => 'ORDER BY headline',
|
||||
'label' => 'headline',
|
||||
'tstamp' => 'tstamp',
|
||||
'crdate' => 'crdate',
|
||||
'dividers2tabs' => true,
|
||||
'versioningWS' => true,
|
||||
'languageField' => 'sys_language_uid',
|
||||
'transOrigPointerField' => 'l10n_parent',
|
||||
'transOrigDiffSourceField' => 'l10n_diffsource',
|
||||
'delete' => 'deleted',
|
||||
'enablecolumns' => [
|
||||
'disabled' => 'hidden',
|
||||
'starttime' => 'starttime',
|
||||
'endtime' => 'endtime',
|
||||
],
|
||||
'searchFields' => 'headline,text',
|
||||
'iconfile' => 'EXT:ep_theme/Resources/Public/images/icon_ce.svg',
|
||||
],
|
||||
'types' => [
|
||||
'1' => [
|
||||
'showitem' => 'sys_language_uid, hidden, layout, headline, text, image, pi_flexform',
|
||||
],
|
||||
],
|
||||
'palettes' => [
|
||||
],
|
||||
'columns' => [
|
||||
|
||||
'sys_language_uid' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
|
||||
'config' => ['type' => 'language'],
|
||||
],
|
||||
'l10n_parent' => [
|
||||
'displayCond' => 'FIELD:sys_language_uid:>:0',
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
|
||||
'config' => [
|
||||
'type' => 'select',
|
||||
'default' => 0,
|
||||
'renderType' => 'selectSingle',
|
||||
'items' => [
|
||||
['label' => '', 'value' => 0],
|
||||
],
|
||||
'foreign_table' => 'tx_eptheme_domain_model_disrupter',
|
||||
'foreign_table_where' => 'AND tx_eptheme_domain_model_disrupter.pid=###CURRENT_PID### AND tx_eptheme_domain_model_disrupter.sys_language_uid IN (-1,0)',
|
||||
],
|
||||
],
|
||||
'l10n_diffsource' => [
|
||||
'config' => [
|
||||
'type' => 'passthrough',
|
||||
],
|
||||
],
|
||||
|
||||
't3ver_label' => [
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.versionLabel',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'max' => 255,
|
||||
]
|
||||
],
|
||||
|
||||
'hidden' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.hidden',
|
||||
'config' => [
|
||||
'type' => 'check',
|
||||
],
|
||||
],
|
||||
'starttime' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
|
||||
'config' => [
|
||||
'type' => 'datetime',
|
||||
'size' => 13,
|
||||
'checkbox' => 0,
|
||||
'default' => 0,
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
'endtime' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
|
||||
'config' => [
|
||||
'type' => 'datetime',
|
||||
'size' => 13,
|
||||
'checkbox' => 0,
|
||||
'default' => 0,
|
||||
'behaviour' => [
|
||||
'allowLanguageSynchronization' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'headline' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'Headline',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'size' => 30,
|
||||
'eval' => 'trim'
|
||||
],
|
||||
],
|
||||
'layout' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'Layout',
|
||||
'config' => [
|
||||
'type' => 'select',
|
||||
'renderType' => 'selectSingle',
|
||||
'items' => [
|
||||
['label' => 'klein', 'value' => 0],
|
||||
['label' => 'groß', 'value' => 1],
|
||||
['label' => 'Event klein', 'value' => 2],
|
||||
['label' => 'Event groß', 'value' => 3],
|
||||
],
|
||||
],
|
||||
],
|
||||
'text' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'Text',
|
||||
'config' => [
|
||||
'type' => 'text',
|
||||
'cols' => 40,
|
||||
'rows' => 5,
|
||||
'eval' => 'trim',
|
||||
'enableRichtext' => true,
|
||||
],
|
||||
],
|
||||
'image' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'Bild',
|
||||
'config' => [
|
||||
'type' => 'file',
|
||||
'allowed' => 'jpg,jpeg',
|
||||
'appearance' => [
|
||||
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference',
|
||||
'fileUploadAllowed' => false,
|
||||
],
|
||||
'overrideChildTca' => [
|
||||
'types' => [
|
||||
FileType::IMAGE->value => [
|
||||
'showitem' => '
|
||||
--palette--;LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
|
||||
--palette--;;filePalette'
|
||||
],
|
||||
],
|
||||
'columns' => [
|
||||
'crop' => [
|
||||
'config' => [
|
||||
'cropVariants' => [
|
||||
'default' => [
|
||||
'title' => 'Alle Geräte',
|
||||
'allowedAspectRatios' => [
|
||||
'square' => [
|
||||
'title' => 'quadratisch',
|
||||
'value' => 1,
|
||||
],
|
||||
'free' => [
|
||||
'title' => 'Frei',
|
||||
'value' => 'NaN',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'maxitems' => 1,
|
||||
'minitems' => 1,
|
||||
],
|
||||
],
|
||||
'pi_flexform' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'Buttons',
|
||||
'config' => [
|
||||
'type' => 'flex',
|
||||
'ds' => [
|
||||
'default' => 'FILE:EXT:ep_theme/Configuration/FlexForms/flexform_disturber.xml',
|
||||
],
|
||||
]
|
||||
],
|
||||
'tt_content' => [
|
||||
'exclude' => 0,
|
||||
'config' => [
|
||||
'type' => 'passthrough',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,23 @@
|
||||
tt_content.contact =< lib.contentElement
|
||||
tt_content.contact {
|
||||
templateName = Contact
|
||||
dataProcessing {
|
||||
10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
|
||||
10 {
|
||||
table = tx_epproducts_domain_model_teammember
|
||||
where.data = field:tx_eptheme_contact
|
||||
where.wrap = uid=|
|
||||
pidInList = {$plugin.tx_eptheme.settings.teamMemberStoragePid}
|
||||
as = contact
|
||||
|
||||
dataProcessing {
|
||||
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
|
||||
10 {
|
||||
references.fieldName = image
|
||||
references.table = tx_epproducts_domain_model_teammember
|
||||
as = image
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
tt_content.disrupter =< lib.contentElement
|
||||
tt_content.disrupter {
|
||||
templateName = Disrupter
|
||||
dataProcessing {
|
||||
10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
|
||||
10 {
|
||||
table = tx_eptheme_domain_model_disrupter
|
||||
pidInList = {$plugin.tx_eptheme.settings.disrupterStoragePid}
|
||||
join = tx_eptheme_ttcontent_tx_eptheme_disrupter_mm ON tx_eptheme_ttcontent_tx_eptheme_disrupter_mm.uid_foreign = tx_eptheme_domain_model_disrupter.uid
|
||||
where {
|
||||
data = field:uid
|
||||
intval = 1
|
||||
wrap = tx_eptheme_ttcontent_tx_eptheme_disrupter_mm.uid_local=|
|
||||
}
|
||||
as = disrupter
|
||||
|
||||
dataProcessing {
|
||||
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
|
||||
10 {
|
||||
references.fieldName = image
|
||||
references.table = tx_eptheme_domain_model_disrupter
|
||||
as = image
|
||||
}
|
||||
20 = EP\EpTheme\DataProcessing\FlexFormProcessor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
tt_content.gmap =< tt_content.teaser_product
|
||||
tt_content.gmap {
|
||||
templateName = Gmap
|
||||
dataProcessing {
|
||||
10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
|
||||
10 {
|
||||
table = tx_epproducts_domain_model_hotel
|
||||
where.data = field:tx_eptheme_context_hotel
|
||||
where.wrap = uid=|
|
||||
pidInList = {$plugin.tx_epproducts.settings.hotelsStoragePid}
|
||||
as = hotel
|
||||
}
|
||||
20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
|
||||
20 {
|
||||
table = tx_epproducts_domain_model_region
|
||||
where.data = field:tx_eptheme_context_region
|
||||
where.wrap = uid=|
|
||||
pidInList = {$plugin.tx_epproducts.settings.destinationsStoragePid}
|
||||
recursive = 2
|
||||
as = region
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
tt_content.ytvideo =< lib.contentElement
|
||||
tt_content.ytvideo {
|
||||
templateName = YoutubeVideo
|
||||
}
|
||||
@@ -10,4 +10,6 @@ lib.contentElement {
|
||||
settings.mapTileUrl = {$plugin.tx_eptheme.settings.mapTileUrl}
|
||||
settings.mapApiKey = {$plugin.tx_eptheme.settings.mapApiKey}
|
||||
settings.mapAttribution = {$plugin.tx_eptheme.settings.mapAttribution}
|
||||
# As on TYPO3 10: headers with the default layout are not shown (editors rely on it)
|
||||
settings.defaultHeaderType =
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<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="{ep:themeClasses(classes: '{ep: \'bg-ep-primary-dark\', sbw: \'bg-sbw-primary/80\', snz: \'bg-snz-primary/80\', suz: \'bg-suz-primary/80\', uch: \'bg-uch-primary/80\'}', key: settings.themekey)} my-2">
|
||||
<f:if condition="{settings.themeKey} == 'ep'">
|
||||
<f:render partial="Disrupter/Outlines"
|
||||
section="Top1"
|
||||
arguments="{classes: 'hidden md:block -translate-y-2 {f:if(condition: \'{data.tx_eptheme_background} == 1 || {data.tx_eptheme_background} == 3\', then: \'text-ep-primary-bg\', else: \'text-white\')}'}"/>
|
||||
</f:if>
|
||||
<div class="relative container grid grid-cols-2 gap-8 py-4">
|
||||
<div class="col-span-2 md:col-span-1">
|
||||
<div class="relative max-w-md mx-auto mb-8">
|
||||
<f:if condition="{image}">
|
||||
<f:image image="{image}"
|
||||
loading="lazy"
|
||||
class="block w-full h-auto rounded-full"
|
||||
width="400"
|
||||
height="400c"
|
||||
alt="{image.alternative}" />
|
||||
</f:if>
|
||||
<a href="tel:{settings.phoneNumber -> v:format.pregReplace(pattern: '/[\-\s]/', replacement: '')}"
|
||||
rel="nofollow"
|
||||
class="absolute bottom-0 left-1/2 -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\', suz: \'bg-suz-secondary\', uch: \'bg-uch-secondary\'}', key: settings.themekey)}">
|
||||
{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?
|
||||
</span>
|
||||
<span class="block whitespace-nowrap">
|
||||
Wir helfen euch gerne!
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-span-2 md:col-span-1">
|
||||
<span class="headline--secondary font-light text-white">{data.subheadline}</span>
|
||||
<span class="headline--secondary uppercase font-light text-white mb-4">{data.headline}</span>
|
||||
<div class="text-white" data-rte-content>
|
||||
{data.bodytext -> f:format.html()}
|
||||
</div>
|
||||
<f:if condition="{data.flexForm.buttons}">
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4 lg:gap-8">
|
||||
<f:for each="{data.flexForm.buttons}" as="button">
|
||||
<f:link.typolink parameter="{button.container.link}"
|
||||
class="button bg-button--secondary shadow-lg">
|
||||
{button.container.label}
|
||||
</f:link.typolink>
|
||||
</f:for>
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
</div>
|
||||
<f:if condition="{settings.themeKey} == 'ep'">
|
||||
<f:render partial="Disrupter/Outlines"
|
||||
section="Bottom1"
|
||||
arguments="{classes: 'hidden md:block translate-y-2 {f:if(condition: \'{data.tx_eptheme_background} == 2 || {data.tx_eptheme_background} == 3\', then: \'text-ep-primary-bg\', else: \'text-white\')}'}"/>
|
||||
</f:if>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<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">
|
||||
|
||||
<div class="bg-ep-primary-dark my-2">
|
||||
<f:render partial="Disrupter/Outlines"
|
||||
section="Top1"
|
||||
arguments="{classes: 'hidden md:block -translate-y-2 {f:if(condition: \'{data.tx_eptheme_background} == 1 || {data.tx_eptheme_background} == 3\', then: \'text-ep-primary-bg\', else: \'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>
|
||||
{data.flexForm.buttons -> v:iterator.first() -> v:variable.set(name: 'button')}
|
||||
<a href="{f:uri.typolink(parameter: button.container.link)}" class="btn btn-info">
|
||||
{button.container.label -> f:format.raw()}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<f:render partial="Disrupter/Outlines"
|
||||
section="Bottom1"
|
||||
arguments="{classes: 'hidden md:block translate-y-2 {f:if(condition: \'{data.tx_eptheme_background} == 2 || {data.tx_eptheme_background} == 3\', then: \'text-ep-primary-bg\', else: \'text-white\')}'}"/>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
|
||||
<f:alias map="{button: data.flexForm.buttons.0}">
|
||||
<div class="container-fluid ep-disturber-reminder">
|
||||
<div data-rte-content>
|
||||
{data.headline}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<a href="{f:uri.typolink(parameter: button.container.link)}" title="{button.container.label -> f:format.raw()}">
|
||||
<f:if condition="{image}">
|
||||
<f:image image="{image}"
|
||||
loading="lazy"
|
||||
class="block w-full h-auto rounded-full"
|
||||
width="400"
|
||||
alt="{image.alternative}" />
|
||||
</f:if>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-6" data-rte-content>
|
||||
{data.text -> f:format.html()}
|
||||
</div>
|
||||
<a href="{f:uri.typolink(parameter: button.container.link)}" class="btn btn-info">
|
||||
{button.container.label -> f:format.raw()}
|
||||
</a>
|
||||
</div>
|
||||
</f:alias>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,42 @@
|
||||
<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="{ep:themeClasses(classes: '{ep: \'bg-ep-primary-dark\', sbw: \'bg-sbw-primary/80\', snz: \'bg-snz-primary/80\', suz: \'bg-suz-primary/80\', uch: \'bg-uch-primary/80\'}', key: settings.themekey)} my-2">
|
||||
<f:render partial="Disrupter/Outlines"
|
||||
section="Top1"
|
||||
arguments="{classes: 'hidden md:block -translate-y-2 {f:if(condition: \'{background} == 1 || {background} == 3\', then: \'text-ep-primary-bg\', else: \'text-white\')}'}"/>
|
||||
<div class="max-w-screen-lg mx-auto py-4">
|
||||
<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">
|
||||
<f:if condition="{image}">
|
||||
<f:image image="{image}"
|
||||
loading="lazy"
|
||||
class="block w-full h-auto rounded-full"
|
||||
width="400"
|
||||
height="400c"
|
||||
alt="{image.alternative}" />
|
||||
</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--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="button bg-button--secondary shadow-lg">
|
||||
{button.container.label}
|
||||
</f:link.typolink>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<f:render partial="Disrupter/Outlines"
|
||||
section="Bottom1"
|
||||
arguments="{classes: 'hidden md:block translate-y-2 {f:if(condition: \'{background} == 2 || {background} == 3\', then: \'text-ep-primary-bg\', else: \'text-white\')}'}"/>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,31 @@
|
||||
<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"
|
||||
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers">
|
||||
|
||||
<f:layout name="Default"/>
|
||||
|
||||
<f:section name="Main">
|
||||
<div class="bg-zinc-50 p-4 mb-8">
|
||||
<div class="grid grid-cols-3 gap-4">
|
||||
<div class="col-span-1">
|
||||
<f:if condition="{contact.0.image.0}">
|
||||
<f:image
|
||||
image="{contact.0.image.0}"
|
||||
width="120"
|
||||
class="block w-full h-auto"
|
||||
alt="{contact.0.data.name}" />
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="col-span-2">
|
||||
<strong>{contact.0.data.name}</strong>
|
||||
<f:if condition="{contact.0.data.tasks}"><br>{contact.0.data.tasks -> f:format.nl2br()}</f:if>
|
||||
<f:if condition="{contact.0.data.phone}"><br><i class="fa fa-phone"></i> {contact.0.data.phone}</f:if>
|
||||
<f:if condition="{contact.0.data.email}"><br><i class="fa fa-envelope-o"></i> <f:link.email email="{contact.0.data.email}" title="E-Mail an {contact.0.data.name}">E-Mail</f:link.email></f:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
|
||||
<f:layout name="Default"/>
|
||||
|
||||
<f:section name="Main">
|
||||
<f:alias map="{data: disrupter.0.data, image: disrupter.0.image.0, background: data.tx_eptheme_background}">
|
||||
<f:switch expression="{data.layout}">
|
||||
<f:case value="0">
|
||||
<f:render partial="Disrupter/Small" arguments="{_all}"/>
|
||||
</f:case>
|
||||
<f:case value="1">
|
||||
<f:render partial="Disrupter/Large" arguments="{_all}"/>
|
||||
</f:case>
|
||||
<f:case value="2">
|
||||
<f:render partial="Disrupter/LastChance" arguments="{_all}"/>
|
||||
</f:case>
|
||||
<f:case value="3">
|
||||
<f:render partial="Disrupter/Reminder" arguments="{_all}"/>
|
||||
</f:case>
|
||||
</f:switch>
|
||||
</f:alias>
|
||||
</f:section>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<html data-namespace-typo3-fluid="true" lang="en"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
|
||||
|
||||
<f:layout name="Default"/>
|
||||
|
||||
<f:section name="Main">
|
||||
<f:if condition="{hotel}">
|
||||
<f:variable name="latitude" value="{hotel.0.data.latitude}"/>
|
||||
<f:variable name="longitude" value="{hotel.0.data.longitude}"/>
|
||||
</f:if>
|
||||
<f:if condition="{region}">
|
||||
<f:variable name="latitude" value="{region.0.data.latitude}"/>
|
||||
<f:variable name="longitude" value="{region.0.data.longitude}"/>
|
||||
</f:if>
|
||||
<f:render partial="Map/Osm" arguments="{settings: settings, class: 'mb-8', zoom: 17, lat: latitude, lng: longitude}"/>
|
||||
</f:section>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<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:layout name="Default"/>
|
||||
|
||||
<f:section name="Main">
|
||||
<f:switch expression="{data.layout}">
|
||||
<f:case value="2">
|
||||
<f:render partial="ImageGallery" arguments="{images: files, thumbnails: 1, id: data.uid}"/>
|
||||
</f:case>
|
||||
<f:case value="4">
|
||||
<f:render partial="ImageGallery" arguments="{images: files, thumbnails: 0, id: data.uid}"/>
|
||||
</f:case>
|
||||
<f:case value="3">
|
||||
<f:render partial="Textmedia/LinkPanel" section="Content" arguments="{images: files}"/>
|
||||
</f:case>
|
||||
<f:case value="5">
|
||||
<f:render partial="Textmedia/Partnerlogos" section="Content" arguments="{_all}"/>
|
||||
</f:case>
|
||||
<f:defaultCase>
|
||||
<ep:container rteContent="true" data="{data}">
|
||||
<f:render partial="Textmedia/Default" section="Content" arguments="{_all}"/>
|
||||
</ep:container>
|
||||
</f:defaultCase>
|
||||
</f:switch>
|
||||
</f:section>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,25 @@
|
||||
<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:layout name="Default"/>
|
||||
|
||||
<f:section name="Main">
|
||||
<div class="relative w-full aspect-w-16 aspect-h-9 bg-cover bg-center"
|
||||
style="background-image: url({f:uri.image(src: 'EXT:ep_theme/Resources/Public/images/lazy.png')})">
|
||||
<iframe class="absolute top-0 left-0 w-full h-full"
|
||||
width="640" height="360" allowfullscreen
|
||||
title="eingebettetes Video"
|
||||
data-src="{ep:uri.video(value: data.header_link, layout: data.layout)}"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
data-cookiefirst-category="advertising"></iframe>
|
||||
<div class="cookiefirst-disabled-resource">
|
||||
<div class="absolute top-1/2 left-1/2 tranform -translate-xy-1/2">
|
||||
Bitte <a href="#" onclick="CookieFirst.acceptCategory('advertising'); return false" class="underline">Marketing-Cookies akzeptieren</a>, um dieses Video anzusehen.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
|
||||
</html>
|
||||
Reference in new issue
Block a user