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:
1 parent
1b958a6084
commit
41b9302d9b
119 files changed
+2211
-2581
No files matched your search
@@ -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&controls=0&showinfo=0';
|
||||
if ((int) $this->arguments['layout'] === 0) {
|
||||
return $this->arguments['value'] . '?rel=0&controls=0&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--,
|
||||
|
||||
@@ -1,23 +1,25 @@
|
||||
<?php
|
||||
|
||||
defined('TYPO3_MODE') or die();
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Button',
|
||||
'button',
|
||||
'content-image'
|
||||
'label' => 'Button',
|
||||
'value' => 'button',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'ytvideo',
|
||||
'after'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
|
||||
ExtensionManagementUtility::addFieldsToPalette(
|
||||
'tt_content',
|
||||
'tx_eptheme_button',
|
||||
'header,header_link'
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
<?php
|
||||
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use B13\Container\Tca\Registry;
|
||||
use B13\Container\Tca\ContainerConfiguration;
|
||||
|
||||
call_user_func(function () {
|
||||
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\B13\Container\Tca\Registry::class)->configureContainer(
|
||||
new \B13\Container\Tca\ContainerConfiguration(
|
||||
GeneralUtility::makeInstance(Registry::class)->configureContainer(
|
||||
new ContainerConfiguration(
|
||||
'ep_container_quarters',
|
||||
'Vierspalter',
|
||||
'25/25/25/25 Aufteilung mit groß/klein Umschaltung',
|
||||
@@ -14,8 +18,8 @@ call_user_func(function () {
|
||||
)
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\B13\Container\Tca\Registry::class)->configureContainer(
|
||||
new \B13\Container\Tca\ContainerConfiguration(
|
||||
GeneralUtility::makeInstance(Registry::class)->configureContainer(
|
||||
new ContainerConfiguration(
|
||||
'ep_container_teasergroup',
|
||||
'Dreispalter',
|
||||
'33/33/33 Aufteilung mit groß/klein Umschaltung',
|
||||
|
||||
@@ -1,101 +1,103 @@
|
||||
<?php
|
||||
|
||||
defined('TYPO3_MODE') or die();
|
||||
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
call_user_func(function() {
|
||||
$frontendLanguageFilePrefix = 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:';
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Teaser allgemein',
|
||||
'teaser',
|
||||
'content-image'
|
||||
'label' => 'Teaser allgemein',
|
||||
'value' => 'teaser',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'textmedia',
|
||||
'after'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Teaser Land',
|
||||
'teaser_country',
|
||||
'content-image'
|
||||
'label' => 'Teaser Land',
|
||||
'value' => 'teaser_country',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser',
|
||||
'after'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Teaser Gebiet',
|
||||
'teaser_region',
|
||||
'content-image'
|
||||
'label' => 'Teaser Gebiet',
|
||||
'value' => 'teaser_region',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser_country',
|
||||
'after'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Teaser Ort',
|
||||
'teaser_city',
|
||||
'content-image'
|
||||
'label' => 'Teaser Ort',
|
||||
'value' => 'teaser_city',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser_region',
|
||||
'after'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Teaser Hotel',
|
||||
'teaser_hotel',
|
||||
'content-image'
|
||||
'label' => 'Teaser Hotel',
|
||||
'value' => 'teaser_hotel',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser_city',
|
||||
'after'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Teaser Konzept',
|
||||
'teaser_concept',
|
||||
'content-image'
|
||||
'label' => 'Teaser Konzept',
|
||||
'value' => 'teaser_concept',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser_hotel',
|
||||
'after'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Teaser Produkt',
|
||||
'teaser_product',
|
||||
'content-image'
|
||||
'label' => 'Teaser Produkt',
|
||||
'value' => 'teaser_product',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser_concept',
|
||||
'after'
|
||||
);
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
|
||||
ExtensionManagementUtility::addTcaSelectItem(
|
||||
'tt_content',
|
||||
'CType',
|
||||
[
|
||||
'Teaser Buchungslink',
|
||||
'teaser_booking_link',
|
||||
'content-image'
|
||||
'label' => 'Teaser Buchungslink',
|
||||
'value' => 'teaser_booking_link',
|
||||
'icon' => 'content-image'
|
||||
],
|
||||
'teaser_concept',
|
||||
'after'
|
||||
@@ -130,7 +132,11 @@ call_user_func(function() {
|
||||
],
|
||||
'assets' => [
|
||||
'label' => 'Teaserbild',
|
||||
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('assets', [
|
||||
'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']['SYS']['mediafile_ext'],
|
||||
'appearance' => [
|
||||
'createNewRelationLinkTitle' => 'Hinzufügen'
|
||||
],
|
||||
@@ -163,7 +169,7 @@ call_user_func(function() {
|
||||
],
|
||||
'maxitems' => 1,
|
||||
'minitems' => 0,
|
||||
], $GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext'])
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
$GLOBALS['TCA']['tx_eptheme_domain_model_badge']['ctrl']['security']['ignorePageTypeRestriction'] = true;
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
$GLOBALS['TCA']['tx_eptheme_domain_model_slide']['ctrl']['security']['ignorePageTypeRestriction'] = true;
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
use TYPO3\CMS\Core\Resource\FileType;
|
||||
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'Slide',
|
||||
@@ -6,7 +9,6 @@ return [
|
||||
'label' => 'headline',
|
||||
'tstamp' => 'tstamp',
|
||||
'crdate' => 'crdate',
|
||||
'cruser_id' => 'cruser_id',
|
||||
'dividers2tabs' => true,
|
||||
'versioningWS' => true,
|
||||
'hideTable' => true,
|
||||
@@ -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',
|
||||
'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',
|
||||
@@ -57,7 +49,7 @@ return [
|
||||
'default' => 0,
|
||||
'renderType' => 'selectSingle',
|
||||
'items' => [
|
||||
['', 0],
|
||||
['label' => '', 'value' => 0],
|
||||
],
|
||||
'foreign_table' => 'tx_eptheme_domain_model_slide',
|
||||
'foreign_table_where' => 'AND tx_eptheme_domain_model_slide.pid=###CURRENT_PID### AND tx_eptheme_domain_model_slide.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',
|
||||
],
|
||||
],
|
||||
'sorting' => [
|
||||
@@ -159,73 +147,73 @@ return [
|
||||
'exclude' => 0,
|
||||
'label' => 'LLL:EXT:ep_theme/Resources/Private/Language/locallang_db.xlf:tx_eptheme_domain_model_slide.page_uid',
|
||||
'config' => [
|
||||
'type' => 'input',
|
||||
'type' => 'link',
|
||||
'size' => 20,
|
||||
'renderType' => 'inputLink',
|
||||
]
|
||||
],
|
||||
'image' => [
|
||||
'exclude' => 0,
|
||||
'label' => 'Bild',
|
||||
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
|
||||
'images',
|
||||
[
|
||||
'appearance' => [
|
||||
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference',
|
||||
'fileUploadAllowed' => false,
|
||||
],
|
||||
'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' => 'jpg,jpeg',
|
||||
'appearance' => [
|
||||
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference',
|
||||
'fileUploadAllowed' => false,
|
||||
],
|
||||
'overrideChildTca' => [
|
||||
'types' => [
|
||||
FileType::IMAGE->value => [
|
||||
'showitem' => '
|
||||
--palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
|
||||
--palette--;;filePalette'
|
||||
],
|
||||
],
|
||||
'columns' => [
|
||||
'crop' => [
|
||||
'config' => [
|
||||
'cropVariants' => [
|
||||
'default' => [
|
||||
'title' => 'Alle Geräte',
|
||||
'allowedAspectRatios' => [
|
||||
'contentSlider' => [
|
||||
'title' => 'Content Slider/Galerie',
|
||||
'value' => 1.59,
|
||||
],
|
||||
'contentSliderProduct' => [
|
||||
'title' => 'Content Slider/Galerie Produkttexte',
|
||||
'value' => 1.79069767,
|
||||
],
|
||||
'sliderProductHeader' => [
|
||||
'title' => 'Slider Produkt-Header',
|
||||
'value' => 1.625,
|
||||
],
|
||||
'sliderPageHeader' => [
|
||||
'title' => 'Slider Seiten-Header',
|
||||
'value' => 3.805,
|
||||
],
|
||||
'sliderPageHeaderHome' => [
|
||||
'title' => 'Slider Seiten-Header Startseite',
|
||||
'value' => 1370 / 585,
|
||||
],
|
||||
'free' => [
|
||||
'title' => 'Frei',
|
||||
'value' => 'NaN',
|
||||
],
|
||||
],
|
||||
'columns' => [
|
||||
'crop' => [
|
||||
'config' => [
|
||||
'cropVariants' => [
|
||||
'default' => [
|
||||
'title' => 'Alle Geräte',
|
||||
'allowedAspectRatios' => [
|
||||
'contentSlider' => [
|
||||
'title' => 'Content Slider/Galerie',
|
||||
'value' => 1.59,
|
||||
],
|
||||
'contentSliderProduct' => [
|
||||
'title' => 'Content Slider/Galerie Produkttexte',
|
||||
'value' => 1.79069767,
|
||||
],
|
||||
'sliderProductHeader' => [
|
||||
'title' => 'Slider Produkt-Header',
|
||||
'value' => 1.625,
|
||||
],
|
||||
'sliderPageHeader' => [
|
||||
'title' => 'Slider Seiten-Header',
|
||||
'value' => 3.805,
|
||||
],
|
||||
'sliderPageHeaderHome' => [
|
||||
'title' => 'Slider Seiten-Header Startseite',
|
||||
'value' => 1370 / 585,
|
||||
],
|
||||
'free' => [
|
||||
'title' => 'Frei',
|
||||
'value' => 'NaN',
|
||||
],
|
||||
],
|
||||
'mobile' => [
|
||||
'title' => 'Mobile',
|
||||
'allowedAspectRatios' => [
|
||||
'sliderPageHeader' => [
|
||||
'title' => 'Slider Seiten-Header',
|
||||
'value' => 1,
|
||||
],
|
||||
'free' => [
|
||||
'title' => 'Frei',
|
||||
'value' => 'NaN',
|
||||
],
|
||||
],
|
||||
'mobile' => [
|
||||
'title' => 'Mobile',
|
||||
'allowedAspectRatios' => [
|
||||
'sliderPageHeader' => [
|
||||
'title' => 'Slider Seiten-Header',
|
||||
'value' => 1,
|
||||
],
|
||||
'free' => [
|
||||
'title' => 'Frei',
|
||||
'value' => 'NaN',
|
||||
],
|
||||
],
|
||||
],
|
||||
@@ -233,11 +221,10 @@ return [
|
||||
],
|
||||
],
|
||||
],
|
||||
'maxitems' => 1,
|
||||
'minitems' => 1,
|
||||
],
|
||||
'jpg,jpeg'
|
||||
),
|
||||
'maxitems' => 1,
|
||||
'minitems' => 1,
|
||||
],
|
||||
],
|
||||
'page' => [
|
||||
'exclude' => 0,
|
||||
|
||||
-1
@@ -19,4 +19,3 @@ mod.web_layout.BackendLayouts {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
TCEFORM {
|
||||
tt_content {
|
||||
CType {
|
||||
# Remove content elements added by EXT:ep_events
|
||||
removeItems := addToList(tile, statement, herounit, banner)
|
||||
}
|
||||
CType {
|
||||
# Remove content elements added by EXT:ep_events
|
||||
removeItems := addToList(tile, statement, herounit, banner)
|
||||
}
|
||||
|
||||
imageorient.removeItems := addToList(0,1,2,8,9,25,26)
|
||||
imageorient.disabled = 1
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
tt_content.list.dataProcessing {
|
||||
10 = EP\EpTheme\DataProcessing\FlexFormProcessor
|
||||
}
|
||||
|
||||
@@ -11,4 +11,3 @@ lib.contentElement {
|
||||
settings.mapApiKey = {$plugin.tx_eptheme.settings.mapApiKey}
|
||||
settings.mapAttribution = {$plugin.tx_eptheme.settings.mapAttribution}
|
||||
}
|
||||
|
||||
@@ -15,4 +15,4 @@ plugin.tx_seo {
|
||||
}
|
||||
}
|
||||
}
|
||||
[END]
|
||||
[end]
|
||||
@@ -2,9 +2,7 @@ lib.tue_sitemapcsv = COA_INT
|
||||
lib.tue_sitemapcsv {
|
||||
5 = TEXT
|
||||
5 {
|
||||
value (
|
||||
"URL";"Latest change";"Doktype";"Title";"Nav Title";"Description"
|
||||
)
|
||||
value = "URL";"Latest change";"Doktype";"Title";"Nav Title";"Description"
|
||||
}
|
||||
10 = COA
|
||||
10 {
|
||||
@@ -92,10 +90,7 @@ lib.tue_sitemapcsv {
|
||||
}
|
||||
100 = TEXT
|
||||
100 {
|
||||
value (
|
||||
|
||||
|
||||
)
|
||||
value =
|
||||
}
|
||||
}
|
||||
20 = HMENU
|
||||
@@ -119,17 +114,16 @@ lib.tue_sitemapcsv {
|
||||
}
|
||||
|
||||
[backend.user.isLoggedIn]
|
||||
sitemapcsv = PAGE
|
||||
sitemapcsv {
|
||||
typeNum = 888
|
||||
config {
|
||||
disableAllHeaderCode = 1
|
||||
xhtml_cleaning = 0
|
||||
admPanel = 0
|
||||
debug = 0
|
||||
additionalHeaders = Content-type:text/csv;charset=utf-8|Content-Disposition:attachment; filename="sitemap.csv"
|
||||
}
|
||||
10 < lib.tue_sitemapcsv
|
||||
sitemapcsv = PAGE
|
||||
sitemapcsv {
|
||||
typeNum = 888
|
||||
config {
|
||||
disableAllHeaderCode = 1
|
||||
xhtml_cleaning = 0
|
||||
admPanel = 0
|
||||
debug = 0
|
||||
additionalHeaders = Content-type:text/csv;charset=utf-8|Content-Disposition:attachment; filename="sitemap.csv"
|
||||
}
|
||||
[END]
|
||||
|
||||
10 < lib.tue_sitemapcsv
|
||||
}
|
||||
[end]
|
||||
@@ -188,24 +188,24 @@ page {
|
||||
}
|
||||
}
|
||||
|
||||
[page["backend_layout"] == 'pagets__popup']
|
||||
page.bodyTagCObject >
|
||||
page.bodyTagCObject = TEXT
|
||||
page.bodyTagCObject.value = <body class="antialiased text-zinc-800 font-sans bg-white p-4">
|
||||
page.headerData.333 >
|
||||
[traverse(page, "backend_layout") == 'pagets__popup']
|
||||
page.bodyTagCObject >
|
||||
page.bodyTagCObject = TEXT
|
||||
page.bodyTagCObject.value = <body class="antialiased text-zinc-800 font-sans bg-white p-4">
|
||||
page.headerData.333 >
|
||||
# page.headerData.990 >
|
||||
# page.headerData.995 >
|
||||
[end]
|
||||
|
||||
[page["backend_layout"] == 'pagets__travelinfo']
|
||||
page.bodyTagCObject >
|
||||
page.bodyTagCObject = TEXT
|
||||
page.bodyTagCObject.value = <body class="antialiased text-zinc-800 font-sans bg-white">
|
||||
[traverse(page, "backend_layout") == 'pagets__travelinfo']
|
||||
page.bodyTagCObject >
|
||||
page.bodyTagCObject = TEXT
|
||||
page.bodyTagCObject.value = <body class="antialiased text-zinc-800 font-sans bg-white">
|
||||
[end]
|
||||
|
||||
[request.getNormalizedParams() && like(request.getNormalizedParams().getHttpUserAgent(), "*Googlebot*")]
|
||||
page.headerData.990 >
|
||||
page.headerData.995 >
|
||||
page.headerData.990 >
|
||||
page.headerData.995 >
|
||||
[end]
|
||||
|
||||
#[applicationContext == "Development" || applicationContext == "Production/Staging"]
|
||||
|
||||
@@ -100,15 +100,13 @@ tt_content.menu_section.dataProcessing.10.includeNotInMenu = 1
|
||||
config {
|
||||
compressJs = 1
|
||||
compressCss = 1
|
||||
typolinkCheckRootline = 1
|
||||
typolinkEnableLinksAcrossDomains = 1
|
||||
sendCacheHeaders = 1
|
||||
content_from_pid_allowOutsideDomain = 1
|
||||
inlineStyle2TempFile = 0
|
||||
additionalHeaders {
|
||||
# 10 {
|
||||
# header = Content-Security-Policy: default-src 'self' 'unsafe-inline'; connect-src 'self' https://my.ep-reisen.de/;
|
||||
# }
|
||||
# 10 {
|
||||
# header = Content-Security-Policy: default-src 'self' 'unsafe-inline'; connect-src 'self' https://my.ep-reisen.de/;
|
||||
# }
|
||||
20 {
|
||||
header = Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff version="1.0">
|
||||
<file source-language="en" target-language="de" datatype="plaintext" original="messages"
|
||||
date="2015-11-18T11:00:00Z" product-name="theme">
|
||||
<file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2015-11-18T11:00:00Z" product-name="theme">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="tx_eptheme_domain_model_slider">
|
||||
@@ -31,7 +30,6 @@
|
||||
<trans-unit id="tx_eptheme_domain_model_slide.page_uid">
|
||||
<target>Link</target>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="tx_eptheme.label.teaserbutton.default">
|
||||
<target>Details</target>
|
||||
</trans-unit>
|
||||
@@ -71,14 +69,12 @@
|
||||
<trans-unit id="tx_eptheme_domain_model_lineup.youtube_url">
|
||||
<target>Youtube URL</target>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="tx_eptheme_context.date_from">
|
||||
<target>Datum von</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_eptheme_context.date_to">
|
||||
<target>Datum bis</target>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="tx_eptheme.message.contactForm.name.1221560718">
|
||||
<target>Bitte angeben</target>
|
||||
</trans-unit>
|
||||
@@ -97,14 +93,12 @@
|
||||
<trans-unit id="tx_eptheme.message.contactForm.email.1221559976">
|
||||
<target>Bitte gib eine gültige E-Mail Adresse an</target>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="tx_eptheme.message.newsletter.listIds.1347992400">
|
||||
<target>Bitte wähle mindestens einen Newsletter</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_eptheme.message.newsletter.consent.1361959228">
|
||||
<target>Bitte stimme den Datenschutzbestimmungen zu</target>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="label.whatsapp_instructions">
|
||||
<target>Nummer einfach als neuen Kontakt abspeichern und los geht es! Wir beraten Dich über WhatsApp!</target>
|
||||
</trans-unit>
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
<trans-unit id="tx_eptheme_domain_model_slide.page_uid">
|
||||
<source>Link</source>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="tx_eptheme.label.teaserbutton.default">
|
||||
<source>Details</source>
|
||||
</trans-unit>
|
||||
@@ -70,14 +69,12 @@
|
||||
<trans-unit id="tx_eptheme_domain_model_lineup.youtube_url">
|
||||
<source>Youtube URL</source>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="tx_eptheme_context.date_from">
|
||||
<source>Datum von</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_eptheme_context.date_to">
|
||||
<source>Datum bis</source>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="tx_eptheme.message.contactForm.name.1221560718">
|
||||
<source>Bitte angeben</source>
|
||||
</trans-unit>
|
||||
@@ -123,7 +120,6 @@
|
||||
<trans-unit id="tx_eptheme.message.confirmation.1361959228">
|
||||
<source>Deine Bestätigung ist erforderlich</source>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="label.whatsapp_instructions">
|
||||
<source>Nummer einfach als neuen Kontakt abspeichern und los geht es! Wir beraten Dich über WhatsApp!</source>
|
||||
</trans-unit>
|
||||
|
||||
@@ -7,11 +7,7 @@ $EM_CONF[$_EXTKEY] = [
|
||||
'author' => 'Björn Fromme',
|
||||
'author_email' => '[email protected]',
|
||||
'state' => 'beta',
|
||||
'internal' => '',
|
||||
'uploadfolder' => true,
|
||||
'createDirs' => '',
|
||||
'dividers2tabs' => true,
|
||||
'clearCacheOnLoad' => 0,
|
||||
'version' => '3.0.0',
|
||||
'constraints' => [
|
||||
'depends' => [],
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
<?php
|
||||
defined('TYPO3_MODE') or die();
|
||||
use TYPO3\CMS\Core\Log\LogLevel;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Core\MetaTag\MetaTagManagerRegistry;
|
||||
use EP\EpTheme\MetaTag\OpenGraphMetaTagManager;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
$boot = function () {
|
||||
$GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['namespaces']['ep'] = ['Ep\\EpTheme\\ViewHelpers'];
|
||||
$GLOBALS['TYPO3_CONF_VARS']['LOG']['TYPO3']['CMS']['deprecations']['writerConfiguration'][\TYPO3\CMS\Core\Log\LogLevel::NOTICE] = [];
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields'] = 'tx_eptheme_slides';
|
||||
$GLOBALS['TYPO3_CONF_VARS']['LOG']['TYPO3']['CMS']['deprecations']['writerConfiguration'][LogLevel::NOTICE] = [];
|
||||
|
||||
$GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['default'] = 'EXT:ep_theme/Configuration/RTE/Default.yaml';
|
||||
$GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['ep-reisen'] = 'EXT:ep_theme/Configuration/RTE/Default.yaml';
|
||||
@@ -14,10 +17,10 @@ $boot = function () {
|
||||
$GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['namespaces']['ep'] = ['EP\\EpTheme\\ViewHelpers'];
|
||||
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['format'] = 'html';
|
||||
|
||||
$metaTagManagerRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\MetaTag\MetaTagManagerRegistry::class);
|
||||
$metaTagManagerRegistry = GeneralUtility::makeInstance(MetaTagManagerRegistry::class);
|
||||
$metaTagManagerRegistry->registerManager(
|
||||
'ep_opengraph',
|
||||
\EP\EpTheme\MetaTag\OpenGraphMetaTagManager::class
|
||||
OpenGraphMetaTagManager::class
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<?php
|
||||
|
||||
defined('TYPO3_MODE') or die();
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Core\Imaging\IconRegistry;
|
||||
use TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider;
|
||||
|
||||
defined('TYPO3') or die();
|
||||
|
||||
call_user_func(function () {
|
||||
if ($GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields'] !== '') {
|
||||
@@ -8,14 +12,11 @@ call_user_func(function () {
|
||||
}
|
||||
$GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields'] .= 'og_image';
|
||||
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_eptheme_domain_model_slide');
|
||||
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_eptheme_domain_model_badge');
|
||||
|
||||
if (TYPO3_MODE === 'BE') {
|
||||
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
|
||||
$iconRegistry = GeneralUtility::makeInstance(IconRegistry::class);
|
||||
$iconRegistry->registerIcon(
|
||||
'content-ep_theme-ce',
|
||||
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
|
||||
SvgIconProvider::class,
|
||||
['source' => 'EXT:ep_theme/Resources/Public/images/logo.svg']
|
||||
);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user