refactor: apply TYPO3 13 Rector and Fractor migrations

Automated migrations from rector.php and fractor.php (TCA, Extbase
controllers and annotations, ViewHelpers, QueryBuilder, FlexForms,
TypoScript conditions).

Plugins stay list_type plugins: Rector switched them to content
element types, which needs a tt_content migration. That is deferred to
the TYPO3 14 step, where list_type is removed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
frommeandClaude Opus 5.5 committed 2026-10-21 14:14:38 +02:00
1 parent 1b958a6084
commit 41b9302d9b
119 files changed
+2211 -2581

No files matched your search

@@ -39,7 +39,7 @@ class DateCommandController extends Command
{ {
/** /**
* @var \EP\EpProducts\Service\DateImportService * @var DateImportService
*/ */
protected $dateImportService; protected $dateImportService;
@@ -280,9 +280,7 @@ class ManifestBuilder
'MAX(tstamp) AS tstamp', 'MAX(tstamp) AS tstamp',
"SUM(CASE WHEN deleted = 0 AND hidden = 0 AND CType <> 'list' THEN 1 ELSE 0 END) AS text_elements" "SUM(CASE WHEN deleted = 0 AND hidden = 0 AND CType <> 'list' THEN 1 ELSE 0 END) AS text_elements"
) )
->from('tt_content') ->from('tt_content')->groupBy('pid', 'sys_language_uid')->executeQuery()
->groupBy('pid', 'sys_language_uid')
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -108,9 +108,7 @@ class PageTree
$rows = $queryBuilder $rows = $queryBuilder
->select(...self::FIELDS) ->select(...self::FIELDS)
->from('pages') ->from('pages')->orderBy('sorting')->executeQuery()
->orderBy('sorting')
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -86,9 +86,7 @@ class RecordFinder
$rows = $queryBuilder $rows = $queryBuilder
->selectLiteral('mm.uid_local AS product', 'MAX(faq.tstamp) AS tstamp') ->selectLiteral('mm.uid_local AS product', 'MAX(faq.tstamp) AS tstamp')
->from('tx_epproducts_product_faq_mm', 'mm') ->from('tx_epproducts_product_faq_mm', 'mm')
->join('mm', 'tx_epproducts_domain_model_faq', 'faq', 'faq.uid = mm.uid_foreign') ->join('mm', 'tx_epproducts_domain_model_faq', 'faq', 'faq.uid = mm.uid_foreign')->groupBy('mm.uid_local')->executeQuery()
->groupBy('mm.uid_local')
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -109,9 +107,7 @@ class RecordFinder
$rows = $queryBuilder $rows = $queryBuilder
->selectLiteral('entity AS hotel', 'MAX(tstamp) AS tstamp') ->selectLiteral('entity AS hotel', 'MAX(tstamp) AS tstamp')
->from('tx_epproducts_domain_model_matchcode') ->from('tx_epproducts_domain_model_matchcode')
->where($queryBuilder->expr()->eq('entity_type', $queryBuilder->createNamedParameter('hotel'))) ->where($queryBuilder->expr()->eq('entity_type', $queryBuilder->createNamedParameter('hotel')))->groupBy('entity')->executeQuery()
->groupBy('entity')
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -138,7 +134,7 @@ class RecordFinder
if ('product' === $type) { if ('product' === $type) {
// A product that is neither searchable nor bookable is an internal record. // A product that is neither searchable nor bookable is an internal record.
$queryBuilder->andWhere($expr->orX($expr->eq('searchable', 1), $expr->eq('bookable', 1))); $queryBuilder->andWhere($expr->or($expr->eq('searchable', 1), $expr->eq('bookable', 1)));
} }
if ('news' === $type) { if ('news' === $type) {
@@ -309,9 +309,7 @@ class RecordSerializer
->select($keyField, $valueField) ->select($keyField, $valueField)
->from($table) ->from($table)
->where($queryBuilder->expr()->in($keyField, $queryBuilder->createNamedParameter($uids, Connection::PARAM_INT_ARRAY))) ->where($queryBuilder->expr()->in($keyField, $queryBuilder->createNamedParameter($uids, Connection::PARAM_INT_ARRAY)))
->orderBy($keyField) ->orderBy($keyField)->addOrderBy($sortField)->executeQuery()
->addOrderBy($sortField)
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -336,9 +334,7 @@ class RecordSerializer
->from('tx_epproducts_domain_model_faq', 'faq') ->from('tx_epproducts_domain_model_faq', 'faq')
->join('faq', 'tx_epproducts_product_faq_mm', 'mm', 'mm.uid_foreign = faq.uid') ->join('faq', 'tx_epproducts_product_faq_mm', 'mm', 'mm.uid_foreign = faq.uid')
->where($queryBuilder->expr()->in('mm.uid_local', $queryBuilder->createNamedParameter($productUids, Connection::PARAM_INT_ARRAY))) ->where($queryBuilder->expr()->in('mm.uid_local', $queryBuilder->createNamedParameter($productUids, Connection::PARAM_INT_ARRAY)))
->orderBy('mm.uid_local') ->orderBy('mm.uid_local')->addOrderBy('mm.sorting')->executeQuery()
->addOrderBy('mm.sorting')
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -371,9 +367,7 @@ class RecordSerializer
->where( ->where(
$queryBuilder->expr()->eq('entity_type', $queryBuilder->createNamedParameter('hotel')), $queryBuilder->expr()->eq('entity_type', $queryBuilder->createNamedParameter('hotel')),
$queryBuilder->expr()->in('entity', $queryBuilder->createNamedParameter($hotelUids, Connection::PARAM_INT_ARRAY)) $queryBuilder->expr()->in('entity', $queryBuilder->createNamedParameter($hotelUids, Connection::PARAM_INT_ARRAY))
) )->orderBy('code')->executeQuery()
->orderBy('code')
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -401,9 +395,7 @@ class RecordSerializer
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_epproducts_domain_model_infobox'); $queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_epproducts_domain_model_infobox');
$rows = $queryBuilder $rows = $queryBuilder
->select('uid', 'text') ->select('uid', 'text')
->from('tx_epproducts_domain_model_infobox') ->from('tx_epproducts_domain_model_infobox')->where($queryBuilder->expr()->in('uid', $queryBuilder->createNamedParameter(array_unique($infoboxUids), Connection::PARAM_INT_ARRAY)))->executeQuery()
->where($queryBuilder->expr()->in('uid', $queryBuilder->createNamedParameter(array_unique($infoboxUids), Connection::PARAM_INT_ARRAY)))
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -425,9 +417,7 @@ class RecordSerializer
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_epproducts_domain_model_webcam'); $queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_epproducts_domain_model_webcam');
$url = $queryBuilder $url = $queryBuilder
->select('url') ->select('url')
->from('tx_epproducts_domain_model_webcam') ->from('tx_epproducts_domain_model_webcam')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($webcamUid, Connection::PARAM_INT)))->executeQuery()
->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($webcamUid, \PDO::PARAM_INT)))
->execute()
->fetchOne() ->fetchOne()
; ;
@@ -445,9 +435,7 @@ class RecordSerializer
->select('mm.uid_local AS news', 'tag.title') ->select('mm.uid_local AS news', 'tag.title')
->from('tx_news_domain_model_tag', 'tag') ->from('tx_news_domain_model_tag', 'tag')
->join('tag', 'tx_news_domain_model_news_tag_mm', 'mm', 'mm.uid_foreign = tag.uid') ->join('tag', 'tx_news_domain_model_news_tag_mm', 'mm', 'mm.uid_foreign = tag.uid')
->where($queryBuilder->expr()->in('mm.uid_local', $queryBuilder->createNamedParameter($newsUids, Connection::PARAM_INT_ARRAY))) ->where($queryBuilder->expr()->in('mm.uid_local', $queryBuilder->createNamedParameter($newsUids, Connection::PARAM_INT_ARRAY)))->orderBy('mm.sorting')->executeQuery()
->orderBy('mm.sorting')
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -475,9 +463,7 @@ class RecordSerializer
$queryBuilder->expr()->eq('mm.tablenames', $queryBuilder->createNamedParameter('tx_news_domain_model_news')), $queryBuilder->expr()->eq('mm.tablenames', $queryBuilder->createNamedParameter('tx_news_domain_model_news')),
$queryBuilder->expr()->eq('mm.fieldname', $queryBuilder->createNamedParameter('categories')), $queryBuilder->expr()->eq('mm.fieldname', $queryBuilder->createNamedParameter('categories')),
$queryBuilder->expr()->in('mm.uid_foreign', $queryBuilder->createNamedParameter($newsUids, Connection::PARAM_INT_ARRAY)) $queryBuilder->expr()->in('mm.uid_foreign', $queryBuilder->createNamedParameter($newsUids, Connection::PARAM_INT_ARRAY))
) )->orderBy('mm.sorting_foreign')->executeQuery()
->orderBy('mm.sorting_foreign')
->execute()
->fetchAllAssociative() ->fetchAllAssociative()
; ;
@@ -26,7 +26,9 @@ namespace EP\EpProducts\Controller;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
use Psr\Http\Message\ResponseInterface;
use TYPO3\CMS\Extbase\Http\ForwardResponse;
use EP\EpProducts\Domain\Model\Infobox;
use EP\EpProducts\Domain\Model\Date; use EP\EpProducts\Domain\Model\Date;
use EP\EpProducts\Domain\Model\Hotel; use EP\EpProducts\Domain\Model\Hotel;
use EP\EpProducts\Domain\Model\Product; use EP\EpProducts\Domain\Model\Product;
@@ -59,7 +61,7 @@ class AjaxTableController extends ActionController
protected $infoboxRepository; protected $infoboxRepository;
/** /**
* @var \EP\EpProducts\Service\FilterService * @var FilterService
*/ */
protected $filterService; protected $filterService;
@@ -133,12 +135,12 @@ class AjaxTableController extends ActionController
Hotel $hotel, Hotel $hotel,
string $dateFrom = null, string $dateFrom = null,
string $dateTo = null string $dateTo = null
): void { ): ResponseInterface {
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
$filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids); $filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids);
$filterSettings['dateFrom'] = $dateFrom; $filterSettings['dateFrom'] = $dateFrom;
$filterSettings['dateTo'] = $dateTo; $filterSettings['dateTo'] = $dateTo;
$paCode = GeneralUtility::_GET('pa'); $paCode = $this->request->getQueryParams()['pa'] ?? null;
$myEpUrl = $this->myEpUrlResolverService->resolve(); $myEpUrl = $this->myEpUrlResolverService->resolve();
$dates = $this->dateService->getDatesTable([ $dates = $this->dateService->getDatesTable([
@@ -149,18 +151,13 @@ class AjaxTableController extends ActionController
if (1 === count($dates)) { if (1 === count($dates)) {
$date = reset($dates); $date = reset($dates);
$this->forward( return (new ForwardResponse('pricetable'))->withExtensionName('ep_products')->withArguments([
'pricetable', 'product' => $product,
null, 'hotel' => $hotel,
'ep_products', 'date' => $date['dateUid'],
[ 'paCode' => $paCode,
'product' => $product, 'singleDate' => true,
'hotel' => $hotel, ]);
'date' => $date['dateUid'],
'paCode' => $paCode,
'singleDate' => true,
]
);
} }
$nonBookableDateUids = GeneralUtility::trimExplode(',', $product->getNonBookableDates(), true); $nonBookableDateUids = GeneralUtility::trimExplode(',', $product->getNonBookableDates(), true);
@@ -221,6 +218,7 @@ class AjaxTableController extends ActionController
'nonBookableInfo' => $nonBookableInfo, 'nonBookableInfo' => $nonBookableInfo,
'myEpUrl' => $myEpUrl, 'myEpUrl' => $myEpUrl,
]); ]);
return $this->htmlResponse();
} }
/** /**
@@ -234,7 +232,7 @@ class AjaxTableController extends ActionController
Hotel $hotel, Hotel $hotel,
Date $date, Date $date,
bool $singleDate = false bool $singleDate = false
): void { ): ResponseInterface {
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
$filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids); $filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids);
$myEpUrl = $this->myEpUrlResolverService->resolve(); $myEpUrl = $this->myEpUrlResolverService->resolve();
@@ -245,7 +243,7 @@ class AjaxTableController extends ActionController
'filterSettings' => $filterSettings, 'filterSettings' => $filterSettings,
'date' => $date, 'date' => $date,
'myEpUrl' => $myEpUrl, 'myEpUrl' => $myEpUrl,
'paCode' => GeneralUtility::_GET('pa'), 'paCode' => $this->request->getQueryParams()['pa'] ?? null,
]); ]);
$hasSurchargeOrDiscount = $this->dateService->checkSurcharcheOrDiscount($priceTable); $hasSurchargeOrDiscount = $this->dateService->checkSurcharcheOrDiscount($priceTable);
$hasIncludedServices = $this->dateService->hasIncludedServices($priceTable); $hasIncludedServices = $this->dateService->hasIncludedServices($priceTable);
@@ -274,13 +272,14 @@ class AjaxTableController extends ActionController
'nonBookableInfo' => $nonBookableInfo, 'nonBookableInfo' => $nonBookableInfo,
'myEpUrl' => $myEpUrl, 'myEpUrl' => $myEpUrl,
]); ]);
return $this->htmlResponse();
} }
/** /**
* @param Product $product * @param Product $product
* @param Hotel $hotel * @param Hotel $hotel
*/ */
public function pricetableHtmlAction(Product $product, Hotel $hotel): void public function pricetableHtmlAction(Product $product, Hotel $hotel): ResponseInterface
{ {
$nonBookableInfo = $this->getNonBookableInfobox($product); $nonBookableInfo = $this->getNonBookableInfobox($product);
$myEpUrl = $this->myEpUrlResolverService->resolve(); $myEpUrl = $this->myEpUrlResolverService->resolve();
@@ -290,7 +289,7 @@ class AjaxTableController extends ActionController
'hotel' => $hotel, 'hotel' => $hotel,
'filterSettings' => $this->filterService->getNormalizedFilterSettings(), 'filterSettings' => $this->filterService->getNormalizedFilterSettings(),
'myEpUrl' => $myEpUrl, 'myEpUrl' => $myEpUrl,
'paCode' => GeneralUtility::_GET('pa'), 'paCode' => $this->request->getQueryParams()['pa'] ?? null,
'sortByRoom' => true, 'sortByRoom' => true,
]); ]);
$hasIncludedServices = $this->dateService->hasIncludedServices($priceTable); $hasIncludedServices = $this->dateService->hasIncludedServices($priceTable);
@@ -301,12 +300,13 @@ class AjaxTableController extends ActionController
'nonBookableInfo' => $nonBookableInfo, 'nonBookableInfo' => $nonBookableInfo,
'myEpUrl' => $myEpUrl, 'myEpUrl' => $myEpUrl,
]); ]);
return $this->htmlResponse();
} }
/** /**
* @param Product $product * @param Product $product
*/ */
public function eventPricetableAction(Product $product): void public function eventPricetableAction(Product $product): ResponseInterface
{ {
$roomTypes = GeneralUtility::trimExplode(',', $this->settings['priceTableRoomTypes']); $roomTypes = GeneralUtility::trimExplode(',', $this->settings['priceTableRoomTypes']);
$roomTypesPax = array_map(function ($type) { $roomTypesPax = array_map(function ($type) {
@@ -340,6 +340,7 @@ class AjaxTableController extends ActionController
'nonBookableInfo' => $nonBookableInfo, 'nonBookableInfo' => $nonBookableInfo,
'myEpUrl' => $myEpUrl, 'myEpUrl' => $myEpUrl,
]); ]);
return $this->htmlResponse();
} }
/** /**
@@ -353,7 +354,7 @@ class AjaxTableController extends ActionController
Product $product, Product $product,
string $dateFrom, string $dateFrom,
string $dateTo string $dateTo
): void { ): ResponseInterface {
$period = new Period($dateFrom, $dateTo); $period = new Period($dateFrom, $dateTo);
$nights = (int) $period->dateInterval()->format('%a') + 1; $nights = (int) $period->dateInterval()->format('%a') + 1;
$myEpUrl = $this->myEpUrlResolverService->resolve(); $myEpUrl = $this->myEpUrlResolverService->resolve();
@@ -369,11 +370,12 @@ class AjaxTableController extends ActionController
$this->view->assign('nights', $nights); $this->view->assign('nights', $nights);
$this->view->assign('rooms', $rooms); $this->view->assign('rooms', $rooms);
$this->view->assign('myEpUrl', $myEpUrl); $this->view->assign('myEpUrl', $myEpUrl);
return $this->htmlResponse();
} }
/** /**
* @param Product $product * @param Product $product
* @return \EP\EpProducts\Domain\Model\Infobox * @return Infobox
*/ */
protected function getNonBookableInfobox(Product $product) protected function getNonBookableInfobox(Product $product)
{ {
@@ -2,16 +2,18 @@
namespace EP\EpProducts\Controller; namespace EP\EpProducts\Controller;
use Psr\Http\Message\ResponseInterface;
use EP\EpProducts\Domain\Model\Concept; use EP\EpProducts\Domain\Model\Concept;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class AjaxTeaserPopupController extends ActionController class AjaxTeaserPopupController extends ActionController
{ {
public function conceptAction(Concept $concept, string $targetUrl) public function conceptAction(Concept $concept, string $targetUrl): ResponseInterface
{ {
$this->view->assignMultiple([ $this->view->assignMultiple([
'concept' => $concept, 'concept' => $concept,
'targetUrl' => $targetUrl, 'targetUrl' => $targetUrl,
]); ]);
return $this->htmlResponse();
} }
} }
@@ -26,7 +26,8 @@ namespace EP\EpProducts\Controller;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
use TYPO3\CMS\Extbase\Http\ForwardResponse;
use Psr\Http\Message\ResponseInterface;
use EP\EpProducts\Domain\Model\Hotel; use EP\EpProducts\Domain\Model\Hotel;
use EP\EpProducts\Domain\Model\Product; use EP\EpProducts\Domain\Model\Product;
use EP\EpProducts\Domain\Repository\HotelRepository; use EP\EpProducts\Domain\Repository\HotelRepository;
@@ -45,22 +46,22 @@ class ProductController extends ActionController
{ {
/** /**
* @var \EP\EpProducts\Domain\Repository\ProductRepository * @var ProductRepository
*/ */
protected $productRepository; protected $productRepository;
/** /**
* @var \EP\EpProducts\Domain\Repository\HotelRepository * @var HotelRepository
*/ */
protected $hotelRepository; protected $hotelRepository;
/** /**
* @var \EP\EpProducts\Service\FilterService * @var FilterService
*/ */
protected $filterService; protected $filterService;
/** /**
* @var \EP\EpProducts\Service\ProductDataService * @var ProductDataService
*/ */
protected $productDataService; protected $productDataService;
@@ -134,7 +135,7 @@ class ProductController extends ActionController
Hotel $hotel = null, Hotel $hotel = null,
$dateFrom = null, $dateFrom = null,
$dateTo = null $dateTo = null
): void { ) {
// Get product to display from flexform settings if not provided via url // Get product to display from flexform settings if not provided via url
if ($product === null) { if ($product === null) {
$productUid = $this->settings['productUid']; $productUid = $this->settings['productUid'];
@@ -143,7 +144,7 @@ class ProductController extends ActionController
// Redirect to search page in case no product can be determined // Redirect to search page in case no product can be determined
if ($product === null) { if ($product === null) {
$filterSettings = $this->filterService->getNormalizedFilterSettings(); $filterSettings = $this->filterService->getNormalizedFilterSettings();
$this->redirect( return $this->redirect(
'searchresult', 'searchresult',
'Search', 'Search',
null, null,
@@ -162,7 +163,7 @@ class ProductController extends ActionController
$arguments = [ $arguments = [
'product' => $product, 'product' => $product,
]; ];
$this->forward('hotelList', null, null, $arguments); return (new ForwardResponse('hotelList'))->withArguments($arguments);
} }
// Use first hotel which should be the only one at this point // Use first hotel which should be the only one at this point
if ($product->getHotels()->count() > 0) { if ($product->getHotels()->count() > 0) {
@@ -189,7 +190,7 @@ class ProductController extends ActionController
$nonBookableInfo = $product->getNonBookableInfo(); $nonBookableInfo = $product->getNonBookableInfo();
// Assemble backlink // Assemble backlink
$backlinkUrl = GeneralUtility::_GET('ref'); $backlinkUrl = $this->request->getQueryParams()['ref'] ?? null;
$backLinkLabel = strpos($backlinkUrl, 'suche') !== -1 ? 'zurück zum Suchergebnis' : 'zurück'; $backLinkLabel = strpos($backlinkUrl, 'suche') !== -1 ? 'zurück zum Suchergebnis' : 'zurück';
$this->view->assignMultiple([ $this->view->assignMultiple([
@@ -199,7 +200,7 @@ class ProductController extends ActionController
'isProductWithExcludedConcept' => $isProductWithExcludedConcept, 'isProductWithExcludedConcept' => $isProductWithExcludedConcept,
'isProductWithNoInfoConcept' => $isProductWithNoInfoConcept, 'isProductWithNoInfoConcept' => $isProductWithNoInfoConcept,
'isProductWithGroupInquiryForm' => $isProductWithGroupInquiryForm, 'isProductWithGroupInquiryForm' => $isProductWithGroupInquiryForm,
'currentPageUid' => $GLOBALS['TSFE']->id, 'currentPageUid' => $this->request->getAttribute('frontend.page.information')->getId(),
'dateFrom' => $dateFrom, 'dateFrom' => $dateFrom,
'dateTo' => $dateTo, 'dateTo' => $dateTo,
'referringUrl' => $backlinkUrl, 'referringUrl' => $backlinkUrl,
@@ -209,13 +210,13 @@ class ProductController extends ActionController
]); ]);
} }
public function pricetableAction(): void public function pricetableAction(): ResponseInterface
{ {
$productUid = $this->settings['productUid']; $productUid = $this->settings['productUid'];
/** @var \EP\EpProducts\Domain\Model\Product $product */ /** @var Product $product */
$product = $this->productRepository->findByIdentifier($productUid); $product = $this->productRepository->findByIdentifier($productUid);
$hotelUid = $this->settings['hotelUid']; $hotelUid = $this->settings['hotelUid'];
/** @var \EP\EpProducts\Domain\Model\Hotel $hotel */ /** @var Hotel $hotel */
$hotel = $this->hotelRepository->findByIdentifier($hotelUid); $hotel = $this->hotelRepository->findByIdentifier($hotelUid);
$pricetable = $this->dateService->getPriceTable([ $pricetable = $this->dateService->getPriceTable([
'product' => $product, 'product' => $product,
@@ -223,12 +224,13 @@ class ProductController extends ActionController
'filterSettings' => $this->filterService->getNormalizedFilterSettings(), 'filterSettings' => $this->filterService->getNormalizedFilterSettings(),
]); ]);
$this->view->assign('pricetable', $pricetable); $this->view->assign('pricetable', $pricetable);
return $this->htmlResponse();
} }
/** /**
* @param Product $product * @param Product $product
*/ */
public function hotelListAction(Product $product): void public function hotelListAction(Product $product): ResponseInterface
{ {
$hotels = $this->hotelDataService->getList($product); $hotels = $this->hotelDataService->getList($product);
$this->view->assignMultiple([ $this->view->assignMultiple([
@@ -236,9 +238,10 @@ class ProductController extends ActionController
'product' => $product, 'product' => $product,
'linkHotel' => true, 'linkHotel' => true,
]); ]);
return $this->htmlResponse();
} }
public function teasergroupAction(): void public function teasergroupAction(): ResponseInterface
{ {
$filterSettings = $this->filterService->getFiltersettingsFromSettings($this->settings); $filterSettings = $this->filterService->getFiltersettingsFromSettings($this->settings);
$dateAuto = !$this->settings['dateFrom'] && !$this->settings['dateTo']; $dateAuto = !$this->settings['dateFrom'] && !$this->settings['dateTo'];
@@ -247,7 +250,7 @@ class ProductController extends ActionController
$teasers = $this->productDataService->getTeasergroup($filterSettings, $excludedConceptUids, $limit); $teasers = $this->productDataService->getTeasergroup($filterSettings, $excludedConceptUids, $limit);
$dateFrom = $this->settings['dateFrom'] ? date('Y-m-d', $this->settings['dateFrom']) : null; $dateFrom = $this->settings['dateFrom'] ? date('Y-m-d', $this->settings['dateFrom']) : null;
$dateTo = $this->settings['dateTo'] ? date('Y-m-d', $this->settings['dateTo']) : null; $dateTo = $this->settings['dateTo'] ? date('Y-m-d', $this->settings['dateTo']) : null;
$data = $this->configurationManager->getContentObject()->data; $data = $this->request->getAttribute('currentContentObject')->data;
$nonBookableInfo = $this->settings['infoboxUid'] ? $this->infoboxRepository->findByUid($this->settings['infoboxUid']) : $this->infoboxRepository->getDefault(); $nonBookableInfo = $this->settings['infoboxUid'] ? $this->infoboxRepository->findByUid($this->settings['infoboxUid']) : $this->infoboxRepository->getDefault();
$this->view->assign('data', $data); $this->view->assign('data', $data);
@@ -257,5 +260,6 @@ class ProductController extends ActionController
$this->view->assign('dateFrom', $dateFrom); $this->view->assign('dateFrom', $dateFrom);
$this->view->assign('dateTo', $dateTo); $this->view->assign('dateTo', $dateTo);
$this->view->assign('nonBookableInfo', $nonBookableInfo); $this->view->assign('nonBookableInfo', $nonBookableInfo);
return $this->htmlResponse();
} }
} }
@@ -2,6 +2,10 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +30,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class AbstractDestination extends AbstractEntity
class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
const SEASON_WINTER = 'w'; const SEASON_WINTER = 'w';
@@ -99,17 +102,17 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $descriptionExtended = ''; protected $descriptionExtended = '';
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $images; protected $images;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $teaserImages; protected $teaserImages;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $headerImages; protected $headerImages;
@@ -120,9 +123,9 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected function initStorageObjects() protected function initStorageObjects()
{ {
$this->images = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->images = new ObjectStorage();
$this->teaserImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->teaserImages = new ObjectStorage();
$this->headerImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->headerImages = new ObjectStorage();
} }
/** /**
@@ -344,7 +347,7 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $images * @return ObjectStorage<FileReference> $images
*/ */
public function getImages() public function getImages()
{ {
@@ -352,15 +355,15 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $images * @param ObjectStorage<FileReference> $images
*/ */
public function setImages(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $images) public function setImages(ObjectStorage $images)
{ {
$this->images = $images; $this->images = $images;
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getTeaserImages() public function getTeaserImages()
{ {
@@ -368,7 +371,7 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @return null|\TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return null|ObjectStorage
*/ */
public function getTeaserImage() public function getTeaserImage()
{ {
@@ -380,7 +383,7 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $teaserImages * @param ObjectStorage $teaserImages
*/ */
public function setTeaserImages($teaserImages) public function setTeaserImages($teaserImages)
{ {
@@ -388,7 +391,7 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getHeaderImages() public function getHeaderImages()
{ {
@@ -396,7 +399,7 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @return null|\TYPO3\CMS\Extbase\Domain\Model\FileReference * @return null|FileReference
*/ */
public function getHeaderImage() public function getHeaderImage()
{ {
@@ -410,7 +413,7 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $headerImages * @param ObjectStorage $headerImages
*/ */
public function setHeaderImages($headerImages) public function setHeaderImages($headerImages)
{ {
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Badge extends AbstractEntity
class Badge extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
/** /**
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,7 +28,6 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class City extends AbstractDestination implements TeaserInterface class City extends AbstractDestination implements TeaserInterface
{ {
@@ -46,29 +47,29 @@ class City extends AbstractDestination implements TeaserInterface
protected $leisure = ''; protected $leisure = '';
/** /**
* @var \EP\EpProducts\Domain\Model\Country * @var Country
*/ */
protected $country; protected $country;
/** /**
* @var \EP\EpProducts\Domain\Model\Region * @var Region
*/ */
protected $region; protected $region;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> * @var ObjectStorage<Fact>
*/ */
protected $facts; protected $facts;
/** /**
* @var \EP\EpProducts\Domain\Model\Officetip * @var Officetip
*/ */
protected $officetip; protected $officetip;
protected function initStorageObjects() protected function initStorageObjects()
{ {
parent::initStorageObjects(); parent::initStorageObjects();
$this->facts = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->facts = new ObjectStorage();
} }
/** /**
@@ -119,7 +120,7 @@ class City extends AbstractDestination implements TeaserInterface
* Returns all header images with fallback to parent * Returns all header images with fallback to parent
* region in case none are assigned. * region in case none are assigned.
* *
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getHeaderImages() public function getHeaderImages()
{ {
@@ -133,7 +134,7 @@ class City extends AbstractDestination implements TeaserInterface
} }
/** /**
* @return \EP\EpProducts\Domain\Model\Country $country * @return Country $country
*/ */
public function getCountry() public function getCountry()
{ {
@@ -141,15 +142,15 @@ class City extends AbstractDestination implements TeaserInterface
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Country $country * @param Country $country
*/ */
public function setCountry(\EP\EpProducts\Domain\Model\Country $country) public function setCountry(Country $country)
{ {
$this->country = $country; $this->country = $country;
} }
/** /**
* @return \EP\EpProducts\Domain\Model\Region $region * @return Region $region
*/ */
public function getRegion() public function getRegion()
{ {
@@ -157,15 +158,15 @@ class City extends AbstractDestination implements TeaserInterface
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Region $region * @param Region $region
*/ */
public function setRegion(\EP\EpProducts\Domain\Model\Region $region) public function setRegion(Region $region)
{ {
$this->region = $region; $this->region = $region;
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts * @return ObjectStorage<Fact> $facts
*/ */
public function getFacts() public function getFacts()
{ {
@@ -173,9 +174,9 @@ class City extends AbstractDestination implements TeaserInterface
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts * @param ObjectStorage<Fact> $facts
*/ */
public function setFacts(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $facts) public function setFacts(ObjectStorage $facts)
{ {
$this->facts = $facts; $this->facts = $facts;
} }
@@ -2,6 +2,10 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +30,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Concept extends AbstractEntity implements TeaserInterface
class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements TeaserInterface
{ {
/** /**
@@ -96,22 +99,22 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $detailPage; protected $detailPage;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $teaserImages; protected $teaserImages;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $headerImages; protected $headerImages;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $images; protected $images;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product> * @var ObjectStorage<Product>
*/ */
protected $products; protected $products;
@@ -127,10 +130,10 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
*/ */
protected function initStorageObjects() protected function initStorageObjects()
{ {
$this->products = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->products = new ObjectStorage();
$this->teaserImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->teaserImages = new ObjectStorage();
$this->headerImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->headerImages = new ObjectStorage();
$this->images = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->images = new ObjectStorage();
} }
/** /**
@@ -328,7 +331,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getTeaserImages() public function getTeaserImages()
{ {
@@ -336,7 +339,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return null|\TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return null|ObjectStorage
*/ */
public function getTeaserImage() public function getTeaserImage()
{ {
@@ -348,7 +351,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $teaserImages * @param ObjectStorage $teaserImages
*/ */
public function setTeaserImages($teaserImages) public function setTeaserImages($teaserImages)
{ {
@@ -356,7 +359,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getHeaderImages() public function getHeaderImages()
{ {
@@ -364,7 +367,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return null|\TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return null|ObjectStorage
*/ */
public function getHeaderImage() public function getHeaderImage()
{ {
@@ -376,7 +379,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $headerImages * @param ObjectStorage $headerImages
*/ */
public function setHeaderImages($headerImages) public function setHeaderImages($headerImages)
{ {
@@ -384,7 +387,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getImages() public function getImages()
{ {
@@ -392,7 +395,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $images * @param ObjectStorage $images
*/ */
public function setImages($images) public function setImages($images)
{ {
@@ -400,23 +403,23 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Product $product * @param Product $product
*/ */
public function addProduct(\EP\EpProducts\Domain\Model\Product $product) public function addProduct(Product $product)
{ {
$this->products->attach($product); $this->products->attach($product);
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Product $product * @param Product $product
*/ */
public function removeProduct(\EP\EpProducts\Domain\Model\Product $product) public function removeProduct(Product $product)
{ {
$this->products->detach($product); $this->products->detach($product);
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product> * @return ObjectStorage<Product>
*/ */
public function getProducts() public function getProducts()
{ {
@@ -424,9 +427,9 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product> $products * @param ObjectStorage<Product> $products
*/ */
public function setProducts(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $products) public function setProducts(ObjectStorage $products)
{ {
$this->products = $products; $this->products = $products;
} }
@@ -43,7 +43,7 @@ class Contingent extends AbstractEntity implements EventInterface
protected $date; protected $date;
/** /**
* @var \EP\EpProducts\Domain\Model\Hotel * @var Hotel
*/ */
protected $hotel; protected $hotel;
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,7 +28,6 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Country extends AbstractDestination implements TeaserInterface class Country extends AbstractDestination implements TeaserInterface
{ {
@@ -41,24 +42,24 @@ class Country extends AbstractDestination implements TeaserInterface
protected $descriptionExtended = ''; protected $descriptionExtended = '';
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> * @var ObjectStorage<Fact>
*/ */
protected $facts; protected $facts;
/** /**
* @var \EP\EpProducts\Domain\Model\Officetip * @var Officetip
*/ */
protected $officetip; protected $officetip;
/** /**
* @var \EP\EpProducts\Domain\Model\Snowreport * @var Snowreport
*/ */
protected $snowreport; protected $snowreport;
protected function initStorageObjects() protected function initStorageObjects()
{ {
parent::initStorageObjects(); parent::initStorageObjects();
$this->facts = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->facts = new ObjectStorage();
} }
/** /**
@@ -92,23 +93,23 @@ class Country extends AbstractDestination implements TeaserInterface
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Fact $fact * @param Fact $fact
*/ */
public function addFact(\EP\EpProducts\Domain\Model\Fact $fact) public function addFact(Fact $fact)
{ {
$this->facts->attach($fact); $this->facts->attach($fact);
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Fact $factToRemove * @param Fact $factToRemove
*/ */
public function removeFact(\EP\EpProducts\Domain\Model\Fact $factToRemove) public function removeFact(Fact $factToRemove)
{ {
$this->facts->detach($factToRemove); $this->facts->detach($factToRemove);
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> * @return ObjectStorage<Fact>
*/ */
public function getFacts() public function getFacts()
{ {
@@ -116,9 +117,9 @@ class Country extends AbstractDestination implements TeaserInterface
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts * @param ObjectStorage<Fact> $facts
*/ */
public function setFacts(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $facts) public function setFacts(ObjectStorage $facts)
{ {
$this->facts = $facts; $this->facts = $facts;
} }
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Date extends AbstractEntity
class Date extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
/** /**
* @var Product * @var Product
@@ -2,35 +2,28 @@
namespace EP\EpProducts\Domain\Model\Dto; namespace EP\EpProducts\Domain\Model\Dto;
use TYPO3\CMS\Extbase\Annotation\Validate;
use JsonSerializable; use JsonSerializable;
class NewsletterSubscriptionRequest implements JsonSerializable class NewsletterSubscriptionRequest implements JsonSerializable
{ {
/** #[Validate(['validator' => 'NotEmpty'])]
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
*/
private ?string $firstName = null; private ?string $firstName = null;
/** #[Validate(['validator' => 'NotEmpty'])]
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
*/
private ?string $lastName = null; private ?string $lastName = null;
/** #[Validate(['validator' => 'NotEmpty'])]
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty") #[Validate(['validator' => 'EmailAddress'])]
* @TYPO3\CMS\Extbase\Annotation\Validate("EmailAddress")
*/
private ?string $email = null; private ?string $email = null;
/** /**
* @var list<int> * @var list<int>
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
*/ */
#[Validate(['validator' => 'NotEmpty'])]
private array $listIds = []; private array $listIds = [];
/** #[Validate(['validator' => 'Boolean', 'options' => ['is' => true]])]
* @TYPO3\CMS\Extbase\Annotation\Validate("Boolean", options={"is": true})
*/
private bool $consent = false; private bool $consent = false;
public function getFirstName(): ?string public function getFirstName(): ?string
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Fact extends AbstractEntity
class Fact extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
/** /**
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Faq extends AbstractEntity
class Faq extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
/** /**
@@ -26,7 +26,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
use TYPO3\CMS\Extbase\Annotation\ORM\Lazy;
use EP\EpProducts\Utility\HotelIconUtility; use EP\EpProducts\Utility\HotelIconUtility;
use TYPO3\CMS\Extbase\Domain\Model\FileReference; use TYPO3\CMS\Extbase\Domain\Model\FileReference;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity; use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
@@ -197,8 +197,8 @@ class Hotel extends AbstractEntity implements TeaserInterface
/** /**
* @var ObjectStorage<MatchCode> * @var ObjectStorage<MatchCode>
* @TYPO3\CMS\Extbase\Annotation\ORM\Lazy
*/ */
#[Lazy]
protected $additionalCodes; protected $additionalCodes;
/** /**
@@ -2,6 +2,9 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +29,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Journey extends AbstractEntity
class Journey extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
/** /**
@@ -46,7 +48,7 @@ class Journey extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $byBus; protected $byBus;
/** /**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference * @var FileReference
*/ */
protected $image; protected $image;
@@ -99,7 +101,7 @@ class Journey extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference * @return FileReference
*/ */
public function getImage() public function getImage()
{ {
@@ -107,7 +109,7 @@ class Journey extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image * @param FileReference $image
*/ */
public function setImage($image) public function setImage($image)
{ {
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class MatchCode extends AbstractEntity
class MatchCode extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
/** /**
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Officetip extends AbstractEntity
class Officetip extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
/** /**
@@ -41,7 +42,7 @@ class Officetip extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $text = ''; protected $text = '';
/** /**
* @var \EP\EpProducts\Domain\Model\Teammember * @var Teammember
*/ */
protected $author; protected $author;
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
use TYPO3\CMS\Extbase\Domain\Model\FileReference; use TYPO3\CMS\Extbase\Domain\Model\FileReference;
/*************************************************************** /***************************************************************
@@ -29,7 +31,7 @@ use TYPO3\CMS\Extbase\Domain\Model\FileReference;
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements TeaserInterface class Product extends AbstractEntity implements TeaserInterface
{ {
/** /**
@@ -188,22 +190,22 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $testimonials = ''; protected $testimonials = '';
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $images; protected $images;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $resellerImages; protected $resellerImages;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $teaserImages; protected $teaserImages;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $headerImages; protected $headerImages;
@@ -213,57 +215,57 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $tourThumbnail; protected $tourThumbnail;
/** /**
* @var \EP\EpProducts\Domain\Model\Concept * @var Concept
*/ */
protected $concept; protected $concept;
/** /**
* @var \EP\EpProducts\Domain\Model\Country * @var Country
*/ */
protected $country; protected $country;
/** /**
* @var \EP\EpProducts\Domain\Model\Region * @var Region
*/ */
protected $region; protected $region;
/** /**
* @var \EP\EpProducts\Domain\Model\City * @var City
*/ */
protected $city; protected $city;
/** /**
* @var \EP\EpProducts\Domain\Model\Journey * @var Journey
*/ */
protected $journey; protected $journey;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> * @var ObjectStorage<Fact>
*/ */
protected $facts; protected $facts;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Hotel> * @var ObjectStorage<Hotel>
*/ */
protected $hotels; protected $hotels;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Faq> * @var ObjectStorage<Faq>
*/ */
protected $faqs; protected $faqs;
/** /**
* @var \EP\EpProducts\Domain\Model\Officetip * @var Officetip
*/ */
protected $officetip; protected $officetip;
/** /**
* @var \EP\EpProducts\Domain\Model\Hotel * @var Hotel
*/ */
protected $calendarHotel; protected $calendarHotel;
/** /**
* @var \EP\EpProducts\Domain\Model\Product * @var Product
*/ */
protected $altProduct; protected $altProduct;
@@ -278,12 +280,12 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $video = ''; protected $video = '';
/** /**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference * @var FileReference
*/ */
protected $banner; protected $banner;
/** /**
* @var \EP\EpProducts\Domain\Model\Badge * @var Badge
*/ */
protected $badge; protected $badge;
@@ -298,7 +300,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $minPrice; protected $minPrice;
/** /**
* @var \EP\EpProducts\Domain\Model\Infobox * @var Infobox
*/ */
protected $nonBookableInfo; protected $nonBookableInfo;
@@ -309,12 +311,12 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected function initStorageObjects() protected function initStorageObjects()
{ {
$this->images = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->images = new ObjectStorage();
$this->teaserImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->teaserImages = new ObjectStorage();
$this->headerImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->headerImages = new ObjectStorage();
$this->facts = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->facts = new ObjectStorage();
$this->hotels = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->hotels = new ObjectStorage();
$this->faqs = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->faqs = new ObjectStorage();
} }
/** /**
@@ -790,9 +792,9 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $images * @param ObjectStorage<FileReference> $images
*/ */
public function setImages(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $images) public function setImages(ObjectStorage $images)
{ {
$this->images = $images; $this->images = $images;
} }
@@ -810,15 +812,15 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $images * @param ObjectStorage<FileReference> $images
*/ */
public function setResellerImages(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $images) public function setResellerImages(ObjectStorage $images)
{ {
$this->resellerImages = $images; $this->resellerImages = $images;
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getTeaserImages() public function getTeaserImages()
{ {
@@ -826,7 +828,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return null|\TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return null|ObjectStorage
*/ */
public function getTeaserImage() public function getTeaserImage()
{ {
@@ -841,7 +843,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $teaserImages * @param ObjectStorage $teaserImages
*/ */
public function setTeaserImages($teaserImages) public function setTeaserImages($teaserImages)
{ {
@@ -852,7 +854,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
* Returns all header images with fallback to parent * Returns all header images with fallback to parent
* region in case none are assigned. * region in case none are assigned.
* *
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getHeaderImages() public function getHeaderImages()
{ {
@@ -869,7 +871,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
* Returns a single header image with fallback to parent * Returns a single header image with fallback to parent
* region in case none is assigned. * region in case none is assigned.
* *
* @return null|\TYPO3\CMS\Extbase\Domain\Model\FileReference * @return null|FileReference
*/ */
public function getHeaderImage() public function getHeaderImage()
{ {
@@ -884,7 +886,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $headerImages * @param ObjectStorage $headerImages
*/ */
public function setHeaderImages($headerImages) public function setHeaderImages($headerImages)
{ {
@@ -892,7 +894,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return \EP\EpProducts\Domain\Model\Concept $concept * @return Concept $concept
*/ */
public function getConcept() public function getConcept()
{ {
@@ -900,15 +902,15 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Concept $concept * @param Concept $concept
*/ */
public function setConcepts(\EP\EpProducts\Domain\Model\Concept $concept) public function setConcepts(Concept $concept)
{ {
$this->concept = $concept; $this->concept = $concept;
} }
/** /**
* @return \EP\EpProducts\Domain\Model\Country $country * @return Country $country
*/ */
public function getCountry() public function getCountry()
{ {
@@ -916,15 +918,15 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Country $country * @param Country $country
*/ */
public function setCountry(\EP\EpProducts\Domain\Model\Country $country) public function setCountry(Country $country)
{ {
$this->country = $country; $this->country = $country;
} }
/** /**
* @return \EP\EpProducts\Domain\Model\Region * @return Region
*/ */
public function getRegion() public function getRegion()
{ {
@@ -932,15 +934,15 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Region $region * @param Region $region
*/ */
public function setRegion(\EP\EpProducts\Domain\Model\Region $region) public function setRegion(Region $region)
{ {
$this->region = $region; $this->region = $region;
} }
/** /**
* @return \EP\EpProducts\Domain\Model\City * @return City
*/ */
public function getCity() public function getCity()
{ {
@@ -948,15 +950,15 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \EP\EpProducts\Domain\Model\City $city * @param City $city
*/ */
public function setCity(\EP\EpProducts\Domain\Model\City $city) public function setCity(City $city)
{ {
$this->city = $city; $this->city = $city;
} }
/** /**
* @return \EP\EpProducts\Domain\Model\Journey * @return Journey
*/ */
public function getJourney() public function getJourney()
{ {
@@ -964,7 +966,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Journey $journey * @param Journey $journey
*/ */
public function setJourney($journey) public function setJourney($journey)
{ {
@@ -972,7 +974,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts * @return ObjectStorage<Fact> $facts
*/ */
public function getFacts() public function getFacts()
{ {
@@ -980,31 +982,31 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts * @param ObjectStorage<Fact> $facts
*/ */
public function setFacts(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $facts) public function setFacts(ObjectStorage $facts)
{ {
$this->facts = $facts; $this->facts = $facts;
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Hotel $hotel * @param Hotel $hotel
*/ */
public function addHotel(\EP\EpProducts\Domain\Model\Hotel $hotel) public function addHotel(Hotel $hotel)
{ {
$this->hotels->attach($hotel); $this->hotels->attach($hotel);
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Hotel $hotel * @param Hotel $hotel
*/ */
public function removeHotel(\EP\EpProducts\Domain\Model\Hotel $hotel) public function removeHotel(Hotel $hotel)
{ {
$this->hotels->detach($hotel); $this->hotels->detach($hotel);
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Hotel> $hotels * @return ObjectStorage<Hotel> $hotels
*/ */
public function getHotels() public function getHotels()
{ {
@@ -1012,24 +1014,24 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Hotel> $hotels * @param ObjectStorage<Hotel> $hotels
*/ */
public function setHotels(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $hotels) public function setHotels(ObjectStorage $hotels)
{ {
$this->hotels = $hotels; $this->hotels = $hotels;
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Faq> * @return ObjectStorage<Faq>
*/ */
public function getFaqs() { public function getFaqs() {
return $this->faqs; return $this->faqs;
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Faq> $faq * @param ObjectStorage<Faq> $faq
*/ */
public function setFaqs(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $faqs) public function setFaqs(ObjectStorage $faqs)
{ {
$this->faqs = $faqs; $this->faqs = $faqs;
} }
@@ -1115,7 +1117,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference * @return FileReference
*/ */
public function getBanner() public function getBanner()
{ {
@@ -1123,7 +1125,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
} }
/** /**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $banner * @param FileReference $banner
*/ */
public function setBanner($banner) public function setBanner($banner)
{ {
@@ -2,6 +2,10 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\Annotation\ORM\Cascade;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,7 +30,6 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Region extends AbstractDestination implements TeaserInterface class Region extends AbstractDestination implements TeaserInterface
{ {
@@ -76,50 +79,50 @@ class Region extends AbstractDestination implements TeaserInterface
protected $feature = ''; protected $feature = '';
/** /**
* @var \EP\EpProducts\Domain\Model\Country * @var Country
*/ */
protected $country; protected $country;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\City> * @var ObjectStorage<City>
* @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
*/ */
#[Cascade(['value' => 'remove'])]
protected $cities; protected $cities;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product> * @var ObjectStorage<Product>
* @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
*/ */
#[Cascade(['value' => 'remove'])]
protected $products; protected $products;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> * @var ObjectStorage<Fact>
*/ */
protected $facts; protected $facts;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Hotel> * @var ObjectStorage<Hotel>
* @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
*/ */
#[Cascade(['value' => 'remove'])]
protected $hotels; protected $hotels;
/** /**
* @var \EP\EpProducts\Domain\Model\Snowreport * @var Snowreport
*/ */
protected $snowreport; protected $snowreport;
/** /**
* @var \EP\EpProducts\Domain\Model\Webcam * @var Webcam
*/ */
protected $webcam; protected $webcam;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @var ObjectStorage<FileReference>
*/ */
protected $regionMaps; protected $regionMaps;
/** /**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference * @var FileReference
*/ */
protected $awardImage; protected $awardImage;
@@ -136,11 +139,11 @@ class Region extends AbstractDestination implements TeaserInterface
protected function initStorageObjects() protected function initStorageObjects()
{ {
parent::initStorageObjects(); parent::initStorageObjects();
$this->cities = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->cities = new ObjectStorage();
$this->products = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->products = new ObjectStorage();
$this->facts = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->facts = new ObjectStorage();
$this->hotels = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->hotels = new ObjectStorage();
$this->regionMaps = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $this->regionMaps = new ObjectStorage();
} }
/** /**
@@ -279,7 +282,7 @@ class Region extends AbstractDestination implements TeaserInterface
* Returns all header images with fallback to parent * Returns all header images with fallback to parent
* country in case none are assigned. * country in case none are assigned.
* *
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getHeaderImages() public function getHeaderImages()
{ {
@@ -293,7 +296,7 @@ class Region extends AbstractDestination implements TeaserInterface
} }
/** /**
* @return \EP\EpProducts\Domain\Model\Country $country * @return Country $country
*/ */
public function getCountry() public function getCountry()
{ {
@@ -301,43 +304,43 @@ class Region extends AbstractDestination implements TeaserInterface
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Country $country * @param Country $country
*/ */
public function setCountry(\EP\EpProducts\Domain\Model\Country $country) public function setCountry(Country $country)
{ {
$this->country = $country; $this->country = $country;
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getCities() { public function getCities() {
return $this->cities; return $this->cities;
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $cities * @param ObjectStorage $cities
*/ */
public function setCities($cities) { public function setCities($cities) {
$this->cities = $cities; $this->cities = $cities;
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getProducts() { public function getProducts() {
return $this->products; return $this->products;
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $products * @param ObjectStorage $products
*/ */
public function setProducts($products) { public function setProducts($products) {
$this->products = $products; $this->products = $products;
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts * @return ObjectStorage<Fact> $facts
*/ */
public function getFacts() public function getFacts()
{ {
@@ -347,22 +350,22 @@ class Region extends AbstractDestination implements TeaserInterface
/** /**
* Sets the facts * Sets the facts
* *
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts * @param ObjectStorage<Fact> $facts
*/ */
public function setFacts(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $facts) public function setFacts(ObjectStorage $facts)
{ {
$this->facts = $facts; $this->facts = $facts;
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return ObjectStorage
*/ */
public function getHotels() { public function getHotels() {
return $this->hotels; return $this->hotels;
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $hotels * @param ObjectStorage $hotels
*/ */
public function setHotels($hotels) { public function setHotels($hotels) {
$this->hotels = $hotels; $this->hotels = $hotels;
@@ -410,7 +413,7 @@ class Region extends AbstractDestination implements TeaserInterface
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> * @return ObjectStorage<FileReference>
*/ */
public function getRegionMaps() public function getRegionMaps()
{ {
@@ -426,7 +429,7 @@ class Region extends AbstractDestination implements TeaserInterface
} }
/** /**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference * @return FileReference
*/ */
public function getAwardImage() public function getAwardImage()
{ {
@@ -434,7 +437,7 @@ class Region extends AbstractDestination implements TeaserInterface
} }
/** /**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $awardImage * @param FileReference $awardImage
*/ */
public function setAwardImage($awardImage) public function setAwardImage($awardImage)
{ {
@@ -2,6 +2,7 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Annotation\ORM\Lazy; use TYPO3\CMS\Extbase\Annotation\ORM\Lazy;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage; use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
@@ -30,7 +31,7 @@ use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Reseller extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity class Reseller extends AbstractEntity
{ {
/** /**
@@ -49,9 +50,9 @@ class Reseller extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $paCode; protected $paCode;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product> * @var ObjectStorage<Product>
* @Lazy()
*/ */
#[Lazy]
protected $products; protected $products;
public function __construct() public function __construct()
@@ -2,6 +2,7 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage; use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
/*************************************************************** /***************************************************************
@@ -29,7 +30,7 @@ use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Snowreport extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity class Snowreport extends AbstractEntity
{ {
/** /**
@@ -98,7 +99,7 @@ class Snowreport extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $lastUpdate; protected $lastUpdate;
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Webcam> * @var ObjectStorage<Webcam>
*/ */
protected $webcams; protected $webcams;
@@ -326,23 +327,23 @@ class Snowreport extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Webcam $webcam * @param Webcam $webcam
*/ */
public function addWebcam(\EP\EpProducts\Domain\Model\Webcam $webcam) public function addWebcam(Webcam $webcam)
{ {
$this->webcams->attach($webcam); $this->webcams->attach($webcam);
} }
/** /**
* @param \EP\EpProducts\Domain\Model\Webcam $webcam * @param Webcam $webcam
*/ */
public function removeWebcam(\EP\EpProducts\Domain\Model\Webcam $webcam) public function removeWebcam(Webcam $webcam)
{ {
$this->webcams->detach($webcam); $this->webcams->detach($webcam);
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Webcam> * @return ObjectStorage<Webcam>
*/ */
public function getWebcams() public function getWebcams()
{ {
@@ -350,9 +351,9 @@ class Snowreport extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Webcam> $webcams * @param ObjectStorage<Webcam> $webcams
*/ */
public function setWebcams(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $webcams) public function setWebcams(ObjectStorage $webcams)
{ {
$this->webcams = $webcams; $this->webcams = $webcams;
} }
@@ -2,6 +2,9 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
use TYPO3\CMS\Extbase\Domain\Model\Category;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage; use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
/*************************************************************** /***************************************************************
@@ -29,7 +32,7 @@ use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Teammember extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity class Teammember extends AbstractEntity
{ {
/** /**
@@ -53,7 +56,7 @@ class Teammember extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $tasks = ''; protected $tasks = '';
/** /**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference * @var FileReference
*/ */
protected $image; protected $image;
@@ -63,7 +66,7 @@ class Teammember extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $description = ''; protected $description = '';
/** /**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\Category> * @var ObjectStorage<Category>
*/ */
protected $categories; protected $categories;
@@ -137,7 +140,7 @@ class Teammember extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference * @return FileReference
*/ */
public function getImage() public function getImage()
{ {
@@ -145,7 +148,7 @@ class Teammember extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $image * @param FileReference $image
*/ */
public function setImage($image) public function setImage($image)
{ {
@@ -169,7 +172,7 @@ class Teammember extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\Category> * @return ObjectStorage<Category>
*/ */
public function getCategories() public function getCategories()
{ {
@@ -43,7 +43,7 @@ interface TeaserInterface
public function getTeaserImages(); public function getTeaserImages();
/** /**
* @return null|\TYPO3\CMS\Extbase\Persistence\ObjectStorage * @return null|ObjectStorage
*/ */
public function getTeaserImage(); public function getTeaserImage();
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model; namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/*************************************************************** /***************************************************************
* *
* Copyright notice * Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
class Webcam extends AbstractEntity
class Webcam extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{ {
/** /**
@@ -36,7 +37,7 @@ class Webcam extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $vendorUid; protected $vendorUid;
/** /**
* @var \EP\EpProducts\Domain\Model\Snowreport * @var Snowreport
*/ */
protected $snowreport; protected $snowreport;
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Repository; namespace EP\EpProducts\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
use TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException;
use EP\EpProducts\Domain\Model\Dto\FilterOptions; use EP\EpProducts\Domain\Model\Dto\FilterOptions;
use EP\EpProducts\Service\FilterService; use EP\EpProducts\Service\FilterService;
use EP\EpProducts\Traits\DbConnectionTrait; use EP\EpProducts\Traits\DbConnectionTrait;
@@ -24,8 +26,8 @@ abstract class AbstractRepository extends Repository
/** /**
* @param array $uids * @param array $uids
* @return \TYPO3\CMS\Extbase\Persistence\QueryResultInterface * @return QueryResultInterface
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException * @throws InvalidQueryException
*/ */
public function getListByUids(array $uids = []) public function getListByUids(array $uids = [])
{ {
@@ -149,19 +151,16 @@ abstract class AbstractRepository extends Repository
{ {
// Price ranges // Price ranges
if (isset($filterSettings['priceRanges']) && is_array($filterSettings['priceRanges']) && count($filterSettings['priceRanges']) > 0) { if (isset($filterSettings['priceRanges']) && is_array($filterSettings['priceRanges']) && count($filterSettings['priceRanges']) > 0) {
$orX = $qb->expr()->orX(); $orX = $qb->expr()->or();
foreach ($filterSettings['priceRanges'] as $priceRange) { foreach ($filterSettings['priceRanges'] as $priceRange) {
[ $priceMin, $priceMax ] = FilterOptions::$priceRangeOptions[$priceRange]; [ $priceMin, $priceMax ] = FilterOptions::$priceRangeOptions[$priceRange];
$orX->add($qb->expr()->andX( $orX->add($qb->expr()->and($qb->expr()->gte(
$qb->expr()->gte( 'date.min_price',
'date.min_price', $qb->createNamedParameter($priceMin, Connection::PARAM_INT)
$qb->createNamedParameter($priceMin, Connection::PARAM_INT) ), $qb->expr()->lt(
), 'date.min_price',
$qb->expr()->lt( $qb->createNamedParameter($priceMax, Connection::PARAM_INT)
'date.min_price', )));
$qb->createNamedParameter($priceMax, Connection::PARAM_INT)
)
));
} }
$qb->andWhere($orX); $qb->andWhere($orX);
} }
@@ -36,9 +36,7 @@ class DateRepository extends AbstractRepository
$qb->expr()->eq('date.group_travel', $qb->createNamedParameter(0, Connection::PARAM_INT)), $qb->expr()->eq('date.group_travel', $qb->createNamedParameter(0, Connection::PARAM_INT)),
'date.date_start >= NOW()' 'date.date_start >= NOW()'
) )
->orderBy('date.date_start', 'DESC') ->orderBy('date.date_start', 'DESC')->addOrderBy('date.uid', 'DESC')->executeQuery()
->addOrderBy('date.uid', 'DESC')
->execute()
->fetchFirstColumn() ->fetchFirstColumn()
; ;
} }
@@ -26,7 +26,9 @@ namespace EP\EpProducts\Domain\Repository;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
use TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException;
use EP\EpProducts\Domain\Model\Hotel; use EP\EpProducts\Domain\Model\Hotel;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Connection;
@@ -219,7 +221,7 @@ class HotelRepository extends AbstractRepository
/** /**
* @param bool $excludeNonSearchable * @param bool $excludeNonSearchable
* @return \TYPO3\CMS\Core\Database\Query\QueryBuilder * @return QueryBuilder
* @throws \Doctrine\DBAL\DBALException * @throws \Doctrine\DBAL\DBALException
*/ */
protected function getQueryBuilder($excludeNonSearchable = true) protected function getQueryBuilder($excludeNonSearchable = true)
@@ -253,8 +255,8 @@ class HotelRepository extends AbstractRepository
} }
/** /**
* @return \TYPO3\CMS\Extbase\Persistence\QueryResultInterface * @return QueryResultInterface
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException * @throws InvalidQueryException
*/ */
public function getMapList() public function getMapList()
{ {
@@ -84,11 +84,7 @@ class ProductRepository extends AbstractRepository
->from('tx_epproducts_domain_model_date', 'date') ->from('tx_epproducts_domain_model_date', 'date')
->leftJoin('date', 'tx_epproducts_domain_model_concept', 'con', 'date.concept = con.uid') ->leftJoin('date', 'tx_epproducts_domain_model_concept', 'con', 'date.concept = con.uid')
->leftJoin('date', 'tx_epproducts_domain_model_room', 'room', 'room.date = date.uid') ->leftJoin('date', 'tx_epproducts_domain_model_room', 'room', 'room.date = date.uid')
->where($qb->expr()->andX( ->where($qb->expr()->and($qb->expr()->eq('date.product_searchable', 1), $qb->expr()->gt('date.available', 0), 'date.date_start >= NOW()'))
$qb->expr()->eq('date.product_searchable', 1),
$qb->expr()->gt('date.available', 0),
'date.date_start >= NOW()'
))
->groupBy('date.product') ->groupBy('date.product')
->addGroupBy('date.hotel') ->addGroupBy('date.hotel')
->addGroupBy('date.date_start') ->addGroupBy('date.date_start')
@@ -324,9 +320,7 @@ class ProductRepository extends AbstractRepository
->where($qb->expr()->eq( ->where($qb->expr()->eq(
'date.product', 'date.product',
$qb->createNamedParameter($product->getUid(), Connection::PARAM_INT)) $qb->createNamedParameter($product->getUid(), Connection::PARAM_INT))
) )->setMaxResults(1)->executeQuery()
->setMaxResults(1)
->execute()
->fetchOne() ->fetchOne()
; ;
@@ -2,6 +2,7 @@
namespace EP\EpProducts\Middleware; namespace EP\EpProducts\Middleware;
use TYPO3\CMS\Core\Database\Connection;
use EP\EpProducts\ContentFeed\ContentFeedApi; use EP\EpProducts\ContentFeed\ContentFeedApi;
use EP\EpProducts\Http\ApiKeyAuthenticator; use EP\EpProducts\Http\ApiKeyAuthenticator;
use EP\EpProducts\Service\MyEpImageService; use EP\EpProducts\Service\MyEpImageService;
@@ -156,9 +157,7 @@ class ApiMiddleware implements MiddlewareInterface
->leftJoin('product', 'tx_epproducts_domain_model_city', 'city', 'product.city = city.uid') ->leftJoin('product', 'tx_epproducts_domain_model_city', 'city', 'product.city = city.uid')
->leftJoin('product', 'tx_epproducts_domain_model_matchcode', 'matchcode', 'product.uid = matchcode.entity AND matchcode.entity_type="hotel"') ->leftJoin('product', 'tx_epproducts_domain_model_matchcode', 'matchcode', 'product.uid = matchcode.entity AND matchcode.entity_type="hotel"')
->where($queryBuilder->expr()->eq('product.code', $queryBuilder->createNamedParameter($productCode))) ->where($queryBuilder->expr()->eq('product.code', $queryBuilder->createNamedParameter($productCode)))
->orWhere($queryBuilder->expr()->eq('matchcode.code', $queryBuilder->createNamedParameter($productCode))) ->orWhere($queryBuilder->expr()->eq('matchcode.code', $queryBuilder->createNamedParameter($productCode)))->setMaxResults(1)->executeQuery()
->setMaxResults(1)
->execute()
->fetchAssociative() ->fetchAssociative()
; ;
@@ -214,13 +213,8 @@ class ApiMiddleware implements MiddlewareInterface
->from('tx_epproducts_domain_model_hotel', 'hotel') ->from('tx_epproducts_domain_model_hotel', 'hotel')
->leftJoin('hotel', 'tx_epproducts_domain_model_matchcode', 'alias', 'hotel.uid = alias.entity AND alias.entity_type="hotel"') ->leftJoin('hotel', 'tx_epproducts_domain_model_matchcode', 'alias', 'hotel.uid = alias.entity AND alias.entity_type="hotel"')
->where( ->where(
$queryBuilder->expr()->orX( $queryBuilder->expr()->or($queryBuilder->expr()->eq('hotel.code', $queryBuilder->createNamedParameter($hotelCode)), $queryBuilder->expr()->eq('alias.code', $queryBuilder->createNamedParameter($hotelCode)))
$queryBuilder->expr()->eq('hotel.code', $queryBuilder->createNamedParameter($hotelCode)), )->setMaxResults(1)->executeQuery()
$queryBuilder->expr()->eq('alias.code', $queryBuilder->createNamedParameter($hotelCode)),
)
)
->setMaxResults(1)
->execute()
->fetchAssociative() ->fetchAssociative()
; ;
@@ -270,9 +264,7 @@ class ApiMiddleware implements MiddlewareInterface
) )
->from('tx_epproducts_domain_model_region', 'region') ->from('tx_epproducts_domain_model_region', 'region')
->leftJoin('region', 'tx_epproducts_domain_model_webcam', 'webcam', 'region.webcam = webcam.uid') ->leftJoin('region', 'tx_epproducts_domain_model_webcam', 'webcam', 'region.webcam = webcam.uid')
->where($queryBuilder->expr()->eq('region.uid', $queryBuilder->createNamedParameter($regionUid, \PDO::PARAM_INT))) ->where($queryBuilder->expr()->eq('region.uid', $queryBuilder->createNamedParameter($regionUid, Connection::PARAM_INT)))->setMaxResults(1)->executeQuery()
->setMaxResults(1)
->execute()
->fetchAssociative() ->fetchAssociative()
; ;
@@ -36,7 +36,7 @@ class HotelDataService implements SingletonInterface
{ {
/** /**
* @var \EP\EpProducts\Domain\Repository\HotelRepository * @var HotelRepository
*/ */
protected $hotelRepository; protected $hotelRepository;
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Service; namespace EP\EpProducts\Service;
use EP\EpProducts\MyEP\ApiException;
/** /**
* A source of the BusPro product export. Implementations read the XML export * A source of the BusPro product export. Implementations read the XML export
* from a local drop directory or a remote SFTP server, or the JSON export from * from a local drop directory or a remote SFTP server, or the JSON export from
@@ -14,7 +16,7 @@ interface ProductImportSource
* or null when there is nothing newer than the last successful import. * or null when there is nothing newer than the last successful import.
* *
* @throws SftpImportException on an unrecoverable SFTP acquisition failure * @throws SftpImportException on an unrecoverable SFTP acquisition failure
* @throws \EP\EpProducts\MyEP\ApiException on an unrecoverable API failure * @throws ApiException on an unrecoverable API failure
*/ */
public function acquire(): ?ProductImport; public function acquire(): ?ProductImport;
@@ -177,10 +177,7 @@ class ResellerDataService implements SingletonInterface
->where('d.domainName = :domain') ->where('d.domainName = :domain')
->andWhere('r.deleted = 0') ->andWhere('r.deleted = 0')
->andWhere('r.hidden = 0') ->andWhere('r.hidden = 0')
->andWhere('d.hidden = 0') ->andWhere('d.hidden = 0')->setParameter('domain', $currentDomain)->executeQuery()->fetchAssociative()
->setParameter('domain', $currentDomain)
->execute()
->fetch()
; ;
} }
@@ -26,7 +26,7 @@ namespace EP\EpProducts\Traits;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -35,7 +35,7 @@ trait DbConnectionTrait
/** /**
* @param string $connectionName * @param string $connectionName
* @return \TYPO3\CMS\Core\Database\Connection * @return Connection
* @throws \Doctrine\DBAL\DBALException * @throws \Doctrine\DBAL\DBALException
*/ */
protected function getDbConnection($connectionName = 'Default') protected function getDbConnection($connectionName = 'Default')
@@ -35,7 +35,7 @@ trait RequestArgumentTypeConversionTrait
/** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */ /** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */
$objectManager = GeneralUtility::makeInstance(ObjectManager::class); $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var \EP\EpProducts\Service\FilterService $filterService */ /** @var FilterService $filterService */
$filterService = $objectManager->get(FilterService::class); $filterService = $objectManager->get(FilterService::class);
if (!$this->request->hasArgument('filterSettings')) { if (!$this->request->hasArgument('filterSettings')) {
@@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
namespace EP\EpProducts\Updates;
use TYPO3\CMS\Install\Attribute\UpgradeWizard;
use TYPO3\CMS\Install\Updates\AbstractListTypeToCTypeUpdate;
#[UpgradeWizard('epEpProductsCTypeMigration')]
final class EPEpProductsCTypeMigration extends AbstractListTypeToCTypeUpdate
{
public function getTitle(): string
{
return 'Migrate "EP EpProducts" plugins to content elements.';
}
public function getDescription(): string
{
return 'The "EP EpProducts" plugins are now registered as content element. Update migrates existing records and backend user permissions.';
}
/**
* This must return an array containing the "list_type" to "CType" mapping
*
* Example:
*
* [
* 'pi_plugin1' => 'pi_plugin1',
* 'pi_plugin2' => 'new_content_element',
* ]
*
* @return array<string, string>
*/
protected function getListTypeToCTypeMapping(): array
{
return [
// TODO: Add this mapping yourself!
];
}
}
@@ -25,10 +25,7 @@ class TcaProcFunc
$result = $qb $result = $qb
->select('date_start', 'date_end', 'bus_pro_id') ->select('date_start', 'date_end', 'bus_pro_id')
->from('tx_epproducts_domain_model_date') ->from('tx_epproducts_domain_model_date')
->where($qb->expr()->eq('product', $productUid)) ->where($qb->expr()->eq('product', $productUid))->orderBy('date_start')->executeQuery()->fetchAllAssociative()
->orderBy('date_start')
->execute()
->fetchAll()
; ;
foreach ($result as $row) { foreach ($result as $row) {
@@ -26,7 +26,7 @@ namespace EP\EpProducts\Utility;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
use TYPO3\CMS\Core\Http\ApplicationType;
use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection; use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager; use TYPO3\CMS\Extbase\Object\ObjectManager;
@@ -68,7 +68,7 @@ class SerializationUtility
foreach ($images as $file) foreach ($images as $file)
{ {
$image = $file->getOriginalResource(); $image = $file->getOriginalResource();
if (TYPO3_MODE === 'BE') { if (ApplicationType::fromRequest($GLOBALS['TYPO3_REQUEST'])->isBackend()) {
$hostname = 'www.ep-reisen.de'; $hostname = 'www.ep-reisen.de';
} else { } else {
$hostname = GeneralUtility::getIndpEnv('HTTP_HOST'); $hostname = GeneralUtility::getIndpEnv('HTTP_HOST');
@@ -1,7 +1,9 @@
<?php <?php
use EP\EpProducts\Command\DateCommandController;
return [ return [
'ep:import-dates' => [ 'ep:import-dates' => [
'class' => \EP\EpProducts\Command\DateCommandController::class, 'class' => DateCommandController::class,
], ],
]; ];
@@ -1,75 +1,66 @@
<?xml version="1.0"?>
<T3DataStructure> <T3DataStructure>
<meta> <meta>
<langDisable>1</langDisable> <langDisable>1</langDisable>
</meta> </meta>
<sheets> <sheets>
<sDEF> <sDEF>
<ROOT> <ROOT>
<TCEforms> <sheetTitle>Konfiguration</sheetTitle>
<sheetTitle>Konfiguration</sheetTitle> <type>array</type>
</TCEforms> <el>
<type>array</type> <settings.productUid>
<el> <exclude>0</exclude>
<settings.productUid> <label>Produkt:</label>
<TCEforms> <config>
<exclude>0</exclude> <type>select</type>
<label>Produkt:</label> <renderType>selectSingle</renderType>
<config> <foreign_table>tx_epproducts_domain_model_product</foreign_table>
<type>select</type> <foreign_table_where>AND tx_epproducts_domain_model_product.hidden = 0 AND tx_epproducts_domain_model_product.deleted = 0 ORDER BY tx_epproducts_domain_model_product.name_internal</foreign_table_where>
<renderType>selectSingle</renderType> <items type="array">
<foreign_table>tx_epproducts_domain_model_product</foreign_table> <numIndex index="0" type="array">
<foreign_table_where>AND tx_epproducts_domain_model_product.hidden = 0 AND tx_epproducts_domain_model_product.deleted = 0 ORDER BY tx_epproducts_domain_model_product.name_internal</foreign_table_where> <numIndex index="0">Alle</numIndex>
<items type="array"> <numIndex index="1">0</numIndex>
<numIndex index="0" type="array"> </numIndex>
<numIndex index="0">Alle</numIndex> </items>
<numIndex index="1">0</numIndex> <minitems>0</minitems>
</numIndex> <maxitems>1</maxitems>
</items> </config>
<minitems>0</minitems> </settings.productUid>
<maxitems>1</maxitems> <settings.hotelUid>
</config> <exclude>0</exclude>
</TCEforms> <label>Hotel:</label>
</settings.productUid> <config>
<settings.hotelUid> <type>select</type>
<TCEforms> <renderType>selectSingle</renderType>
<exclude>0</exclude> <foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<label>Hotel:</label> <foreign_table_where>AND tx_epproducts_domain_model_hotel.hidden = 0 AND tx_epproducts_domain_model_hotel.deleted = 0 ORDER BY tx_epproducts_domain_model_hotel.name</foreign_table_where>
<config> <items type="array">
<type>select</type> <numIndex index="0" type="array">
<renderType>selectSingle</renderType> <numIndex index="0">Alle</numIndex>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table> <numIndex index="1">0</numIndex>
<foreign_table_where>AND tx_epproducts_domain_model_hotel.hidden = 0 AND tx_epproducts_domain_model_hotel.deleted = 0 ORDER BY tx_epproducts_domain_model_hotel.name</foreign_table_where> </numIndex>
<items type="array"> </items>
<numIndex index="0" type="array"> <minitems>0</minitems>
<numIndex index="0">Alle</numIndex> <maxitems>1</maxitems>
<numIndex index="1">0</numIndex> </config>
</numIndex> </settings.hotelUid>
</items> <settings.hotelOnTop>
<minitems>0</minitems> <exclude>0</exclude>
<maxitems>1</maxitems> <label>Hotelbutton oben:</label>
</config> <config>
</TCEforms> <type>check</type>
</settings.hotelUid> </config>
<settings.hotelOnTop> </settings.hotelOnTop>
<TCEforms> <settings.hideTeamer>
<exclude>0</exclude> <exclude>0</exclude>
<label>Hotelbutton oben:</label> <label>Teamer ausblenden:</label>
<config> <config>
<type>check</type> <type>check</type>
</config> </config>
</TCEforms> </settings.hideTeamer>
</settings.hotelOnTop> </el>
<settings.hideTeamer> </ROOT>
<TCEforms> </sDEF>
<exclude>0</exclude> </sheets>
<label>Teamer ausblenden:</label>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.hideTeamer>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure> </T3DataStructure>
@@ -1,51 +1,46 @@
<?xml version="1.0"?>
<T3DataStructure> <T3DataStructure>
<meta> <meta>
<langDisable>1</langDisable> <langDisable>1</langDisable>
</meta> </meta>
<sheets> <sheets>
<sDEF> <sDEF>
<ROOT> <ROOT>
<TCEforms> <sheetTitle>Konfiguration</sheetTitle>
<sheetTitle>Konfiguration</sheetTitle> <type>array</type>
</TCEforms> <el>
<type>array</type> <settings.productUid>
<el> <exclude>0</exclude>
<settings.productUid> <label>Produkt:</label>
<TCEforms> <config>
<exclude>0</exclude> <type>select</type>
<label>Produkt:</label> <renderType>selectSingle</renderType>
<config> <foreign_table>tx_epproducts_domain_model_product</foreign_table>
<type>select</type> <foreign_table_where>AND tx_epproducts_domain_model_product.hidden = 0 AND tx_epproducts_domain_model_product.deleted = 0 ORDER BY tx_epproducts_domain_model_product.name_internal</foreign_table_where>
<renderType>selectSingle</renderType> <minitems>1</minitems>
<foreign_table>tx_epproducts_domain_model_product</foreign_table> <maxitems>1</maxitems>
<foreign_table_where>AND tx_epproducts_domain_model_product.hidden = 0 AND tx_epproducts_domain_model_product.deleted = 0 ORDER BY tx_epproducts_domain_model_product.name_internal</foreign_table_where> </config>
<minitems>1</minitems> </settings.productUid>
<maxitems>1</maxitems> <settings.hotelUid>
</config> <exclude>0</exclude>
</TCEforms> <label>Hotel:</label>
</settings.productUid> <config>
<settings.hotelUid> <type>select</type>
<TCEforms> <renderType>selectSingle</renderType>
<exclude>0</exclude> <foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<label>Hotel:</label> <foreign_table_where>AND tx_epproducts_domain_model_hotel.hidden = 0 AND tx_epproducts_domain_model_hotel.deleted = 0 ORDER BY tx_epproducts_domain_model_hotel.name</foreign_table_where>
<config> <items type="array">
<type>select</type> <numIndex index="0" type="array">
<renderType>selectSingle</renderType> <numIndex index="0">Alle</numIndex>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table> <numIndex index="1">0</numIndex>
<foreign_table_where>AND tx_epproducts_domain_model_hotel.hidden = 0 AND tx_epproducts_domain_model_hotel.deleted = 0 ORDER BY tx_epproducts_domain_model_hotel.name</foreign_table_where> </numIndex>
<items type="array"> </items>
<numIndex index="0" type="array"> <minitems>1</minitems>
<numIndex index="0">Alle</numIndex> <maxitems>1</maxitems>
<numIndex index="1">0</numIndex> </config>
</numIndex> </settings.hotelUid>
</items> </el>
<minitems>1</minitems> </ROOT>
<maxitems>1</maxitems> </sDEF>
</config> </sheets>
</TCEforms>
</settings.hotelUid>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure> </T3DataStructure>
@@ -1,252 +1,245 @@
<?xml version="1.0"?>
<T3DataStructure> <T3DataStructure>
<meta> <meta>
<langDisable>1</langDisable> <langDisable>1</langDisable>
</meta> </meta>
<sheets> <sheets>
<sDEF> <sDEF>
<ROOT> <ROOT>
<TCEforms> <sheetTitle>Konfiguration</sheetTitle>
<sheetTitle>Konfiguration</sheetTitle> <type>array</type>
</TCEforms> <el>
<type>array</type> <switchableControllerActions>
<el> <label>Modus</label>
<switchableControllerActions> <onChange>reload</onChange>
<TCEforms> <config>
<label>Modus</label> <type>select</type>
<onChange>reload</onChange> <renderType>selectSingle</renderType>
<config> <default>Product->teasergroup</default>
<type>select</type> <items type="array">
<renderType>selectSingle</renderType> <numIndex index="1" type="array">
<default>Product->teasergroup</default> <numIndex index="0">Teasergruppe</numIndex>
<items type="array"> <numIndex index="1">Product->teasergroup</numIndex>
<numIndex index="1" type="array"> </numIndex>
<numIndex index="0">Teasergruppe</numIndex> <numIndex index="2" type="array">
<numIndex index="1">Product->teasergroup</numIndex> <numIndex index="0">Einzelteaser</numIndex>
</numIndex> <numIndex index="1">Product->teaser</numIndex>
<numIndex index="2" type="array"> </numIndex>
<numIndex index="0">Einzelteaser</numIndex> </items>
<numIndex index="1">Product->teaser</numIndex> </config>
</numIndex> </switchableControllerActions>
</items> <settings.countryUid>
</config> <label>Land:</label>
</TCEforms> <displayCond>
</switchableControllerActions> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
<settings.countryUid> </displayCond>
<TCEforms> <config>
<label>Land:</label> <type>select</type>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> <renderType>selectSingle</renderType>
<config> <foreign_table>tx_epproducts_domain_model_country</foreign_table>
<type>select</type> <foreign_table_where>ORDER BY name</foreign_table_where>
<renderType>selectSingle</renderType> <items type="array">
<foreign_table>tx_epproducts_domain_model_country</foreign_table> <numIndex index="0" type="array">
<foreign_table_where>ORDER BY name</foreign_table_where> <numIndex index="0">Keine Zuordnung</numIndex>
<items type="array"> <numIndex index="1">0</numIndex>
<numIndex index="0" type="array"> </numIndex>
<numIndex index="0">Keine Zuordnung</numIndex> </items>
<numIndex index="1">0</numIndex> <minitems>0</minitems>
</numIndex> <maxitems>1</maxitems>
</items> </config>
<minitems>0</minitems> </settings.countryUid>
<maxitems>1</maxitems> <settings.regionUid>
</config> <label>Gebiet:</label>
</TCEforms> <displayCond>
</settings.countryUid> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
<settings.regionUid> </displayCond>
<TCEforms> <config>
<label>Gebiet:</label> <type>select</type>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> <renderType>selectSingle</renderType>
<config> <foreign_table>tx_epproducts_domain_model_region</foreign_table>
<type>select</type> <foreign_table_where>ORDER BY name</foreign_table_where>
<renderType>selectSingle</renderType> <items type="array">
<foreign_table>tx_epproducts_domain_model_region</foreign_table> <numIndex index="0" type="array">
<foreign_table_where>ORDER BY name</foreign_table_where> <numIndex index="0">Keine Zuordnung</numIndex>
<items type="array"> <numIndex index="1">0</numIndex>
<numIndex index="0" type="array"> </numIndex>
<numIndex index="0">Keine Zuordnung</numIndex> </items>
<numIndex index="1">0</numIndex> <minitems>0</minitems>
</numIndex> <maxitems>1</maxitems>
</items> </config>
<minitems>0</minitems> </settings.regionUid>
<maxitems>1</maxitems> <settings.conceptUid>
</config> <label>Konzept:</label>
</TCEforms> <displayCond>
</settings.regionUid> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
<settings.conceptUid> </displayCond>
<TCEforms> <config>
<label>Konzept:</label> <type>select</type>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> <renderType>selectSingleBox</renderType>
<config> <foreign_table>tx_epproducts_domain_model_concept</foreign_table>
<type>select</type> <foreign_table_where>ORDER BY name</foreign_table_where>
<renderType>selectSingleBox</renderType> <items type="array">
<foreign_table>tx_epproducts_domain_model_concept</foreign_table> <numIndex index="0" type="array">
<foreign_table_where>ORDER BY name</foreign_table_where> <numIndex index="0">Keine Zuordnung</numIndex>
<items type="array"> <numIndex index="1">0</numIndex>
<numIndex index="0" type="array"> </numIndex>
<numIndex index="0">Keine Zuordnung</numIndex> </items>
<numIndex index="1">0</numIndex> <size>5</size>
</numIndex> <minitems>0</minitems>
</items> <maxitems>10</maxitems>
<size>5</size> </config>
<minitems>0</minitems> </settings.conceptUid>
<maxitems>10</maxitems> <settings.hotelUid>
</config> <label>Hotel:</label>
</TCEforms> <config>
</settings.conceptUid> <type>select</type>
<settings.hotelUid> <renderType>selectSingle</renderType>
<TCEforms> <foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<label>Hotel:</label> <foreign_table_where>ORDER BY name</foreign_table_where>
<config> <items type="array">
<type>select</type> <numIndex index="0" type="array">
<renderType>selectSingle</renderType> <numIndex index="0">Alle</numIndex>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table> <numIndex index="1">0</numIndex>
<foreign_table_where>ORDER BY name</foreign_table_where> </numIndex>
<items type="array"> </items>
<numIndex index="0" type="array"> <minitems>0</minitems>
<numIndex index="0">Alle</numIndex> <maxitems>1</maxitems>
<numIndex index="1">0</numIndex> </config>
</numIndex> </settings.hotelUid>
</items> <settings.busAvailable>
<minitems>0</minitems> <label>Busreise:</label>
<maxitems>1</maxitems> <displayCond>
</config> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</TCEforms> </displayCond>
</settings.hotelUid> <config>
<settings.busAvailable> <type>check</type>
<TCEforms> </config>
<label>Busreise:</label> </settings.busAvailable>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> <settings.dateFrom>
<config> <label>Zeitraum von:</label>
<type>check</type> <displayCond>
</config> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</TCEforms> </displayCond>
</settings.busAvailable> <config>
<settings.dateFrom> <type>input</type>
<TCEforms> <size>10</size>
<label>Zeitraum von:</label> <eval>date</eval>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> </config>
<config> </settings.dateFrom>
<type>input</type> <settings.dateTo>
<size>10</size> <label>Zeitraum bis:</label>
<eval>date</eval> <displayCond>
</config> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</TCEforms> </displayCond>
</settings.dateFrom> <config>
<settings.dateTo> <type>input</type>
<TCEforms> <size>10</size>
<label>Zeitraum bis:</label> <eval>date</eval>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> </config>
<config> </settings.dateTo>
<type>input</type> <settings.productUid>
<size>10</size> <label>Produkt:</label>
<eval>date</eval> <displayCond>
</config> <![CDATA[FIELD:switchableControllerActions:=:Product->teaser]]>
</TCEforms> </displayCond>
</settings.dateTo> <config>
<settings.productUid> <type>select</type>
<TCEforms> <renderType>selectSingle</renderType>
<label>Produkt:</label> <foreign_table>tx_epproducts_domain_model_product</foreign_table>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teaser]]></displayCond> <foreign_table_where>ORDER BY name_internal</foreign_table_where>
<config> <items type="array">
<type>select</type> <numIndex index="0" type="array">
<renderType>selectSingle</renderType> <numIndex index="0">Alle</numIndex>
<foreign_table>tx_epproducts_domain_model_product</foreign_table> <numIndex index="1">0</numIndex>
<foreign_table_where>ORDER BY name_internal</foreign_table_where> </numIndex>
<items type="array"> </items>
<numIndex index="0" type="array"> <minitems>0</minitems>
<numIndex index="0">Alle</numIndex> <maxitems>1</maxitems>
<numIndex index="1">0</numIndex> </config>
</numIndex> </settings.productUid>
</items> <settings.layout>
<minitems>0</minitems> <label>Layout:</label>
<maxitems>1</maxitems> <displayCond>
</config> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</TCEforms> </displayCond>
</settings.productUid> <config>
<settings.layout> <type>select</type>
<TCEforms> <renderType>selectSingle</renderType>
<label>Layout:</label> <items type="array">
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> <numIndex index="0" type="array">
<config> <numIndex index="0">Spalten</numIndex>
<type>select</type> <numIndex index="1">cols</numIndex>
<renderType>selectSingle</renderType> </numIndex>
<items type="array"> <numIndex index="1" type="array">
<numIndex index="0" type="array"> <numIndex index="0">Reihen</numIndex>
<numIndex index="0">Spalten</numIndex> <numIndex index="1">rows</numIndex>
<numIndex index="1">cols</numIndex> </numIndex>
</numIndex> </items>
<numIndex index="1" type="array"> </config>
<numIndex index="0">Reihen</numIndex> </settings.layout>
<numIndex index="1">rows</numIndex> <settings.hotelTypes>
</numIndex> <label>Unterkunftsart:</label>
</items> <displayCond>
</config> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</TCEforms> </displayCond>
</settings.layout> <config>
<settings.hotelTypes> <type>select</type>
<TCEforms> <renderType>selectCheckBox</renderType>
<label>Unterkunftsart:</label> <items type="array">
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> <numIndex index="0" type="array">
<config> <numIndex index="0">Ferienwohnung</numIndex>
<type>select</type> <numIndex index="1">1</numIndex>
<renderType>selectCheckBox</renderType> </numIndex>
<items type="array"> <numIndex index="1" type="array">
<numIndex index="0" type="array"> <numIndex index="0">Sportclub</numIndex>
<numIndex index="0">Ferienwohnung</numIndex> <numIndex index="1">2</numIndex>
<numIndex index="1">1</numIndex> </numIndex>
</numIndex> <numIndex index="2" type="array">
<numIndex index="1" type="array"> <numIndex index="0">Apartment</numIndex>
<numIndex index="0">Sportclub</numIndex> <numIndex index="1">3</numIndex>
<numIndex index="1">2</numIndex> </numIndex>
</numIndex> <numIndex index="3" type="array">
<numIndex index="2" type="array"> <numIndex index="0">G&#xE4;stehaus</numIndex>
<numIndex index="0">Apartment</numIndex> <numIndex index="1">4</numIndex>
<numIndex index="1">3</numIndex> </numIndex>
</numIndex> <numIndex index="4" type="array">
<numIndex index="3" type="array"> <numIndex index="0">Pension</numIndex>
<numIndex index="0">Gästehaus</numIndex> <numIndex index="1">5</numIndex>
<numIndex index="1">4</numIndex> </numIndex>
</numIndex> </items>
<numIndex index="4" type="array"> <minitems>0</minitems>
<numIndex index="0">Pension</numIndex> <maxitems>10</maxitems>
<numIndex index="1">5</numIndex> </config>
</numIndex> </settings.hotelTypes>
</items> <settings.hideMoreLink>
<minitems>0</minitems> <exclude>0</exclude>
<maxitems>10</maxitems> <label>Link zum Suchergebnis ausblenden:</label>
</config> <config>
</TCEforms> <type>check</type>
</settings.hotelTypes> </config>
<settings.hideMoreLink> </settings.hideMoreLink>
<TCEforms> <settings.infoboxUid>
<exclude>0</exclude> <label>Infobox nicht buchbar:</label>
<label>Link zum Suchergebnis ausblenden:</label> <displayCond>
<config> <![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
<type>check</type> </displayCond>
</config> <config>
</TCEforms> <type>select</type>
</settings.hideMoreLink> <renderType>selectSingle</renderType>
<settings.infoboxUid> <foreign_table>tx_epproducts_domain_model_infobox</foreign_table>
<TCEforms> <foreign_table_where>ORDER BY title</foreign_table_where>
<label>Infobox nicht buchbar:</label> <items type="array">
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond> <numIndex index="0" type="array">
<config> <numIndex index="0">Default</numIndex>
<type>select</type> <numIndex index="1">0</numIndex>
<renderType>selectSingle</renderType> </numIndex>
<foreign_table>tx_epproducts_domain_model_infobox</foreign_table> </items>
<foreign_table_where>ORDER BY title</foreign_table_where> <minitems>0</minitems>
<items type="array"> <maxitems>1</maxitems>
<numIndex index="0" type="array"> </config>
<numIndex index="0">Default</numIndex> </settings.infoboxUid>
<numIndex index="1">0</numIndex> </el>
</numIndex> </ROOT>
</items> </sDEF>
<minitems>0</minitems> </sheets>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.infoboxUid>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure> </T3DataStructure>
@@ -0,0 +1,8 @@
<?php
return [
'ep-logo' => [
'provider' => \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
'source' => 'EXT:ep_products/Resources/Public/Icons/logo.svg',
],
];
@@ -1,9 +1,12 @@
<?php <?php
use EP\EpProducts\Middleware\ApiMiddleware;
use EP\EpProducts\Middleware\ContentPageTypeGuardMiddleware;
return [ return [
'frontend' => [ 'frontend' => [
'ep/productapi' => [ 'ep/productapi' => [
'target' => \EP\EpProducts\Middleware\ApiMiddleware::class, 'target' => ApiMiddleware::class,
'before' => [ 'before' => [
'typo3/cms-frontend/page-resolver', 'typo3/cms-frontend/page-resolver',
], ],
@@ -12,7 +15,7 @@ return [
], ],
], ],
'ep/content-page-type-guard' => [ 'ep/content-page-type-guard' => [
'target' => \EP\EpProducts\Middleware\ContentPageTypeGuardMiddleware::class, 'target' => ContentPageTypeGuardMiddleware::class,
'after' => [ 'after' => [
'typo3/cms-frontend/page-resolver', 'typo3/cms-frontend/page-resolver',
], ],
@@ -1,8 +1,10 @@
<?php <?php
defined('TYPO3_MODE')|| die('Access denied.'); use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile( defined('TYPO3')|| die('Access denied.');
ExtensionManagementUtility::addStaticFile(
'ep_products', 'ep_products',
'Configuration/TypoScript', 'Configuration/TypoScript',
'EP Products' 'EP Products'
@@ -1,41 +1,44 @@
<?php <?php
defined('TYPO3_MODE') or die(); use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function () { call_user_func(function () {
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( ExtensionUtility::registerPlugin(
'EP.EpProducts', 'EpProducts',
'product_detail', 'product_detail',
'Produkt: Details' 'Produkt: Details'
); );
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( ExtensionUtility::registerPlugin(
'EP.EpProducts', 'EpProducts',
'product_teasergroup', 'product_teasergroup',
'Produkt: Teaser' 'Produkt: Teaser'
); );
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( ExtensionUtility::registerPlugin(
'EP.EpProducts', 'EpProducts',
'product_pricetable', 'product_pricetable',
'Buchungstabelle' 'Buchungstabelle'
); );
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['epproducts_product_detail'] = 'pi_flexform'; $GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['epproducts_product_detail'] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue( ExtensionManagementUtility::addPiFlexFormValue(
'epproducts_product_detail', 'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_detail.xml' 'epproducts_product_detail',
'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_detail.xml'
); );
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['epproducts_product_teasergroup'] = 'pi_flexform'; $GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['epproducts_product_teasergroup'] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue( ExtensionManagementUtility::addPiFlexFormValue(
'epproducts_product_teasergroup', 'epproducts_product_teasergroup',
'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_teaser.xml' 'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_teaser.xml'
); );
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['epproducts_product_pricetable'] = 'pi_flexform'; $GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['epproducts_product_pricetable'] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue( ExtensionManagementUtility::addPiFlexFormValue(
'epproducts_product_pricetable', 'epproducts_product_pricetable',
'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_pricetable.xml' 'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_pricetable.xml'
); );
@@ -1,12 +1,11 @@
<?php <?php
defined('TYPO3_MODE') or die(); use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function () { call_user_func(function () {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable( $GLOBALS['TCA']['tx_epproducts_domain_model_teammember']['columns']['categories'] = ['config' => ['type' => 'category']];
'epproducts', ExtensionManagementUtility::addToAllTCAtypes('tx_epproducts_domain_model_teammember', 'categories');
'tx_epproducts_domain_model_teammember'
);
}); });
@@ -7,7 +7,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -34,17 +33,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -54,7 +43,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_badge', 'foreign_table' => 'tx_epproducts_domain_model_badge',
'foreign_table_where' => 'AND tx_epproducts_domain_model_badge.pid=###CURRENT_PID### AND tx_epproducts_domain_model_badge.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_badge.pid=###CURRENT_PID### AND tx_epproducts_domain_model_badge.sys_language_uid IN (-1,0)',
@@ -86,30 +75,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -119,7 +104,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'subtitle' => [ 'subtitle' => [
@@ -135,9 +121,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Link', 'label' => 'Link',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'renderType' => 'inputLink',
] ]
], ],
], ],
@@ -1,4 +1,8 @@
<?php <?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Domain\Model\AbstractDestination;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_city', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_city',
@@ -7,7 +11,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -39,17 +42,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -59,7 +52,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_city', 'foreign_table' => 'tx_epproducts_domain_model_city',
'foreign_table_where' => 'AND tx_epproducts_domain_model_city.pid=###CURRENT_PID### AND tx_epproducts_domain_model_city.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_city.pid=###CURRENT_PID### AND tx_epproducts_domain_model_city.sys_language_uid IN (-1,0)',
@@ -91,30 +84,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -122,9 +111,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Detailseite', 'label' => 'Detailseite',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'renderType' => 'inputLink',
] ]
], ],
'exclude_from_teasergroups' => [ 'exclude_from_teasergroups' => [
@@ -141,8 +129,8 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['Winter', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_WINTER], ['label' => 'Winter', 'value' => AbstractDestination::SEASON_WINTER],
['Sommer', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_SUMMER], ['label' => 'Sommer', 'value' => AbstractDestination::SEASON_SUMMER],
], ],
] ]
], ],
@@ -152,7 +140,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'name_internal' => [ 'name_internal' => [
@@ -161,7 +150,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'keywords' => [ 'keywords' => [
@@ -259,31 +249,32 @@ return [
'teaser_images' => [ 'teaser_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Teaserbild(er)', 'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'teaser_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
], ],
'overrideChildTca' => [ 'overrideChildTca' => [
'types' => [ 'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ FileType::IMAGE->value => [
'showitem' => ' 'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'teaser' => [ 'allowedAspectRatios' => [
'title' => 'Teaser', 'teaser' => [
'value' => 2, 'title' => 'Teaser',
], 'value' => 2,
], ],
], ],
], ],
@@ -291,39 +282,39 @@ return [
], ],
], ],
], ],
'maxitems' => 10 ],
], 'maxitems' => 10,
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ],
),
], ],
'header_images' => [ 'header_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Headerbild(er)', 'label' => 'Headerbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'header_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
], ],
'overrideChildTca' => [ 'overrideChildTca' => [
'types' => [ 'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ FileType::IMAGE->value => [
'showitem' => ' 'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'headerLarge' => [ 'allowedAspectRatios' => [
'title' => 'Header', 'headerLarge' => [
'value' => 3.8, 'title' => 'Header',
], 'value' => 3.8,
], ],
], ],
], ],
@@ -331,48 +322,48 @@ return [
], ],
], ],
], ],
'maxitems' => 10 ],
], 'maxitems' => 10,
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ],
),
], ],
'images' => [ 'images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Galeriebilder', 'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
], ],
'overrideChildTca' => [ 'overrideChildTca' => [
'types' => [ 'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ FileType::IMAGE->value => [
'showitem' => ' 'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Preview', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Preview',
'preview' => [ 'allowedAspectRatios' => [
'title' => 'Standard', 'preview' => [
'value' => 1.8, 'title' => 'Standard',
], 'value' => 1.8,
], ],
], ],
'zoom' => [ ],
'title' => 'Zoom', 'zoom' => [
'allowedAspectRatios' => [ 'title' => 'Zoom',
'free' => [ 'allowedAspectRatios' => [
'title' => 'frei', 'free' => [
'value' => 'NaN', 'title' => 'frei',
], 'value' => 'NaN',
], ],
], ],
], ],
@@ -380,10 +371,9 @@ return [
], ],
], ],
], ],
'maxitems' => 10 ],
], 'maxitems' => 10,
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ],
),
], ],
'latitude' => [ 'latitude' => [
'exclude' => 0, 'exclude' => 0,
@@ -436,7 +426,7 @@ return [
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_officetip', 'foreign_table' => 'tx_epproducts_domain_model_officetip',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -1,4 +1,7 @@
<?php <?php
use TYPO3\CMS\Core\Resource\FileType;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_concept', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_concept',
@@ -8,7 +11,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -42,17 +44,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -62,7 +54,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_concept', 'foreign_table' => 'tx_epproducts_domain_model_concept',
'foreign_table_where' => 'AND tx_epproducts_domain_model_concept.pid=###CURRENT_PID### AND tx_epproducts_domain_model_concept.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_concept.pid=###CURRENT_PID### AND tx_epproducts_domain_model_concept.sys_language_uid IN (-1,0)',
@@ -94,30 +86,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'sorting' => [ 'sorting' => [
@@ -140,7 +128,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'code' => [ 'code' => [
@@ -149,7 +138,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 5, 'size' => 5,
'eval' => 'trim,lower,required' 'eval' => 'trim,lower',
'required' => true
], ],
], ],
'description' => [ 'description' => [
@@ -216,9 +206,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Detailseite', 'label' => 'Detailseite',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'renderType' => 'inputLink',
] ]
], ],
'popup_title' => [ 'popup_title' => [
@@ -256,20 +245,69 @@ return [
'teaser_images' => [ 'teaser_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Teaserbild(er)', 'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'teaser_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaserEven' => [
'title' => 'Teaser gerade',
'value' => 1.3333333333333334,
],
'teaserOdd' => [
'title' => 'Teaser ungerade',
'value' => 2.0555555555555556,
],
'free' => [
'title' => 'Frei',
'value' => 'NaN',
],
],
],
],
], ],
], ],
],
],
'maxitems' => 10,
],
],
'header_images' => [
'exclude' => 0,
'label' => 'Headerbild(er)',
'config' => [
// TODO: Important! Verify that the fieldname value in foreign table either matches the column name
// or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'type' => 'file',
'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette',
],
'columns' => [ 'columns' => [
'crop' => [ 'crop' => [
'config' => [ 'config' => [
@@ -277,13 +315,13 @@ return [
'default' => [ 'default' => [
'title' => 'Alle Geräte', 'title' => 'Alle Geräte',
'allowedAspectRatios' => [ 'allowedAspectRatios' => [
'teaserEven' => [ 'headerLarge' => [
'title' => 'Teaser gerade', 'title' => 'Header groß',
'value' => 1.3333333333333334, 'value' => 2.3333333333333334,
], ],
'teaserOdd' => [ 'headerSmall' => [
'title' => 'Teaser ungerade', 'title' => 'Header klein',
'value' => 2.0555555555555556, 'value' => 3.3333333333333334,
], ],
'free' => [ 'free' => [
'title' => 'Frei', 'title' => 'Frei',
@@ -296,96 +334,48 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
],
'header_images' => [
'exclude' => 0,
'label' => 'Headerbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'header_images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette',
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header groß',
'value' => 2.3333333333333334,
],
'headerSmall' => [
'title' => 'Header klein',
'value' => 3.3333333333333334,
],
'free' => [
'title' => 'Frei',
'value' => 'NaN',
],
],
],
],
],
],
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
], ],
'images' => [ 'images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Galeriebilder', 'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Preview', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Preview',
'preview' => [ 'allowedAspectRatios' => [
'title' => 'Standard', 'preview' => [
'value' => 1.8, 'title' => 'Standard',
], 'value' => 1.8,
], ],
], ],
'zoom' => [ ],
'title' => 'Zoom', 'zoom' => [
'allowedAspectRatios' => [ 'title' => 'Zoom',
'free' => [ 'allowedAspectRatios' => [
'title' => 'frei', 'free' => [
'value' => 'NaN', 'title' => 'frei',
], 'value' => 'NaN',
], ],
], ],
], ],
@@ -393,10 +383,9 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'products' => [ 'products' => [
'exclude' => 0, 'exclude' => 0,
@@ -1,13 +1,16 @@
<?php <?php
use EP\EpProducts\Service\LabelService;
use EP\EpProducts\Domain\Model\Contingent;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_contingent', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_contingent',
'label' => 'date', 'label' => 'date',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getContingentLabel', 'label_userFunc' => LabelService::class . '->getContingentLabel',
'default_sortby' => 'ORDER BY date', 'default_sortby' => 'ORDER BY date',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => false, 'versioningWS' => false,
'hideTable' => true, 'hideTable' => true,
@@ -32,17 +35,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -52,7 +45,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_contingent', 'foreign_table' => 'tx_epproducts_domain_model_contingent',
'foreign_table_where' => 'AND tx_epproducts_domain_model_contingent.pid=###CURRENT_PID### AND tx_epproducts_domain_model_contingent.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_contingent.pid=###CURRENT_PID### AND tx_epproducts_domain_model_contingent.sys_language_uid IN (-1,0)',
@@ -84,30 +77,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -115,18 +104,18 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Pax', 'label' => 'Pax',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 3, 'size' => 3,
'eval' => 'int,required' 'required' => true
], ],
], ],
'available' => [ 'available' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'verfügbar', 'label' => 'verfügbar',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 3, 'size' => 3,
'eval' => 'int,required' 'required' => true
], ],
], ],
'date' => [ 'date' => [
@@ -134,12 +123,11 @@ return [
'label' => 'Datum', 'label' => 'Datum',
'config' => [ 'config' => [
'dbType' => 'date', 'dbType' => 'date',
'type' => 'input', 'type' => 'datetime',
'size' => 7, 'size' => 7,
'eval' => 'date,required',
'checkbox' => 0, 'checkbox' => 0,
'default' => '0000-00-00', 'format' => 'date',
'renderType' => 'inputDateTime', 'required' => true,
], ],
], ],
'hotel' => [ 'hotel' => [
@@ -163,9 +151,9 @@ return [
'minitems' => 1, 'minitems' => 1,
'maxitems' => 1, 'maxitems' => 1,
'items' => [ 'items' => [
[ 'Ok', \EP\EpProducts\Domain\Model\Contingent::STATUS_OK ], [ 'label' => 'Ok', 'value' => Contingent::STATUS_OK ],
[ 'Buchungsstop', \EP\EpProducts\Domain\Model\Contingent::STATUS_BLOCKED ], [ 'label' => 'Buchungsstop', 'value' => Contingent::STATUS_BLOCKED ],
[ 'auf Anfrage', \EP\EpProducts\Domain\Model\Contingent::STATUS_ONREQUEST ], [ 'label' => 'auf Anfrage', 'value' => Contingent::STATUS_ONREQUEST ],
] ]
], ],
], ],
@@ -209,9 +197,9 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'groups.ch ID', 'label' => 'groups.ch ID',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'trim,int' 'eval' => 'trim'
], ],
], ],
'room_code' => [ 'room_code' => [
@@ -1,4 +1,8 @@
<?php <?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Domain\Model\AbstractDestination;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_country', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_country',
@@ -7,7 +11,6 @@ return [
'default_sortby' => 'ORDER BY name_internal', 'default_sortby' => 'ORDER BY name_internal',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -41,17 +44,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -61,7 +54,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_country', 'foreign_table' => 'tx_epproducts_domain_model_country',
'foreign_table_where' => 'AND tx_epproducts_domain_model_country.pid=###CURRENT_PID### AND tx_epproducts_domain_model_country.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_country.pid=###CURRENT_PID### AND tx_epproducts_domain_model_country.sys_language_uid IN (-1,0)',
@@ -93,30 +86,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -124,9 +113,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Detailseite', 'label' => 'Detailseite',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'renderType' => 'inputLink',
] ]
], ],
'code' => [ 'code' => [
@@ -135,7 +123,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 2, 'size' => 2,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'name' => [ 'name' => [
@@ -144,7 +133,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'name_internal' => [ 'name_internal' => [
@@ -153,7 +143,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'season' => [ 'season' => [
@@ -163,8 +154,8 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['Winter', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_WINTER], ['label' => 'Winter', 'value' => AbstractDestination::SEASON_WINTER],
['Sommer', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_SUMMER], ['label' => 'Sommer', 'value' => AbstractDestination::SEASON_SUMMER],
], ],
] ]
], ],
@@ -241,31 +232,32 @@ return [
'teaser_images' => [ 'teaser_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Teaserbild(er)', 'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'teaser_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'teaser' => [ 'allowedAspectRatios' => [
'title' => 'Teaser', 'teaser' => [
'value' => 2, 'title' => 'Teaser',
], 'value' => 2,
], ],
], ],
], ],
@@ -273,39 +265,39 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'header_images' => [ 'header_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Headerbild(er)', 'label' => 'Headerbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'header_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'headerLarge' => [ 'allowedAspectRatios' => [
'title' => 'Header', 'headerLarge' => [
'value' => 3.8, 'title' => 'Header',
], 'value' => 3.8,
], ],
], ],
], ],
@@ -313,48 +305,48 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'images' => [ 'images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Galeriebilder', 'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
], ],
'overrideChildTca' => [ 'overrideChildTca' => [
'types' => [ 'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ FileType::IMAGE->value => [
'showitem' => ' 'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Preview', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Preview',
'preview' => [ 'allowedAspectRatios' => [
'title' => 'Standard', 'preview' => [
'value' => 1.8, 'title' => 'Standard',
], 'value' => 1.8,
], ],
], ],
'zoom' => [ ],
'title' => 'Zoom', 'zoom' => [
'allowedAspectRatios' => [ 'title' => 'Zoom',
'free' => [ 'allowedAspectRatios' => [
'title' => 'frei', 'free' => [
'value' => 'NaN', 'title' => 'frei',
], 'value' => 'NaN',
], ],
], ],
], ],
@@ -362,10 +354,9 @@ return [
], ],
], ],
], ],
'maxitems' => 10 ],
], 'maxitems' => 10,
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ],
),
], ],
'latitude' => [ 'latitude' => [
'exclude' => 0, 'exclude' => 0,
@@ -394,7 +385,7 @@ return [
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_officetip', 'foreign_table' => 'tx_epproducts_domain_model_officetip',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -407,7 +398,7 @@ return [
'type' => 'select', 'type' => 'select',
'default' => 0, 'default' => 0,
'items' => [ 'items' => [
['Keine Zuordnung', 0] ['label' => 'Keine Zuordnung', 'value' => 0]
], ],
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_snowreport', 'foreign_table' => 'tx_epproducts_domain_model_snowreport',
@@ -1,12 +1,14 @@
<?php <?php
use EP\EpProducts\Service\LabelService;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'Termin', 'title' => 'Termin',
'label' => 'bus_pro_id', 'label' => 'bus_pro_id',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getDateLabel', 'label_userFunc' => LabelService::class . '->getDateLabel',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => false, 'versioningWS' => false,
'hideTable' => true, 'hideTable' => true,
@@ -36,17 +38,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => false, 'exclude' => false,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -56,7 +48,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_date', 'foreign_table' => 'tx_epproducts_domain_model_date',
'foreign_table_where' => 'AND tx_epproducts_domain_model_date.pid=###CURRENT_PID### AND tx_epproducts_domain_model_date.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_date.pid=###CURRENT_PID### AND tx_epproducts_domain_model_date.sys_language_uid IN (-1,0)',
@@ -88,30 +80,26 @@ return [
'exclude' => false, 'exclude' => false,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => false, 'exclude' => false,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'product' => [ 'product' => [
@@ -235,8 +223,8 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
[ 'Winter', 'w' ], [ 'label' => 'Winter', 'value' => 'w' ],
[ 'Sommer', 's' ], [ 'label' => 'Sommer', 'value' => 's' ],
], ],
'default' => 'w', 'default' => 'w',
], ],
@@ -246,12 +234,10 @@ return [
'label' => 'Datum von', 'label' => 'Datum von',
'config' => [ 'config' => [
'dbType' => 'date', 'dbType' => 'date',
'type' => 'input', 'type' => 'datetime',
'size' => 7, 'size' => 7,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => '0000-00-00', 'format' => 'date',
'renderType' => 'inputDateTime',
], ],
], ],
'date_end' => [ 'date_end' => [
@@ -259,12 +245,10 @@ return [
'label' => 'Datum bis', 'label' => 'Datum bis',
'config' => [ 'config' => [
'dbType' => 'date', 'dbType' => 'date',
'type' => 'input', 'type' => 'datetime',
'size' => 7, 'size' => 7,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => '0000-00-00', 'format' => 'date',
'renderType' => 'inputDateTime',
], ],
], ],
'nights' => [ 'nights' => [
@@ -7,7 +7,6 @@ return [
'default_sortby' => 'ORDER BY label', 'default_sortby' => 'ORDER BY label',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -33,17 +32,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -53,7 +42,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_fact', 'foreign_table' => 'tx_epproducts_domain_model_fact',
'foreign_table_where' => 'AND tx_epproducts_domain_model_fact.pid=###CURRENT_PID### AND tx_epproducts_domain_model_fact.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_fact.pid=###CURRENT_PID### AND tx_epproducts_domain_model_fact.sys_language_uid IN (-1,0)',
@@ -85,30 +74,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -118,7 +103,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'label' => [ 'label' => [
@@ -127,7 +113,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'keywords' => [ 'keywords' => [
@@ -6,7 +6,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -34,17 +33,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -54,7 +43,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_faq', 'foreign_table' => 'tx_epproducts_domain_model_faq',
'foreign_table_where' => 'AND tx_epproducts_domain_model_faq.pid=###CURRENT_PID### AND tx_epproducts_domain_model_faq.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_faq.pid=###CURRENT_PID### AND tx_epproducts_domain_model_faq.sys_language_uid IN (-1,0)',
@@ -86,30 +75,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -120,18 +105,18 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
[ '', '' ], [ 'label' => '', 'value' => '' ],
[ 'Buchung & Reiseablauf', 'Buchung & Reiseablauf' ], [ 'label' => 'Buchung & Reiseablauf', 'value' => 'Buchung & Reiseablauf' ],
[ 'Skipass, Skigebiet & Kurse', 'Skipass, Skigebiet & Kurse' ], [ 'label' => 'Skipass, Skigebiet & Kurse', 'value' => 'Skipass, Skigebiet & Kurse' ],
[ 'Änderungen & Zusatzleistungen', 'Änderungen & Zusatzleistungen' ], [ 'label' => 'Änderungen & Zusatzleistungen', 'value' => 'Änderungen & Zusatzleistungen' ],
[ 'Anreise & Transport', 'Anreise & Transport' ], [ 'label' => 'Anreise & Transport', 'value' => 'Anreise & Transport' ],
[ 'Unterkunft & Sportclubs', 'Unterkunft & Sportclubs' ], [ 'label' => 'Unterkunft & Sportclubs', 'value' => 'Unterkunft & Sportclubs' ],
[ 'Programm & Aktivitäten', 'Programm & Aktivitäten' ], [ 'label' => 'Programm & Aktivitäten', 'value' => 'Programm & Aktivitäten' ],
[ 'Eventreisen', 'Eventreisen' ], [ 'label' => 'Eventreisen', 'value' => 'Eventreisen' ],
[ 'Teilnahmebedingungen', 'Teilnahmebedingungen' ], [ 'label' => 'Teilnahmebedingungen', 'value' => 'Teilnahmebedingungen' ],
[ 'Zahlung & Rechnung', 'Zahlung & Rechnung' ], [ 'label' => 'Zahlung & Rechnung', 'value' => 'Zahlung & Rechnung' ],
[ 'Kontakt & Erreichbarkeit', 'Kontakt & Erreichbarkeit' ], [ 'label' => 'Kontakt & Erreichbarkeit', 'value' => 'Kontakt & Erreichbarkeit' ],
[ 'Stornierung, Reklamation & Versicherung', 'Stornierung, Reklamation & Versicherung' ], [ 'label' => 'Stornierung, Reklamation & Versicherung', 'value' => 'Stornierung, Reklamation & Versicherung' ],
], ],
'default' => '', 'default' => '',
], ],
@@ -142,7 +127,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'question' => [ 'question' => [
@@ -151,7 +137,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'answer' => [ 'answer' => [
@@ -161,8 +148,9 @@ return [
'type' => 'text', 'type' => 'text',
'cols' => 40, 'cols' => 40,
'rows' => 15, 'rows' => 15,
'eval' => 'trim,required', 'eval' => 'trim',
'enableRichtext' => true, 'enableRichtext' => true,
'required' => true,
] ]
], ],
@@ -8,7 +8,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -36,17 +35,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
'default' => -1,
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -56,7 +45,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_groupspriceboard', 'foreign_table' => 'tx_epproducts_domain_model_groupspriceboard',
'foreign_table_where' => 'AND tx_epproducts_domain_model_groupspriceboard.pid=###CURRENT_PID### AND tx_epproducts_domain_model_groupspriceboard.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_groupspriceboard.pid=###CURRENT_PID### AND tx_epproducts_domain_model_groupspriceboard.sys_language_uid IN (-1,0)',
@@ -88,30 +77,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -121,25 +106,26 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 32, 'size' => 32,
'eval' => 'required', 'required' => true,
] ]
], ],
'price' => [ 'price' => [
'exclude' => false, 'exclude' => false,
'label' => 'Preis pro Person/Nacht', 'label' => 'Preis pro Person/Nacht',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'double2,required', 'format' => 'decimal',
'required' => true,
] ]
], ],
'price_chf' => [ 'price_chf' => [
'exclude' => false, 'exclude' => false,
'label' => 'Preis pro Person/Nacht in CHF', 'label' => 'Preis pro Person/Nacht in CHF',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'double2', 'format' => 'decimal',
] ]
], ],
'sorting' => [ 'sorting' => [
@@ -1,13 +1,15 @@
<?php <?php
use EP\EpProducts\Service\LabelService;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'Gruppenhaus Preis', 'title' => 'Gruppenhaus Preis',
'default_sortby' => 'ORDER BY date_from', 'default_sortby' => 'ORDER BY date_from',
'label' => 'date_from', 'label' => 'date_from',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getGroupsPriceConfigLabel', 'label_userFunc' => LabelService::class . '->getGroupsPriceConfigLabel',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -38,17 +40,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
'default' => -1,
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -58,7 +50,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_groupspriceconfig', 'foreign_table' => 'tx_epproducts_domain_model_groupspriceconfig',
'foreign_table_where' => 'AND tx_epproducts_domain_model_groupspriceconfig.pid=###CURRENT_PID### AND tx_epproducts_domain_model_groupspriceconfig.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_groupspriceconfig.pid=###CURRENT_PID### AND tx_epproducts_domain_model_groupspriceconfig.sys_language_uid IN (-1,0)',
@@ -90,30 +82,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -121,65 +109,66 @@ return [
'exclude' => false, 'exclude' => false,
'label' => 'Datum von', 'label' => 'Datum von',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 8, 'size' => 8,
'eval' => 'date,required', 'format' => 'date',
'renderType' => 'inputDateTime', 'required' => true,
] ]
], ],
'date_to' => [ 'date_to' => [
'exclude' => false, 'exclude' => false,
'label' => 'Datum bis', 'label' => 'Datum bis',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 8, 'size' => 8,
'eval' => 'date,required', 'format' => 'date',
'renderType' => 'inputDateTime', 'required' => true,
] ]
], ],
'persons_included' => [ 'persons_included' => [
'exclude' => false, 'exclude' => false,
'label' => 'Inklusiv-Personen', 'label' => 'Inklusiv-Personen',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 4, 'size' => 4,
'eval' => 'int,required', 'required' => true,
] ]
], ],
'price' => [ 'price' => [
'exclude' => false, 'exclude' => false,
'label' => 'Preis pro Nacht', 'label' => 'Preis pro Nacht',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'double2,required', 'format' => 'decimal',
'required' => true,
] ]
], ],
'price_chf' => [ 'price_chf' => [
'exclude' => false, 'exclude' => false,
'label' => 'Preis pro Nacht in CHF', 'label' => 'Preis pro Nacht in CHF',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'double2', 'format' => 'decimal',
] ]
], ],
'price_additional_person' => [ 'price_additional_person' => [
'exclude' => false, 'exclude' => false,
'label' => 'Preis weitere Person', 'label' => 'Preis weitere Person',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'double2', 'format' => 'decimal',
] ]
], ],
'price_additional_person_chf' => [ 'price_additional_person_chf' => [
'exclude' => false, 'exclude' => false,
'label' => 'Preis weitere Person in CHF', 'label' => 'Preis weitere Person in CHF',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'double2', 'format' => 'decimal',
] ]
], ],
], ],
@@ -1,4 +1,7 @@
<?php <?php
use EP\EpProducts\Domain\Model\GroupsPriceOption;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'Gruppenhaus Zusatzleistung', 'title' => 'Gruppenhaus Zusatzleistung',
@@ -8,7 +11,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -37,17 +39,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
'default' => -1,
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -57,7 +49,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_groupspriceoption', 'foreign_table' => 'tx_epproducts_domain_model_groupspriceoption',
'foreign_table_where' => 'AND tx_epproducts_domain_model_groupspriceoption.pid=###CURRENT_PID### AND tx_epproducts_domain_model_groupspriceoption.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_groupspriceoption.pid=###CURRENT_PID### AND tx_epproducts_domain_model_groupspriceoption.sys_language_uid IN (-1,0)',
@@ -89,30 +81,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -122,25 +110,26 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 32, 'size' => 32,
'eval' => 'required', 'required' => true,
] ]
], ],
'price' => [ 'price' => [
'exclude' => false, 'exclude' => false,
'label' => 'Preis', 'label' => 'Preis',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'double2,required', 'format' => 'decimal',
'required' => true,
] ]
], ],
'price_chf' => [ 'price_chf' => [
'exclude' => false, 'exclude' => false,
'label' => 'Preis in CHF', 'label' => 'Preis in CHF',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 8, 'size' => 8,
'eval' => 'double2', 'format' => 'decimal',
] ]
], ],
'type' => [ 'type' => [
@@ -150,12 +139,12 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['pauschal', \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_GLOBAL], ['label' => 'pauschal', 'value' => GroupsPriceOption::TYPE_GLOBAL],
['pro Person', \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_PER_PAX], ['label' => 'pro Person', 'value' => GroupsPriceOption::TYPE_PER_PAX],
['pro Nacht', \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_PER_NIGHT], ['label' => 'pro Nacht', 'value' => GroupsPriceOption::TYPE_PER_NIGHT],
['pro Person und Nacht', \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_PER_PAX_AND_NIGHT], ['label' => 'pro Person und Nacht', 'value' => GroupsPriceOption::TYPE_PER_PAX_AND_NIGHT],
], ],
'default' => \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_GLOBAL, 'default' => GroupsPriceOption::TYPE_GLOBAL,
] ]
], ],
'ignore_with_board' => [ 'ignore_with_board' => [
@@ -1,14 +1,18 @@
<?php <?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Service\LabelService;
use EP\EpProducts\Domain\Model\Hotel;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_hotel', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_hotel',
'default_sortby' => 'ORDER BY name', 'default_sortby' => 'ORDER BY name',
'label' => 'name', 'label' => 'name',
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getHotelLabel', 'label_userFunc' => LabelService::class . '->getHotelLabel',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -50,17 +54,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -70,7 +64,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_hotel', 'foreign_table' => 'tx_epproducts_domain_model_hotel',
'foreign_table_where' => 'AND tx_epproducts_domain_model_hotel.pid=###CURRENT_PID### AND tx_epproducts_domain_model_hotel.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_hotel.pid=###CURRENT_PID### AND tx_epproducts_domain_model_hotel.sys_language_uid IN (-1,0)',
@@ -102,30 +96,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -161,9 +151,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Detailseite', 'label' => 'Detailseite',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'renderType' => 'inputLink',
] ]
], ],
'name' => [ 'name' => [
@@ -173,7 +162,8 @@ return [
'type' => 'text', 'type' => 'text',
'cols' => 30, 'cols' => 30,
'rows' => 2, 'rows' => 2,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'short_name' => [ 'short_name' => [
@@ -280,31 +270,32 @@ return [
'teaser_images' => [ 'teaser_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Teaserbild(er)', 'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'teaser_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'teaser' => [ 'allowedAspectRatios' => [
'title' => 'Teaser', 'teaser' => [
'value' => 2, 'title' => 'Teaser',
], 'value' => 2,
], ],
], ],
], ],
@@ -312,39 +303,39 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'header_images' => [ 'header_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Headerbild(er)', 'label' => 'Headerbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'header_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'headerLarge' => [ 'allowedAspectRatios' => [
'title' => 'Header', 'headerLarge' => [
'value' => 3.8, 'title' => 'Header',
], 'value' => 3.8,
], ],
], ],
], ],
@@ -352,48 +343,48 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'images' => [ 'images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Galeriebilder', 'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Preview', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Preview',
'preview' => [ 'allowedAspectRatios' => [
'title' => 'Standard', 'preview' => [
'value' => 1.8, 'title' => 'Standard',
], 'value' => 1.8,
], ],
], ],
'zoom' => [ ],
'title' => 'Zoom', 'zoom' => [
'allowedAspectRatios' => [ 'title' => 'Zoom',
'free' => [ 'allowedAspectRatios' => [
'title' => 'frei', 'free' => [
'value' => 'NaN', 'title' => 'frei',
], 'value' => 'NaN',
], ],
], ],
], ],
@@ -401,33 +392,32 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'reseller_images' => [ 'reseller_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Bilder für Vertriebspartner', 'label' => 'Bilder für Vertriebspartner',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'reseller_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'code' => [ 'code' => [
'exclude' => 0, 'exclude' => 0,
@@ -442,10 +432,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Externer Link (Google MyBusiness)', 'label' => 'Externer Link (Google MyBusiness)',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'eval' => 'trim',
'renderType' => 'inputLink',
], ],
], ],
'type' => [ 'type' => [
@@ -455,12 +443,12 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['Unbestimmt', 0], ['label' => 'Unbestimmt', 'value' => 0],
['Ferienwohnung', \EP\EpProducts\Domain\Model\Hotel::TYPE_HOLIDAY_FLAT], ['label' => 'Ferienwohnung', 'value' => Hotel::TYPE_HOLIDAY_FLAT],
['Sportclub', \EP\EpProducts\Domain\Model\Hotel::TYPE_SPORTS_CLUB], ['label' => 'Sportclub', 'value' => Hotel::TYPE_SPORTS_CLUB],
['Apartment', \EP\EpProducts\Domain\Model\Hotel::TYPE_APPARTMENT], ['label' => 'Apartment', 'value' => Hotel::TYPE_APPARTMENT],
['Gästehaus', \EP\EpProducts\Domain\Model\Hotel::TYPE_GUESTHOUSE], ['label' => 'Gästehaus', 'value' => Hotel::TYPE_GUESTHOUSE],
['Pension', \EP\EpProducts\Domain\Model\Hotel::TYPE_PENSION], ['label' => 'Pension', 'value' => Hotel::TYPE_PENSION],
], ],
'size' => 1, 'size' => 1,
'minItems' => 1, 'minItems' => 1,
@@ -474,12 +462,12 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['Unbestimmt', 0], ['label' => 'Unbestimmt', 'value' => 0],
['Standard', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_STANDARD], ['label' => 'Standard', 'value' => Hotel::CATEGORY_STANDARD],
['Basic', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_BASIC], ['label' => 'Basic', 'value' => Hotel::CATEGORY_BASIC],
['Komfort', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_COMFORT], ['label' => 'Komfort', 'value' => Hotel::CATEGORY_COMFORT],
['Deluxe', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_DELUXE], ['label' => 'Deluxe', 'value' => Hotel::CATEGORY_DELUXE],
['Super Deluxe', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_SUPER_DELUXE], ['label' => 'Super Deluxe', 'value' => Hotel::CATEGORY_SUPER_DELUXE],
], ],
'size' => 1, 'size' => 1,
'minItems' => 1, 'minItems' => 1,
@@ -733,9 +721,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Altersgrenze Jugendliche (6-X Jahre)', 'label' => 'Altersgrenze Jugendliche (6-X Jahre)',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 50, 'size' => 50,
'eval' => 'int',
], ],
], ],
'main_season_from' => [ 'main_season_from' => [
@@ -743,12 +730,10 @@ return [
'label' => 'Hauptsaison von', 'label' => 'Hauptsaison von',
'config' => [ 'config' => [
'dbType' => 'date', 'dbType' => 'date',
'type' => 'input', 'type' => 'datetime',
'size' => 7, 'size' => 7,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => '0000-00-00', 'format' => 'date',
'renderType' => 'inputDateTime',
], ],
], ],
'main_season_to' => [ 'main_season_to' => [
@@ -756,30 +741,26 @@ return [
'label' => 'Hauptsaison bis', 'label' => 'Hauptsaison bis',
'config' => [ 'config' => [
'dbType' => 'date', 'dbType' => 'date',
'type' => 'input', 'type' => 'datetime',
'size' => 7, 'size' => 7,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => '0000-00-00', 'format' => 'date',
'renderType' => 'inputDateTime',
], ],
], ],
'beds_count' => [ 'beds_count' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Anzahl Betten', 'label' => 'Anzahl Betten',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 50, 'size' => 50,
'eval' => 'int',
], ],
], ],
'parking_count' => [ 'parking_count' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Anzahl Parkplätze', 'label' => 'Anzahl Parkplätze',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 50, 'size' => 50,
'eval' => 'int',
], ],
], ],
'altitude' => [ 'altitude' => [
@@ -5,7 +5,6 @@ return [
'label' => 'product', 'label' => 'product',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -32,17 +31,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
'default' => 0,
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -52,7 +41,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_hotel_mapping', 'foreign_table' => 'tx_epproducts_domain_model_hotel_mapping',
'foreign_table_where' => 'AND tx_epproducts_domain_model_hotel_mapping.pid=###CURRENT_PID### AND tx_epproducts_domain_model_hotel_mapping.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_hotel_mapping.pid=###CURRENT_PID### AND tx_epproducts_domain_model_hotel_mapping.sys_language_uid IN (-1,0)',
@@ -84,30 +73,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'product' => [ 'product' => [
@@ -127,9 +112,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Detailseite', 'label' => 'Detailseite',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'renderType' => 'inputLink',
] ]
], ],
'hotel' => [ 'hotel' => [
@@ -7,7 +7,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -35,17 +34,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
'default' => 0,
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -55,7 +44,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_infobox', 'foreign_table' => 'tx_epproducts_domain_model_infobox',
'foreign_table_where' => 'AND tx_epproducts_domain_model_infobox.pid=###CURRENT_PID### AND tx_epproducts_domain_model_infobox.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_infobox.pid=###CURRENT_PID### AND tx_epproducts_domain_model_infobox.sys_language_uid IN (-1,0)',
@@ -87,30 +76,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -120,7 +105,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'text' => [ 'text' => [
@@ -130,8 +116,9 @@ return [
'type' => 'text', 'type' => 'text',
'cols' => 40, 'cols' => 40,
'rows' => 15, 'rows' => 15,
'eval' => 'trim,required', 'eval' => 'trim',
'enableRichtext' => true, 'enableRichtext' => true,
'required' => true,
] ]
], ],
'default_text' => [ 'default_text' => [
@@ -1,4 +1,7 @@
<?php <?php
use TYPO3\CMS\Core\Resource\FileType;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_journey', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_journey',
@@ -7,7 +10,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -32,17 +34,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -52,7 +44,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_journey', 'foreign_table' => 'tx_epproducts_domain_model_journey',
'foreign_table_where' => 'AND tx_epproducts_domain_model_journey.pid=###CURRENT_PID### AND tx_epproducts_domain_model_journey.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_journey.pid=###CURRENT_PID### AND tx_epproducts_domain_model_journey.sys_language_uid IN (-1,0)',
@@ -84,30 +76,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -117,7 +105,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'by_car' => [ 'by_car' => [
@@ -145,26 +134,26 @@ return [
'image' => [ 'image' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Bild', 'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'image', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
], ],
'maxitems' => 1,
'minitems' => 0,
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 1,
), 'minitems' => 0,
],
], ],
], ],
]; ];
@@ -6,7 +6,6 @@ return [
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => false, 'versioningWS' => false,
'hideTable' => true, 'hideTable' => true,
@@ -33,17 +32,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -53,7 +42,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_matchcode', 'foreign_table' => 'tx_epproducts_domain_model_matchcode',
'foreign_table_where' => 'AND tx_epproducts_domain_model_matchcode.pid=###CURRENT_PID### AND tx_epproducts_domain_model_matchcode.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_matchcode.pid=###CURRENT_PID### AND tx_epproducts_domain_model_matchcode.sys_language_uid IN (-1,0)',
@@ -85,30 +74,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -118,7 +103,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'entity_type' => [ 'entity_type' => [
@@ -129,8 +115,8 @@ return [
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
[ [
'Hotel', 'label' => 'Hotel',
'hotel', 'value' => 'hotel',
], ],
], ],
], ],
@@ -1,13 +1,15 @@
<?php <?php
use EP\EpProducts\Service\LabelService;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_officetip', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_officetip',
'label' => 'label', 'label' => 'label',
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getOfficetipLabel', 'label_userFunc' => LabelService::class . '->getOfficetipLabel',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -33,17 +35,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -53,7 +45,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_officetip', 'foreign_table' => 'tx_epproducts_domain_model_officetip',
'foreign_table_where' => 'AND tx_epproducts_domain_model_officetip.pid=###CURRENT_PID### AND tx_epproducts_domain_model_officetip.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_officetip.pid=###CURRENT_PID### AND tx_epproducts_domain_model_officetip.sys_language_uid IN (-1,0)',
@@ -85,30 +77,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -118,7 +106,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'text' => [ 'text' => [
@@ -128,7 +117,8 @@ return [
'type' => 'text', 'type' => 'text',
'cols' => 40, 'cols' => 40,
'rows' => 15, 'rows' => 15,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
] ]
], ],
'author' => [ 'author' => [
@@ -1,14 +1,18 @@
<?php <?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Service\LabelService;
use EP\EpProducts\UserFunc\TcaProcFunc;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_product', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_product',
'label' => 'name_internal', 'label' => 'name_internal',
'prependAtCopy' => '[COPY %s]', 'prependAtCopy' => '[COPY %s]',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getProductLabel', 'label_userFunc' => LabelService::class . '->getProductLabel',
'default_sortby' => 'ORDER BY name_internal', 'default_sortby' => 'ORDER BY name_internal',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -53,17 +57,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -73,7 +67,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_product', 'foreign_table' => 'tx_epproducts_domain_model_product',
'foreign_table_where' => 'AND tx_epproducts_domain_model_product.pid=###CURRENT_PID### AND tx_epproducts_domain_model_product.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_product.pid=###CURRENT_PID### AND tx_epproducts_domain_model_product.sys_language_uid IN (-1,0)',
@@ -105,30 +99,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -182,8 +172,8 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
[ 'Winter', 'w' ], [ 'label' => 'Winter', 'value' => 'w' ],
[ 'Sommer', 's' ], [ 'label' => 'Sommer', 'value' => 's' ],
], ],
'default' => 'w', 'default' => 'w',
], ],
@@ -211,7 +201,8 @@ return [
'type' => 'text', 'type' => 'text',
'cols' => 30, 'cols' => 30,
'rows' => 2, 'rows' => 2,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'name_internal' => [ 'name_internal' => [
@@ -220,7 +211,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'subline' => [ 'subline' => [
@@ -391,18 +383,17 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Durchschnittliche Bewertung', 'label' => 'Durchschnittliche Bewertung',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 5, 'size' => 5,
'eval' => 'double2' 'format' => 'decimal'
], ],
], ],
'rating_votes_count' => [ 'rating_votes_count' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Abgebene Stimmen', 'label' => 'Abgebene Stimmen',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 10, 'size' => 10
'eval' => 'int'
], ],
], ],
'testimonials' => [ 'testimonials' => [
@@ -419,31 +410,32 @@ return [
'teaser_images' => [ 'teaser_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Teaserbild(er)', 'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'teaser_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'teaser' => [ 'allowedAspectRatios' => [
'title' => 'Teaser', 'teaser' => [
'value' => 2, 'title' => 'Teaser',
], 'value' => 2,
], ],
], ],
], ],
@@ -451,39 +443,39 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'header_images' => [ 'header_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Headerbild(er)', 'label' => 'Headerbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'header_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'headerLarge' => [ 'allowedAspectRatios' => [
'title' => 'Header', 'headerLarge' => [
'value' => 3.805, 'title' => 'Header',
], 'value' => 3.805,
], ],
], ],
], ],
@@ -491,39 +483,39 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'images' => [ 'images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Galeriebilder', 'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Slider', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Slider',
'preview' => [ 'allowedAspectRatios' => [
'title' => 'Standard', 'preview' => [
'value' => 1.625, 'title' => 'Standard',
], 'value' => 1.625,
], ],
], ],
], ],
@@ -531,92 +523,92 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'reseller_images' => [ 'reseller_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Bilder für Vertriebspartner', 'label' => 'Bilder für Vertriebspartner',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'reseller_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'facebook' => [ 'cropVariants' => [
'title' => 'Facebook', 'facebook' => [
'allowedAspectRatios' => [ 'title' => 'Facebook',
'ad' => [ 'allowedAspectRatios' => [
'title' => 'Single product ad', 'ad' => [
'value' => 1.91, 'title' => 'Single product ad',
], 'value' => 1.91,
'carousel' => [ ],
'title' => 'Carousel', 'carousel' => [
'value' => 1, 'title' => 'Carousel',
], 'value' => 1,
] ],
], ]
'google' => [ ],
'title' => 'Google', 'google' => [
'allowedAspectRatios' => [ 'title' => 'Google',
'catalog' => [ 'allowedAspectRatios' => [
'title' => 'Catalog', 'catalog' => [
'value' => 1, 'title' => 'Catalog',
], 'value' => 1,
] ],
], ]
], ],
], ],
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'tour_thumbnail' => [ 'tour_thumbnail' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Thumbnail Rundgang', 'label' => 'Thumbnail Rundgang',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'tour_thumbnail', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Preview', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Preview',
'preview' => [ 'allowedAspectRatios' => [
'title' => 'Standard', 'preview' => [
'value' => 1.8, 'title' => 'Standard',
], 'value' => 1.8,
], ],
], ],
], ],
@@ -624,10 +616,9 @@ return [
], ],
], ],
], ],
'maxitems' => 1,
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 1,
), ],
], ],
'concept' => [ 'concept' => [
'exclude' => 0, 'exclude' => 0,
@@ -691,7 +682,7 @@ return [
'foreign_table' => 'tx_epproducts_domain_model_journey', 'foreign_table' => 'tx_epproducts_domain_model_journey',
'foreign_table_where' => 'AND 1=1 ORDER BY name', 'foreign_table_where' => 'AND 1=1 ORDER BY name',
'items' => [ 'items' => [
['Keine Zuordnung', 0] ['label' => 'Keine Zuordnung', 'value' => 0]
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -748,7 +739,7 @@ return [
'foreign_table' => 'tx_epproducts_domain_model_hotel', 'foreign_table' => 'tx_epproducts_domain_model_hotel',
'foreign_table_where' => 'AND 1=1 ORDER BY tx_epproducts_domain_model_hotel.name', 'foreign_table_where' => 'AND 1=1 ORDER BY tx_epproducts_domain_model_hotel.name',
'items' => [ 'items' => [
[ 'Kein Kalender', 0 ], [ 'label' => 'Kein Kalender', 'value' => 0 ],
], ],
], ],
], ],
@@ -761,7 +752,7 @@ return [
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_officetip', 'foreign_table' => 'tx_epproducts_domain_model_officetip',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -802,7 +793,7 @@ return [
'foreign_table' => 'tx_epproducts_domain_model_product', 'foreign_table' => 'tx_epproducts_domain_model_product',
'foreign_table_where' => 'AND tx_epproducts_domain_model_product.uid != ###THIS_UID### ORDER BY tx_epproducts_domain_model_product.name_internal', 'foreign_table_where' => 'AND tx_epproducts_domain_model_product.uid != ###THIS_UID### ORDER BY tx_epproducts_domain_model_product.name_internal',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -829,25 +820,25 @@ return [
'banner' => [ 'banner' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Banner für Sidebar', 'label' => 'Banner für Sidebar',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'banner', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
], ],
'maxitems' => 1
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 1,
), ],
], ],
'additional_regions' => [ 'additional_regions' => [
'exclude' => 0, 'exclude' => 0,
@@ -874,7 +865,7 @@ return [
'foreign_table' => 'tx_epproducts_domain_model_badge', 'foreign_table' => 'tx_epproducts_domain_model_badge',
'foreign_table_where' => 'AND tx_epproducts_domain_model_badge.deleted = 0 ORDER BY tx_epproducts_domain_model_badge.title', 'foreign_table_where' => 'AND tx_epproducts_domain_model_badge.deleted = 0 ORDER BY tx_epproducts_domain_model_badge.title',
'items' => [ 'items' => [
['Keine Auswahl', 0], ['label' => 'Keine Auswahl', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -890,7 +881,7 @@ return [
'foreign_table' => 'tx_epproducts_domain_model_infobox', 'foreign_table' => 'tx_epproducts_domain_model_infobox',
'foreign_table_where' => 'AND tx_epproducts_domain_model_infobox.deleted = 0 ORDER BY tx_epproducts_domain_model_infobox.title', 'foreign_table_where' => 'AND tx_epproducts_domain_model_infobox.deleted = 0 ORDER BY tx_epproducts_domain_model_infobox.title',
'items' => [ 'items' => [
['Standardtext', 0], ['label' => 'Standardtext', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -908,10 +899,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'URL 360° Rundgang (matterport)', 'label' => 'URL 360° Rundgang (matterport)',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'eval' => 'trim',
'renderType' => 'inputLink',
], ],
], ],
'path_segment' => [ 'path_segment' => [
@@ -936,15 +925,14 @@ return [
'config' => [ 'config' => [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectMultipleSideBySide', 'renderType' => 'selectMultipleSideBySide',
'itemsProcFunc' => \EP\EpProducts\UserFunc\TcaProcFunc::class.'->getDateItemsForProduct', 'itemsProcFunc' => TcaProcFunc::class.'->getDateItemsForProduct',
] ]
], ],
'min_price' => [ 'min_price' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Ab-Preis', 'label' => 'Ab-Preis',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number'
'eval' => 'int'
], ],
] ]
], ],
@@ -1,4 +1,8 @@
<?php <?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Domain\Model\AbstractDestination;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_region', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_region',
@@ -7,7 +11,6 @@ return [
'default_sortby' => 'ORDER BY name_internal', 'default_sortby' => 'ORDER BY name_internal',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -44,17 +47,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -64,7 +57,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_region', 'foreign_table' => 'tx_epproducts_domain_model_region',
'foreign_table_where' => 'AND tx_epproducts_domain_model_region.pid=###CURRENT_PID### AND tx_epproducts_domain_model_region.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_region.pid=###CURRENT_PID### AND tx_epproducts_domain_model_region.sys_language_uid IN (-1,0)',
@@ -96,30 +89,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -127,9 +116,8 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Detailseite', 'label' => 'Detailseite',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 30, 'size' => 30,
'renderType' => 'inputLink',
] ]
], ],
'exclude_from_teasergroups' => [ 'exclude_from_teasergroups' => [
@@ -145,7 +133,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'name_internal' => [ 'name_internal' => [
@@ -154,7 +143,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'season' => [ 'season' => [
@@ -164,8 +154,8 @@ return [
'type' => 'select', 'type' => 'select',
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['Winter', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_WINTER], ['label' => 'Winter', 'value' => AbstractDestination::SEASON_WINTER],
['Sommer', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_SUMMER], ['label' => 'Sommer', 'value' => AbstractDestination::SEASON_SUMMER],
], ],
] ]
], ],
@@ -311,31 +301,32 @@ return [
'teaser_images' => [ 'teaser_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Teaserbild(er)', 'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'teaser_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'teaser' => [ 'allowedAspectRatios' => [
'title' => 'Teaser', 'teaser' => [
'value' => 2, 'title' => 'Teaser',
], 'value' => 2,
], ],
], ],
], ],
@@ -343,39 +334,39 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'header_images' => [ 'header_images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Headerbild(er)', 'label' => 'Headerbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'header_images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Alle Geräte', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Alle Geräte',
'headerLarge' => [ 'allowedAspectRatios' => [
'title' => 'Header', 'headerLarge' => [
'value' => 3.8, 'title' => 'Header',
], 'value' => 3.8,
], ],
], ],
], ],
@@ -383,48 +374,48 @@ return [
], ],
], ],
], ],
'maxitems' => 10
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 10,
), ],
], ],
'images' => [ 'images' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Galeriebilder', 'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'images', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
], ],
'overrideChildTca' => [ 'overrideChildTca' => [
'types' => [ 'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ FileType::IMAGE->value => [
'showitem' => ' 'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
'columns' => [ ],
'crop' => [ 'columns' => [
'config' => [ 'crop' => [
'cropVariants' => [ 'config' => [
'default' => [ 'cropVariants' => [
'title' => 'Preview', 'default' => [
'allowedAspectRatios' => [ 'title' => 'Preview',
'preview' => [ 'allowedAspectRatios' => [
'title' => 'Standard', 'preview' => [
'value' => 1.8, 'title' => 'Standard',
], 'value' => 1.8,
], ],
], ],
'zoom' => [ ],
'title' => 'Zoom', 'zoom' => [
'allowedAspectRatios' => [ 'title' => 'Zoom',
'free' => [ 'allowedAspectRatios' => [
'title' => 'frei', 'free' => [
'value' => 'NaN', 'title' => 'frei',
], 'value' => 'NaN',
], ],
], ],
], ],
@@ -432,33 +423,32 @@ return [
], ],
], ],
], ],
'maxitems' => 10 ],
], 'maxitems' => 10,
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ],
),
], ],
'region_maps' => [ 'region_maps' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Gebietskarten', 'label' => 'Gebietskarten',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'region_maps', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
], ],
'overrideChildTca' => [ 'overrideChildTca' => [
'types' => [ 'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ FileType::IMAGE->value => [
'showitem' => ' 'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
], ],
'maxitems' => 5 ],
], 'maxitems' => 5,
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] ],
),
], ],
'latitude' => [ 'latitude' => [
'exclude' => 0, 'exclude' => 0,
@@ -523,7 +513,7 @@ return [
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_officetip', 'foreign_table' => 'tx_epproducts_domain_model_officetip',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -537,7 +527,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['Keine Zuordnung', 0] ['label' => 'Keine Zuordnung', 'value' => 0]
], ],
'foreign_table' => 'tx_epproducts_domain_model_snowreport', 'foreign_table' => 'tx_epproducts_domain_model_snowreport',
'foreign_table_where' => 'ORDER BY tx_epproducts_domain_model_snowreport.region_name', 'foreign_table_where' => 'ORDER BY tx_epproducts_domain_model_snowreport.region_name',
@@ -552,7 +542,7 @@ return [
'type' => 'select', 'type' => 'select',
'default' => 0, 'default' => 0,
'items' => [ 'items' => [
['Keine Zuordnung', 0] ['label' => 'Keine Zuordnung', 'value' => 0]
], ],
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_webcam', 'foreign_table' => 'tx_epproducts_domain_model_webcam',
@@ -565,34 +555,32 @@ return [
'award_image' => [ 'award_image' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Bild', 'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'award_image', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
], ],
'maxitems' => 1
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 1,
), ],
], ],
'award_link' => [ 'award_link' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Link', 'label' => 'Link',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'link',
'size' => 32, 'size' => 32,
'eval' => 'trim',
'renderType' => 'inputLink',
] ]
], ],
'award_label' => [ 'award_label' => [
@@ -7,7 +7,6 @@ return [
'default_sortby' => 'ORDER BY name', 'default_sortby' => 'ORDER BY name',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -31,17 +30,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -51,7 +40,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_reseller', 'foreign_table' => 'tx_epproducts_domain_model_reseller',
'foreign_table_where' => 'AND tx_epproducts_domain_model_reseller.pid=###CURRENT_PID### AND tx_epproducts_domain_model_reseller.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_reseller.pid=###CURRENT_PID### AND tx_epproducts_domain_model_reseller.sys_language_uid IN (-1,0)',
@@ -83,30 +72,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
@@ -116,7 +101,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'code' => [ 'code' => [
@@ -125,7 +111,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'pa_code' => [ 'pa_code' => [
@@ -7,7 +7,6 @@ return [
'default_sortby' => 'ORDER BY region_name', 'default_sortby' => 'ORDER BY region_name',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -34,17 +33,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -54,7 +43,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_snowreport', 'foreign_table' => 'tx_epproducts_domain_model_snowreport',
'foreign_table_where' => 'AND tx_epproducts_domain_model_snowreport.pid=###CURRENT_PID### AND tx_epproducts_domain_model_snowreport.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_snowreport.pid=###CURRENT_PID### AND tx_epproducts_domain_model_snowreport.sys_language_uid IN (-1,0)',
@@ -86,30 +75,27 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime', 'format' => 'date',
], ],
], ],
@@ -124,7 +110,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'region_name' => [ 'region_name' => [
@@ -133,7 +120,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'glacier' => [ 'glacier' => [
@@ -147,18 +135,16 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Höhe max.', 'label' => 'Höhe max.',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 30, 'size' => 30
'eval' => 'int'
], ],
], ],
'height_min' => [ 'height_min' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Höhe min.', 'label' => 'Höhe min.',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 30, 'size' => 30
'eval' => 'int'
], ],
], ],
'opened' => [ 'opened' => [
@@ -172,18 +158,16 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Schneehöhe Berg', 'label' => 'Schneehöhe Berg',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 30, 'size' => 30
'eval' => 'int'
], ],
], ],
'snow_level_valley' => [ 'snow_level_valley' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Schneehöhe Tal', 'label' => 'Schneehöhe Tal',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 30, 'size' => 30
'eval' => 'int'
], ],
], ],
'snow_quality' => [ 'snow_quality' => [
@@ -199,48 +183,44 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Letzter Schneefall', 'label' => 'Letzter Schneefall',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'range' => [ 'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y')) 'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
], ],
'renderType' => 'inputDateTime', 'format' => 'date',
], ],
], ],
'lifts_total' => [ 'lifts_total' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Lifte gesamt', 'label' => 'Lifte gesamt',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 30, 'size' => 30
'eval' => 'int'
], ],
], ],
'lifts_opened' => [ 'lifts_opened' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Lifte geöffnet', 'label' => 'Lifte geöffnet',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'number',
'size' => 30, 'size' => 30
'eval' => 'int'
], ],
], ],
'last_update' => [ 'last_update' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Letzte Aktualisierung', 'label' => 'Letzte Aktualisierung',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'range' => [ 'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y')) 'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
], ],
'renderType' => 'inputDateTime', 'format' => 'date',
], ],
], ],
'webcams' => [ 'webcams' => [
@@ -256,30 +236,28 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'Saison Anfang', 'label' => 'Saison Anfang',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'range' => [ 'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y')) 'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
], ],
'renderType' => 'inputDateTime', 'format' => 'date',
], ],
], ],
'season_end' => [ 'season_end' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Saison Ende', 'label' => 'Saison Ende',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'range' => [ 'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y')) 'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
], ],
'renderType' => 'inputDateTime', 'format' => 'date',
], ],
], ],
], ],
@@ -1,5 +1,7 @@
<?php <?php
use TYPO3\CMS\Core\Resource\FileType;
return [ return [
'ctrl' => [ 'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_teammember', 'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_teammember',
@@ -9,7 +11,6 @@ return [
'sortby' => 'sorting', 'sortby' => 'sorting',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -38,17 +39,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -58,7 +49,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_teammember', 'foreign_table' => 'tx_epproducts_domain_model_teammember',
'foreign_table_where' => 'AND tx_epproducts_domain_model_teammember.pid=###CURRENT_PID### AND tx_epproducts_domain_model_teammember.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_teammember.pid=###CURRENT_PID### AND tx_epproducts_domain_model_teammember.sys_language_uid IN (-1,0)',
@@ -90,30 +81,26 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'sorting' => [ 'sorting' => [
@@ -128,7 +115,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'path_segment' => [ 'path_segment' => [
@@ -153,7 +141,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'phone' => [ 'phone' => [
@@ -189,26 +178,26 @@ return [
'image' => [ 'image' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'Bild', 'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig( 'config' => [
'image', // TODO: Important! Verify that the fieldname value in foreign table either matches the column name
[ // or is set properly in the following TCA, see https://docs.typo3.org/permalink/t3tca:confval-inline-foreign-match-fields
'appearance' => [ 'type' => 'file',
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference' 'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
], 'appearance' => [
'overrideChildTca' => [ 'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
'types' => [ ],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [ 'overrideChildTca' => [
'showitem' => ' 'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette, --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette', --palette--;;filePalette',
],
], ],
], ],
'maxitems' => 1,
'minitems' => 1,
], ],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'] 'maxitems' => 1,
), 'minitems' => 1,
],
], ],
], ],
]; ];
@@ -7,7 +7,6 @@ return [
'default_sortby' => 'ORDER BY name', 'default_sortby' => 'ORDER BY name',
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true, 'dividers2tabs' => true,
'versioningWS' => true, 'versioningWS' => true,
'languageField' => 'sys_language_uid', 'languageField' => 'sys_language_uid',
@@ -32,17 +31,7 @@ return [
'sys_language_uid' => [ 'sys_language_uid' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [ 'config' => ['type' => 'language'],
'type' => 'select',
'default' => 0,
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
],
], ],
'l10n_parent' => [ 'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0', 'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -52,7 +41,7 @@ return [
'default' => 0, 'default' => 0,
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'items' => [ 'items' => [
['', 0], ['label' => '', 'value' => 0],
], ],
'foreign_table' => 'tx_epproducts_domain_model_webcam', 'foreign_table' => 'tx_epproducts_domain_model_webcam',
'foreign_table_where' => 'AND tx_epproducts_domain_model_webcam.pid=###CURRENT_PID### AND tx_epproducts_domain_model_webcam.sys_language_uid IN (-1,0)', 'foreign_table_where' => 'AND tx_epproducts_domain_model_webcam.pid=###CURRENT_PID### AND tx_epproducts_domain_model_webcam.sys_language_uid IN (-1,0)',
@@ -84,30 +73,27 @@ return [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'datetime',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime',
], ],
], ],
'endtime' => [ 'endtime' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 13, 'size' => 13,
'eval' => 'date',
'checkbox' => 0, 'checkbox' => 0,
'default' => 0, 'default' => 0,
'behaviour' => [ 'behaviour' => [
'allowLanguageSynchronization' => true, 'allowLanguageSynchronization' => true,
], ],
'renderType' => 'inputDateTime', 'format' => 'date',
], ],
], ],
@@ -122,7 +108,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'url' => [ 'url' => [
@@ -131,7 +118,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'vendor_uid' => [ 'vendor_uid' => [
@@ -140,7 +128,8 @@ return [
'config' => [ 'config' => [
'type' => 'input', 'type' => 'input',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'available' => [ 'available' => [
@@ -6,63 +6,63 @@
plugin.tx_epproducts { plugin.tx_epproducts {
settings { settings {
# cat=epproducts/100/100; type=string; label=Products storage PID # cat=epproducts/100/100; type=string; label=Products storage PID
productsStoragePid = productsStoragePid =
# cat=epproducts/100/110; type=string; label=Hotels storage PID # cat=epproducts/100/110; type=string; label=Hotels storage PID
hotelsStoragePid = hotelsStoragePid =
# cat=epproducts/100/120; type=string; label=Concepts storage PID # cat=epproducts/100/120; type=string; label=Concepts storage PID
conceptsStoragePid = conceptsStoragePid =
# cat=epproducts/100/130; type=string; label=Facts storage PID # cat=epproducts/100/130; type=string; label=Facts storage PID
factsStoragePid = factsStoragePid =
# cat=epproducts/100/140; type=string; label=Faqs storage PID # cat=epproducts/100/140; type=string; label=Faqs storage PID
faqsStoragePid = faqsStoragePid =
# cat=epproducts/100/150; type=string; label=Destinations storage PID # cat=epproducts/100/150; type=string; label=Destinations storage PID
destinationsStoragePid = destinationsStoragePid =
# cat=epproducts/100/160; type=string; label=Regions storage PID # cat=epproducts/100/160; type=string; label=Regions storage PID
regionsStoragePid = regionsStoragePid =
# cat=epproducts/100/160; type=string; label=Cities storage PID # cat=epproducts/100/160; type=string; label=Cities storage PID
citiesStoragePid = citiesStoragePid =
# cat=epproducts/100/170; type=string; label=Teammember storage PID # cat=epproducts/100/170; type=string; label=Teammember storage PID
teammemberStoragePid = teammemberStoragePid =
# cat=epproducts/100/180; type=string; label=Officetip storage PID # cat=epproducts/100/180; type=string; label=Officetip storage PID
officetipStoragePid = officetipStoragePid =
# cat=epproducts/100/190; type=string; label=Snow report storage PID # cat=epproducts/100/190; type=string; label=Snow report storage PID
snowReportStoragePid = snowReportStoragePid =
# cat=epproducts/110/100; type=string; label=Default search page UID # cat=epproducts/110/100; type=string; label=Default search page UID
defaultSearchPageUid = defaultSearchPageUid =
# cat=epproducts/110/110; type=string; label=Default product detail page UID # cat=epproducts/110/110; type=string; label=Default product detail page UID
defaultDetailPageUid = defaultDetailPageUid =
# cat=epproducts/110/120; type=string; label=Page UID with reseller export plugin # cat=epproducts/110/120; type=string; label=Page UID with reseller export plugin
resellerExportPageUid = resellerExportPageUid =
# cat=epproducts/110/130; type=string; label=Page UID with travel info plugin # cat=epproducts/110/130; type=string; label=Page UID with travel info plugin
travelInfoPageUid = travelInfoPageUid =
# cat=epproducts/120/100; type=string; label=Exclude products with concept UIDs from search result (CSV) # cat=epproducts/120/100; type=string; label=Exclude products with concept UIDs from search result (CSV)
excludedConceptUids = excludedConceptUids =
# cat=epproducts/120/110; type=string; label=Exclude regions with these UIDs from filter options (CSV) # cat=epproducts/120/110; type=string; label=Exclude regions with these UIDs from filter options (CSV)
excludedRegionUids = excludedRegionUids =
# cat=epproducts/120/120; type=string; label=Force concept UID in all search related parts (CSV) # cat=epproducts/120/120; type=string; label=Force concept UID in all search related parts (CSV)
forcedConceptUids = forcedConceptUids =
# cat=epproducts/120/130; type=string; label=Don't show availability info for products with these concept UIDs # cat=epproducts/120/130; type=string; label=Don't show availability info for products with these concept UIDs
noInfoConceptUids = noInfoConceptUids =
# cat=epproducts/130/110; type=string; label=Email recipient for groups price inquiries # cat=epproducts/130/110; type=string; label=Email recipient for groups price inquiries
groupsPriceToEmail = [email protected] groupsPriceToEmail = [email protected]
# cat=epproducts/130/120; type=string; label=Email recipient for groups price inquiries # cat=epproducts/130/120; type=string; label=Email recipient for groups price inquiries
groupsPriceToName = EP Reisen groupsPriceToName = EP Reisen
# cat=epproducts/130/130; type=string; label=Email recipient for groups price inquiries # cat=epproducts/130/130; type=string; label=Email recipient for groups price inquiries
groupsBookingUrl = https://myep.ddev.site/groups/booking/init groupsBookingUrl = https://myep.ddev.site/groups/booking/init
# cat=epproducts/140/100; type=string; label=Room types for pricetables (CSV) # cat=epproducts/140/100; type=string; label=Room types for pricetables (CSV)
priceTableRoomTypes = 1,2,3,4,5,6,7,8,9,10 priceTableRoomTypes = 1,2,3,4,5,6,7,8,9,10
# cat=epproducts/140/110; type=string; label=Ignore following IPs in searchlog # cat=epproducts/140/110; type=string; label=Ignore following IPs in searchlog
searchLogIgnoreIps = searchLogIgnoreIps =
# cat=epproducts/140/120; type=string; label=Concept UIDs to trigger inquiry form on product detail page (CSV) # cat=epproducts/140/120; type=string; label=Concept UIDs to trigger inquiry form on product detail page (CSV)
groupInquiryFormConceptUids = groupInquiryFormConceptUids =
# cat=epproducts/140/130; type=string; label=Per-site MyE&P booking URL override # cat=epproducts/140/130; type=string; label=Per-site MyE&P booking URL override
myEpUrl = myEpUrl =
# cat=epproducts/140/140; type=string; label=Per-site MyE&P staging booking URL override # cat=epproducts/140/140; type=string; label=Per-site MyE&P staging booking URL override
myEpStagingUrl = myEpStagingUrl =
} }
persistence { persistence {
# cat=epproducts/100/100; type=string; label=Default storage PID # cat=epproducts/100/100; type=string; label=Default storage PID
storagePid = storagePid =
} }
} }
@@ -61,9 +61,9 @@ plugin.tx_epproducts {
dataProtectionPageUid = {$plugin.tx_eptheme.settings.dataProtectionPageUid} dataProtectionPageUid = {$plugin.tx_eptheme.settings.dataProtectionPageUid}
datePickerPresets { datePickerPresets {
1 { 1 {
label = Silvester label = Silvester
dateFrom = 2017-12-25 dateFrom = 2017-12-25
dateTo = 2018-01-06 dateTo = 2018-01-06
} }
2 { 2 {
label = Karneval label = Karneval
@@ -1,68 +1,68 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xliff version="1.0"> <xliff version="1.0">
<file source-language="de" datatype="plaintext" original="messages" date="2016-05-04T20:49:43Z" product-name="ep_products"> <file source-language="de" datatype="plaintext" original="messages" date="2016-05-04T20:49:43Z" product-name="ep_products">
<header/> <header/>
<body> <body>
<trans-unit id="tx_epproducts_domain_model_date"> <trans-unit id="tx_epproducts_domain_model_date">
<source>Termin</source> <source>Termin</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_product"> <trans-unit id="tx_epproducts_domain_model_product">
<source>Produkt</source> <source>Produkt</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_concept"> <trans-unit id="tx_epproducts_domain_model_concept">
<source>Konzept</source> <source>Konzept</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_country"> <trans-unit id="tx_epproducts_domain_model_country">
<source>Land</source> <source>Land</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_region"> <trans-unit id="tx_epproducts_domain_model_region">
<source>Gebiet</source> <source>Gebiet</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_city"> <trans-unit id="tx_epproducts_domain_model_city">
<source>Stadt/Ort</source> <source>Stadt/Ort</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_fact"> <trans-unit id="tx_epproducts_domain_model_fact">
<source>Fact</source> <source>Fact</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_hotel"> <trans-unit id="tx_epproducts_domain_model_hotel">
<source>Hotel</source> <source>Hotel</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_faq"> <trans-unit id="tx_epproducts_domain_model_faq">
<source>Faq</source> <source>Faq</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_matchcode"> <trans-unit id="tx_epproducts_domain_model_matchcode">
<source>Code</source> <source>Code</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_officetip"> <trans-unit id="tx_epproducts_domain_model_officetip">
<source>Office-Tipp</source> <source>Office-Tipp</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_teammember"> <trans-unit id="tx_epproducts_domain_model_teammember">
<source>Mitarbeiter/Teamer</source> <source>Mitarbeiter/Teamer</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_journey"> <trans-unit id="tx_epproducts_domain_model_journey">
<source>Anreise</source> <source>Anreise</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_snowreport"> <trans-unit id="tx_epproducts_domain_model_snowreport">
<source>Schneereport</source> <source>Schneereport</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_webcam"> <trans-unit id="tx_epproducts_domain_model_webcam">
<source>Webcam</source> <source>Webcam</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_contingent"> <trans-unit id="tx_epproducts_domain_model_contingent">
<source>Kontingent</source> <source>Kontingent</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_badge"> <trans-unit id="tx_epproducts_domain_model_badge">
<source>Badge</source> <source>Badge</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_staticsearchparams"> <trans-unit id="tx_epproducts_domain_model_staticsearchparams">
<source>Statisches Suchergebnis</source> <source>Statisches Suchergebnis</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_reseller"> <trans-unit id="tx_epproducts_domain_model_reseller">
<source>Vertriebspartner</source> <source>Vertriebspartner</source>
</trans-unit> </trans-unit>
<trans-unit id="tx_epproducts_domain_model_infobox"> <trans-unit id="tx_epproducts_domain_model_infobox">
<source>Infobox</source> <source>Infobox</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>
-4
View File
@@ -7,10 +7,6 @@ $EM_CONF[$_EXTKEY] = [
'author' => 'Björn Fromme', 'author' => 'Björn Fromme',
'author_email' => '[email protected]', 'author_email' => '[email protected]',
'state' => 'stable', 'state' => 'stable',
'internal' => '',
'uploadfolder' => '1',
'createDirs' => '',
'clearCacheOnLoad' => 0,
'version' => '1.0.0', 'version' => '1.0.0',
'constraints' => [ 'constraints' => [
'depends' => [], 'depends' => [],
+27 -26
View File
@@ -1,5 +1,13 @@
<?php <?php
defined('TYPO3_MODE') or die('Access denied.'); use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
use EP\EpProducts\Controller\ProductController;
use EP\EpProducts\Controller\AjaxTableController;
use EP\EpProducts\Controller\AjaxTeaserPopupController;
use EP\EpProducts\Routing\Aspect\PassthroughMapper;
use TYPO3\CMS\Core\Log\LogLevel;
use EP\EpProducts\Log\Writer;
defined('TYPO3') or die('Access denied.');
$boot = function () { $boot = function () {
if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['ep_products_cache'])) { if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['ep_products_cache'])) {
@@ -15,47 +23,40 @@ $boot = function () {
// Client-side callers pass these parameters in POST bodies, which cHash never inspects. // Client-side callers pass these parameters in POST bodies, which cHash never inspects.
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['requireCacheHashPresenceParameters'][] = '^tx_epproducts_ajax'; $GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['requireCacheHashPresenceParameters'][] = '^tx_epproducts_ajax';
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class); ExtensionUtility::configurePlugin(
$iconRegistry->registerIcon( 'EpProducts',
'ep-logo',
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
['source' => 'EXT:ep_products/Resources/Public/Icons/logo.svg']
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.ep_products',
'product_detail', 'product_detail',
[ [
'Product' => 'detail,hotelList', ProductController::class => 'detail,hotelList',
] ]
); );
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( ExtensionUtility::configurePlugin(
'EP.ep_products', 'EpProducts',
'product_teasergroup', 'product_teasergroup',
[ [
'Product' => 'teasergroup', ProductController::class => 'teasergroup',
] ]
); );
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( ExtensionUtility::configurePlugin(
'EP.ep_products', 'EpProducts',
'product_pricetable', 'product_pricetable',
[ [
'Product' => 'pricetable', ProductController::class => 'pricetable',
] ]
); );
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( ExtensionUtility::configurePlugin(
'EP.ep_products', 'EpProducts',
'ajax', 'ajax',
[ [
'AjaxTable' => 'datestable,pricetable,pricetableHtml,eventPricetable,daytripRooms', AjaxTableController::class => 'datestable,pricetable,pricetableHtml,eventPricetable,daytripRooms',
'AjaxTeaserPopup' => 'concept', AjaxTeaserPopupController::class => 'concept',
], ],
[ [
'AjaxTable' => 'datestable,pricetable,pricetableHtml,eventPricetable,daytripRooms', AjaxTableController::class => 'datestable,pricetable,pricetableHtml,eventPricetable,daytripRooms',
'AjaxTeaserPopup' => 'concept', AjaxTeaserPopupController::class => 'concept',
] ]
); );
@@ -74,11 +75,11 @@ $boot = function () {
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'f'; $GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'f';
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['PassthroughMapper'] = $GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['PassthroughMapper'] =
\EP\EpProducts\Routing\Aspect\PassthroughMapper::class; PassthroughMapper::class;
$GLOBALS['TYPO3_CONF_VARS']['LOG']['EP']['EpProducts']['Controller']['writerConfiguration'] = [ $GLOBALS['TYPO3_CONF_VARS']['LOG']['EP']['EpProducts']['Controller']['writerConfiguration'] = [
\TYPO3\CMS\Core\Log\LogLevel::INFO => [ LogLevel::INFO => [
\EP\EpProducts\Log\Writer::class => [ Writer::class => [
'logTable' => 'tx_epproducts_log' 'logTable' => 'tx_epproducts_log'
], ],
], ],
@@ -19,9 +19,7 @@ class ProductRatingProcessor implements DataProcessorInterface
$qb = $this->getDbConnection()->createQueryBuilder(); $qb = $this->getDbConnection()->createQueryBuilder();
$result = $qb $result = $qb
->selectLiteral('SUM(product.rating_votes_count) as totalCount', 'SUM(product.rating_average) as totalAverage') ->selectLiteral('SUM(product.rating_votes_count) as totalCount', 'SUM(product.rating_average) as totalAverage')->from('tx_epproducts_domain_model_product', 'product')->executeQuery()
->from('tx_epproducts_domain_model_product', 'product')
->execute()
->fetchAssociative() ->fetchAssociative()
; ;
@@ -30,9 +28,7 @@ class ProductRatingProcessor implements DataProcessorInterface
$result = $qb $result = $qb
->selectLiteral('COUNT(*) as ratedCount') ->selectLiteral('COUNT(*) as ratedCount')
->from('tx_epproducts_domain_model_product', 'product') ->from('tx_epproducts_domain_model_product', 'product')->where($qb->expr()->gt('product.rating_average', 0))->executeQuery()
->where($qb->expr()->gt('product.rating_average', 0))
->execute()
->fetchAssociative() ->fetchAssociative()
; ;
@@ -101,7 +101,7 @@ class SliderProcessor implements DataProcessorInterface
*/ */
protected function getParentPageWithSlides() protected function getParentPageWithSlides()
{ {
$rootlineUtility = new RootlineUtility($GLOBALS['TSFE']->id); $rootlineUtility = new RootlineUtility($GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId());
$rootline = $rootlineUtility->get(); $rootline = $rootlineUtility->get();
foreach ($rootline as $parentPage) { foreach ($rootline as $parentPage) {
@@ -26,8 +26,10 @@ namespace EP\EpTheme\DataProcessing;
* *
* This copyright notice MUST APPEAR in all copies of the script! * This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/ ***************************************************************/
use EP\EpProducts\Domain\Model\City;
use EP\EpProducts\Domain\Model\FilterSettings; use EP\EpProducts\Domain\Model\Region;
use EP\EpProducts\Domain\Model\Country;
use EP\EpProducts\Domain\Model\Concept;
use EP\EpProducts\Domain\Repository\CityRepository; use EP\EpProducts\Domain\Repository\CityRepository;
use EP\EpProducts\Domain\Repository\ConceptRepository; use EP\EpProducts\Domain\Repository\ConceptRepository;
use EP\EpProducts\Domain\Repository\CountryRepository; use EP\EpProducts\Domain\Repository\CountryRepository;
@@ -60,37 +62,37 @@ class TeaserProcessor implements DataProcessorInterface
$objectManager = GeneralUtility::makeInstance(ObjectManager::class); $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
if ((int) $processedData['data']['tx_eptheme_context_city'] > 0) { if ((int) $processedData['data']['tx_eptheme_context_city'] > 0) {
/** @var \EP\EpProducts\Domain\Repository\CityRepository $repository */ /** @var CityRepository $repository */
$repository = $objectManager->get(CityRepository::class); $repository = $objectManager->get(CityRepository::class);
/** @var \EP\EpProducts\Domain\Model\City $city */ /** @var City $city */
$city = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_city']); $city = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_city']);
$processedData['city'] = $city; $processedData['city'] = $city;
} }
if ((int) $processedData['data']['tx_eptheme_context_region'] > 0) { if ((int) $processedData['data']['tx_eptheme_context_region'] > 0) {
/** @var \EP\EpProducts\Domain\Repository\RegionRepository $repository */ /** @var RegionRepository $repository */
$repository = $objectManager->get(RegionRepository::class); $repository = $objectManager->get(RegionRepository::class);
/** @var \EP\EpProducts\Domain\Model\Region $region */ /** @var Region $region */
$region = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_region']); $region = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_region']);
$processedData['region'] = $region; $processedData['region'] = $region;
} }
if ((int) $processedData['data']['tx_eptheme_context_country'] > 0) { if ((int) $processedData['data']['tx_eptheme_context_country'] > 0) {
/** @var \EP\EpProducts\Domain\Repository\CountryRepository $repository */ /** @var CountryRepository $repository */
$repository = $objectManager->get(CountryRepository::class); $repository = $objectManager->get(CountryRepository::class);
/** @var \EP\EpProducts\Domain\Model\Country $country */ /** @var Country $country */
$country = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_country']); $country = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_country']);
$processedData['country'] = $country; $processedData['country'] = $country;
} }
if ((int) $processedData['data']['tx_eptheme_context_hotel'] > 0) { if ((int) $processedData['data']['tx_eptheme_context_hotel'] > 0) {
/** @var \EP\EpProducts\Service\HotelDataService $service */ /** @var HotelDataService $service */
$service = $objectManager->get(HotelDataService::class); $service = $objectManager->get(HotelDataService::class);
/** @var array $hotel */ /** @var array $hotel */
$hotel = $service->getTeaser($processedData['data']['tx_eptheme_context_hotel']); $hotel = $service->getTeaser($processedData['data']['tx_eptheme_context_hotel']);
$processedData['hotel'] = $hotel; $processedData['hotel'] = $hotel;
} }
if ((int) $processedData['data']['tx_eptheme_context_concept'] > 0) { if ((int) $processedData['data']['tx_eptheme_context_concept'] > 0) {
/** @var \EP\EpProducts\Domain\Repository\ConceptRepository $repository */ /** @var ConceptRepository $repository */
$repository = $objectManager->get(ConceptRepository::class); $repository = $objectManager->get(ConceptRepository::class);
/** @var \EP\EpProducts\Domain\Model\Concept $concept */ /** @var Concept $concept */
$concept = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_concept']); $concept = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_concept']);
$processedData['concept'] = $concept; $processedData['concept'] = $concept;
} }
@@ -116,13 +118,13 @@ class TeaserProcessor implements DataProcessorInterface
$filterSettings['dateTo'] = $dateTo->format('Y-m-d'); $filterSettings['dateTo'] = $dateTo->format('Y-m-d');
} }
/** @var \EP\EpProducts\Service\ProductDataService $productDataService */ /** @var ProductDataService $productDataService */
$productDataService = $objectManager->get(ProductDataService::class); $productDataService = $objectManager->get(ProductDataService::class);
$processedData['teaser'] = $productDataService->getTeaser($filterSettings); $processedData['teaser'] = $productDataService->getTeaser($filterSettings);
$processedData['teaser']['forceHotelUid'] = $hotelUid; $processedData['teaser']['forceHotelUid'] = $hotelUid;
} }
$processedData['referringPageUid'] = $GLOBALS['TSFE']->id; $processedData['referringPageUid'] = $GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId();
return $processedData; return $processedData;
} }
@@ -9,12 +9,12 @@ class Page extends AbstractEntity
/** /**
* @var int * @var int
*/ */
protected $uid; protected ?int $uid = null;
/** /**
* @var int * @var int
*/ */
protected $pid; protected ?int $pid = null;
/** /**
* @var bool * @var bool
@@ -55,7 +55,7 @@ class OpenGraphMetaTagManager extends \TYPO3\CMS\Seo\MetaTag\OpenGraphMetaTagMan
*/ */
protected function getPageWithImage() protected function getPageWithImage()
{ {
$rootLineUtility = new RootlineUtility($GLOBALS['TSFE']->id); $rootLineUtility = new RootlineUtility($GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId());
$rootLine = $rootLineUtility->get(); $rootLine = $rootLineUtility->get();
foreach ($rootLine as $page) { foreach ($rootLine as $page) {
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class ContainerViewHelper extends AbstractViewHelper class ContainerViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
/** /**
* @var int[] * @var int[]
*/ */
@@ -70,48 +67,36 @@ class ContainerViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return mixed * @return mixed
*/ */
public static function renderStatic( public function render()
array $arguments, {
\Closure $renderChildrenClosure, $content = $this->renderChildren();
RenderingContextInterface $renderingContext
) {
$content = $renderChildrenClosure();
if ($content === null) { if ($content === null) {
$content = $arguments['content']; $content = $this->arguments['content'];
} }
$classes = []; $classes = [];
if (\in_array($arguments['data']['colPos'], static::$columnsWithoutContainers, false)) { if (\in_array($this->arguments['data']['colPos'], static::$columnsWithoutContainers, false)) {
$classes[] = 'container'; $classes[] = 'container';
} }
if ($this->arguments['cssClasses'] !== null) {
if ($arguments['cssClasses'] !== null) { $classes[] = $this->arguments['cssClasses'];
$classes[] = $arguments['cssClasses'];
} }
if (!empty($this->arguments['data']['space_before_class'])) {
if (!empty($arguments['data']['space_before_class'])) { $scaleTop = static::$scale[$this->arguments['data']['space_before_class']];
$scaleTop = static::$scale[$arguments['data']['space_before_class']];
$classes[] = sprintf('pt-%d', $scaleTop); $classes[] = sprintf('pt-%d', $scaleTop);
} }
if (!empty($this->arguments['data']['space_after_class'])) {
if (!empty($arguments['data']['space_after_class'])) { $scaleBottom = static::$scale[$this->arguments['data']['space_after_class']];
$scaleBottom = static::$scale[$arguments['data']['space_after_class']];
$classes[] = sprintf('pb-%d', $scaleBottom); $classes[] = sprintf('pb-%d', $scaleBottom);
} }
if ('default' !== $this->arguments['data']['frame_class']) {
if ('default' !== $arguments['data']['frame_class']) { $classes[] = $this->arguments['data']['frame_class'];
$classes[] = $arguments['data']['frame_class'];
} }
if (count($classes) > 0) { if (count($classes) > 0) {
return sprintf('<div class="%s"%s>%s</div>', implode(' ', $classes), $arguments['rteContent'] ? ' data-rte-content' : '', $content); return sprintf('<div class="%s"%s>%s</div>', implode(' ', $classes), $this->arguments['rteContent'] ? ' data-rte-content' : '', $content);
} }
if ($this->arguments['rteContent']) {
if ($arguments['rteContent']) {
return sprintf('<div data-rte-content>%s</div>', $content); return sprintf('<div data-rte-content>%s</div>', $content);
} }
return $content; return $content;
} }
} }
@@ -30,12 +30,9 @@ namespace EP\EpTheme\ViewHelpers;
use EP\EpProducts\Service\FilterSettingsEncoder; use EP\EpProducts\Service\FilterSettingsEncoder;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class FilterSettingsEncoderViewHelper extends AbstractViewHelper class FilterSettingsEncoderViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
/** /**
* @var bool * @var bool
*/ */
@@ -54,22 +51,16 @@ class FilterSettingsEncoderViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return mixed * @return mixed
*/ */
public static function renderStatic( public function render()
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
{ {
$argument = $renderChildrenClosure(); $argument = $this->renderChildren();
if ($argument === null) { if ($argument === null) {
$argument = $arguments['argument']; $argument = $this->arguments['argument'];
} }
if ($argument === null) { if ($argument === null) {
return ''; return '';
} }
$encoder = new FilterSettingsEncoder(); $encoder = new FilterSettingsEncoder();
return $encoder->encode($argument); return $encoder->encode($argument);
} }
} }
@@ -31,12 +31,9 @@ use EP\EpProducts\Domain\Model\Hotel;
use EP\EpProducts\Domain\Model\Region; use EP\EpProducts\Domain\Model\Region;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class GmapsUrlViewHelper extends AbstractViewHelper class GmapsUrlViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
/** /**
* @var bool * @var bool
*/ */
@@ -60,14 +57,10 @@ class GmapsUrlViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return mixed * @return mixed
*/ */
public static function renderStatic( public function render()
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
{ {
$hotel = $arguments['hotel']; $hotel = $this->arguments['hotel'];
$region = $arguments['region']; $region = $this->arguments['region'];
if ($hotel !== null && $hotel->getLatitude() && $hotel->getLongitude()) { if ($hotel !== null && $hotel->getLatitude() && $hotel->getLongitude()) {
$source = $hotel; $source = $hotel;
} elseif ($hotel !== null && $hotel->getRegion()->getLatitude() && $hotel->getRegion()->getLongitude()) { } elseif ($hotel !== null && $hotel->getRegion()->getLatitude() && $hotel->getRegion()->getLongitude()) {
@@ -77,7 +70,7 @@ class GmapsUrlViewHelper extends AbstractViewHelper
} else { } else {
return 'http://www.google.de/maps'; return 'http://www.google.de/maps';
} }
return sprintf(static::URLBASE, $source->getLatitude(), $source->getLongitude(), $arguments['type'], $arguments['zoom']); return sprintf(static::URLBASE, $source->getLatitude(), $source->getLongitude(), $this->arguments['type'], $this->arguments['zoom']);
} }
} }
@@ -16,8 +16,6 @@ class IconViewHelper extends AbstractTagBasedViewHelper
public function initializeArguments() public function initializeArguments()
{ {
parent::initializeArguments(); parent::initializeArguments();
$this->registerUniversalTagAttributes();
$this->registerArgument('icon', 'string', 'Icon name', true); $this->registerArgument('icon', 'string', 'Icon name', true);
} }
@@ -6,23 +6,17 @@ use EP\EpProducts\Service\MyEpUrlResolverService;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class MyEpUrlViewHelper extends AbstractViewHelper class MyEpUrlViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
/** /**
* @param array $arguments * @param array $arguments
* @param \Closure $renderChildrenClosure * @param \Closure $renderChildrenClosure
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return string * @return string
*/ */
public static function renderStatic( public function render(): string
array $arguments, {
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
): string {
return GeneralUtility::makeInstance(MyEpUrlResolverService::class)->resolve(); return GeneralUtility::makeInstance(MyEpUrlResolverService::class)->resolve();
} }
} }
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class NightsOptionsViewHelper extends AbstractViewHelper class NightsOptionsViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
public function initializeArguments() public function initializeArguments()
{ {
parent::initializeArguments(); parent::initializeArguments();
@@ -49,16 +46,12 @@ class NightsOptionsViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return mixed * @return mixed
*/ */
public static function renderStatic( public function render()
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
{ {
if ($arguments['daytrip']) { if ($this->arguments['daytrip']) {
return 'Tageweise buchbar'; return 'Tageweise buchbar';
} }
$options = $arguments['options']; $options = $this->arguments['options'];
if ($options === null) { if ($options === null) {
return ''; return '';
} }
@@ -74,7 +67,6 @@ class NightsOptionsViewHelper extends AbstractViewHelper
$output = $lastOption; $output = $lastOption;
} }
$output .= (int) $lastOption > 1 ? ' Nächte' : ' Nacht'; $output .= (int) $lastOption > 1 ? ' Nächte' : ' Nacht';
return $output; return $output;
} }
@@ -30,12 +30,9 @@ namespace EP\EpTheme\ViewHelpers;
use EP\EpProducts\Domain\Model\Product; use EP\EpProducts\Domain\Model\Product;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class RatingViewHelper extends AbstractViewHelper class RatingViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
/** /**
* @var bool * @var bool
*/ */
@@ -54,22 +51,17 @@ class RatingViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return mixed * @return mixed
*/ */
public static function renderStatic( public function render()
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
{ {
$product = $renderChildrenClosure(); $product = $this->renderChildren();
if ($product === null) { if ($product === null) {
$product = $arguments['product']; $product = $this->arguments['product'];
} }
$ratingAverage = $product->getRatingAverage(); $ratingAverage = $product->getRatingAverage();
$ratingVotesCount = $product->getRatingVotesCount(); $ratingVotesCount = $product->getRatingVotesCount();
$fullStars = floor($ratingAverage); $fullStars = floor($ratingAverage);
$halfStar = ($ratingAverage - $fullStars) > 0; $halfStar = ($ratingAverage - $fullStars) > 0;
$ratingAverageLabel = number_format($ratingAverage, 1, ',', '.'); $ratingAverageLabel = number_format($ratingAverage, 1, ',', '.');
$content = ''; $content = '';
for ($i = 1; $i <= $fullStars; $i++) for ($i = 1; $i <= $fullStars; $i++)
{ {
@@ -79,7 +71,6 @@ class RatingViewHelper extends AbstractViewHelper
$content .= '<i class="fa fa-star-half-o" aria-hidden="true"></i>'; $content .= '<i class="fa fa-star-half-o" aria-hidden="true"></i>';
} }
$content .= sprintf('%s Sterne (%d)', $ratingAverageLabel, $ratingVotesCount); $content .= sprintf('%s Sterne (%d)', $ratingAverageLabel, $ratingVotesCount);
return $content; return $content;
} }
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class ThemeClassesViewHelper extends AbstractViewHelper class ThemeClassesViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
public function initializeArguments() public function initializeArguments()
{ {
parent::initializeArguments(); parent::initializeArguments();
@@ -49,18 +46,12 @@ class ThemeClassesViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return mixed * @return mixed
*/ */
public static function renderStatic( public function render()
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
{ {
$themeKey = $arguments['key']; $themeKey = $this->arguments['key'];
if (!array_key_exists($themeKey, $this->arguments['classes'])) {
if (!array_key_exists($themeKey, $arguments['classes'])) {
return ''; return '';
} }
return $this->arguments['classes'][$themeKey];
return $arguments['classes'][$themeKey];
} }
} }
@@ -70,7 +70,7 @@ class AjaxViewHelper extends ActionViewHelper
// Use root page uid as target unless provided // Use root page uid as target unless provided
if ($arguments['pageUid'] === null) { if ($arguments['pageUid'] === null) {
$rootlineUtility = new RootlineUtility($GLOBALS['TSFE']->id); $rootlineUtility = new RootlineUtility($GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId());
$rootline = $rootlineUtility->get(); $rootline = $rootlineUtility->get();
$rootPage = array_pop($rootline); $rootPage = array_pop($rootline);
$arguments['pageUid'] = $rootPage['uid']; $arguments['pageUid'] = $rootPage['uid'];
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers\Uri;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class ProductViewHelper extends AbstractViewHelper class ProductViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
public function initializeArguments() public function initializeArguments()
{ {
parent::initializeArguments(); parent::initializeArguments();
@@ -53,25 +50,21 @@ class ProductViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return mixed * @return mixed
*/ */
public static function renderStatic( public function render()
array $arguments, {
\Closure $renderChildrenClosure, $product = $this->arguments['product'];
RenderingContextInterface $renderingContext $hotel = $this->arguments['hotel'];
) { if ($this->arguments['forceHotelUid']) {
$product = $arguments['product'];
$hotel = $arguments['hotel'];
if ($arguments['forceHotelUid']) {
// Product detail page with forced hotel // Product detail page with forced hotel
$linkArguments = [ $linkArguments = [
'product' => is_array($product) ? $product['uid'] : $product, 'product' => is_array($product) ? $product['uid'] : $product,
'hotel' => is_array($hotel) ? $hotel['uid'] : $hotel, 'hotel' => is_array($hotel) ? $hotel['uid'] : $hotel,
]; ];
} elseif ($arguments['dateFrom'] || $arguments['dateTo']) { } elseif ($this->arguments['dateFrom'] || $this->arguments['dateTo']) {
// Product detail page with forced date range // Product detail page with forced date range
$linkArguments = [ $linkArguments = [
'dateFrom' => $arguments['dateFrom'], 'dateFrom' => $this->arguments['dateFrom'],
'dateTo' => $arguments['dateTo'], 'dateTo' => $this->arguments['dateTo'],
]; ];
} else { } else {
// Default product detail page by product uid // Default product detail page by product uid
@@ -79,24 +72,20 @@ class ProductViewHelper extends AbstractViewHelper
'product' => is_array($product) ? $product['uid'] : $product, 'product' => is_array($product) ? $product['uid'] : $product,
]; ];
} }
$targetPageUid = is_array($product) ? (int)$product['detailPage'] : $product->getDetailPage(); $targetPageUid = is_array($product) ? (int)$product['detailPage'] : $product->getDetailPage();
$uri = $this->renderingContext
$uri = $renderingContext
->getControllerContext() ->getControllerContext()
->getUriBuilder() ->getUriBuilder()
->reset() ->reset()
->setTargetPageUid($targetPageUid) ->setTargetPageUid($targetPageUid)
->uriFor('detail', $linkArguments, 'Product', 'epproducts', 'product_detail') ->uriFor('detail', $linkArguments, 'Product', 'epproducts', 'product_detail')
; ;
if ($this->arguments['ref']) {
if ($arguments['ref']) { $referringPageUri = urlencode($this->arguments['ref']);
$referringPageUri = urlencode($arguments['ref']);
$hasQuery = null !== parse_url($uri, PHP_URL_QUERY); $hasQuery = null !== parse_url($uri, PHP_URL_QUERY);
$separator = $hasQuery ? '&' : '?'; $separator = $hasQuery ? '&' : '?';
$uri .= $separator . 'ref=' . $referringPageUri; $uri .= $separator . 'ref=' . $referringPageUri;
} }
return $uri; return $uri;
} }
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers\Uri;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class VideoViewHelper extends AbstractViewHelper class VideoViewHelper extends AbstractViewHelper
{ {
use CompileWithRenderStatic;
/** /**
* @var bool * @var bool
*/ */
@@ -54,21 +51,16 @@ class VideoViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext * @param RenderingContextInterface $renderingContext
* @return mixed * @return mixed
*/ */
public static function renderStatic( public function render()
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
{ {
// YouTube // YouTube
if ((int) $arguments['layout'] === 0) { if ((int) $this->arguments['layout'] === 0) {
return $arguments['value'] . '?rel=0&amp;controls=0&amp;showinfo=0'; return $this->arguments['value'] . '?rel=0&amp;controls=0&amp;showinfo=0';
} }
// Vimeo // Vimeo
if ((int) $arguments['layout'] === 1) { if ((int) $this->arguments['layout'] === 1) {
return sprintf('https://player.vimeo.com/video/%d?html5=1', $arguments['value']); return sprintf('https://player.vimeo.com/video/%d?html5=1', $this->arguments['value']);
} }
return ''; return '';
} }
@@ -2,8 +2,10 @@
declare(strict_types = 1); declare(strict_types = 1);
use EP\EpTheme\Domain\Model\Page;
return [ return [
\EP\EpTheme\Domain\Model\Page::class => [ Page::class => [
'tableName' => 'pages', 'tableName' => 'pages',
], ],
]; ];
@@ -1,6 +1,8 @@
<?php <?php
defined('TYPO3_MODE') or die(); use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function() { call_user_func(function() {
@@ -29,7 +31,7 @@ call_user_func(function() {
'foreign_table' => 'tx_epproducts_domain_model_country', 'foreign_table' => 'tx_epproducts_domain_model_country',
'foreign_table_where' => 'ORDER BY name', 'foreign_table_where' => 'ORDER BY name',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -45,7 +47,7 @@ call_user_func(function() {
'foreign_table' => 'tx_epproducts_domain_model_region', 'foreign_table' => 'tx_epproducts_domain_model_region',
'foreign_table_where' => 'ORDER BY name', 'foreign_table_where' => 'ORDER BY name',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -113,7 +115,7 @@ call_user_func(function() {
'foreign_table' => 'tx_epproducts_domain_model_badge', 'foreign_table' => 'tx_epproducts_domain_model_badge',
'foreign_table_where' => 'ORDER BY title', 'foreign_table_where' => 'ORDER BY title',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'minitems' => 0, 'minitems' => 0,
'maxitems' => 1, 'maxitems' => 1,
@@ -121,12 +123,12 @@ call_user_func(function() {
], ],
]; ];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns( ExtensionManagementUtility::addTCAcolumns(
'pages', 'pages',
$temporaryColumns $temporaryColumns
); );
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes( ExtensionManagementUtility::addToAllTCAtypes(
'pages', 'pages',
'--div--;Kontext, '--div--;Kontext,
tx_eptheme_context_pacode,tx_eptheme_context_country,tx_eptheme_context_region, tx_eptheme_context_pacode,tx_eptheme_context_country,tx_eptheme_context_region,
@@ -138,7 +140,7 @@ call_user_func(function() {
'1,4' '1,4'
); );
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile( ExtensionManagementUtility::registerPageTSConfigFile(
'ep_theme', 'ep_theme',
'Configuration/TSconfig/Page/Main.tsconfig', 'Configuration/TSconfig/Page/Main.tsconfig',
'EP Theme' 'EP Theme'
@@ -1,5 +1,7 @@
<?php <?php
if (!defined('TYPO3_MODE')) die ('Access denied.'); use TYPO3\CMS\Core\Utility\ArrayUtility;
if (!defined('TYPO3')) die ('Access denied.');
$tca = [ $tca = [
'ctrl' => [ 'ctrl' => [
@@ -7,4 +9,4 @@ $tca = [
], ],
]; ];
\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($GLOBALS['TCA']['sys_file'], $tca); ArrayUtility::mergeRecursiveWithOverrule($GLOBALS['TCA']['sys_file'], $tca);
@@ -1,10 +1,12 @@
<?php <?php
defined('TYPO3_MODE') or die(); use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function () { call_user_func(function () {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile( ExtensionManagementUtility::addStaticFile(
'ep_theme', 'ep_theme',
'Configuration/TypoScript', 'Configuration/TypoScript',
'EP Theme' 'EP Theme'
@@ -1,6 +1,8 @@
<?php <?php
defined('TYPO3_MODE') or die(); use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function () { call_user_func(function () {
@@ -12,7 +14,8 @@ call_user_func(function () {
'type' => 'input', 'type' => 'input',
'default' => 'Details', 'default' => 'Details',
'size' => 30, 'size' => 30,
'eval' => 'trim,required' 'eval' => 'trim',
'required' => true
], ],
], ],
'tx_eptheme_context_country' => [ 'tx_eptheme_context_country' => [
@@ -24,7 +27,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_country', 'foreign_table' => 'tx_epproducts_domain_model_country',
'foreign_table_where' => 'ORDER BY name ASC', 'foreign_table_where' => 'ORDER BY name ASC',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'default' => 0, 'default' => 0,
'minitems' => 0, 'minitems' => 0,
@@ -40,7 +43,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_region', 'foreign_table' => 'tx_epproducts_domain_model_region',
'foreign_table_where' => 'ORDER BY name ASC', 'foreign_table_where' => 'ORDER BY name ASC',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'default' => 0, 'default' => 0,
'minitems' => 0, 'minitems' => 0,
@@ -56,7 +59,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_city', 'foreign_table' => 'tx_epproducts_domain_model_city',
'foreign_table_where' => 'ORDER BY name ASC', 'foreign_table_where' => 'ORDER BY name ASC',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'default' => 0, 'default' => 0,
'minitems' => 0, 'minitems' => 0,
@@ -72,7 +75,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_hotel', 'foreign_table' => 'tx_epproducts_domain_model_hotel',
'foreign_table_where' => 'ORDER BY name ASC', 'foreign_table_where' => 'ORDER BY name ASC',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'default' => 0, 'default' => 0,
'minitems' => 0, 'minitems' => 0,
@@ -88,7 +91,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_concept', 'foreign_table' => 'tx_epproducts_domain_model_concept',
'foreign_table_where' => 'ORDER BY name ASC', 'foreign_table_where' => 'ORDER BY name ASC',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'default' => 0, 'default' => 0,
'minitems' => 0, 'minitems' => 0,
@@ -104,7 +107,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_product', 'foreign_table' => 'tx_epproducts_domain_model_product',
'foreign_table_where' => 'ORDER BY name_internal, name ASC', 'foreign_table_where' => 'ORDER BY name_internal, name ASC',
'items' => [ 'items' => [
['Keine Zuordnung', 0], ['label' => 'Keine Zuordnung', 'value' => 0],
], ],
'default' => 0, 'default' => 0,
'minitems' => 0, 'minitems' => 0,
@@ -115,20 +118,18 @@ call_user_func(function () {
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:ep_theme/Resources/Private/Language/locallang.xlf:tx_eptheme_context.date_from', 'label' => 'LLL:EXT:ep_theme/Resources/Private/Language/locallang.xlf:tx_eptheme_context.date_from',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 12, 'size' => 12,
'eval' => 'date,int', 'format' => 'date',
'renderType' => 'inputDateTime',
] ]
], ],
'tx_eptheme_context_date_to' => [ 'tx_eptheme_context_date_to' => [
'exclude' => 0, 'exclude' => 0,
'label' => 'LLL:EXT:ep_theme/Resources/Private/Language/locallang.xlf:tx_eptheme_context.date_to', 'label' => 'LLL:EXT:ep_theme/Resources/Private/Language/locallang.xlf:tx_eptheme_context.date_to',
'config' => [ 'config' => [
'type' => 'input', 'type' => 'datetime',
'size' => 12, 'size' => 12,
'eval' => 'date,int', 'format' => 'date',
'renderType' => 'inputDateTime',
] ]
], ],
'tx_eptheme_background' => [ 'tx_eptheme_background' => [
@@ -139,18 +140,18 @@ call_user_func(function () {
'renderType' => 'selectSingle', 'renderType' => 'selectSingle',
'default' => 0, 'default' => 0,
'items' => [ 'items' => [
[ 'ohne', 0 ], [ 'label' => 'ohne', 'value' => 0 ],
[ 'oben', 1 ], [ 'label' => 'oben', 'value' => 1 ],
[ 'unten', 2 ], [ 'label' => 'unten', 'value' => 2 ],
[ 'oben und unten', 3 ], [ 'label' => 'oben und unten', 'value' => 3 ],
], ],
], ],
], ],
]; ];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $ttContentColumns); ExtensionManagementUtility::addTCAcolumns('tt_content', $ttContentColumns);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette( ExtensionManagementUtility::addFieldsToPalette(
'tt_content', 'tt_content',
'header', 'header',
'--linebreak--, '--linebreak--,
Loaded 100 of 119 files, more files were not shown because too many files have changed in this diff. Show more