+
Buchungsoptionen
{{dateLabel}}
@@ -130,6 +130,10 @@
singleDate: {
type: Boolean,
default: false
+ },
+ showHeader: {
+ typoe: Boolean,
+ default: true
}
},
data () {
diff --git a/web/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/ProductDetail.vue b/web/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/ProductDetail.vue
index 6c7f1fef..320b5953 100644
--- a/web/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/ProductDetail.vue
+++ b/web/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/ProductDetail.vue
@@ -6,6 +6,7 @@
import PriceTable from './PriceTable.vue'
import ServicesIncluded from './ServicesListIncluded.vue'
import ServicesOptional from './ServicesListOptional.vue'
+ import DateSelect from './DateSelect.vue'
import DaterangeSelect from './DaterangeSelect.vue'
import AjaxContent from './AjaxContent.vue'
import Calendar from './Calendar.vue'
@@ -21,6 +22,7 @@
PriceTable,
ServicesIncluded,
ServicesOptional,
+ DateSelect,
DaterangeSelect,
AjaxContent,
Calendar,
@@ -47,7 +49,42 @@
singleDate: false
}
},
- props: [ 'filterSettings', 'argumentPrefix', 'uris', 'hotelFirst', 'fbPixelData', 'watchlist' ],
+ props: {
+ filterSettings: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ argumentPrefix: {
+ type: String,
+ required: true
+ },
+ uris: {
+ type: Object,
+ required: true
+ },
+ hotelFirst: {
+ type: Boolean,
+ default: false
+ },
+ fbPixelData: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ watchlist: {
+ type: Array,
+ default () {
+ return []
+ }
+ },
+ daytrip: {
+ type: Number,
+ default: 0
+ }
+ },
computed: {
dateLabel () {
return this.dateStart + ' - ' + this.dateEnd;
@@ -79,10 +116,36 @@
this.loading = false;
EventBus.$emit('tableLoaded');
}, 'json');
-
+ },
+ loadSelectableDates () {
+ this.loading = true;
+ this.datesShow = true;
+ this.priceTableShow = false;
+ this.detailShow = false;
+ let query = {};
+ query[this.argumentPrefix + '[product]'] = this.filterSettings;
+ $.post(this.uris['dateslist'], query, (json) => {
+ if (json.dates.length === 1) {
+ this.singleDate = true;
+ let dateRow = json.dates[0];
+ this.loadPriceTableView(dateRow.dateUid);
+ } else {
+ this.singleDate = false;
+ this.datesRows = json.dates;
+ this.bookable = json.bookable;
+ this.altLabel = json.altLabel;
+ this.altProductLink = json.altProductLink;
+ this.loading = false;
+ }
+ }, 'json');
},
loadDatesView (scroll = true) {
- this.loadDates();
+ if (this.daytrip) {
+ this.loading = false;
+ this.datesShow = true;
+ } else {
+ this.loadDates();
+ }
this.activeSection = 'dates';
if (scroll) {
this.scrollToMain();
diff --git a/web/typo3conf/ext/ep_theme/Resources/Private/Templates/Product/Detail.html b/web/typo3conf/ext/ep_theme/Resources/Private/Templates/Product/Detail.html
index d0683aa8..64ab90d0 100644
--- a/web/typo3conf/ext/ep_theme/Resources/Private/Templates/Product/Detail.html
+++ b/web/typo3conf/ext/ep_theme/Resources/Private/Templates/Product/Detail.html
@@ -13,13 +13,16 @@
",
- pricetable: "{ep:uri.ajax(action: 'pricetable', controller: 'AjaxTable', pageUid: settings.defaultAjaxUid, arguments: '{product: product, hotel: hotel}', format: 'json')}"
+ dates: "{ep:uri.ajax(action: 'dates', controller: 'AjaxDate', arguments: '{product: product, hotel: hotel}', format: 'json', noCacheHash: 1)}",
+ contingents: "{ep:uri.ajax(action: 'list', controller: 'AjaxContingent', format: 'json', noCacheHash: 1)}",
+ rooms: "{ep:uri.ajax(action: 'rooms', controller: 'AjaxContingent', format: 'json', noCacheHash: 1)}",
+ pricetable: "{ep:uri.ajax(action: 'pricetable', controller: 'AjaxTable', arguments: '{product: product, hotel: hotel}', format: 'json', noCacheHash: 1)}"
}'
argument-prefix=''
:hotel-first="{f:if(condition: settings.hotelOnTop, then: 'true', else: 'false')}"
:fb-pixel-data="{ productUid: {product.uid}, nameInternal: '{product.nameInternal}' }"
:watchlist="watchlist"
+ :daytrip="{product.daytrip -> v:variable.convert(type: 'int')}"
inline-template>
@@ -128,23 +131,37 @@
-
-
-
-
+
+
+
+
-
-
- Die von dir gewählte Reise ist aktuell nicht buchbar, aber wir helfen dir gerne dabei,
- eine andere Reise zu finden. Ruf uns an unter
{settings.phoneNumber}
- oder schreibe an
.
-
+
+
+
+
+
+
+ Die von dir gewählte Reise ist aktuell nicht buchbar, aber wir helfen dir gerne dabei,
+ eine andere Reise zu finden. Ruf uns an unter
{settings.phoneNumber}
+ oder schreibe an
.
+
+
+
+
@@ -152,7 +169,8 @@
diff --git a/web/typo3conf/realurl_conf.php b/web/typo3conf/realurl_conf.php
index c0ff852f..ed0e5bdb 100644
--- a/web/typo3conf/realurl_conf.php
+++ b/web/typo3conf/realurl_conf.php
@@ -81,6 +81,7 @@ $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = [
'date' => 'AjaxDate',
'table' => 'AjaxTable',
'calendar' => 'AjaxCalendar',
+ 'contingent' => 'AjaxContingent',
'watchlist' => 'AjaxWatchlist',
]
],