From 4c74a3d0e985c2f6e3a77829e016edc7763b3402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 5 Jul 2023 15:14:48 +0200 Subject: [PATCH] Feat: Use GET to fetch tables via ajax to make use of cache --- .../Controller/AjaxTableController.php | 9 ++----- .../controllers/product_details_controller.js | 25 ++++++------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/public/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php b/public/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php index 4f08fb95..3bbc1ddd 100644 --- a/public/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php +++ b/public/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php @@ -125,7 +125,6 @@ class AjaxTableController extends ActionController ( Product $product, Hotel $hotel, - string $paCode = null, string $dateFrom = null, string $dateTo = null ): void { @@ -133,6 +132,7 @@ class AjaxTableController extends ActionController $filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids); $filterSettings['dateFrom'] = $dateFrom; $filterSettings['dateTo'] = $dateTo; + $paCode = GeneralUtility::_GET('pa'); $dates = $this->dateService->getDatesTable([ 'product' => $product, @@ -226,23 +226,18 @@ class AjaxTableController extends ActionController Product $product, Hotel $hotel, Date $date, - string $paCode = null, bool $singleDate = false ): void { $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); $filterSettings = $this->filterService->getNormalizedFilterSettings([], $forcedConceptUids); -// if ($reseller = $this->resellerDataService->getResellerForCurrentDomain()) { -// $paCode = $reseller['paCode']; -// } - $priceTable = $this->dateService->getPriceTable([ 'product' => $product, 'hotel' => $hotel, 'filterSettings' => $filterSettings, 'date' => $date, 'template' => $this->settings['bpnBookingUrlTemplateCode'], - 'paCode' => $paCode, + 'paCode' => GeneralUtility::_GET('pa'), ]); $hasSurchargeOrDiscount = $this->dateService->checkSurcharcheOrDiscount($priceTable); diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/product_details_controller.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/product_details_controller.js index f1a2e1a5..793c8cf1 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/product_details_controller.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/product_details_controller.js @@ -1,4 +1,4 @@ -import { Controller } from 'stimulus' +import { Controller } from '@hotwired/stimulus' import { useFetch } from '../mixins/use_fetch' import { useConfig } from '../mixins/use_config' @@ -13,8 +13,6 @@ export default class extends Controller { static values = { datestableUri: String, - pricetableUri: String, - travelAlertUri: String, loading: Boolean, loaded: Boolean, mode: String, @@ -53,13 +51,11 @@ export default class extends Controller { return } this.loadingValue = true - this.datesTableContainerTarget.innerHTML = '' let paCode = this.getConfig().paCode const data = new URLSearchParams() - if (paCode) { - data.append('tx_epproducts_ajax[paCode]', paCode) - } - fetch(this.datestableUriValue, { method: 'POST', body: data }) + data.append('pa', paCode) + this.datesTableContainerTarget.innerHTML = '' + fetch(`${this.datestableUriValue}&${data}`) .then(this.checkStatus) .then(this.parseHTML) .then(html => { @@ -71,19 +67,14 @@ export default class extends Controller { }) } - loadPrices(e) { + loadPrices({ params }) { this.loadingValue = true this.priceTableContainerTarget.innerHTML = '' this.modeValue = 'prices' - let dateUid = e.currentTarget.dataset.dateUid - const data = new URLSearchParams({ - 'tx_epproducts_ajax[date]': dateUid, - }) let paCode = this.getConfig().paCode - if (paCode) { - data.append('tx_epproducts_ajax[paCode]', paCode) - } - fetch(this.pricetableUriValue, { method: 'POST', body: data }) + const data = new URLSearchParams() + data.append('pa', paCode) + fetch(`${params.pricesUrl}&${data}`) .then(this.checkStatus) .then(this.parseHTML) .then(html => {