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;
@@ -280,9 +280,7 @@ class ManifestBuilder
'MAX(tstamp) AS tstamp',
"SUM(CASE WHEN deleted = 0 AND hidden = 0 AND CType <> 'list' THEN 1 ELSE 0 END) AS text_elements"
)
->from('tt_content')
->groupBy('pid', 'sys_language_uid')
->execute()
->from('tt_content')->groupBy('pid', 'sys_language_uid')->executeQuery()
->fetchAllAssociative()
;
@@ -108,9 +108,7 @@ class PageTree
$rows = $queryBuilder
->select(...self::FIELDS)
->from('pages')
->orderBy('sorting')
->execute()
->from('pages')->orderBy('sorting')->executeQuery()
->fetchAllAssociative()
;
@@ -86,9 +86,7 @@ class RecordFinder
$rows = $queryBuilder
->selectLiteral('mm.uid_local AS product', 'MAX(faq.tstamp) AS tstamp')
->from('tx_epproducts_product_faq_mm', 'mm')
->join('mm', 'tx_epproducts_domain_model_faq', 'faq', 'faq.uid = mm.uid_foreign')
->groupBy('mm.uid_local')
->execute()
->join('mm', 'tx_epproducts_domain_model_faq', 'faq', 'faq.uid = mm.uid_foreign')->groupBy('mm.uid_local')->executeQuery()
->fetchAllAssociative()
;
@@ -109,9 +107,7 @@ class RecordFinder
$rows = $queryBuilder
->selectLiteral('entity AS hotel', 'MAX(tstamp) AS tstamp')
->from('tx_epproducts_domain_model_matchcode')
->where($queryBuilder->expr()->eq('entity_type', $queryBuilder->createNamedParameter('hotel')))
->groupBy('entity')
->execute()
->where($queryBuilder->expr()->eq('entity_type', $queryBuilder->createNamedParameter('hotel')))->groupBy('entity')->executeQuery()
->fetchAllAssociative()
;
@@ -138,7 +134,7 @@ class RecordFinder
if ('product' === $type) {
// 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) {
@@ -309,9 +309,7 @@ class RecordSerializer
->select($keyField, $valueField)
->from($table)
->where($queryBuilder->expr()->in($keyField, $queryBuilder->createNamedParameter($uids, Connection::PARAM_INT_ARRAY)))
->orderBy($keyField)
->addOrderBy($sortField)
->execute()
->orderBy($keyField)->addOrderBy($sortField)->executeQuery()
->fetchAllAssociative()
;
@@ -336,9 +334,7 @@ class RecordSerializer
->from('tx_epproducts_domain_model_faq', 'faq')
->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)))
->orderBy('mm.uid_local')
->addOrderBy('mm.sorting')
->execute()
->orderBy('mm.uid_local')->addOrderBy('mm.sorting')->executeQuery()
->fetchAllAssociative()
;
@@ -371,9 +367,7 @@ class RecordSerializer
->where(
$queryBuilder->expr()->eq('entity_type', $queryBuilder->createNamedParameter('hotel')),
$queryBuilder->expr()->in('entity', $queryBuilder->createNamedParameter($hotelUids, Connection::PARAM_INT_ARRAY))
)
->orderBy('code')
->execute()
)->orderBy('code')->executeQuery()
->fetchAllAssociative()
;
@@ -401,9 +395,7 @@ class RecordSerializer
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_epproducts_domain_model_infobox');
$rows = $queryBuilder
->select('uid', 'text')
->from('tx_epproducts_domain_model_infobox')
->where($queryBuilder->expr()->in('uid', $queryBuilder->createNamedParameter(array_unique($infoboxUids), Connection::PARAM_INT_ARRAY)))
->execute()
->from('tx_epproducts_domain_model_infobox')->where($queryBuilder->expr()->in('uid', $queryBuilder->createNamedParameter(array_unique($infoboxUids), Connection::PARAM_INT_ARRAY)))->executeQuery()
->fetchAllAssociative()
;
@@ -425,9 +417,7 @@ class RecordSerializer
$queryBuilder = $this->connectionPool->getQueryBuilderForTable('tx_epproducts_domain_model_webcam');
$url = $queryBuilder
->select('url')
->from('tx_epproducts_domain_model_webcam')
->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($webcamUid, \PDO::PARAM_INT)))
->execute()
->from('tx_epproducts_domain_model_webcam')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($webcamUid, Connection::PARAM_INT)))->executeQuery()
->fetchOne()
;
@@ -445,9 +435,7 @@ class RecordSerializer
->select('mm.uid_local AS news', 'tag.title')
->from('tx_news_domain_model_tag', 'tag')
->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)))
->orderBy('mm.sorting')
->execute()
->where($queryBuilder->expr()->in('mm.uid_local', $queryBuilder->createNamedParameter($newsUids, Connection::PARAM_INT_ARRAY)))->orderBy('mm.sorting')->executeQuery()
->fetchAllAssociative()
;
@@ -475,9 +463,7 @@ class RecordSerializer
$queryBuilder->expr()->eq('mm.tablenames', $queryBuilder->createNamedParameter('tx_news_domain_model_news')),
$queryBuilder->expr()->eq('mm.fieldname', $queryBuilder->createNamedParameter('categories')),
$queryBuilder->expr()->in('mm.uid_foreign', $queryBuilder->createNamedParameter($newsUids, Connection::PARAM_INT_ARRAY))
)
->orderBy('mm.sorting_foreign')
->execute()
)->orderBy('mm.sorting_foreign')->executeQuery()
->fetchAllAssociative()
;
@@ -26,7 +26,9 @@ namespace EP\EpProducts\Controller;
*
* 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\Hotel;
use EP\EpProducts\Domain\Model\Product;
@@ -59,7 +61,7 @@ class AjaxTableController extends ActionController
protected $infoboxRepository;
/**
* @var \EP\EpProducts\Service\FilterService
* @var FilterService
*/
protected $filterService;
@@ -133,12 +135,12 @@ class AjaxTableController extends ActionController
Hotel $hotel,
string $dateFrom = null,
string $dateTo = null
): void {
): ResponseInterface {
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
$filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids);
$filterSettings['dateFrom'] = $dateFrom;
$filterSettings['dateTo'] = $dateTo;
$paCode = GeneralUtility::_GET('pa');
$paCode = $this->request->getQueryParams()['pa'] ?? null;
$myEpUrl = $this->myEpUrlResolverService->resolve();
$dates = $this->dateService->getDatesTable([
@@ -149,18 +151,13 @@ class AjaxTableController extends ActionController
if (1 === count($dates)) {
$date = reset($dates);
$this->forward(
'pricetable',
null,
'ep_products',
[
'product' => $product,
'hotel' => $hotel,
'date' => $date['dateUid'],
'paCode' => $paCode,
'singleDate' => true,
]
);
return (new ForwardResponse('pricetable'))->withExtensionName('ep_products')->withArguments([
'product' => $product,
'hotel' => $hotel,
'date' => $date['dateUid'],
'paCode' => $paCode,
'singleDate' => true,
]);
}
$nonBookableDateUids = GeneralUtility::trimExplode(',', $product->getNonBookableDates(), true);
@@ -221,6 +218,7 @@ class AjaxTableController extends ActionController
'nonBookableInfo' => $nonBookableInfo,
'myEpUrl' => $myEpUrl,
]);
return $this->htmlResponse();
}
/**
@@ -234,7 +232,7 @@ class AjaxTableController extends ActionController
Hotel $hotel,
Date $date,
bool $singleDate = false
): void {
): ResponseInterface {
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
$filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids);
$myEpUrl = $this->myEpUrlResolverService->resolve();
@@ -245,7 +243,7 @@ class AjaxTableController extends ActionController
'filterSettings' => $filterSettings,
'date' => $date,
'myEpUrl' => $myEpUrl,
'paCode' => GeneralUtility::_GET('pa'),
'paCode' => $this->request->getQueryParams()['pa'] ?? null,
]);
$hasSurchargeOrDiscount = $this->dateService->checkSurcharcheOrDiscount($priceTable);
$hasIncludedServices = $this->dateService->hasIncludedServices($priceTable);
@@ -274,13 +272,14 @@ class AjaxTableController extends ActionController
'nonBookableInfo' => $nonBookableInfo,
'myEpUrl' => $myEpUrl,
]);
return $this->htmlResponse();
}
/**
* @param Product $product
* @param Hotel $hotel
*/
public function pricetableHtmlAction(Product $product, Hotel $hotel): void
public function pricetableHtmlAction(Product $product, Hotel $hotel): ResponseInterface
{
$nonBookableInfo = $this->getNonBookableInfobox($product);
$myEpUrl = $this->myEpUrlResolverService->resolve();
@@ -290,7 +289,7 @@ class AjaxTableController extends ActionController
'hotel' => $hotel,
'filterSettings' => $this->filterService->getNormalizedFilterSettings(),
'myEpUrl' => $myEpUrl,
'paCode' => GeneralUtility::_GET('pa'),
'paCode' => $this->request->getQueryParams()['pa'] ?? null,
'sortByRoom' => true,
]);
$hasIncludedServices = $this->dateService->hasIncludedServices($priceTable);
@@ -301,12 +300,13 @@ class AjaxTableController extends ActionController
'nonBookableInfo' => $nonBookableInfo,
'myEpUrl' => $myEpUrl,
]);
return $this->htmlResponse();
}
/**
* @param Product $product
*/
public function eventPricetableAction(Product $product): void
public function eventPricetableAction(Product $product): ResponseInterface
{
$roomTypes = GeneralUtility::trimExplode(',', $this->settings['priceTableRoomTypes']);
$roomTypesPax = array_map(function ($type) {
@@ -340,6 +340,7 @@ class AjaxTableController extends ActionController
'nonBookableInfo' => $nonBookableInfo,
'myEpUrl' => $myEpUrl,
]);
return $this->htmlResponse();
}
/**
@@ -353,7 +354,7 @@ class AjaxTableController extends ActionController
Product $product,
string $dateFrom,
string $dateTo
): void {
): ResponseInterface {
$period = new Period($dateFrom, $dateTo);
$nights = (int) $period->dateInterval()->format('%a') + 1;
$myEpUrl = $this->myEpUrlResolverService->resolve();
@@ -369,11 +370,12 @@ class AjaxTableController extends ActionController
$this->view->assign('nights', $nights);
$this->view->assign('rooms', $rooms);
$this->view->assign('myEpUrl', $myEpUrl);
return $this->htmlResponse();
}
/**
* @param Product $product
* @return \EP\EpProducts\Domain\Model\Infobox
* @return Infobox
*/
protected function getNonBookableInfobox(Product $product)
{
@@ -2,16 +2,18 @@
namespace EP\EpProducts\Controller;
use Psr\Http\Message\ResponseInterface;
use EP\EpProducts\Domain\Model\Concept;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
class AjaxTeaserPopupController extends ActionController
{
public function conceptAction(Concept $concept, string $targetUrl)
public function conceptAction(Concept $concept, string $targetUrl): ResponseInterface
{
$this->view->assignMultiple([
'concept' => $concept,
'targetUrl' => $targetUrl,
]);
return $this->htmlResponse();
}
}
@@ -26,7 +26,8 @@ namespace EP\EpProducts\Controller;
*
* 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\Product;
use EP\EpProducts\Domain\Repository\HotelRepository;
@@ -45,22 +46,22 @@ class ProductController extends ActionController
{
/**
* @var \EP\EpProducts\Domain\Repository\ProductRepository
* @var ProductRepository
*/
protected $productRepository;
/**
* @var \EP\EpProducts\Domain\Repository\HotelRepository
* @var HotelRepository
*/
protected $hotelRepository;
/**
* @var \EP\EpProducts\Service\FilterService
* @var FilterService
*/
protected $filterService;
/**
* @var \EP\EpProducts\Service\ProductDataService
* @var ProductDataService
*/
protected $productDataService;
@@ -134,7 +135,7 @@ class ProductController extends ActionController
Hotel $hotel = null,
$dateFrom = null,
$dateTo = null
): void {
) {
// Get product to display from flexform settings if not provided via url
if ($product === null) {
$productUid = $this->settings['productUid'];
@@ -143,7 +144,7 @@ class ProductController extends ActionController
// Redirect to search page in case no product can be determined
if ($product === null) {
$filterSettings = $this->filterService->getNormalizedFilterSettings();
$this->redirect(
return $this->redirect(
'searchresult',
'Search',
null,
@@ -162,7 +163,7 @@ class ProductController extends ActionController
$arguments = [
'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
if ($product->getHotels()->count() > 0) {
@@ -189,7 +190,7 @@ class ProductController extends ActionController
$nonBookableInfo = $product->getNonBookableInfo();
// Assemble backlink
$backlinkUrl = GeneralUtility::_GET('ref');
$backlinkUrl = $this->request->getQueryParams()['ref'] ?? null;
$backLinkLabel = strpos($backlinkUrl, 'suche') !== -1 ? 'zurück zum Suchergebnis' : 'zurück';
$this->view->assignMultiple([
@@ -199,7 +200,7 @@ class ProductController extends ActionController
'isProductWithExcludedConcept' => $isProductWithExcludedConcept,
'isProductWithNoInfoConcept' => $isProductWithNoInfoConcept,
'isProductWithGroupInquiryForm' => $isProductWithGroupInquiryForm,
'currentPageUid' => $GLOBALS['TSFE']->id,
'currentPageUid' => $this->request->getAttribute('frontend.page.information')->getId(),
'dateFrom' => $dateFrom,
'dateTo' => $dateTo,
'referringUrl' => $backlinkUrl,
@@ -209,13 +210,13 @@ class ProductController extends ActionController
]);
}
public function pricetableAction(): void
public function pricetableAction(): ResponseInterface
{
$productUid = $this->settings['productUid'];
/** @var \EP\EpProducts\Domain\Model\Product $product */
/** @var Product $product */
$product = $this->productRepository->findByIdentifier($productUid);
$hotelUid = $this->settings['hotelUid'];
/** @var \EP\EpProducts\Domain\Model\Hotel $hotel */
/** @var Hotel $hotel */
$hotel = $this->hotelRepository->findByIdentifier($hotelUid);
$pricetable = $this->dateService->getPriceTable([
'product' => $product,
@@ -223,12 +224,13 @@ class ProductController extends ActionController
'filterSettings' => $this->filterService->getNormalizedFilterSettings(),
]);
$this->view->assign('pricetable', $pricetable);
return $this->htmlResponse();
}
/**
* @param Product $product
*/
public function hotelListAction(Product $product): void
public function hotelListAction(Product $product): ResponseInterface
{
$hotels = $this->hotelDataService->getList($product);
$this->view->assignMultiple([
@@ -236,9 +238,10 @@ class ProductController extends ActionController
'product' => $product,
'linkHotel' => true,
]);
return $this->htmlResponse();
}
public function teasergroupAction(): void
public function teasergroupAction(): ResponseInterface
{
$filterSettings = $this->filterService->getFiltersettingsFromSettings($this->settings);
$dateAuto = !$this->settings['dateFrom'] && !$this->settings['dateTo'];
@@ -247,7 +250,7 @@ class ProductController extends ActionController
$teasers = $this->productDataService->getTeasergroup($filterSettings, $excludedConceptUids, $limit);
$dateFrom = $this->settings['dateFrom'] ? date('Y-m-d', $this->settings['dateFrom']) : 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();
$this->view->assign('data', $data);
@@ -257,5 +260,6 @@ class ProductController extends ActionController
$this->view->assign('dateFrom', $dateFrom);
$this->view->assign('dateTo', $dateTo);
$this->view->assign('nonBookableInfo', $nonBookableInfo);
return $this->htmlResponse();
}
}
@@ -2,6 +2,10 @@
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
@@ -26,8 +30,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class AbstractDestination extends AbstractEntity
{
const SEASON_WINTER = 'w';
@@ -99,17 +102,17 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $descriptionExtended = '';
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $images;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $teaserImages;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $headerImages;
@@ -120,9 +123,9 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected function initStorageObjects()
{
$this->images = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->teaserImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->headerImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->images = new ObjectStorage();
$this->teaserImages = new 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()
{
@@ -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;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
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()
{
@@ -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)
{
@@ -388,7 +391,7 @@ class AbstractDestination extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
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()
{
@@ -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)
{
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/***************************************************************
*
* Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Badge extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class Badge extends AbstractEntity
{
/**
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
/***************************************************************
*
* Copyright notice
@@ -26,7 +28,6 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class City extends AbstractDestination implements TeaserInterface
{
@@ -46,29 +47,29 @@ class City extends AbstractDestination implements TeaserInterface
protected $leisure = '';
/**
* @var \EP\EpProducts\Domain\Model\Country
* @var Country
*/
protected $country;
/**
* @var \EP\EpProducts\Domain\Model\Region
* @var Region
*/
protected $region;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact>
* @var ObjectStorage<Fact>
*/
protected $facts;
/**
* @var \EP\EpProducts\Domain\Model\Officetip
* @var Officetip
*/
protected $officetip;
protected function 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
* region in case none are assigned.
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
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()
{
@@ -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;
}
/**
* @return \EP\EpProducts\Domain\Model\Region $region
* @return Region $region
*/
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;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts
* @return ObjectStorage<Fact> $facts
*/
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;
}
@@ -2,6 +2,10 @@
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
@@ -26,8 +30,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements TeaserInterface
class Concept extends AbstractEntity implements TeaserInterface
{
/**
@@ -96,22 +99,22 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $detailPage;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $teaserImages;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $headerImages;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $images;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product>
* @var ObjectStorage<Product>
*/
protected $products;
@@ -127,10 +130,10 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
*/
protected function initStorageObjects()
{
$this->products = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->teaserImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->headerImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->images = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->products = new ObjectStorage();
$this->teaserImages = new ObjectStorage();
$this->headerImages = new 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()
{
@@ -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()
{
@@ -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)
{
@@ -356,7 +359,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
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()
{
@@ -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)
{
@@ -384,7 +387,7 @@ class Concept extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
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)
{
@@ -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);
}
/**
* @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);
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product>
* @return ObjectStorage<Product>
*/
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;
}
@@ -43,7 +43,7 @@ class Contingent extends AbstractEntity implements EventInterface
protected $date;
/**
* @var \EP\EpProducts\Domain\Model\Hotel
* @var Hotel
*/
protected $hotel;
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
/***************************************************************
*
* Copyright notice
@@ -26,7 +28,6 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Country extends AbstractDestination implements TeaserInterface
{
@@ -41,24 +42,24 @@ class Country extends AbstractDestination implements TeaserInterface
protected $descriptionExtended = '';
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact>
* @var ObjectStorage<Fact>
*/
protected $facts;
/**
* @var \EP\EpProducts\Domain\Model\Officetip
* @var Officetip
*/
protected $officetip;
/**
* @var \EP\EpProducts\Domain\Model\Snowreport
* @var Snowreport
*/
protected $snowreport;
protected function 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);
}
/**
* @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);
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact>
* @return ObjectStorage<Fact>
*/
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;
}
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/***************************************************************
*
* Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Date extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class Date extends AbstractEntity
{
/**
* @var Product
@@ -2,35 +2,28 @@
namespace EP\EpProducts\Domain\Model\Dto;
use TYPO3\CMS\Extbase\Annotation\Validate;
use JsonSerializable;
class NewsletterSubscriptionRequest implements JsonSerializable
{
/**
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
*/
#[Validate(['validator' => 'NotEmpty'])]
private ?string $firstName = null;
/**
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
*/
#[Validate(['validator' => 'NotEmpty'])]
private ?string $lastName = null;
/**
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
* @TYPO3\CMS\Extbase\Annotation\Validate("EmailAddress")
*/
#[Validate(['validator' => 'NotEmpty'])]
#[Validate(['validator' => 'EmailAddress'])]
private ?string $email = null;
/**
* @var list<int>
* @TYPO3\CMS\Extbase\Annotation\Validate("NotEmpty")
*/
#[Validate(['validator' => 'NotEmpty'])]
private array $listIds = [];
/**
* @TYPO3\CMS\Extbase\Annotation\Validate("Boolean", options={"is": true})
*/
#[Validate(['validator' => 'Boolean', 'options' => ['is' => true]])]
private bool $consent = false;
public function getFirstName(): ?string
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/***************************************************************
*
* Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Fact extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class Fact extends AbstractEntity
{
/**
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/***************************************************************
*
* Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Faq extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class Faq extends AbstractEntity
{
/**
@@ -26,7 +26,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Extbase\Annotation\ORM\Lazy;
use EP\EpProducts\Utility\HotelIconUtility;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
@@ -197,8 +197,8 @@ class Hotel extends AbstractEntity implements TeaserInterface
/**
* @var ObjectStorage<MatchCode>
* @TYPO3\CMS\Extbase\Annotation\ORM\Lazy
*/
#[Lazy]
protected $additionalCodes;
/**
@@ -2,6 +2,9 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
/***************************************************************
*
* Copyright notice
@@ -26,8 +29,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Journey extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class Journey extends AbstractEntity
{
/**
@@ -46,7 +48,7 @@ class Journey extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $byBus;
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @var FileReference
*/
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()
{
@@ -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)
{
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/***************************************************************
*
* Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class MatchCode extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class MatchCode extends AbstractEntity
{
/**
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/***************************************************************
*
* Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Officetip extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class Officetip extends AbstractEntity
{
/**
@@ -41,7 +42,7 @@ class Officetip extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $text = '';
/**
* @var \EP\EpProducts\Domain\Model\Teammember
* @var Teammember
*/
protected $author;
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
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!
***************************************************************/
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 = '';
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $images;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $resellerImages;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $teaserImages;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $headerImages;
@@ -213,57 +215,57 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $tourThumbnail;
/**
* @var \EP\EpProducts\Domain\Model\Concept
* @var Concept
*/
protected $concept;
/**
* @var \EP\EpProducts\Domain\Model\Country
* @var Country
*/
protected $country;
/**
* @var \EP\EpProducts\Domain\Model\Region
* @var Region
*/
protected $region;
/**
* @var \EP\EpProducts\Domain\Model\City
* @var City
*/
protected $city;
/**
* @var \EP\EpProducts\Domain\Model\Journey
* @var Journey
*/
protected $journey;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact>
* @var ObjectStorage<Fact>
*/
protected $facts;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Hotel>
* @var ObjectStorage<Hotel>
*/
protected $hotels;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Faq>
* @var ObjectStorage<Faq>
*/
protected $faqs;
/**
* @var \EP\EpProducts\Domain\Model\Officetip
* @var Officetip
*/
protected $officetip;
/**
* @var \EP\EpProducts\Domain\Model\Hotel
* @var Hotel
*/
protected $calendarHotel;
/**
* @var \EP\EpProducts\Domain\Model\Product
* @var Product
*/
protected $altProduct;
@@ -278,12 +280,12 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $video = '';
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @var FileReference
*/
protected $banner;
/**
* @var \EP\EpProducts\Domain\Model\Badge
* @var Badge
*/
protected $badge;
@@ -298,7 +300,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected $minPrice;
/**
* @var \EP\EpProducts\Domain\Model\Infobox
* @var Infobox
*/
protected $nonBookableInfo;
@@ -309,12 +311,12 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
protected function initStorageObjects()
{
$this->images = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->teaserImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->headerImages = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->facts = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->hotels = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->faqs = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->images = new ObjectStorage();
$this->teaserImages = new ObjectStorage();
$this->headerImages = new ObjectStorage();
$this->facts = new ObjectStorage();
$this->hotels = new 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;
}
@@ -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;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
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()
{
@@ -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)
{
@@ -852,7 +854,7 @@ class Product extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity implements
* Returns all header images with fallback to parent
* region in case none are assigned.
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
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
* region in case none is assigned.
*
* @return null|\TYPO3\CMS\Extbase\Domain\Model\FileReference
* @return null|FileReference
*/
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)
{
@@ -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()
{
@@ -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;
}
/**
* @return \EP\EpProducts\Domain\Model\Country $country
* @return Country $country
*/
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;
}
/**
* @return \EP\EpProducts\Domain\Model\Region
* @return Region
*/
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;
}
/**
* @return \EP\EpProducts\Domain\Model\City
* @return City
*/
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;
}
/**
* @return \EP\EpProducts\Domain\Model\Journey
* @return Journey
*/
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)
{
@@ -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()
{
@@ -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;
}
/**
* @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);
}
/**
* @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);
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Hotel> $hotels
* @return ObjectStorage<Hotel> $hotels
*/
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;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Faq>
* @return ObjectStorage<Faq>
*/
public function getFaqs() {
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;
}
@@ -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()
{
@@ -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)
{
@@ -2,6 +2,10 @@
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
@@ -26,7 +30,6 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Region extends AbstractDestination implements TeaserInterface
{
@@ -76,50 +79,50 @@ class Region extends AbstractDestination implements TeaserInterface
protected $feature = '';
/**
* @var \EP\EpProducts\Domain\Model\Country
* @var Country
*/
protected $country;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\City>
* @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
* @var ObjectStorage<City>
*/
#[Cascade(['value' => 'remove'])]
protected $cities;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product>
* @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
* @var ObjectStorage<Product>
*/
#[Cascade(['value' => 'remove'])]
protected $products;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact>
* @var ObjectStorage<Fact>
*/
protected $facts;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Hotel>
* @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
* @var ObjectStorage<Hotel>
*/
#[Cascade(['value' => 'remove'])]
protected $hotels;
/**
* @var \EP\EpProducts\Domain\Model\Snowreport
* @var Snowreport
*/
protected $snowreport;
/**
* @var \EP\EpProducts\Domain\Model\Webcam
* @var Webcam
*/
protected $webcam;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
* @var ObjectStorage<FileReference>
*/
protected $regionMaps;
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @var FileReference
*/
protected $awardImage;
@@ -136,11 +139,11 @@ class Region extends AbstractDestination implements TeaserInterface
protected function initStorageObjects()
{
parent::initStorageObjects();
$this->cities = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->products = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->facts = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->hotels = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->regionMaps = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
$this->cities = new ObjectStorage();
$this->products = new ObjectStorage();
$this->facts = new ObjectStorage();
$this->hotels = new ObjectStorage();
$this->regionMaps = new ObjectStorage();
}
/**
@@ -279,7 +282,7 @@ class Region extends AbstractDestination implements TeaserInterface
* Returns all header images with fallback to parent
* country in case none are assigned.
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
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()
{
@@ -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;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
public function getCities() {
return $this->cities;
}
/**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $cities
* @param ObjectStorage $cities
*/
public function setCities($cities) {
$this->cities = $cities;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
public function getProducts() {
return $this->products;
}
/**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $products
* @param ObjectStorage $products
*/
public function setProducts($products) {
$this->products = $products;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Fact> $facts
* @return ObjectStorage<Fact> $facts
*/
public function getFacts()
{
@@ -347,22 +350,22 @@ class Region extends AbstractDestination implements TeaserInterface
/**
* 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;
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return ObjectStorage
*/
public function getHotels() {
return $this->hotels;
}
/**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $hotels
* @param ObjectStorage $hotels
*/
public function setHotels($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()
{
@@ -426,7 +429,7 @@ class Region extends AbstractDestination implements TeaserInterface
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @return FileReference
*/
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)
{
@@ -2,6 +2,7 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Annotation\ORM\Lazy;
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!
***************************************************************/
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;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Product>
* @Lazy()
* @var ObjectStorage<Product>
*/
#[Lazy]
protected $products;
public function __construct()
@@ -2,6 +2,7 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
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!
***************************************************************/
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;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Webcam>
* @var ObjectStorage<Webcam>
*/
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);
}
/**
* @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);
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\EP\EpProducts\Domain\Model\Webcam>
* @return ObjectStorage<Webcam>
*/
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;
}
@@ -2,6 +2,9 @@
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;
/***************************************************************
@@ -29,7 +32,7 @@ use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
* 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 = '';
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @var FileReference
*/
protected $image;
@@ -63,7 +66,7 @@ class Teammember extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $description = '';
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\Category>
* @var ObjectStorage<Category>
*/
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()
{
@@ -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)
{
@@ -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()
{
@@ -43,7 +43,7 @@ interface TeaserInterface
public function getTeaserImages();
/**
* @return null|\TYPO3\CMS\Extbase\Persistence\ObjectStorage
* @return null|ObjectStorage
*/
public function getTeaserImage();
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/***************************************************************
*
* Copyright notice
@@ -26,8 +28,7 @@ namespace EP\EpProducts\Domain\Model;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
class Webcam extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
class Webcam extends AbstractEntity
{
/**
@@ -36,7 +37,7 @@ class Webcam extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
protected $vendorUid;
/**
* @var \EP\EpProducts\Domain\Model\Snowreport
* @var Snowreport
*/
protected $snowreport;
@@ -2,6 +2,8 @@
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\Service\FilterService;
use EP\EpProducts\Traits\DbConnectionTrait;
@@ -24,8 +26,8 @@ abstract class AbstractRepository extends Repository
/**
* @param array $uids
* @return \TYPO3\CMS\Extbase\Persistence\QueryResultInterface
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @return QueryResultInterface
* @throws InvalidQueryException
*/
public function getListByUids(array $uids = [])
{
@@ -149,19 +151,16 @@ abstract class AbstractRepository extends Repository
{
// Price ranges
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) {
[ $priceMin, $priceMax ] = FilterOptions::$priceRangeOptions[$priceRange];
$orX->add($qb->expr()->andX(
$qb->expr()->gte(
'date.min_price',
$qb->createNamedParameter($priceMin, Connection::PARAM_INT)
),
$qb->expr()->lt(
'date.min_price',
$qb->createNamedParameter($priceMax, Connection::PARAM_INT)
)
));
$orX->add($qb->expr()->and($qb->expr()->gte(
'date.min_price',
$qb->createNamedParameter($priceMin, Connection::PARAM_INT)
), $qb->expr()->lt(
'date.min_price',
$qb->createNamedParameter($priceMax, Connection::PARAM_INT)
)));
}
$qb->andWhere($orX);
}
@@ -36,9 +36,7 @@ class DateRepository extends AbstractRepository
$qb->expr()->eq('date.group_travel', $qb->createNamedParameter(0, Connection::PARAM_INT)),
'date.date_start >= NOW()'
)
->orderBy('date.date_start', 'DESC')
->addOrderBy('date.uid', 'DESC')
->execute()
->orderBy('date.date_start', 'DESC')->addOrderBy('date.uid', 'DESC')->executeQuery()
->fetchFirstColumn()
;
}
@@ -26,7 +26,9 @@ namespace EP\EpProducts\Domain\Repository;
*
* 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 Symfony\Component\OptionsResolver\OptionsResolver;
use TYPO3\CMS\Core\Database\Connection;
@@ -219,7 +221,7 @@ class HotelRepository extends AbstractRepository
/**
* @param bool $excludeNonSearchable
* @return \TYPO3\CMS\Core\Database\Query\QueryBuilder
* @return QueryBuilder
* @throws \Doctrine\DBAL\DBALException
*/
protected function getQueryBuilder($excludeNonSearchable = true)
@@ -253,8 +255,8 @@ class HotelRepository extends AbstractRepository
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\QueryResultInterface
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @return QueryResultInterface
* @throws InvalidQueryException
*/
public function getMapList()
{
@@ -84,11 +84,7 @@ class ProductRepository extends AbstractRepository
->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_room', 'room', 'room.date = date.uid')
->where($qb->expr()->andX(
$qb->expr()->eq('date.product_searchable', 1),
$qb->expr()->gt('date.available', 0),
'date.date_start >= NOW()'
))
->where($qb->expr()->and($qb->expr()->eq('date.product_searchable', 1), $qb->expr()->gt('date.available', 0), 'date.date_start >= NOW()'))
->groupBy('date.product')
->addGroupBy('date.hotel')
->addGroupBy('date.date_start')
@@ -324,9 +320,7 @@ class ProductRepository extends AbstractRepository
->where($qb->expr()->eq(
'date.product',
$qb->createNamedParameter($product->getUid(), Connection::PARAM_INT))
)
->setMaxResults(1)
->execute()
)->setMaxResults(1)->executeQuery()
->fetchOne()
;
@@ -2,6 +2,7 @@
namespace EP\EpProducts\Middleware;
use TYPO3\CMS\Core\Database\Connection;
use EP\EpProducts\ContentFeed\ContentFeedApi;
use EP\EpProducts\Http\ApiKeyAuthenticator;
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_matchcode', 'matchcode', 'product.uid = matchcode.entity AND matchcode.entity_type="hotel"')
->where($queryBuilder->expr()->eq('product.code', $queryBuilder->createNamedParameter($productCode)))
->orWhere($queryBuilder->expr()->eq('matchcode.code', $queryBuilder->createNamedParameter($productCode)))
->setMaxResults(1)
->execute()
->orWhere($queryBuilder->expr()->eq('matchcode.code', $queryBuilder->createNamedParameter($productCode)))->setMaxResults(1)->executeQuery()
->fetchAssociative()
;
@@ -214,13 +213,8 @@ class ApiMiddleware implements MiddlewareInterface
->from('tx_epproducts_domain_model_hotel', 'hotel')
->leftJoin('hotel', 'tx_epproducts_domain_model_matchcode', 'alias', 'hotel.uid = alias.entity AND alias.entity_type="hotel"')
->where(
$queryBuilder->expr()->orX(
$queryBuilder->expr()->eq('hotel.code', $queryBuilder->createNamedParameter($hotelCode)),
$queryBuilder->expr()->eq('alias.code', $queryBuilder->createNamedParameter($hotelCode)),
)
)
->setMaxResults(1)
->execute()
$queryBuilder->expr()->or($queryBuilder->expr()->eq('hotel.code', $queryBuilder->createNamedParameter($hotelCode)), $queryBuilder->expr()->eq('alias.code', $queryBuilder->createNamedParameter($hotelCode)))
)->setMaxResults(1)->executeQuery()
->fetchAssociative()
;
@@ -270,9 +264,7 @@ class ApiMiddleware implements MiddlewareInterface
)
->from('tx_epproducts_domain_model_region', 'region')
->leftJoin('region', 'tx_epproducts_domain_model_webcam', 'webcam', 'region.webcam = webcam.uid')
->where($queryBuilder->expr()->eq('region.uid', $queryBuilder->createNamedParameter($regionUid, \PDO::PARAM_INT)))
->setMaxResults(1)
->execute()
->where($queryBuilder->expr()->eq('region.uid', $queryBuilder->createNamedParameter($regionUid, Connection::PARAM_INT)))->setMaxResults(1)->executeQuery()
->fetchAssociative()
;
@@ -36,7 +36,7 @@ class HotelDataService implements SingletonInterface
{
/**
* @var \EP\EpProducts\Domain\Repository\HotelRepository
* @var HotelRepository
*/
protected $hotelRepository;
@@ -2,6 +2,8 @@
namespace EP\EpProducts\Service;
use EP\EpProducts\MyEP\ApiException;
/**
* 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
@@ -14,7 +16,7 @@ interface ProductImportSource
* or null when there is nothing newer than the last successful import.
*
* @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;
@@ -177,10 +177,7 @@ class ResellerDataService implements SingletonInterface
->where('d.domainName = :domain')
->andWhere('r.deleted = 0')
->andWhere('r.hidden = 0')
->andWhere('d.hidden = 0')
->setParameter('domain', $currentDomain)
->execute()
->fetch()
->andWhere('d.hidden = 0')->setParameter('domain', $currentDomain)->executeQuery()->fetchAssociative()
;
}
@@ -26,7 +26,7 @@ namespace EP\EpProducts\Traits;
*
* 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\Utility\GeneralUtility;
@@ -35,7 +35,7 @@ trait DbConnectionTrait
/**
* @param string $connectionName
* @return \TYPO3\CMS\Core\Database\Connection
* @return Connection
* @throws \Doctrine\DBAL\DBALException
*/
protected function getDbConnection($connectionName = 'Default')
@@ -35,7 +35,7 @@ trait RequestArgumentTypeConversionTrait
/** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var \EP\EpProducts\Service\FilterService $filterService */
/** @var FilterService $filterService */
$filterService = $objectManager->get(FilterService::class);
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
->select('date_start', 'date_end', 'bus_pro_id')
->from('tx_epproducts_domain_model_date')
->where($qb->expr()->eq('product', $productUid))
->orderBy('date_start')
->execute()
->fetchAll()
->where($qb->expr()->eq('product', $productUid))->orderBy('date_start')->executeQuery()->fetchAllAssociative()
;
foreach ($result as $row) {
@@ -26,7 +26,7 @@ namespace EP\EpProducts\Utility;
*
* 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\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
@@ -68,7 +68,7 @@ class SerializationUtility
foreach ($images as $file)
{
$image = $file->getOriginalResource();
if (TYPO3_MODE === 'BE') {
if (ApplicationType::fromRequest($GLOBALS['TYPO3_REQUEST'])->isBackend()) {
$hostname = 'www.ep-reisen.de';
} else {
$hostname = GeneralUtility::getIndpEnv('HTTP_HOST');
@@ -1,7 +1,9 @@
<?php
use EP\EpProducts\Command\DateCommandController;
return [
'ep:import-dates' => [
'class' => \EP\EpProducts\Command\DateCommandController::class,
'class' => DateCommandController::class,
],
];
@@ -1,75 +1,66 @@
<?xml version="1.0"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Konfiguration</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.productUid>
<TCEforms>
<exclude>0</exclude>
<label>Produkt:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_product</foreign_table>
<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>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.productUid>
<settings.hotelUid>
<TCEforms>
<exclude>0</exclude>
<label>Hotel:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<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>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.hotelUid>
<settings.hotelOnTop>
<TCEforms>
<exclude>0</exclude>
<label>Hotelbutton oben:</label>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.hotelOnTop>
<settings.hideTeamer>
<TCEforms>
<exclude>0</exclude>
<label>Teamer ausblenden:</label>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.hideTeamer>
</el>
</ROOT>
</sDEF>
</sheets>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Konfiguration</sheetTitle>
<type>array</type>
<el>
<settings.productUid>
<exclude>0</exclude>
<label>Produkt:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_product</foreign_table>
<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>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</settings.productUid>
<settings.hotelUid>
<exclude>0</exclude>
<label>Hotel:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<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>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</settings.hotelUid>
<settings.hotelOnTop>
<exclude>0</exclude>
<label>Hotelbutton oben:</label>
<config>
<type>check</type>
</config>
</settings.hotelOnTop>
<settings.hideTeamer>
<exclude>0</exclude>
<label>Teamer ausblenden:</label>
<config>
<type>check</type>
</config>
</settings.hideTeamer>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
@@ -1,51 +1,46 @@
<?xml version="1.0"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Konfiguration</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<settings.productUid>
<TCEforms>
<exclude>0</exclude>
<label>Produkt:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_product</foreign_table>
<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>
<minitems>1</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.productUid>
<settings.hotelUid>
<TCEforms>
<exclude>0</exclude>
<label>Hotel:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<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>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>1</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.hotelUid>
</el>
</ROOT>
</sDEF>
</sheets>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Konfiguration</sheetTitle>
<type>array</type>
<el>
<settings.productUid>
<exclude>0</exclude>
<label>Produkt:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_product</foreign_table>
<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>
<minitems>1</minitems>
<maxitems>1</maxitems>
</config>
</settings.productUid>
<settings.hotelUid>
<exclude>0</exclude>
<label>Hotel:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<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>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>1</minitems>
<maxitems>1</maxitems>
</config>
</settings.hotelUid>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
@@ -1,252 +1,245 @@
<?xml version="1.0"?>
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Konfiguration</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<switchableControllerActions>
<TCEforms>
<label>Modus</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<default>Product->teasergroup</default>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">Teasergruppe</numIndex>
<numIndex index="1">Product->teasergroup</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Einzelteaser</numIndex>
<numIndex index="1">Product->teaser</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</switchableControllerActions>
<settings.countryUid>
<TCEforms>
<label>Land:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_country</foreign_table>
<foreign_table_where>ORDER BY name</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Zuordnung</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.countryUid>
<settings.regionUid>
<TCEforms>
<label>Gebiet:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_region</foreign_table>
<foreign_table_where>ORDER BY name</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Zuordnung</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.regionUid>
<settings.conceptUid>
<TCEforms>
<label>Konzept:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>select</type>
<renderType>selectSingleBox</renderType>
<foreign_table>tx_epproducts_domain_model_concept</foreign_table>
<foreign_table_where>ORDER BY name</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Zuordnung</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<size>5</size>
<minitems>0</minitems>
<maxitems>10</maxitems>
</config>
</TCEforms>
</settings.conceptUid>
<settings.hotelUid>
<TCEforms>
<label>Hotel:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<foreign_table_where>ORDER BY name</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.hotelUid>
<settings.busAvailable>
<TCEforms>
<label>Busreise:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.busAvailable>
<settings.dateFrom>
<TCEforms>
<label>Zeitraum von:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>input</type>
<size>10</size>
<eval>date</eval>
</config>
</TCEforms>
</settings.dateFrom>
<settings.dateTo>
<TCEforms>
<label>Zeitraum bis:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>input</type>
<size>10</size>
<eval>date</eval>
</config>
</TCEforms>
</settings.dateTo>
<settings.productUid>
<TCEforms>
<label>Produkt:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teaser]]></displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_product</foreign_table>
<foreign_table_where>ORDER BY name_internal</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.productUid>
<settings.layout>
<TCEforms>
<label>Layout:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Spalten</numIndex>
<numIndex index="1">cols</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Reihen</numIndex>
<numIndex index="1">rows</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.layout>
<settings.hotelTypes>
<TCEforms>
<label>Unterkunftsart:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>select</type>
<renderType>selectCheckBox</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Ferienwohnung</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Sportclub</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Apartment</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">Gästehaus</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">Pension</numIndex>
<numIndex index="1">5</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>10</maxitems>
</config>
</TCEforms>
</settings.hotelTypes>
<settings.hideMoreLink>
<TCEforms>
<exclude>0</exclude>
<label>Link zum Suchergebnis ausblenden:</label>
<config>
<type>check</type>
</config>
</TCEforms>
</settings.hideMoreLink>
<settings.infoboxUid>
<TCEforms>
<label>Infobox nicht buchbar:</label>
<displayCond><![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]></displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_infobox</foreign_table>
<foreign_table_where>ORDER BY title</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Default</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</settings.infoboxUid>
</el>
</ROOT>
</sDEF>
</sheets>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<sheetTitle>Konfiguration</sheetTitle>
<type>array</type>
<el>
<switchableControllerActions>
<label>Modus</label>
<onChange>reload</onChange>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<default>Product->teasergroup</default>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">Teasergruppe</numIndex>
<numIndex index="1">Product->teasergroup</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Einzelteaser</numIndex>
<numIndex index="1">Product->teaser</numIndex>
</numIndex>
</items>
</config>
</switchableControllerActions>
<settings.countryUid>
<label>Land:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_country</foreign_table>
<foreign_table_where>ORDER BY name</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Zuordnung</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</settings.countryUid>
<settings.regionUid>
<label>Gebiet:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_region</foreign_table>
<foreign_table_where>ORDER BY name</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Zuordnung</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</settings.regionUid>
<settings.conceptUid>
<label>Konzept:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>select</type>
<renderType>selectSingleBox</renderType>
<foreign_table>tx_epproducts_domain_model_concept</foreign_table>
<foreign_table_where>ORDER BY name</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Keine Zuordnung</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<size>5</size>
<minitems>0</minitems>
<maxitems>10</maxitems>
</config>
</settings.conceptUid>
<settings.hotelUid>
<label>Hotel:</label>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_hotel</foreign_table>
<foreign_table_where>ORDER BY name</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</settings.hotelUid>
<settings.busAvailable>
<label>Busreise:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>check</type>
</config>
</settings.busAvailable>
<settings.dateFrom>
<label>Zeitraum von:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>input</type>
<size>10</size>
<eval>date</eval>
</config>
</settings.dateFrom>
<settings.dateTo>
<label>Zeitraum bis:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>input</type>
<size>10</size>
<eval>date</eval>
</config>
</settings.dateTo>
<settings.productUid>
<label>Produkt:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teaser]]>
</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_product</foreign_table>
<foreign_table_where>ORDER BY name_internal</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Alle</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</settings.productUid>
<settings.layout>
<label>Layout:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Spalten</numIndex>
<numIndex index="1">cols</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Reihen</numIndex>
<numIndex index="1">rows</numIndex>
</numIndex>
</items>
</config>
</settings.layout>
<settings.hotelTypes>
<label>Unterkunftsart:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>select</type>
<renderType>selectCheckBox</renderType>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Ferienwohnung</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Sportclub</numIndex>
<numIndex index="1">2</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">Apartment</numIndex>
<numIndex index="1">3</numIndex>
</numIndex>
<numIndex index="3" type="array">
<numIndex index="0">G&#xE4;stehaus</numIndex>
<numIndex index="1">4</numIndex>
</numIndex>
<numIndex index="4" type="array">
<numIndex index="0">Pension</numIndex>
<numIndex index="1">5</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>10</maxitems>
</config>
</settings.hotelTypes>
<settings.hideMoreLink>
<exclude>0</exclude>
<label>Link zum Suchergebnis ausblenden:</label>
<config>
<type>check</type>
</config>
</settings.hideMoreLink>
<settings.infoboxUid>
<label>Infobox nicht buchbar:</label>
<displayCond>
<![CDATA[FIELD:switchableControllerActions:=:Product->teasergroup]]>
</displayCond>
<config>
<type>select</type>
<renderType>selectSingle</renderType>
<foreign_table>tx_epproducts_domain_model_infobox</foreign_table>
<foreign_table_where>ORDER BY title</foreign_table_where>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Default</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</settings.infoboxUid>
</el>
</ROOT>
</sDEF>
</sheets>
</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
use EP\EpProducts\Middleware\ApiMiddleware;
use EP\EpProducts\Middleware\ContentPageTypeGuardMiddleware;
return [
'frontend' => [
'ep/productapi' => [
'target' => \EP\EpProducts\Middleware\ApiMiddleware::class,
'target' => ApiMiddleware::class,
'before' => [
'typo3/cms-frontend/page-resolver',
],
@@ -12,7 +15,7 @@ return [
],
],
'ep/content-page-type-guard' => [
'target' => \EP\EpProducts\Middleware\ContentPageTypeGuardMiddleware::class,
'target' => ContentPageTypeGuardMiddleware::class,
'after' => [
'typo3/cms-frontend/page-resolver',
],
@@ -1,8 +1,10 @@
<?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',
'Configuration/TypoScript',
'EP Products'
@@ -1,41 +1,44 @@
<?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 () {
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts',
ExtensionUtility::registerPlugin(
'EpProducts',
'product_detail',
'Produkt: Details'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts',
ExtensionUtility::registerPlugin(
'EpProducts',
'product_teasergroup',
'Produkt: Teaser'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts',
ExtensionUtility::registerPlugin(
'EpProducts',
'product_pricetable',
'Buchungstabelle'
);
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['epproducts_product_detail'] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
'epproducts_product_detail', 'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_detail.xml'
ExtensionManagementUtility::addPiFlexFormValue(
'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';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
ExtensionManagementUtility::addPiFlexFormValue(
'epproducts_product_teasergroup',
'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_teaser.xml'
);
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist']['epproducts_product_pricetable'] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
ExtensionManagementUtility::addPiFlexFormValue(
'epproducts_product_pricetable',
'FILE:EXT:ep_products/Configuration/FlexForms/flexform_product_pricetable.xml'
);
@@ -1,12 +1,11 @@
<?php
defined('TYPO3_MODE') or die();
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function () {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable(
'epproducts',
'tx_epproducts_domain_model_teammember'
);
$GLOBALS['TCA']['tx_epproducts_domain_model_teammember']['columns']['categories'] = ['config' => ['type' => 'category']];
ExtensionManagementUtility::addToAllTCAtypes('tx_epproducts_domain_model_teammember', 'categories');
});
@@ -7,7 +7,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -34,17 +33,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -54,7 +43,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -86,30 +75,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -119,7 +104,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'subtitle' => [
@@ -135,9 +121,8 @@ return [
'exclude' => 0,
'label' => 'Link',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'renderType' => 'inputLink',
]
],
],
@@ -1,4 +1,8 @@
<?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Domain\Model\AbstractDestination;
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_city',
@@ -7,7 +11,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -39,17 +42,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -59,7 +52,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -91,30 +84,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -122,9 +111,8 @@ return [
'exclude' => 0,
'label' => 'Detailseite',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'renderType' => 'inputLink',
]
],
'exclude_from_teasergroups' => [
@@ -141,8 +129,8 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Winter', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_WINTER],
['Sommer', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_SUMMER],
['label' => 'Winter', 'value' => AbstractDestination::SEASON_WINTER],
['label' => 'Sommer', 'value' => AbstractDestination::SEASON_SUMMER],
],
]
],
@@ -152,7 +140,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'name_internal' => [
@@ -161,7 +150,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'keywords' => [
@@ -259,31 +249,32 @@ return [
'teaser_images' => [
'exclude' => 0,
'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'teaser_images',
[
'appearance' => [
'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' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'overrideChildTca' => [
'types' => [
FileType::IMAGE->value => [
'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' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
],
@@ -291,39 +282,39 @@ 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' => [
'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' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'overrideChildTca' => [
'types' => [
FileType::IMAGE->value => [
'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',
'value' => 3.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.8,
],
],
],
@@ -331,48 +322,48 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'maxitems' => 10,
],
],
'images' => [
'exclude' => 0,
'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'images',
[
'appearance' => [
'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' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'overrideChildTca' => [
'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette',
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
],
@@ -380,10 +371,9 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'maxitems' => 10,
],
],
'latitude' => [
'exclude' => 0,
@@ -436,7 +426,7 @@ return [
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_officetip',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -1,4 +1,7 @@
<?php
use TYPO3\CMS\Core\Resource\FileType;
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_concept',
@@ -8,7 +11,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -42,17 +44,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -62,7 +54,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -94,30 +86,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'sorting' => [
@@ -140,7 +128,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'code' => [
@@ -149,7 +138,8 @@ return [
'config' => [
'type' => 'input',
'size' => 5,
'eval' => 'trim,lower,required'
'eval' => 'trim,lower',
'required' => true
],
],
'description' => [
@@ -216,9 +206,8 @@ return [
'exclude' => 0,
'label' => 'Detailseite',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'renderType' => 'inputLink',
]
],
'popup_title' => [
@@ -256,20 +245,69 @@ return [
'teaser_images' => [
'exclude' => 0,
'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'teaser_images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'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' => [
'crop' => [
'config' => [
@@ -277,13 +315,13 @@ return [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaserEven' => [
'title' => 'Teaser gerade',
'value' => 1.3333333333333334,
'headerLarge' => [
'title' => 'Header groß',
'value' => 2.3333333333333334,
],
'teaserOdd' => [
'title' => 'Teaser ungerade',
'value' => 2.0555555555555556,
'headerSmall' => [
'title' => 'Header klein',
'value' => 3.3333333333333334,
],
'free' => [
'title' => 'Frei',
@@ -296,96 +334,48 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'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']
),
'maxitems' => 10,
],
],
'images' => [
'exclude' => 0,
'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
],
@@ -393,10 +383,9 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'products' => [
'exclude' => 0,
@@ -1,13 +1,16 @@
<?php
use EP\EpProducts\Service\LabelService;
use EP\EpProducts\Domain\Model\Contingent;
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_contingent',
'label' => 'date',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getContingentLabel',
'label_userFunc' => LabelService::class . '->getContingentLabel',
'default_sortby' => 'ORDER BY date',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => false,
'hideTable' => true,
@@ -32,17 +35,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -52,7 +45,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -84,30 +77,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -115,18 +104,18 @@ return [
'exclude' => 0,
'label' => 'Pax',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 3,
'eval' => 'int,required'
'required' => true
],
],
'available' => [
'exclude' => 0,
'label' => 'verfügbar',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 3,
'eval' => 'int,required'
'required' => true
],
],
'date' => [
@@ -134,12 +123,11 @@ return [
'label' => 'Datum',
'config' => [
'dbType' => 'date',
'type' => 'input',
'type' => 'datetime',
'size' => 7,
'eval' => 'date,required',
'checkbox' => 0,
'default' => '0000-00-00',
'renderType' => 'inputDateTime',
'format' => 'date',
'required' => true,
],
],
'hotel' => [
@@ -163,9 +151,9 @@ return [
'minitems' => 1,
'maxitems' => 1,
'items' => [
[ 'Ok', \EP\EpProducts\Domain\Model\Contingent::STATUS_OK ],
[ 'Buchungsstop', \EP\EpProducts\Domain\Model\Contingent::STATUS_BLOCKED ],
[ 'auf Anfrage', \EP\EpProducts\Domain\Model\Contingent::STATUS_ONREQUEST ],
[ 'label' => 'Ok', 'value' => Contingent::STATUS_OK ],
[ 'label' => 'Buchungsstop', 'value' => Contingent::STATUS_BLOCKED ],
[ 'label' => 'auf Anfrage', 'value' => Contingent::STATUS_ONREQUEST ],
]
],
],
@@ -209,9 +197,9 @@ return [
'exclude' => 0,
'label' => 'groups.ch ID',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'trim,int'
'eval' => 'trim'
],
],
'room_code' => [
@@ -1,4 +1,8 @@
<?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Domain\Model\AbstractDestination;
return [
'ctrl' => [
'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',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -41,17 +44,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -61,7 +54,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -93,30 +86,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -124,9 +113,8 @@ return [
'exclude' => 0,
'label' => 'Detailseite',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'renderType' => 'inputLink',
]
],
'code' => [
@@ -135,7 +123,8 @@ return [
'config' => [
'type' => 'input',
'size' => 2,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'name' => [
@@ -144,7 +133,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'name_internal' => [
@@ -153,7 +143,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'season' => [
@@ -163,8 +154,8 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Winter', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_WINTER],
['Sommer', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_SUMMER],
['label' => 'Winter', 'value' => AbstractDestination::SEASON_WINTER],
['label' => 'Sommer', 'value' => AbstractDestination::SEASON_SUMMER],
],
]
],
@@ -241,31 +232,32 @@ return [
'teaser_images' => [
'exclude' => 0,
'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'teaser_images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
],
@@ -273,39 +265,39 @@ 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' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.8,
],
],
],
@@ -313,48 +305,48 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'images' => [
'exclude' => 0,
'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'images',
[
'appearance' => [
'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' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'overrideChildTca' => [
'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette',
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
],
@@ -362,10 +354,9 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'maxitems' => 10,
],
],
'latitude' => [
'exclude' => 0,
@@ -394,7 +385,7 @@ return [
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_officetip',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -407,7 +398,7 @@ return [
'type' => 'select',
'default' => 0,
'items' => [
['Keine Zuordnung', 0]
['label' => 'Keine Zuordnung', 'value' => 0]
],
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_snowreport',
@@ -1,12 +1,14 @@
<?php
use EP\EpProducts\Service\LabelService;
return [
'ctrl' => [
'title' => 'Termin',
'label' => 'bus_pro_id',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getDateLabel',
'label_userFunc' => LabelService::class . '->getDateLabel',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => false,
'hideTable' => true,
@@ -36,17 +38,7 @@ return [
'sys_language_uid' => [
'exclude' => false,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -56,7 +48,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -88,30 +80,26 @@ return [
'exclude' => false,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => false,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'product' => [
@@ -235,8 +223,8 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[ 'Winter', 'w' ],
[ 'Sommer', 's' ],
[ 'label' => 'Winter', 'value' => 'w' ],
[ 'label' => 'Sommer', 'value' => 's' ],
],
'default' => 'w',
],
@@ -246,12 +234,10 @@ return [
'label' => 'Datum von',
'config' => [
'dbType' => 'date',
'type' => 'input',
'type' => 'datetime',
'size' => 7,
'eval' => 'date',
'checkbox' => 0,
'default' => '0000-00-00',
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
'date_end' => [
@@ -259,12 +245,10 @@ return [
'label' => 'Datum bis',
'config' => [
'dbType' => 'date',
'type' => 'input',
'type' => 'datetime',
'size' => 7,
'eval' => 'date',
'checkbox' => 0,
'default' => '0000-00-00',
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
'nights' => [
@@ -7,7 +7,6 @@ return [
'default_sortby' => 'ORDER BY label',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -33,17 +32,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -53,7 +42,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -85,30 +74,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -118,7 +103,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'label' => [
@@ -127,7 +113,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'keywords' => [
@@ -6,7 +6,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -34,17 +33,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -54,7 +43,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -86,30 +75,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -120,18 +105,18 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[ '', '' ],
[ 'Buchung & Reiseablauf', 'Buchung & Reiseablauf' ],
[ 'Skipass, Skigebiet & Kurse', 'Skipass, Skigebiet & Kurse' ],
[ 'Änderungen & Zusatzleistungen', 'Änderungen & Zusatzleistungen' ],
[ 'Anreise & Transport', 'Anreise & Transport' ],
[ 'Unterkunft & Sportclubs', 'Unterkunft & Sportclubs' ],
[ 'Programm & Aktivitäten', 'Programm & Aktivitäten' ],
[ 'Eventreisen', 'Eventreisen' ],
[ 'Teilnahmebedingungen', 'Teilnahmebedingungen' ],
[ 'Zahlung & Rechnung', 'Zahlung & Rechnung' ],
[ 'Kontakt & Erreichbarkeit', 'Kontakt & Erreichbarkeit' ],
[ 'Stornierung, Reklamation & Versicherung', 'Stornierung, Reklamation & Versicherung' ],
[ 'label' => '', 'value' => '' ],
[ 'label' => 'Buchung & Reiseablauf', 'value' => 'Buchung & Reiseablauf' ],
[ 'label' => 'Skipass, Skigebiet & Kurse', 'value' => 'Skipass, Skigebiet & Kurse' ],
[ 'label' => 'Änderungen & Zusatzleistungen', 'value' => 'Änderungen & Zusatzleistungen' ],
[ 'label' => 'Anreise & Transport', 'value' => 'Anreise & Transport' ],
[ 'label' => 'Unterkunft & Sportclubs', 'value' => 'Unterkunft & Sportclubs' ],
[ 'label' => 'Programm & Aktivitäten', 'value' => 'Programm & Aktivitäten' ],
[ 'label' => 'Eventreisen', 'value' => 'Eventreisen' ],
[ 'label' => 'Teilnahmebedingungen', 'value' => 'Teilnahmebedingungen' ],
[ 'label' => 'Zahlung & Rechnung', 'value' => 'Zahlung & Rechnung' ],
[ 'label' => 'Kontakt & Erreichbarkeit', 'value' => 'Kontakt & Erreichbarkeit' ],
[ 'label' => 'Stornierung, Reklamation & Versicherung', 'value' => 'Stornierung, Reklamation & Versicherung' ],
],
'default' => '',
],
@@ -142,7 +127,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'question' => [
@@ -151,7 +137,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'answer' => [
@@ -161,8 +148,9 @@ return [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim,required',
'eval' => 'trim',
'enableRichtext' => true,
'required' => true,
]
],
@@ -8,7 +8,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -36,17 +35,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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,
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -56,7 +45,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -88,30 +77,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -121,25 +106,26 @@ return [
'config' => [
'type' => 'input',
'size' => 32,
'eval' => 'required',
'required' => true,
]
],
'price' => [
'exclude' => false,
'label' => 'Preis pro Person/Nacht',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'double2,required',
'format' => 'decimal',
'required' => true,
]
],
'price_chf' => [
'exclude' => false,
'label' => 'Preis pro Person/Nacht in CHF',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'double2',
'format' => 'decimal',
]
],
'sorting' => [
@@ -1,13 +1,15 @@
<?php
use EP\EpProducts\Service\LabelService;
return [
'ctrl' => [
'title' => 'Gruppenhaus Preis',
'default_sortby' => 'ORDER BY date_from',
'label' => 'date_from',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getGroupsPriceConfigLabel',
'label_userFunc' => LabelService::class . '->getGroupsPriceConfigLabel',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -38,17 +40,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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,
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -58,7 +50,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -90,30 +82,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -121,65 +109,66 @@ return [
'exclude' => false,
'label' => 'Datum von',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 8,
'eval' => 'date,required',
'renderType' => 'inputDateTime',
'format' => 'date',
'required' => true,
]
],
'date_to' => [
'exclude' => false,
'label' => 'Datum bis',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 8,
'eval' => 'date,required',
'renderType' => 'inputDateTime',
'format' => 'date',
'required' => true,
]
],
'persons_included' => [
'exclude' => false,
'label' => 'Inklusiv-Personen',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 4,
'eval' => 'int,required',
'required' => true,
]
],
'price' => [
'exclude' => false,
'label' => 'Preis pro Nacht',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'double2,required',
'format' => 'decimal',
'required' => true,
]
],
'price_chf' => [
'exclude' => false,
'label' => 'Preis pro Nacht in CHF',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'double2',
'format' => 'decimal',
]
],
'price_additional_person' => [
'exclude' => false,
'label' => 'Preis weitere Person',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'double2',
'format' => 'decimal',
]
],
'price_additional_person_chf' => [
'exclude' => false,
'label' => 'Preis weitere Person in CHF',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'double2',
'format' => 'decimal',
]
],
],
@@ -1,4 +1,7 @@
<?php
use EP\EpProducts\Domain\Model\GroupsPriceOption;
return [
'ctrl' => [
'title' => 'Gruppenhaus Zusatzleistung',
@@ -8,7 +11,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -37,17 +39,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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,
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -57,7 +49,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -89,30 +81,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -122,25 +110,26 @@ return [
'config' => [
'type' => 'input',
'size' => 32,
'eval' => 'required',
'required' => true,
]
],
'price' => [
'exclude' => false,
'label' => 'Preis',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'double2,required',
'format' => 'decimal',
'required' => true,
]
],
'price_chf' => [
'exclude' => false,
'label' => 'Preis in CHF',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 8,
'eval' => 'double2',
'format' => 'decimal',
]
],
'type' => [
@@ -150,12 +139,12 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['pauschal', \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_GLOBAL],
['pro Person', \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_PER_PAX],
['pro Nacht', \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_PER_NIGHT],
['pro Person und Nacht', \EP\EpProducts\Domain\Model\GroupsPriceOption::TYPE_PER_PAX_AND_NIGHT],
['label' => 'pauschal', 'value' => GroupsPriceOption::TYPE_GLOBAL],
['label' => 'pro Person', 'value' => GroupsPriceOption::TYPE_PER_PAX],
['label' => 'pro Nacht', 'value' => GroupsPriceOption::TYPE_PER_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' => [
@@ -1,14 +1,18 @@
<?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Service\LabelService;
use EP\EpProducts\Domain\Model\Hotel;
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_hotel',
'default_sortby' => 'ORDER BY name',
'label' => 'name',
'prependAtCopy' => '[COPY %s]',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getHotelLabel',
'label_userFunc' => LabelService::class . '->getHotelLabel',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -50,17 +54,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -70,7 +64,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -102,30 +96,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -161,9 +151,8 @@ return [
'exclude' => 0,
'label' => 'Detailseite',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'renderType' => 'inputLink',
]
],
'name' => [
@@ -173,7 +162,8 @@ return [
'type' => 'text',
'cols' => 30,
'rows' => 2,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'short_name' => [
@@ -280,31 +270,32 @@ return [
'teaser_images' => [
'exclude' => 0,
'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'teaser_images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
],
@@ -312,39 +303,39 @@ 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' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.8,
],
],
],
@@ -352,48 +343,48 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'images' => [
'exclude' => 0,
'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
],
@@ -401,33 +392,32 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'reseller_images' => [
'exclude' => 0,
'label' => 'Bilder für Vertriebspartner',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'reseller_images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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',
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'code' => [
'exclude' => 0,
@@ -442,10 +432,8 @@ return [
'exclude' => 0,
'label' => 'Externer Link (Google MyBusiness)',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'eval' => 'trim',
'renderType' => 'inputLink',
],
],
'type' => [
@@ -455,12 +443,12 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Unbestimmt', 0],
['Ferienwohnung', \EP\EpProducts\Domain\Model\Hotel::TYPE_HOLIDAY_FLAT],
['Sportclub', \EP\EpProducts\Domain\Model\Hotel::TYPE_SPORTS_CLUB],
['Apartment', \EP\EpProducts\Domain\Model\Hotel::TYPE_APPARTMENT],
['Gästehaus', \EP\EpProducts\Domain\Model\Hotel::TYPE_GUESTHOUSE],
['Pension', \EP\EpProducts\Domain\Model\Hotel::TYPE_PENSION],
['label' => 'Unbestimmt', 'value' => 0],
['label' => 'Ferienwohnung', 'value' => Hotel::TYPE_HOLIDAY_FLAT],
['label' => 'Sportclub', 'value' => Hotel::TYPE_SPORTS_CLUB],
['label' => 'Apartment', 'value' => Hotel::TYPE_APPARTMENT],
['label' => 'Gästehaus', 'value' => Hotel::TYPE_GUESTHOUSE],
['label' => 'Pension', 'value' => Hotel::TYPE_PENSION],
],
'size' => 1,
'minItems' => 1,
@@ -474,12 +462,12 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Unbestimmt', 0],
['Standard', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_STANDARD],
['Basic', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_BASIC],
['Komfort', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_COMFORT],
['Deluxe', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_DELUXE],
['Super Deluxe', \EP\EpProducts\Domain\Model\Hotel::CATEGORY_SUPER_DELUXE],
['label' => 'Unbestimmt', 'value' => 0],
['label' => 'Standard', 'value' => Hotel::CATEGORY_STANDARD],
['label' => 'Basic', 'value' => Hotel::CATEGORY_BASIC],
['label' => 'Komfort', 'value' => Hotel::CATEGORY_COMFORT],
['label' => 'Deluxe', 'value' => Hotel::CATEGORY_DELUXE],
['label' => 'Super Deluxe', 'value' => Hotel::CATEGORY_SUPER_DELUXE],
],
'size' => 1,
'minItems' => 1,
@@ -733,9 +721,8 @@ return [
'exclude' => 0,
'label' => 'Altersgrenze Jugendliche (6-X Jahre)',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 50,
'eval' => 'int',
],
],
'main_season_from' => [
@@ -743,12 +730,10 @@ return [
'label' => 'Hauptsaison von',
'config' => [
'dbType' => 'date',
'type' => 'input',
'type' => 'datetime',
'size' => 7,
'eval' => 'date',
'checkbox' => 0,
'default' => '0000-00-00',
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
'main_season_to' => [
@@ -756,30 +741,26 @@ return [
'label' => 'Hauptsaison bis',
'config' => [
'dbType' => 'date',
'type' => 'input',
'type' => 'datetime',
'size' => 7,
'eval' => 'date',
'checkbox' => 0,
'default' => '0000-00-00',
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
'beds_count' => [
'exclude' => 0,
'label' => 'Anzahl Betten',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 50,
'eval' => 'int',
],
],
'parking_count' => [
'exclude' => 0,
'label' => 'Anzahl Parkplätze',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 50,
'eval' => 'int',
],
],
'altitude' => [
@@ -5,7 +5,6 @@ return [
'label' => 'product',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -32,17 +31,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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,
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -52,7 +41,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -84,30 +73,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'product' => [
@@ -127,9 +112,8 @@ return [
'exclude' => 0,
'label' => 'Detailseite',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'renderType' => 'inputLink',
]
],
'hotel' => [
@@ -7,7 +7,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -35,17 +34,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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,
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -55,7 +44,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -87,30 +76,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -120,7 +105,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'text' => [
@@ -130,8 +116,9 @@ return [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim,required',
'eval' => 'trim',
'enableRichtext' => true,
'required' => true,
]
],
'default_text' => [
@@ -1,4 +1,7 @@
<?php
use TYPO3\CMS\Core\Resource\FileType;
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_journey',
@@ -7,7 +10,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -32,17 +34,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -52,7 +44,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -84,30 +76,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -117,7 +105,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'by_car' => [
@@ -145,26 +134,26 @@ return [
'image' => [
'exclude' => 0,
'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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',
],
],
],
'maxitems' => 1,
'minitems' => 0,
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 1,
'minitems' => 0,
],
],
],
];
@@ -6,7 +6,6 @@ return [
'prependAtCopy' => '[COPY %s]',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => false,
'hideTable' => true,
@@ -33,17 +32,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -53,7 +42,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -85,30 +74,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -118,7 +103,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'entity_type' => [
@@ -129,8 +115,8 @@ return [
'renderType' => 'selectSingle',
'items' => [
[
'Hotel',
'hotel',
'label' => 'Hotel',
'value' => 'hotel',
],
],
],
@@ -1,13 +1,15 @@
<?php
use EP\EpProducts\Service\LabelService;
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_officetip',
'label' => 'label',
'prependAtCopy' => '[COPY %s]',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getOfficetipLabel',
'label_userFunc' => LabelService::class . '->getOfficetipLabel',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -33,17 +35,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -53,7 +45,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -85,30 +77,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -118,7 +106,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'text' => [
@@ -128,7 +117,8 @@ return [
'type' => 'text',
'cols' => 40,
'rows' => 15,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
]
],
'author' => [
@@ -1,14 +1,18 @@
<?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Service\LabelService;
use EP\EpProducts\UserFunc\TcaProcFunc;
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_product',
'label' => 'name_internal',
'prependAtCopy' => '[COPY %s]',
'label_userFunc' => \EP\EpProducts\Service\LabelService::class . '->getProductLabel',
'label_userFunc' => LabelService::class . '->getProductLabel',
'default_sortby' => 'ORDER BY name_internal',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -53,17 +57,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -73,7 +67,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -105,30 +99,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -182,8 +172,8 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[ 'Winter', 'w' ],
[ 'Sommer', 's' ],
[ 'label' => 'Winter', 'value' => 'w' ],
[ 'label' => 'Sommer', 'value' => 's' ],
],
'default' => 'w',
],
@@ -211,7 +201,8 @@ return [
'type' => 'text',
'cols' => 30,
'rows' => 2,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'name_internal' => [
@@ -220,7 +211,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'subline' => [
@@ -391,18 +383,17 @@ return [
'exclude' => 0,
'label' => 'Durchschnittliche Bewertung',
'config' => [
'type' => 'input',
'type' => 'number',
'size' => 5,
'eval' => 'double2'
'format' => 'decimal'
],
],
'rating_votes_count' => [
'exclude' => 0,
'label' => 'Abgebene Stimmen',
'config' => [
'type' => 'input',
'size' => 10,
'eval' => 'int'
'type' => 'number',
'size' => 10
],
],
'testimonials' => [
@@ -419,31 +410,32 @@ return [
'teaser_images' => [
'exclude' => 0,
'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'teaser_images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
],
@@ -451,39 +443,39 @@ 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' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.805,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.805,
],
],
],
@@ -491,39 +483,39 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'images' => [
'exclude' => 0,
'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Slider',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.625,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Slider',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.625,
],
],
],
@@ -531,92 +523,92 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'reseller_images' => [
'exclude' => 0,
'label' => 'Bilder für Vertriebspartner',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'reseller_images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'facebook' => [
'title' => 'Facebook',
'allowedAspectRatios' => [
'ad' => [
'title' => 'Single product ad',
'value' => 1.91,
],
'carousel' => [
'title' => 'Carousel',
'value' => 1,
],
]
],
'google' => [
'title' => 'Google',
'allowedAspectRatios' => [
'catalog' => [
'title' => 'Catalog',
'value' => 1,
],
]
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'facebook' => [
'title' => 'Facebook',
'allowedAspectRatios' => [
'ad' => [
'title' => 'Single product ad',
'value' => 1.91,
],
'carousel' => [
'title' => 'Carousel',
'value' => 1,
],
]
],
'google' => [
'title' => 'Google',
'allowedAspectRatios' => [
'catalog' => [
'title' => 'Catalog',
'value' => 1,
],
]
],
],
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'tour_thumbnail' => [
'exclude' => 0,
'label' => 'Thumbnail Rundgang',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'tour_thumbnail',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
],
@@ -624,10 +616,9 @@ return [
],
],
],
'maxitems' => 1,
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 1,
],
],
'concept' => [
'exclude' => 0,
@@ -691,7 +682,7 @@ return [
'foreign_table' => 'tx_epproducts_domain_model_journey',
'foreign_table_where' => 'AND 1=1 ORDER BY name',
'items' => [
['Keine Zuordnung', 0]
['label' => 'Keine Zuordnung', 'value' => 0]
],
'minitems' => 0,
'maxitems' => 1,
@@ -748,7 +739,7 @@ return [
'foreign_table' => 'tx_epproducts_domain_model_hotel',
'foreign_table_where' => 'AND 1=1 ORDER BY tx_epproducts_domain_model_hotel.name',
'items' => [
[ 'Kein Kalender', 0 ],
[ 'label' => 'Kein Kalender', 'value' => 0 ],
],
],
],
@@ -761,7 +752,7 @@ return [
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_officetip',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -802,7 +793,7 @@ return [
'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',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -829,25 +820,25 @@ return [
'banner' => [
'exclude' => 0,
'label' => 'Banner für Sidebar',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'banner',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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',
],
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 1,
],
],
'additional_regions' => [
'exclude' => 0,
@@ -874,7 +865,7 @@ return [
'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',
'items' => [
['Keine Auswahl', 0],
['label' => 'Keine Auswahl', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -890,7 +881,7 @@ return [
'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',
'items' => [
['Standardtext', 0],
['label' => 'Standardtext', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -908,10 +899,8 @@ return [
'exclude' => 0,
'label' => 'URL 360° Rundgang (matterport)',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'eval' => 'trim',
'renderType' => 'inputLink',
],
],
'path_segment' => [
@@ -936,15 +925,14 @@ return [
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'itemsProcFunc' => \EP\EpProducts\UserFunc\TcaProcFunc::class.'->getDateItemsForProduct',
'itemsProcFunc' => TcaProcFunc::class.'->getDateItemsForProduct',
]
],
'min_price' => [
'exclude' => 0,
'label' => 'Ab-Preis',
'config' => [
'type' => 'input',
'eval' => 'int'
'type' => 'number'
],
]
],
@@ -1,4 +1,8 @@
<?php
use TYPO3\CMS\Core\Resource\FileType;
use EP\EpProducts\Domain\Model\AbstractDestination;
return [
'ctrl' => [
'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',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -44,17 +47,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -64,7 +57,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -96,30 +89,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -127,9 +116,8 @@ return [
'exclude' => 0,
'label' => 'Detailseite',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 30,
'renderType' => 'inputLink',
]
],
'exclude_from_teasergroups' => [
@@ -145,7 +133,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'name_internal' => [
@@ -154,7 +143,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'season' => [
@@ -164,8 +154,8 @@ return [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Winter', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_WINTER],
['Sommer', \EP\EpProducts\Domain\Model\AbstractDestination::SEASON_SUMMER],
['label' => 'Winter', 'value' => AbstractDestination::SEASON_WINTER],
['label' => 'Sommer', 'value' => AbstractDestination::SEASON_SUMMER],
],
]
],
@@ -311,31 +301,32 @@ return [
'teaser_images' => [
'exclude' => 0,
'label' => 'Teaserbild(er)',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'teaser_images',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'teaser' => [
'title' => 'Teaser',
'value' => 2,
],
],
],
@@ -343,39 +334,39 @@ 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' => '
'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' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Alle Geräte',
'allowedAspectRatios' => [
'headerLarge' => [
'title' => 'Header',
'value' => 3.8,
],
],
],
@@ -383,48 +374,48 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 10,
],
],
'images' => [
'exclude' => 0,
'label' => 'Galeriebilder',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'images',
[
'appearance' => [
'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' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'overrideChildTca' => [
'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette',
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
'default' => [
'title' => 'Preview',
'allowedAspectRatios' => [
'preview' => [
'title' => 'Standard',
'value' => 1.8,
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
'zoom' => [
'title' => 'Zoom',
'allowedAspectRatios' => [
'free' => [
'title' => 'frei',
'value' => 'NaN',
],
],
],
@@ -432,33 +423,32 @@ return [
],
],
],
'maxitems' => 10
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'maxitems' => 10,
],
],
'region_maps' => [
'exclude' => 0,
'label' => 'Gebietskarten',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'region_maps',
[
'appearance' => [
'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' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'overrideChildTca' => [
'types' => [
FileType::IMAGE->value => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette',
],
],
],
'maxitems' => 5
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
'maxitems' => 5,
],
],
'latitude' => [
'exclude' => 0,
@@ -523,7 +513,7 @@ return [
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_officetip',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -537,7 +527,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['Keine Zuordnung', 0]
['label' => 'Keine Zuordnung', 'value' => 0]
],
'foreign_table' => 'tx_epproducts_domain_model_snowreport',
'foreign_table_where' => 'ORDER BY tx_epproducts_domain_model_snowreport.region_name',
@@ -552,7 +542,7 @@ return [
'type' => 'select',
'default' => 0,
'items' => [
['Keine Zuordnung', 0]
['label' => 'Keine Zuordnung', 'value' => 0]
],
'renderType' => 'selectSingle',
'foreign_table' => 'tx_epproducts_domain_model_webcam',
@@ -565,34 +555,32 @@ return [
'award_image' => [
'exclude' => 0,
'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'award_image',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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',
],
],
],
'maxitems' => 1
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
'maxitems' => 1,
],
],
'award_link' => [
'exclude' => 0,
'label' => 'Link',
'config' => [
'type' => 'input',
'type' => 'link',
'size' => 32,
'eval' => 'trim',
'renderType' => 'inputLink',
]
],
'award_label' => [
@@ -7,7 +7,6 @@ return [
'default_sortby' => 'ORDER BY name',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -31,17 +30,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -51,7 +40,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -83,30 +72,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
@@ -116,7 +101,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'code' => [
@@ -125,7 +111,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'pa_code' => [
@@ -7,7 +7,6 @@ return [
'default_sortby' => 'ORDER BY region_name',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -34,17 +33,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -54,7 +43,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -86,30 +75,27 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'date',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
@@ -124,7 +110,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'region_name' => [
@@ -133,7 +120,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'glacier' => [
@@ -147,18 +135,16 @@ return [
'exclude' => 0,
'label' => 'Höhe max.',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'int'
'type' => 'number',
'size' => 30
],
],
'height_min' => [
'exclude' => 0,
'label' => 'Höhe min.',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'int'
'type' => 'number',
'size' => 30
],
],
'opened' => [
@@ -172,18 +158,16 @@ return [
'exclude' => 0,
'label' => 'Schneehöhe Berg',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'int'
'type' => 'number',
'size' => 30
],
],
'snow_level_valley' => [
'exclude' => 0,
'label' => 'Schneehöhe Tal',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'int'
'type' => 'number',
'size' => 30
],
],
'snow_quality' => [
@@ -199,48 +183,44 @@ return [
'exclude' => 0,
'label' => 'Letzter Schneefall',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'date',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
'lifts_total' => [
'exclude' => 0,
'label' => 'Lifte gesamt',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'int'
'type' => 'number',
'size' => 30
],
],
'lifts_opened' => [
'exclude' => 0,
'label' => 'Lifte geöffnet',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'int'
'type' => 'number',
'size' => 30
],
],
'last_update' => [
'exclude' => 0,
'label' => 'Letzte Aktualisierung',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'date',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
'webcams' => [
@@ -256,30 +236,28 @@ return [
'exclude' => 0,
'label' => 'Saison Anfang',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'date',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
'season_end' => [
'exclude' => 0,
'label' => 'Saison Ende',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'date',
'checkbox' => 0,
'default' => 0,
'range' => [
'lower' => mktime(0, 0, 0, date('m'), date('d'), date('Y'))
],
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
],
@@ -1,5 +1,7 @@
<?php
use TYPO3\CMS\Core\Resource\FileType;
return [
'ctrl' => [
'title' => 'LLL:EXT:ep_products/Resources/Private/Language/locallang.xlf:tx_epproducts_domain_model_teammember',
@@ -9,7 +11,6 @@ return [
'sortby' => 'sorting',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -38,17 +39,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -58,7 +49,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -90,30 +81,26 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'sorting' => [
@@ -128,7 +115,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'path_segment' => [
@@ -153,7 +141,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'phone' => [
@@ -189,26 +178,26 @@ return [
'image' => [
'exclude' => 0,
'label' => 'Bild',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'overrideChildTca' => [
'types' => [
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
'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',
],
],
],
'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',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'versioningWS' => true,
'languageField' => 'sys_language_uid',
@@ -32,17 +31,7 @@ return [
'sys_language_uid' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'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]
],
],
'config' => ['type' => 'language'],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
@@ -52,7 +41,7 @@ return [
'default' => 0,
'renderType' => 'selectSingle',
'items' => [
['', 0],
['label' => '', 'value' => 0],
],
'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)',
@@ -84,30 +73,27 @@ return [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'datetime',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
],
],
'endtime' => [
'exclude' => 0,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 13,
'eval' => 'date',
'checkbox' => 0,
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true,
],
'renderType' => 'inputDateTime',
'format' => 'date',
],
],
@@ -122,7 +108,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'url' => [
@@ -131,7 +118,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'vendor_uid' => [
@@ -140,7 +128,8 @@ return [
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'available' => [
@@ -6,63 +6,63 @@
plugin.tx_epproducts {
settings {
# cat=epproducts/100/100; type=string; label=Products storage PID
productsStoragePid =
# cat=epproducts/100/110; type=string; label=Hotels storage PID
hotelsStoragePid =
# cat=epproducts/100/120; type=string; label=Concepts storage PID
conceptsStoragePid =
# cat=epproducts/100/130; type=string; label=Facts storage PID
factsStoragePid =
# cat=epproducts/100/140; type=string; label=Faqs storage PID
faqsStoragePid =
# cat=epproducts/100/150; type=string; label=Destinations storage PID
destinationsStoragePid =
# cat=epproducts/100/160; type=string; label=Regions storage PID
regionsStoragePid =
# cat=epproducts/100/160; type=string; label=Cities storage PID
citiesStoragePid =
# cat=epproducts/100/170; type=string; label=Teammember storage PID
teammemberStoragePid =
# cat=epproducts/100/180; type=string; label=Officetip storage PID
officetipStoragePid =
# cat=epproducts/100/190; type=string; label=Snow report storage PID
snowReportStoragePid =
# cat=epproducts/110/100; type=string; label=Default search page UID
defaultSearchPageUid =
# cat=epproducts/110/110; type=string; label=Default product detail page UID
defaultDetailPageUid =
# cat=epproducts/110/120; type=string; label=Page UID with reseller export plugin
resellerExportPageUid =
# cat=epproducts/110/130; type=string; label=Page UID with travel info plugin
travelInfoPageUid =
# cat=epproducts/120/100; type=string; label=Exclude products with concept UIDs from search result (CSV)
# cat=epproducts/100/100; type=string; label=Products storage PID
productsStoragePid =
# cat=epproducts/100/110; type=string; label=Hotels storage PID
hotelsStoragePid =
# cat=epproducts/100/120; type=string; label=Concepts storage PID
conceptsStoragePid =
# cat=epproducts/100/130; type=string; label=Facts storage PID
factsStoragePid =
# cat=epproducts/100/140; type=string; label=Faqs storage PID
faqsStoragePid =
# cat=epproducts/100/150; type=string; label=Destinations storage PID
destinationsStoragePid =
# cat=epproducts/100/160; type=string; label=Regions storage PID
regionsStoragePid =
# cat=epproducts/100/160; type=string; label=Cities storage PID
citiesStoragePid =
# cat=epproducts/100/170; type=string; label=Teammember storage PID
teammemberStoragePid =
# cat=epproducts/100/180; type=string; label=Officetip storage PID
officetipStoragePid =
# cat=epproducts/100/190; type=string; label=Snow report storage PID
snowReportStoragePid =
# cat=epproducts/110/100; type=string; label=Default search page UID
defaultSearchPageUid =
# cat=epproducts/110/110; type=string; label=Default product detail page UID
defaultDetailPageUid =
# cat=epproducts/110/120; type=string; label=Page UID with reseller export plugin
resellerExportPageUid =
# cat=epproducts/110/130; type=string; label=Page UID with travel info plugin
travelInfoPageUid =
# cat=epproducts/120/100; type=string; label=Exclude products with concept UIDs from search result (CSV)
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 =
# 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 =
# 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 =
# cat=epproducts/130/110; type=string; label=Email recipient for groups price inquiries
groupsPriceToEmail = [email protected]
# cat=epproducts/130/120; type=string; label=Email recipient for groups price inquiries
groupsPriceToName = EP Reisen
# cat=epproducts/130/130; type=string; label=Email recipient for groups price inquiries
groupsBookingUrl = https://myep.ddev.site/groups/booking/init
# cat=epproducts/140/100; type=string; label=Room types for pricetables (CSV)
# cat=epproducts/130/110; type=string; label=Email recipient for groups price inquiries
groupsPriceToEmail = [email protected]
# cat=epproducts/130/120; type=string; label=Email recipient for groups price inquiries
groupsPriceToName = EP Reisen
# cat=epproducts/130/130; type=string; label=Email recipient for groups price inquiries
groupsBookingUrl = https://myep.ddev.site/groups/booking/init
# cat=epproducts/140/100; type=string; label=Room types for pricetables (CSV)
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 =
# 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 =
# cat=epproducts/140/130; type=string; label=Per-site MyE&P booking URL override
myEpUrl =
# cat=epproducts/140/140; type=string; label=Per-site MyE&P staging booking URL override
myEpStagingUrl =
}
# cat=epproducts/140/130; type=string; label=Per-site MyE&P booking URL override
myEpUrl =
# cat=epproducts/140/140; type=string; label=Per-site MyE&P staging booking URL override
myEpStagingUrl =
}
persistence {
# cat=epproducts/100/100; type=string; label=Default storage PID
# cat=epproducts/100/100; type=string; label=Default storage PID
storagePid =
}
}
@@ -61,9 +61,9 @@ plugin.tx_epproducts {
dataProtectionPageUid = {$plugin.tx_eptheme.settings.dataProtectionPageUid}
datePickerPresets {
1 {
label = Silvester
dateFrom = 2017-12-25
dateTo = 2018-01-06
label = Silvester
dateFrom = 2017-12-25
dateTo = 2018-01-06
}
2 {
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">
<file source-language="de" datatype="plaintext" original="messages" date="2016-05-04T20:49:43Z" product-name="ep_products">
<header/>
<body>
<trans-unit id="tx_epproducts_domain_model_date">
<source>Termin</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_product">
<source>Produkt</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_concept">
<source>Konzept</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_country">
<source>Land</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_region">
<source>Gebiet</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_city">
<source>Stadt/Ort</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_fact">
<source>Fact</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_hotel">
<source>Hotel</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_faq">
<source>Faq</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_matchcode">
<source>Code</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_officetip">
<source>Office-Tipp</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_teammember">
<source>Mitarbeiter/Teamer</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_journey">
<source>Anreise</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_snowreport">
<source>Schneereport</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_webcam">
<source>Webcam</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_contingent">
<source>Kontingent</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_badge">
<source>Badge</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_staticsearchparams">
<source>Statisches Suchergebnis</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_reseller">
<source>Vertriebspartner</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_infobox">
<source>Infobox</source>
</trans-unit>
</body>
</file>
<file source-language="de" datatype="plaintext" original="messages" date="2016-05-04T20:49:43Z" product-name="ep_products">
<header/>
<body>
<trans-unit id="tx_epproducts_domain_model_date">
<source>Termin</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_product">
<source>Produkt</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_concept">
<source>Konzept</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_country">
<source>Land</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_region">
<source>Gebiet</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_city">
<source>Stadt/Ort</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_fact">
<source>Fact</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_hotel">
<source>Hotel</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_faq">
<source>Faq</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_matchcode">
<source>Code</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_officetip">
<source>Office-Tipp</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_teammember">
<source>Mitarbeiter/Teamer</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_journey">
<source>Anreise</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_snowreport">
<source>Schneereport</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_webcam">
<source>Webcam</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_contingent">
<source>Kontingent</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_badge">
<source>Badge</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_staticsearchparams">
<source>Statisches Suchergebnis</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_reseller">
<source>Vertriebspartner</source>
</trans-unit>
<trans-unit id="tx_epproducts_domain_model_infobox">
<source>Infobox</source>
</trans-unit>
</body>
</file>
</xliff>
-4
View File
@@ -7,10 +7,6 @@ $EM_CONF[$_EXTKEY] = [
'author' => 'Björn Fromme',
'author_email' => '[email protected]',
'state' => 'stable',
'internal' => '',
'uploadfolder' => '1',
'createDirs' => '',
'clearCacheOnLoad' => 0,
'version' => '1.0.0',
'constraints' => [
'depends' => [],
+27 -26
View File
@@ -1,5 +1,13 @@
<?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 () {
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.
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['requireCacheHashPresenceParameters'][] = '^tx_epproducts_ajax';
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
$iconRegistry->registerIcon(
'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',
ExtensionUtility::configurePlugin(
'EpProducts',
'product_detail',
[
'Product' => 'detail,hotelList',
ProductController::class => 'detail,hotelList',
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.ep_products',
ExtensionUtility::configurePlugin(
'EpProducts',
'product_teasergroup',
[
'Product' => 'teasergroup',
ProductController::class => 'teasergroup',
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.ep_products',
ExtensionUtility::configurePlugin(
'EpProducts',
'product_pricetable',
[
'Product' => 'pricetable',
ProductController::class => 'pricetable',
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.ep_products',
ExtensionUtility::configurePlugin(
'EpProducts',
'ajax',
[
'AjaxTable' => 'datestable,pricetable,pricetableHtml,eventPricetable,daytripRooms',
'AjaxTeaserPopup' => 'concept',
AjaxTableController::class => 'datestable,pricetable,pricetableHtml,eventPricetable,daytripRooms',
AjaxTeaserPopupController::class => 'concept',
],
[
'AjaxTable' => 'datestable,pricetable,pricetableHtml,eventPricetable,daytripRooms',
'AjaxTeaserPopup' => 'concept',
AjaxTableController::class => 'datestable,pricetable,pricetableHtml,eventPricetable,daytripRooms',
AjaxTeaserPopupController::class => 'concept',
]
);
@@ -74,11 +75,11 @@ $boot = function () {
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'f';
$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'] = [
\TYPO3\CMS\Core\Log\LogLevel::INFO => [
\EP\EpProducts\Log\Writer::class => [
LogLevel::INFO => [
Writer::class => [
'logTable' => 'tx_epproducts_log'
],
],
@@ -19,9 +19,7 @@ class ProductRatingProcessor implements DataProcessorInterface
$qb = $this->getDbConnection()->createQueryBuilder();
$result = $qb
->selectLiteral('SUM(product.rating_votes_count) as totalCount', 'SUM(product.rating_average) as totalAverage')
->from('tx_epproducts_domain_model_product', 'product')
->execute()
->selectLiteral('SUM(product.rating_votes_count) as totalCount', 'SUM(product.rating_average) as totalAverage')->from('tx_epproducts_domain_model_product', 'product')->executeQuery()
->fetchAssociative()
;
@@ -30,9 +28,7 @@ class ProductRatingProcessor implements DataProcessorInterface
$result = $qb
->selectLiteral('COUNT(*) as ratedCount')
->from('tx_epproducts_domain_model_product', 'product')
->where($qb->expr()->gt('product.rating_average', 0))
->execute()
->from('tx_epproducts_domain_model_product', 'product')->where($qb->expr()->gt('product.rating_average', 0))->executeQuery()
->fetchAssociative()
;
@@ -101,7 +101,7 @@ class SliderProcessor implements DataProcessorInterface
*/
protected function getParentPageWithSlides()
{
$rootlineUtility = new RootlineUtility($GLOBALS['TSFE']->id);
$rootlineUtility = new RootlineUtility($GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId());
$rootline = $rootlineUtility->get();
foreach ($rootline as $parentPage) {
@@ -26,8 +26,10 @@ namespace EP\EpTheme\DataProcessing;
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use EP\EpProducts\Domain\Model\FilterSettings;
use EP\EpProducts\Domain\Model\City;
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\ConceptRepository;
use EP\EpProducts\Domain\Repository\CountryRepository;
@@ -60,37 +62,37 @@ class TeaserProcessor implements DataProcessorInterface
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
if ((int) $processedData['data']['tx_eptheme_context_city'] > 0) {
/** @var \EP\EpProducts\Domain\Repository\CityRepository $repository */
/** @var CityRepository $repository */
$repository = $objectManager->get(CityRepository::class);
/** @var \EP\EpProducts\Domain\Model\City $city */
/** @var City $city */
$city = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_city']);
$processedData['city'] = $city;
}
if ((int) $processedData['data']['tx_eptheme_context_region'] > 0) {
/** @var \EP\EpProducts\Domain\Repository\RegionRepository $repository */
/** @var RegionRepository $repository */
$repository = $objectManager->get(RegionRepository::class);
/** @var \EP\EpProducts\Domain\Model\Region $region */
/** @var Region $region */
$region = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_region']);
$processedData['region'] = $region;
}
if ((int) $processedData['data']['tx_eptheme_context_country'] > 0) {
/** @var \EP\EpProducts\Domain\Repository\CountryRepository $repository */
/** @var CountryRepository $repository */
$repository = $objectManager->get(CountryRepository::class);
/** @var \EP\EpProducts\Domain\Model\Country $country */
/** @var Country $country */
$country = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_country']);
$processedData['country'] = $country;
}
if ((int) $processedData['data']['tx_eptheme_context_hotel'] > 0) {
/** @var \EP\EpProducts\Service\HotelDataService $service */
/** @var HotelDataService $service */
$service = $objectManager->get(HotelDataService::class);
/** @var array $hotel */
$hotel = $service->getTeaser($processedData['data']['tx_eptheme_context_hotel']);
$processedData['hotel'] = $hotel;
}
if ((int) $processedData['data']['tx_eptheme_context_concept'] > 0) {
/** @var \EP\EpProducts\Domain\Repository\ConceptRepository $repository */
/** @var ConceptRepository $repository */
$repository = $objectManager->get(ConceptRepository::class);
/** @var \EP\EpProducts\Domain\Model\Concept $concept */
/** @var Concept $concept */
$concept = $repository->findByIdentifier($processedData['data']['tx_eptheme_context_concept']);
$processedData['concept'] = $concept;
}
@@ -116,13 +118,13 @@ class TeaserProcessor implements DataProcessorInterface
$filterSettings['dateTo'] = $dateTo->format('Y-m-d');
}
/** @var \EP\EpProducts\Service\ProductDataService $productDataService */
/** @var ProductDataService $productDataService */
$productDataService = $objectManager->get(ProductDataService::class);
$processedData['teaser'] = $productDataService->getTeaser($filterSettings);
$processedData['teaser']['forceHotelUid'] = $hotelUid;
}
$processedData['referringPageUid'] = $GLOBALS['TSFE']->id;
$processedData['referringPageUid'] = $GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId();
return $processedData;
}
@@ -9,12 +9,12 @@ class Page extends AbstractEntity
/**
* @var int
*/
protected $uid;
protected ?int $uid = null;
/**
* @var int
*/
protected $pid;
protected ?int $pid = null;
/**
* @var bool
@@ -55,7 +55,7 @@ class OpenGraphMetaTagManager extends \TYPO3\CMS\Seo\MetaTag\OpenGraphMetaTagMan
*/
protected function getPageWithImage()
{
$rootLineUtility = new RootlineUtility($GLOBALS['TSFE']->id);
$rootLineUtility = new RootlineUtility($GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId());
$rootLine = $rootLineUtility->get();
foreach ($rootLine as $page) {
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class ContainerViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
/**
* @var int[]
*/
@@ -70,48 +67,36 @@ class ContainerViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext
* @return mixed
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
) {
$content = $renderChildrenClosure();
public function render()
{
$content = $this->renderChildren();
if ($content === null) {
$content = $arguments['content'];
$content = $this->arguments['content'];
}
$classes = [];
if (\in_array($arguments['data']['colPos'], static::$columnsWithoutContainers, false)) {
if (\in_array($this->arguments['data']['colPos'], static::$columnsWithoutContainers, false)) {
$classes[] = 'container';
}
if ($arguments['cssClasses'] !== null) {
$classes[] = $arguments['cssClasses'];
if ($this->arguments['cssClasses'] !== null) {
$classes[] = $this->arguments['cssClasses'];
}
if (!empty($arguments['data']['space_before_class'])) {
$scaleTop = static::$scale[$arguments['data']['space_before_class']];
if (!empty($this->arguments['data']['space_before_class'])) {
$scaleTop = static::$scale[$this->arguments['data']['space_before_class']];
$classes[] = sprintf('pt-%d', $scaleTop);
}
if (!empty($arguments['data']['space_after_class'])) {
$scaleBottom = static::$scale[$arguments['data']['space_after_class']];
if (!empty($this->arguments['data']['space_after_class'])) {
$scaleBottom = static::$scale[$this->arguments['data']['space_after_class']];
$classes[] = sprintf('pb-%d', $scaleBottom);
}
if ('default' !== $arguments['data']['frame_class']) {
$classes[] = $arguments['data']['frame_class'];
if ('default' !== $this->arguments['data']['frame_class']) {
$classes[] = $this->arguments['data']['frame_class'];
}
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 ($arguments['rteContent']) {
if ($this->arguments['rteContent']) {
return sprintf('<div data-rte-content>%s</div>', $content);
}
return $content;
}
}
@@ -30,12 +30,9 @@ namespace EP\EpTheme\ViewHelpers;
use EP\EpProducts\Service\FilterSettingsEncoder;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class FilterSettingsEncoderViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
/**
* @var bool
*/
@@ -54,22 +51,16 @@ class FilterSettingsEncoderViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext
* @return mixed
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
public function render()
{
$argument = $renderChildrenClosure();
$argument = $this->renderChildren();
if ($argument === null) {
$argument = $arguments['argument'];
$argument = $this->arguments['argument'];
}
if ($argument === null) {
return '';
}
$encoder = new FilterSettingsEncoder();
return $encoder->encode($argument);
}
}
@@ -31,12 +31,9 @@ use EP\EpProducts\Domain\Model\Hotel;
use EP\EpProducts\Domain\Model\Region;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class GmapsUrlViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
/**
* @var bool
*/
@@ -60,14 +57,10 @@ class GmapsUrlViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext
* @return mixed
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
public function render()
{
$hotel = $arguments['hotel'];
$region = $arguments['region'];
$hotel = $this->arguments['hotel'];
$region = $this->arguments['region'];
if ($hotel !== null && $hotel->getLatitude() && $hotel->getLongitude()) {
$source = $hotel;
} elseif ($hotel !== null && $hotel->getRegion()->getLatitude() && $hotel->getRegion()->getLongitude()) {
@@ -77,7 +70,7 @@ class GmapsUrlViewHelper extends AbstractViewHelper
} else {
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()
{
parent::initializeArguments();
$this->registerUniversalTagAttributes();
$this->registerArgument('icon', 'string', 'Icon name', true);
}
@@ -6,23 +6,17 @@ use EP\EpProducts\Service\MyEpUrlResolverService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class MyEpUrlViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
/**
* @param array $arguments
* @param \Closure $renderChildrenClosure
* @param RenderingContextInterface $renderingContext
* @return string
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
): string {
public function render(): string
{
return GeneralUtility::makeInstance(MyEpUrlResolverService::class)->resolve();
}
}
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class NightsOptionsViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
public function initializeArguments()
{
parent::initializeArguments();
@@ -49,16 +46,12 @@ class NightsOptionsViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext
* @return mixed
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
public function render()
{
if ($arguments['daytrip']) {
if ($this->arguments['daytrip']) {
return 'Tageweise buchbar';
}
$options = $arguments['options'];
$options = $this->arguments['options'];
if ($options === null) {
return '';
}
@@ -74,7 +67,6 @@ class NightsOptionsViewHelper extends AbstractViewHelper
$output = $lastOption;
}
$output .= (int) $lastOption > 1 ? ' Nächte' : ' Nacht';
return $output;
}
@@ -30,12 +30,9 @@ namespace EP\EpTheme\ViewHelpers;
use EP\EpProducts\Domain\Model\Product;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class RatingViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
/**
* @var bool
*/
@@ -54,22 +51,17 @@ class RatingViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext
* @return mixed
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
public function render()
{
$product = $renderChildrenClosure();
$product = $this->renderChildren();
if ($product === null) {
$product = $arguments['product'];
$product = $this->arguments['product'];
}
$ratingAverage = $product->getRatingAverage();
$ratingVotesCount = $product->getRatingVotesCount();
$fullStars = floor($ratingAverage);
$halfStar = ($ratingAverage - $fullStars) > 0;
$ratingAverageLabel = number_format($ratingAverage, 1, ',', '.');
$content = '';
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 .= sprintf('%s Sterne (%d)', $ratingAverageLabel, $ratingVotesCount);
return $content;
}
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class ThemeClassesViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
public function initializeArguments()
{
parent::initializeArguments();
@@ -49,18 +46,12 @@ class ThemeClassesViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext
* @return mixed
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
public function render()
{
$themeKey = $arguments['key'];
if (!array_key_exists($themeKey, $arguments['classes'])) {
$themeKey = $this->arguments['key'];
if (!array_key_exists($themeKey, $this->arguments['classes'])) {
return '';
}
return $arguments['classes'][$themeKey];
return $this->arguments['classes'][$themeKey];
}
}
@@ -70,7 +70,7 @@ class AjaxViewHelper extends ActionViewHelper
// Use root page uid as target unless provided
if ($arguments['pageUid'] === null) {
$rootlineUtility = new RootlineUtility($GLOBALS['TSFE']->id);
$rootlineUtility = new RootlineUtility($GLOBALS['TYPO3_REQUEST']->getAttribute('frontend.page.information')->getId());
$rootline = $rootlineUtility->get();
$rootPage = array_pop($rootline);
$arguments['pageUid'] = $rootPage['uid'];
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers\Uri;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class ProductViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
public function initializeArguments()
{
parent::initializeArguments();
@@ -53,25 +50,21 @@ class ProductViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext
* @return mixed
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
) {
$product = $arguments['product'];
$hotel = $arguments['hotel'];
if ($arguments['forceHotelUid']) {
public function render()
{
$product = $this->arguments['product'];
$hotel = $this->arguments['hotel'];
if ($this->arguments['forceHotelUid']) {
// Product detail page with forced hotel
$linkArguments = [
'product' => is_array($product) ? $product['uid'] : $product,
'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
$linkArguments = [
'dateFrom' => $arguments['dateFrom'],
'dateTo' => $arguments['dateTo'],
'dateFrom' => $this->arguments['dateFrom'],
'dateTo' => $this->arguments['dateTo'],
];
} else {
// Default product detail page by product uid
@@ -79,24 +72,20 @@ class ProductViewHelper extends AbstractViewHelper
'product' => is_array($product) ? $product['uid'] : $product,
];
}
$targetPageUid = is_array($product) ? (int)$product['detailPage'] : $product->getDetailPage();
$uri = $renderingContext
$uri = $this->renderingContext
->getControllerContext()
->getUriBuilder()
->reset()
->setTargetPageUid($targetPageUid)
->uriFor('detail', $linkArguments, 'Product', 'epproducts', 'product_detail')
;
if ($arguments['ref']) {
$referringPageUri = urlencode($arguments['ref']);
if ($this->arguments['ref']) {
$referringPageUri = urlencode($this->arguments['ref']);
$hasQuery = null !== parse_url($uri, PHP_URL_QUERY);
$separator = $hasQuery ? '&' : '?';
$uri .= $separator . 'ref=' . $referringPageUri;
}
return $uri;
}
@@ -29,12 +29,9 @@ namespace EP\EpTheme\ViewHelpers\Uri;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
class VideoViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
/**
* @var bool
*/
@@ -54,21 +51,16 @@ class VideoViewHelper extends AbstractViewHelper
* @param RenderingContextInterface $renderingContext
* @return mixed
*/
public static function renderStatic(
array $arguments,
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
)
public function render()
{
// YouTube
if ((int) $arguments['layout'] === 0) {
return $arguments['value'] . '?rel=0&amp;controls=0&amp;showinfo=0';
if ((int) $this->arguments['layout'] === 0) {
return $this->arguments['value'] . '?rel=0&amp;controls=0&amp;showinfo=0';
}
// Vimeo
if ((int) $arguments['layout'] === 1) {
return sprintf('https://player.vimeo.com/video/%d?html5=1', $arguments['value']);
if ((int) $this->arguments['layout'] === 1) {
return sprintf('https://player.vimeo.com/video/%d?html5=1', $this->arguments['value']);
}
return '';
}
@@ -2,8 +2,10 @@
declare(strict_types = 1);
use EP\EpTheme\Domain\Model\Page;
return [
\EP\EpTheme\Domain\Model\Page::class => [
Page::class => [
'tableName' => 'pages',
],
];
@@ -1,6 +1,8 @@
<?php
defined('TYPO3_MODE') or die();
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function() {
@@ -29,7 +31,7 @@ call_user_func(function() {
'foreign_table' => 'tx_epproducts_domain_model_country',
'foreign_table_where' => 'ORDER BY name',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -45,7 +47,7 @@ call_user_func(function() {
'foreign_table' => 'tx_epproducts_domain_model_region',
'foreign_table_where' => 'ORDER BY name',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -113,7 +115,7 @@ call_user_func(function() {
'foreign_table' => 'tx_epproducts_domain_model_badge',
'foreign_table_where' => 'ORDER BY title',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'minitems' => 0,
'maxitems' => 1,
@@ -121,12 +123,12 @@ call_user_func(function() {
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
ExtensionManagementUtility::addTCAcolumns(
'pages',
$temporaryColumns
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
ExtensionManagementUtility::addToAllTCAtypes(
'pages',
'--div--;Kontext,
tx_eptheme_context_pacode,tx_eptheme_context_country,tx_eptheme_context_region,
@@ -138,7 +140,7 @@ call_user_func(function() {
'1,4'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
ExtensionManagementUtility::registerPageTSConfigFile(
'ep_theme',
'Configuration/TSconfig/Page/Main.tsconfig',
'EP Theme'
@@ -1,5 +1,7 @@
<?php
if (!defined('TYPO3_MODE')) die ('Access denied.');
use TYPO3\CMS\Core\Utility\ArrayUtility;
if (!defined('TYPO3')) die ('Access denied.');
$tca = [
'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
defined('TYPO3_MODE') or die();
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function () {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
ExtensionManagementUtility::addStaticFile(
'ep_theme',
'Configuration/TypoScript',
'EP Theme'
@@ -1,6 +1,8 @@
<?php
defined('TYPO3_MODE') or die();
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
call_user_func(function () {
@@ -12,7 +14,8 @@ call_user_func(function () {
'type' => 'input',
'default' => 'Details',
'size' => 30,
'eval' => 'trim,required'
'eval' => 'trim',
'required' => true
],
],
'tx_eptheme_context_country' => [
@@ -24,7 +27,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_country',
'foreign_table_where' => 'ORDER BY name ASC',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'default' => 0,
'minitems' => 0,
@@ -40,7 +43,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_region',
'foreign_table_where' => 'ORDER BY name ASC',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'default' => 0,
'minitems' => 0,
@@ -56,7 +59,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_city',
'foreign_table_where' => 'ORDER BY name ASC',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'default' => 0,
'minitems' => 0,
@@ -72,7 +75,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_hotel',
'foreign_table_where' => 'ORDER BY name ASC',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'default' => 0,
'minitems' => 0,
@@ -88,7 +91,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_concept',
'foreign_table_where' => 'ORDER BY name ASC',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'default' => 0,
'minitems' => 0,
@@ -104,7 +107,7 @@ call_user_func(function () {
'foreign_table' => 'tx_epproducts_domain_model_product',
'foreign_table_where' => 'ORDER BY name_internal, name ASC',
'items' => [
['Keine Zuordnung', 0],
['label' => 'Keine Zuordnung', 'value' => 0],
],
'default' => 0,
'minitems' => 0,
@@ -115,20 +118,18 @@ call_user_func(function () {
'exclude' => 0,
'label' => 'LLL:EXT:ep_theme/Resources/Private/Language/locallang.xlf:tx_eptheme_context.date_from',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 12,
'eval' => 'date,int',
'renderType' => 'inputDateTime',
'format' => 'date',
]
],
'tx_eptheme_context_date_to' => [
'exclude' => 0,
'label' => 'LLL:EXT:ep_theme/Resources/Private/Language/locallang.xlf:tx_eptheme_context.date_to',
'config' => [
'type' => 'input',
'type' => 'datetime',
'size' => 12,
'eval' => 'date,int',
'renderType' => 'inputDateTime',
'format' => 'date',
]
],
'tx_eptheme_background' => [
@@ -139,18 +140,18 @@ call_user_func(function () {
'renderType' => 'selectSingle',
'default' => 0,
'items' => [
[ 'ohne', 0 ],
[ 'oben', 1 ],
[ 'unten', 2 ],
[ 'oben und unten', 3 ],
[ 'label' => 'ohne', 'value' => 0 ],
[ 'label' => 'oben', 'value' => 1 ],
[ 'label' => 'unten', 'value' => 2 ],
[ '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',
'header',
'--linebreak--,
Loaded 100 of 119 files, more files were not shown because too many files have changed in this diff. Show more