Merge branch 'master' into develop

This commit is contained in:
Björn Fromme
2024-03-07 14:14:16 +01:00
5 changed files with 80 additions and 58 deletions
Generated
+48 -48
View File
@@ -2978,16 +2978,16 @@
}, },
{ {
"name": "symfony/cache", "name": "symfony/cache",
"version": "v5.4.35", "version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/cache.git", "url": "https://github.com/symfony/cache.git",
"reference": "db1adb004e2da984085d0178964eb6f319d3cba1" "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/cache/zipball/db1adb004e2da984085d0178964eb6f319d3cba1", "url": "https://api.github.com/repos/symfony/cache/zipball/a30f316214d908cf5874f700f3f3fb29ceee91ba",
"reference": "db1adb004e2da984085d0178964eb6f319d3cba1", "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3055,7 +3055,7 @@
"psr6" "psr6"
], ],
"support": { "support": {
"source": "https://github.com/symfony/cache/tree/v5.4.35" "source": "https://github.com/symfony/cache/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
@@ -3071,7 +3071,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-23T13:51:25+00:00" "time": "2024-02-19T13:08:14+00:00"
}, },
{ {
"name": "symfony/cache-contracts", "name": "symfony/cache-contracts",
@@ -3154,16 +3154,16 @@
}, },
{ {
"name": "symfony/config", "name": "symfony/config",
"version": "v5.4.35", "version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/config.git", "url": "https://github.com/symfony/config.git",
"reference": "6b763438a22a4f20885e994ad6702f6a3f25430e" "reference": "0a4f363dc2f13d2f871f917cc563796d9ddc78d1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/6b763438a22a4f20885e994ad6702f6a3f25430e", "url": "https://api.github.com/repos/symfony/config/zipball/0a4f363dc2f13d2f871f917cc563796d9ddc78d1",
"reference": "6b763438a22a4f20885e994ad6702f6a3f25430e", "reference": "0a4f363dc2f13d2f871f917cc563796d9ddc78d1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3213,7 +3213,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/config/tree/v5.4.35" "source": "https://github.com/symfony/config/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
@@ -3229,20 +3229,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-23T13:51:25+00:00" "time": "2024-02-23T16:13:23+00:00"
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v5.4.35", "version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931" "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/dbdf6adcb88d5f83790e1efb57ef4074309d3931", "url": "https://api.github.com/repos/symfony/console/zipball/39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e",
"reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931", "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3312,7 +3312,7 @@
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v5.4.35" "source": "https://github.com/symfony/console/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
@@ -3328,20 +3328,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-23T14:28:09+00:00" "time": "2024-02-20T16:33:57+00:00"
}, },
{ {
"name": "symfony/dependency-injection", "name": "symfony/dependency-injection",
"version": "v5.4.35", "version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/dependency-injection.git", "url": "https://github.com/symfony/dependency-injection.git",
"reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118" "reference": "cc1fb237cd0e6da33005062b13b8485deb6e4440"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/45474d527212ca67cdb93f6c5e6da68f4bc67118", "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/cc1fb237cd0e6da33005062b13b8485deb6e4440",
"reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118", "reference": "cc1fb237cd0e6da33005062b13b8485deb6e4440",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3401,7 +3401,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application", "description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/dependency-injection/tree/v5.4.35" "source": "https://github.com/symfony/dependency-injection/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
@@ -3417,7 +3417,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-29T20:37:36+00:00" "time": "2024-02-22T18:43:31+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
@@ -4151,16 +4151,16 @@
}, },
{ {
"name": "symfony/mailer", "name": "symfony/mailer",
"version": "v5.4.35", "version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/mailer.git", "url": "https://github.com/symfony/mailer.git",
"reference": "664724b0fb4646dee30859d0ed9131a2d7633320" "reference": "b57d722f2bf6e1dc08df9c86efbfdcaaba89693b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/mailer/zipball/664724b0fb4646dee30859d0ed9131a2d7633320", "url": "https://api.github.com/repos/symfony/mailer/zipball/b57d722f2bf6e1dc08df9c86efbfdcaaba89693b",
"reference": "664724b0fb4646dee30859d0ed9131a2d7633320", "reference": "b57d722f2bf6e1dc08df9c86efbfdcaaba89693b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4207,7 +4207,7 @@
"description": "Helps sending emails", "description": "Helps sending emails",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/mailer/tree/v5.4.35" "source": "https://github.com/symfony/mailer/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
@@ -4223,7 +4223,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-29T07:33:37+00:00" "time": "2024-02-01T13:42:14+00:00"
}, },
{ {
"name": "symfony/mime", "name": "symfony/mime",
@@ -5168,16 +5168,16 @@
}, },
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v5.4.35", "version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/process.git", "url": "https://github.com/symfony/process.git",
"reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb" "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/cbc28e34015ad50166fc2f9c8962d28d0fe861eb", "url": "https://api.github.com/repos/symfony/process/zipball/4fdf34004f149cc20b2f51d7d119aa500caad975",
"reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb", "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -5210,7 +5210,7 @@
"description": "Executes commands in sub-processes", "description": "Executes commands in sub-processes",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/process/tree/v5.4.35" "source": "https://github.com/symfony/process/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
@@ -5226,7 +5226,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-23T13:51:25+00:00" "time": "2024-02-12T15:49:53+00:00"
}, },
{ {
"name": "symfony/property-access", "name": "symfony/property-access",
@@ -5668,16 +5668,16 @@
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v5.4.35", "version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2" "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/c209c4d0559acce1c9a2067612cfb5d35756edc2", "url": "https://api.github.com/repos/symfony/string/zipball/4e232c83622bd8cd32b794216aa29d0d266d353b",
"reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2", "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -5734,7 +5734,7 @@
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v5.4.35" "source": "https://github.com/symfony/string/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
@@ -5750,20 +5750,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-23T13:51:25+00:00" "time": "2024-02-01T08:49:30+00:00"
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v5.4.35", "version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "ce4685b30e47d94dfc990c5566285ff99ddf012b" "reference": "2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/ce4685b30e47d94dfc990c5566285ff99ddf012b", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90",
"reference": "ce4685b30e47d94dfc990c5566285ff99ddf012b", "reference": "2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -5823,7 +5823,7 @@
"dump" "dump"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-dumper/tree/v5.4.35" "source": "https://github.com/symfony/var-dumper/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
@@ -5839,7 +5839,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-23T14:28:09+00:00" "time": "2024-02-15T11:19:14+00:00"
}, },
{ {
"name": "symfony/var-exporter", "name": "symfony/var-exporter",
@@ -126,7 +126,8 @@ class AjaxTableController extends ActionController
Product $product, Product $product,
Hotel $hotel, Hotel $hotel,
string $dateFrom = null, string $dateFrom = null,
string $dateTo = null string $dateTo = null,
string $bpnBookingUrlTemplateCode = null
): void { ): void {
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
$filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids); $filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids);
@@ -156,6 +157,7 @@ class AjaxTableController extends ActionController
'date' => $date['dateUid'], 'date' => $date['dateUid'],
'paCode' => $paCode, 'paCode' => $paCode,
'singleDate' => true, 'singleDate' => true,
'bpnBookingUrlTemplateCode' => $bpnBookingUrlTemplateCode ?? $this->settings['bpnBookingUrlTemplateCode'],
] ]
); );
} }
@@ -211,6 +213,7 @@ class AjaxTableController extends ActionController
'hasDiscount' => $hasSurchargeOrDiscount['discount'], 'hasDiscount' => $hasSurchargeOrDiscount['discount'],
'isProductWithNoInfoConcept' => $isProductWithNoInfoConcept, 'isProductWithNoInfoConcept' => $isProductWithNoInfoConcept,
'nonBookableInfo' => $nonBookableInfo, 'nonBookableInfo' => $nonBookableInfo,
'bpnBookingUrlTemplateCode' => $bpnBookingUrlTemplateCode,
]); ]);
} }
@@ -226,7 +229,8 @@ class AjaxTableController extends ActionController
Product $product, Product $product,
Hotel $hotel, Hotel $hotel,
Date $date, Date $date,
bool $singleDate = false bool $singleDate = false,
string $bpnBookingUrlTemplateCode = null
): void { ): void {
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
$filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids); $filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids);
@@ -236,7 +240,7 @@ class AjaxTableController extends ActionController
'hotel' => $hotel, 'hotel' => $hotel,
'filterSettings' => $filterSettings, 'filterSettings' => $filterSettings,
'date' => $date, 'date' => $date,
'template' => $this->settings['bpnBookingUrlTemplateCode'], 'template' => $bpnBookingUrlTemplateCode ?? $this->settings['bpnBookingUrlTemplateCode'],
'paCode' => GeneralUtility::_GET('pa'), 'paCode' => GeneralUtility::_GET('pa'),
]); ]);
$hasSurchargeOrDiscount = $this->dateService->checkSurcharcheOrDiscount($priceTable); $hasSurchargeOrDiscount = $this->dateService->checkSurcharcheOrDiscount($priceTable);
@@ -263,14 +267,16 @@ class AjaxTableController extends ActionController
'isProductWithNoInfoConcept' => $isProductWithNoInfoConcept, 'isProductWithNoInfoConcept' => $isProductWithNoInfoConcept,
'isSingleDate' => $singleDate, 'isSingleDate' => $singleDate,
'nonBookableInfo' => $nonBookableInfo, 'nonBookableInfo' => $nonBookableInfo,
'bpnBookingUrlTemplateCode' => $bpnBookingUrlTemplateCode ?? $this->settings['bpnBookingUrlTemplateCode'],
]); ]);
} }
/** /**
* @param Product $product * @param Product $product
* @param Hotel $hotel * @param Hotel $hotel
* @param string $bpnBookingUrlTemplateCode
*/ */
public function pricetableHtmlAction(Product $product, Hotel $hotel): void public function pricetableHtmlAction(Product $product, Hotel $hotel, string $bpnBookingUrlTemplateCode = null): void
{ {
if ($reseller = $this->resellerDataService->getResellerForCurrentDomain()) { if ($reseller = $this->resellerDataService->getResellerForCurrentDomain()) {
$paCode = $reseller['paCode']; $paCode = $reseller['paCode'];
@@ -290,12 +296,14 @@ class AjaxTableController extends ActionController
$this->view->assign('pricetable', $pricetable); $this->view->assign('pricetable', $pricetable);
$this->view->assign('nonBookableInfo', $nonBookableInfo); $this->view->assign('nonBookableInfo', $nonBookableInfo);
$this->view->assign('bpnBookingUrlTemplateCode', $bpnBookingUrlTemplateCode ?? $this->settings['bpnBookingUrlTemplateCode']);
} }
/** /**
* @param Product $product * @param Product $product
* @param string $bpnBookingUrlTemplateCode
*/ */
public function eventPricetableAction(Product $product): void public function eventPricetableAction(Product $product, string $bpnBookingUrlTemplateCode = null): void
{ {
$roomTypes = GeneralUtility::trimExplode(',', $this->settings['priceTableRoomTypes']); $roomTypes = GeneralUtility::trimExplode(',', $this->settings['priceTableRoomTypes']);
$roomTypesPax = array_map(function ($type) { $roomTypesPax = array_map(function ($type) {
@@ -325,6 +333,7 @@ class AjaxTableController extends ActionController
'categories' => $categories, 'categories' => $categories,
'themekey' => $this->settings['themekey'], 'themekey' => $this->settings['themekey'],
'nonBookableInfo' => $nonBookableInfo, 'nonBookableInfo' => $nonBookableInfo,
'bpnBookingUrlTemplateCode' => $bpnBookingUrlTemplateCode ?? $this->settings['bpnBookingUrlTemplateCode'],
]); ]);
} }
@@ -333,9 +342,15 @@ class AjaxTableController extends ActionController
* @param Product $product * @param Product $product
* @param string $dateFrom * @param string $dateFrom
* @param string $dateTo * @param string $dateTo
* @param string $bpnBookingUrlTemplateCode
*/ */
public function daytripRoomsAction(Hotel $hotel, Product $product, string $dateFrom, string $dateTo): void public function daytripRoomsAction(
{ Hotel $hotel,
Product $product,
string $dateFrom,
string $dateTo,
string $bpnBookingUrlTemplateCode = null
): void {
$period = new Period($dateFrom, $dateTo); $period = new Period($dateFrom, $dateTo);
$nights = (int)$period->dateInterval()->format('%a') + 1; $nights = (int)$period->dateInterval()->format('%a') + 1;
@@ -350,6 +365,7 @@ class AjaxTableController extends ActionController
$this->view->assign('nights', $nights); $this->view->assign('nights', $nights);
$this->view->assign('rooms', $rooms); $this->view->assign('rooms', $rooms);
$this->view->assign('bpnBookingUrlTemplateCode', $bpnBookingUrlTemplateCode ?? $this->settings['bpnBookingUrlTemplateCode']);
} }
/** /**
@@ -54,7 +54,13 @@
<button type="button" <button type="button"
class="text-left text-ep-primary-light ser:text-ser-primary text-sm md:text-base" class="text-left text-ep-primary-light ser:text-ser-primary text-sm md:text-base"
data-action="product-details#loadPrices" data-action="product-details#loadPrices"
data-product-details-prices-url-param="{ep:uri.ajax(action: 'pricetable', controller: 'AjaxTable', arguments: '{product: product, hotel: hotel, date: row.dateUid}', format: 'html', pageUid: settings.defaultAjaxUid)}"> data-product-details-prices-url-param="{ep:uri.ajax(
action: 'pricetable',
controller: 'AjaxTable',
arguments: '{product: product, hotel: hotel, date: row.dateUid, bookingUrlTemplateCode: bookingUrlTemplateCode}',
format: 'html',
pageUid: settings.defaultAjaxUid
)}">
{row.dateStart} - {row.dateEnd} {row.dateStart} - {row.dateEnd}
</button> </button>
</f:then> </f:then>
@@ -21,7 +21,7 @@
<h2>Buchungsoptionen</h2> <h2>Buchungsoptionen</h2>
<div class="ajax-content-wrapper" <div class="ajax-content-wrapper"
data-controller="ajax-content" data-controller="ajax-content"
data-ajax-content-uri-value="{ep:uri.ajax(action: 'pricetableHtml', controller: 'AjaxTable', pageUid: settings.defaultAjaxUid, arguments: '{product: product, hotel: hotel}', format: 'html')}"> data-ajax-content-uri-value="{ep:uri.ajax(action: 'pricetableHtml', controller: 'AjaxTable', pageUid: settings.defaultAjaxUid, arguments: '{product: product, hotel: hotel, bookingUrlTemplateCode: settings.bookingUrlTemplateCode}', format: 'html')}">
<div class="ajax-content" data-ajax-content-target="container"></div> <div class="ajax-content" data-ajax-content-target="container"></div>
<div data-ajax-content-target="trigger"> <div data-ajax-content-target="trigger">
<f:image src="EXT:ep_theme/Resources/Public/images/ajax-loader-white.gif" alt="Loading" title="Loading"/> <f:image src="EXT:ep_theme/Resources/Public/images/ajax-loader-white.gif" alt="Loading" title="Loading"/>
@@ -14,7 +14,7 @@
<f:else> <f:else>
data-controller="product-details" data-controller="product-details"
data-action="tabs:selected->product-details#switchView" data-action="tabs:selected->product-details#switchView"
data-product-details-datestable-uri-value="{ep:uri.ajax(action: 'datestable', controller: 'AjaxTable', arguments: '{product: product, hotel: hotel}', format: 'html', pageUid: settings.defaultAjaxUid)}" data-product-details-datestable-uri-value="{ep:uri.ajax(action: 'datestable', controller: 'AjaxTable', arguments: '{product: product, hotel: hotel, bpnBookingUrlTemplateCode: settings.bpnBookingUrlTemplateCode}', format: 'html', pageUid: settings.defaultAjaxUid)}"
data-product-details-disable-tables-value="{f:if(condition: hotel.groupsPriceConfigs, then: 'true', else: 'false')}" data-product-details-disable-tables-value="{f:if(condition: hotel.groupsPriceConfigs, then: 'true', else: 'false')}"
</f:else> </f:else>
</f:if> </f:if>