Merge branch 'master' into feature/stimulus

This commit is contained in:
Björn Fromme
2021-09-08 09:41:34 +02:00
125 changed files with 2872 additions and 1681 deletions
@@ -51,8 +51,6 @@ class AjaxFormController extends ActionController
*/
public function __construct(EmailService $emailService, BookingApiService $bookingApiService)
{
parent::__construct();
$this->emailService = $emailService;
$this->bookingApiService = $bookingApiService;
}
@@ -64,8 +64,6 @@ class BackendController extends ActionController
*/
public function __construct(PageRepository $pageRepository)
{
parent::__construct();
$this->pageRepository = $pageRepository;
}
@@ -36,38 +36,6 @@ class Page extends AbstractEntity
*/
protected $description;
/**
* @return int
*/
public function getUid()
{
return $this->uid;
}
/**
* @param int $uid
*/
public function setUid($uid)
{
$this->uid = $uid;
}
/**
* @return int
*/
public function getPid()
{
return $this->pid;
}
/**
* @param int $pid
*/
public function setPid($pid)
{
$this->pid = $pid;
}
/**
* @return bool
*/
@@ -131,4 +99,4 @@ class Page extends AbstractEntity
{
$this->description = $description;
}
}
}
@@ -29,9 +29,9 @@ class PageRepository extends Repository
;
$query->matching($query->logicalAnd([
$query->equals('pid', $pid),
$query->equals('doktype', \TYPO3\CMS\Frontend\Page\PageRepository::DOKTYPE_DEFAULT)
$query->equals('doktype', \TYPO3\CMS\Core\Domain\Repository\PageRepository::DOKTYPE_DEFAULT)
]));
return $query->execute();
}
}
}
@@ -0,0 +1,40 @@
<?php
namespace EP\EpTheme\Form;
use TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher;
class AddReferrerFinisher extends AbstractFinisher
{
protected function executeInternal()
{
// Look for key 'referrer' in frontend session
$referrer = $GLOBALS['TSFE']->fe_user->getKey('ses', 'referrer');
if (null === $referrer) {
return;
}
// Add textfield to form containing referrer value
$field = $this->finisherContext
->getFormRuntime()
->getFormDefinition()
->getPageByIndex(0)
->createElement('referrer', 'Text');
$field->setDefaultValue($referrer);
$field->setDataType('string');
$field->setLabel('Referrer');
// Add finisher variable for potential later use
$this->finisherContext->getFinisherVariableProvider()->add(
$this->shortFinisherIdentifier,
'referrer',
$referrer
);
// Remove session key
$GLOBALS['TSFE']->fe_user->setKey('ses', 'referrer', null);
$GLOBALS['TSFE']->fe_user->storeSessionData();
}
}
@@ -0,0 +1,43 @@
<?php
namespace EP\EpTheme\Middleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use TYPO3\CMS\Core\Exception\SiteNotFoundException;
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class ReferrerMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$queryParams = $request->getQueryParams();
if (!array_key_exists('ref', $queryParams)) {
return $handler->handle($request);
}
$ref = $queryParams['ref'];
if (false === is_numeric($ref)) {
return $handler->handle($request);
}
/** @var SiteFinder $siteFinder */
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
try {
$site = $siteFinder->getSiteByPageId($ref);
$url = $site->getRouter()->generateUri($ref);
$GLOBALS['TSFE']->fe_user->setKey('ses', 'referrer', $url);
$GLOBALS['TSFE']->fe_user->storeSessionData();
}
catch (SiteNotFoundException $exception) {
}
return $handler->handle($request);
}
}
@@ -86,7 +86,7 @@ class ProductViewHelper extends AbstractViewHelper
->getControllerContext()
->getUriBuilder()
->reset()
->setTargetPageUid($targetPageUid)
->setTargetPageUid((int)$product['detailPage'])
->uriFor('detail', $linkArguments, 'Product', 'epproducts', 'product_detail')
;
} else {
@@ -0,0 +1,9 @@
<?php
declare(strict_types = 1);
return [
\EP\EpTheme\Domain\Model\Page::class => [
'tableName' => 'pages',
],
];
@@ -1,9 +0,0 @@
TYPO3:
CMS:
Form:
prototypes:
standard:
finishersDefinition:
BpnApiFinisher:
FormEngine:
label: 'BusPro Finisher'
@@ -0,0 +1,12 @@
<?php
return [
'frontend' => [
'ep/referrer' => [
'target' => \EP\EpTheme\Middleware\ReferrerMiddleware::class,
'after' => [
'typo3/cms-frontend/site',
],
],
],
];
@@ -20,9 +20,6 @@ return [
'searchFields' => 'name, first_name, last_name, email',
'dividers2tabs' => 1,
],
'interface' => [
'showRecordFieldList' => 'first_name,last_name,address,city,zip,country,email,title'
],
'columns' => [
'pid' => [
'label' => 'pid',
@@ -21,10 +21,6 @@ return [
'searchFields' => 'headline,text',
'iconfile' => 'EXT:ep_theme/Resources/Public/images/icon_ce.svg',
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, layout, headline, text,
image, pi_flexform',
],
'types' => [
'1' => [
'showitem' => 'sys_language_uid, hidden, layout, headline, text, image, pi_flexform',
@@ -50,7 +46,6 @@ return [
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 0,
'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
@@ -22,10 +22,6 @@ return [
'searchFields' => 'headline,subline',
'iconfile' => 'EXT:ep_theme/Resources/Public/images/icon_ce.svg',
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, name, description, image,
facebook_url, twitter_url, youtube_url, instagram_url, soundcloud_url',
],
'types' => [
'1' => [
'showitem' => 'hidden, name, description, image, --palette--;;social',
@@ -52,7 +48,6 @@ return [
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 0,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
@@ -22,10 +22,6 @@ return [
'searchFields' => 'headline,subline',
'iconfile' => 'EXT:ep_theme/Resources/Public/images/icon_ce.svg',
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, headline, subline, skipass,
button, page_uid, image',
],
'types' => [
'1' => [
'showitem' => '--palette--;;top, --palette--;;headlines, --palette--;;linkbutton, image',
@@ -54,7 +50,6 @@ return [
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 0,
'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
@@ -1,7 +1,7 @@
@import 'EXT:ep_theme/Configuration/TSconfig/Page/Extensions/GridElements.tsconfig'
@import 'EXT:ep_theme/Configuration/TSconfig/Page/Mod/SHARED.tsconfig'
@import 'EXT:ep_theme/Configuration/TSconfig/Page/Mod/WebLayout/BackendLayouts.tsconfig'
@import 'EXT:ep_theme/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.tsconfig'
@import 'EXT:ep_theme/Configuration/TSconfig/Page/Extensions/GridElements.tsconfig'
@import 'EXT:ep_theme/Configuration/TSconfig/Page/RTE.tsconfig'
@import 'EXT:ep_theme/Configuration/TSconfig/Page/TCEFORM.tsconfig'
@import 'EXT:ep_theme/Configuration/TSconfig/Page/TCEMAIN.tsconfig'
@import 'EXT:ep_events/Configuration/TSconfig/Page/Mod/SHARED.tsconfig'
@@ -1,152 +0,0 @@
mod {
web_layout.BackendLayouts {
frontpage {
title = Startseite
config {
backend_layout {
colCount = 1
rowCount = 1
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
}
}
}
}
frontpageEvent < .frontpage
frontpageEvent.title = Startseite Events
popup < .frontpage
popup.title = Popup
detail {
title = Detailseite
config {
backend_layout {
colCount = 1
rowCount = 2
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
2 {
columns {
1 {
name = Teaserbereich
colPos = 1
}
}
}
}
}
}
}
subpage < .detail
subpage.title = Unterseite
search < .detail
search.title = Suchergebnis
subpageSidebarLeft {
title = Unterseite mit Sidebar (links)
config {
backend_layout {
colCount = 4
rowCount = 3
rows {
1 {
columns {
1 {
name = Headline
colPos = 3
colspan = 4
}
}
}
2 {
columns {
1 {
name = Sidebar
colPos = 2
colspan = 1
}
}
columns {
2 {
name = Content
colPos = 4
colspan = 3
}
}
}
3 {
columns {
1 {
name = Teaserbereich
colPos = 1
colspan = 4
}
}
}
}
}
}
}
subpageSidebarRight {
title = Unterseite mit Sidebar (rechts)
config {
backend_layout {
colCount = 4
rowCount = 3
rows {
1 {
columns {
1 {
name = Headline
colPos = 3
colspan = 4
}
}
}
2 {
columns {
1 {
name = Content
colPos = 4
colspan = 3
}
}
columns {
2 {
name = Sidebar
colPos = 2
colspan = 1
}
}
}
3 {
columns {
1 {
name = Teaserbereich
colPos = 1
colspan = 4
}
}
}
}
}
}
}
subpageSidebarRightEvent < .subpageSidebarRight
subpageSidebarRightEvent.title = Unterseite Events mit Sidebar (rechts)
subpageSidebarLeftEvent < .subpageSidebarLeft
subpageSidebarLeftEvent.title = Unterseite Events mit Sidebar (links)
}
}
@@ -0,0 +1,29 @@
mod.web_layout.BackendLayouts {
detail {
title = Detailseite
config {
backend_layout {
colCount = 1
rowCount = 2
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
2 {
columns {
1 {
name = Teaserbereich
colPos = 1
}
}
}
}
}
}
}
}
@@ -0,0 +1,21 @@
mod.web_layout.BackendLayouts {
frontpage {
title = Startseite
config {
backend_layout {
colCount = 1
rowCount = 1
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
}
}
}
}
}
@@ -0,0 +1,22 @@
mod.web_layout.BackendLayouts {
frontpageEvent {
title = Startseite Events
config {
backend_layout {
colCount = 1
rowCount = 1
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
}
}
}
}
}
@@ -0,0 +1,21 @@
mod.web_layout.BackendLayouts {
popup {
title = Popup
config {
backend_layout {
colCount = 1
rowCount = 1
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
}
}
}
}
}
@@ -0,0 +1,29 @@
mod.web_layout.BackendLayouts {
search {
title = Suchergebnis
config {
backend_layout {
colCount = 1
rowCount = 2
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
2 {
columns {
1 {
name = Teaserbereich
colPos = 1
}
}
}
}
}
}
}
}
@@ -0,0 +1,29 @@
mod.web_layout.BackendLayouts {
subpage {
title = Unterseite
config {
backend_layout {
colCount = 1
rowCount = 2
rows {
1 {
columns {
1 {
name = Content
colPos = 0
}
}
}
2 {
columns {
1 {
name = Teaserbereich
colPos = 1
}
}
}
}
}
}
}
}
@@ -0,0 +1,47 @@
mod.web_layout.BackendLayouts {
subpageSidebarLeft {
title = Unterseite mit Sidebar (links)
config {
backend_layout {
colCount = 4
rowCount = 3
rows {
1 {
columns {
1 {
name = Headline
colPos = 3
colspan = 4
}
}
}
2 {
columns {
1 {
name = Sidebar
colPos = 2
colspan = 1
}
}
columns {
2 {
name = Content
colPos = 4
colspan = 3
}
}
}
3 {
columns {
1 {
name = Teaserbereich
colPos = 1
colspan = 4
}
}
}
}
}
}
}
}
@@ -0,0 +1,47 @@
mod.web_layout.BackendLayouts {
subpageSidebarLeftEvent {
title = Unterseite Events mit Sidebar (links)
config {
backend_layout {
colCount = 4
rowCount = 3
rows {
1 {
columns {
1 {
name = Headline
colPos = 3
colspan = 4
}
}
}
2 {
columns {
1 {
name = Sidebar
colPos = 2
colspan = 1
}
}
columns {
2 {
name = Content
colPos = 4
colspan = 3
}
}
}
3 {
columns {
1 {
name = Teaserbereich
colPos = 1
colspan = 4
}
}
}
}
}
}
}
}
@@ -0,0 +1,47 @@
mod.web_layout.BackendLayouts {
subpageSidebarRight {
title = Unterseite mit Sidebar (rechts)
config {
backend_layout {
colCount = 4
rowCount = 3
rows {
1 {
columns {
1 {
name = Headline
colPos = 3
colspan = 4
}
}
}
2 {
columns {
1 {
name = Content
colPos = 4
colspan = 3
}
}
columns {
2 {
name = Sidebar
colPos = 2
colspan = 1
}
}
}
3 {
columns {
1 {
name = Teaserbereich
colPos = 1
colspan = 4
}
}
}
}
}
}
}
}
@@ -0,0 +1,47 @@
mod.web_layout.BackendLayouts {
subpageSidebarRightEvent {
title = Unterseite Events mit Sidebar (rechts)
config {
backend_layout {
colCount = 4
rowCount = 3
rows {
1 {
columns {
1 {
name = Headline
colPos = 3
colspan = 4
}
}
}
2 {
columns {
1 {
name = Content
colPos = 4
colspan = 3
}
}
columns {
2 {
name = Sidebar
colPos = 2
colspan = 1
}
}
}
3 {
columns {
1 {
name = Teaserbereich
colPos = 1
colspan = 4
}
}
}
}
}
}
}
}
@@ -1,4 +1,4 @@
@import "EXT:ep_products/Configuration/TypoScript/setup.typoscript"
@import 'EXT:ep_products/Configuration/TypoScript/setup.typoscript'
plugin.tx_epproducts {
view {
@@ -1,4 +1,4 @@
@import "EXT:fluid_styled_content/Configuration/TypoScript/setup.typoscript"
@import 'EXT:fluid_styled_content/Configuration/TypoScript/setup.typoscript'
lib.contentElement {
layoutRootPaths.20 = EXT:ep_theme/Resources/Private/Layouts/FluidStyledContent
@@ -1,17 +1,16 @@
@import "EXT:form/Configuration/TypoScript/setup.typoscript"
@import "EXT:form_element_linked_checkbox/Configuration/TypoScript/setup.typoscript"
@import 'EXT:form/Configuration/TypoScript/setup.typoscript'
@import 'EXT:form_element_linked_checkbox/Configuration/TypoScript/setup.typoscript'
plugin.tx_form.view {
templateRootPaths.10 = EXT:ep_theme/Resources/Private/Templates/Form/
}
plugin.tx_form.settings.yamlConfigurations {
1630994710 = EXT:ep_theme/Configuration/Forms/BaseSetup.yaml
1630994711 = EXT:ep_theme/Configuration/Forms/FormEngineSetup.yaml
1630994710 = EXT:ep_theme/Configuration/Yaml/FormsBase.yaml
1630994711 = EXT:ep_theme/Configuration/Yaml/FormFinishersFrontend.yaml
}
module.tx_form.settings.yamlConfigurations {
1630994710 = EXT:ep_theme/Configuration/Forms/BaseSetup.yaml
1630994711 = EXT:ep_theme/Configuration/Forms/FormEditorSetup.yaml
1630994712 = EXT:ep_theme/Configuration/Forms/FormEngineSetup.yaml
1630994710 = EXT:ep_theme/Configuration/Yaml/FormsBase.yaml
1630994711 = EXT:ep_theme/Configuration/Yaml/FormFinishersBackend.yaml
}
@@ -1,4 +1,4 @@
@import "EXT:gridelements/Configuration/TypoScript/setup.typoscript"
@import 'EXT:gridelements/Configuration/TypoScript/setup.typoscript'
tt_content.gridelements_pi1.20.10.setup {
quarters < lib.gridelements.defaultGridSetup
@@ -1,4 +1,4 @@
@import "EXT:news/Configuration/TypoScript/setup.txt"
@import 'EXT:news/Configuration/TypoScript/setup.txt'
plugin.tx_news {
view {
@@ -1,4 +1,4 @@
@import "EXT:seo/Configuration/TypoScript/XmlSitemap/setup.typoscript"
@import 'EXT:seo/Configuration/TypoScript/XmlSitemap/setup.typoscript'
["{$plugin.tx_eptheme.settings.bookingLinksPid}" > "0"]
plugin.tx_seo {
@@ -12,6 +12,9 @@ TYPO3:
1000:
value: 'BpnApiFinisher'
label: 'BusPro Finisher'
1100:
value: 'AddReferrerFinisher'
label: 'Referrer Finisher'
propertyCollections:
finishers:
1000:
@@ -28,6 +31,13 @@ TYPO3:
propertyPath: 'options.mapping'
propertyValidators:
10: 'NotEmpty'
1100:
identifier: 'AddReferrerFinisher'
editors:
__inheritances:
10: 'TYPO3.CMS.Form.mixins.formElementMixins.BaseCollectionEditorsMixin'
100:
label: 'Referrer Finisher'
finishersDefinition:
BpnApiFinisher:
@@ -36,3 +46,6 @@ TYPO3:
predefinedDefaults:
options:
mapping: 'lastName:text-1,firstName:text-2,gender:singleselect-1,email:email-1,street:text-3,zipCode:text-4,city:text-5,phone:telephone-1'
AddReferrerFinisher:
formEditor:
iconIdentifier: 'form-finisher'
@@ -0,0 +1,19 @@
TYPO3:
CMS:
Form:
prototypes:
standard:
finishersDefinition:
BpnApiFinisher:
implementationClassName: 'EP\EpTheme\Form\BpnApiFinisher'
formEditor:
label: 'BusPro Finisher'
options:
identifier: 'BpnApiFinisher'
mapping: 'lastName:text-1,firstName:text-2,gender:singleselect-1,email:email-1,street:text-3,zipCode:text-4,city:text-5,phone:telephone-1'
AddReferrerFinisher:
implementationClassName: 'EP\EpTheme\Form\AddReferrerFinisher'
formEditor:
label: 'Referrer Finisher'
options:
identifier: 'AddReferrerFinisher'
@@ -0,0 +1,23 @@
TYPO3:
CMS:
Form:
persistenceManager:
allowedExtensionPaths:
10: EXT:ep_theme/Resources/Private/Forms/
prototypes:
standard:
formElementsDefinition:
Form:
renderingOptions:
templateRootPaths:
1505042810: 'EXT:ep_theme/Resources/Private/Templates/Form/'
partialRootPaths:
1505042810: 'EXT:ep_theme/Resources/Private/Partials/Form/'
layoutRootPaths:
1505042810: 'EXT:ep_theme/Resources/Private/Layouts/Form/'
contactform:
__inheritances:
10: 'TYPO3.CMS.Form.prototypes.standard'
applicationform:
__inheritances:
10: 'TYPO3.CMS.Form.prototypes.standard'
@@ -31,7 +31,7 @@ $metaTagManagerRegistry->registerManager(
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.EpTheme',
'EP.ep_theme',
'SimpleForm',
[
'Form' => 'simpleForm',
@@ -42,7 +42,7 @@ $metaTagManagerRegistry->registerManager(
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.EpTheme',
'EP.ep_theme',
'FullForm',
[
'Form' => 'fullForm',
@@ -53,7 +53,7 @@ $metaTagManagerRegistry->registerManager(
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.EpTheme',
'EP.ep_theme',
'FullForm',
[
'Form' => 'fullForm',
@@ -64,7 +64,7 @@ $metaTagManagerRegistry->registerManager(
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.EpTheme',
'EP.ep_theme',
'Ajax',
[
'AjaxForm' => 'processForm',
@@ -1,7 +0,0 @@
config.tx_extbase.persistence.classes {
EP\EpTheme\Domain\Model\Page {
mapping {
tableName = pages
}
}
}