Buchungskalender eingefügt

This commit is contained in:
2026-05-05 19:18:05 +02:00
parent 4a4517c514
commit c1f07343e3
21 changed files with 931 additions and 187 deletions
+30 -10
View File
@@ -1,5 +1,9 @@
<?php
$oldData = is_array($old ?? null) ? $old : [];
$priceRates = [];
foreach ($deliveryZoneOptions as $zoneKey => $zone) {
$priceRates[$zoneKey] = (int) $zone['price_cents'];
}
?>
<div class="booking-form-shell">
<?php if (!empty($flashSuccess)): ?>
@@ -10,7 +14,7 @@ $oldData = is_array($old ?? null) ? $old : [];
<div class="flash flash-error"><?= h((string) $flashError) ?></div>
<?php endif; ?>
<form method="post" action="<?= h(url('book')) ?>" class="booking-form" data-day-rate="<?= h((string) $dayRate) ?>">
<form method="post" action="<?= h(url('book')) ?>" class="booking-form" data-day-rate="<?= h((string) $dayRate) ?>" data-price-rates="<?= h((string) json_encode($priceRates, JSON_THROW_ON_ERROR)) ?>">
<?= csrfField() ?>
<input type="hidden" name="price_per_day_cents" value="<?= h((string) $dayRate) ?>">
@@ -35,15 +39,25 @@ $oldData = is_array($old ?? null) ? $old : [];
<div class="form-section">
<div class="form-section-header">
<span class="form-step">Schritt 2</span>
<h3>Leistung und Zahlung festlegen</h3>
<h3>Paket und Zahlung wählen</h3>
</div>
<div class="form-grid form-grid-two">
<label>
<span>Leistungsart</span>
<select name="delivery_mode">
<option value="self_pickup" <?= selected((string) ($oldData['delivery_mode'] ?? 'self_pickup'), 'self_pickup') ?>>Selbstabholung</option>
<option value="delivery_setup" <?= selected((string) ($oldData['delivery_mode'] ?? ''), 'delivery_setup') ?>>Lieferung und Aufbau</option>
<option value="on_site_support" <?= selected((string) ($oldData['delivery_mode'] ?? ''), 'on_site_support') ?>>Lieferung, Aufbau und Vor-Ort-Betreuung</option>
<select name="delivery_mode" data-delivery-mode>
<?php foreach ($deliveryModeOptions as $value => $label): ?>
<option value="<?= h($value) ?>" <?= selected((string) ($oldData['delivery_mode'] ?? 'self_pickup'), $value) ?>><?= h($label) ?></option>
<?php endforeach; ?>
</select>
</label>
<label>
<span>Liefergebiet</span>
<select name="delivery_zone" data-delivery-zone>
<?php foreach ($deliveryZoneOptions as $value => $zone): ?>
<option value="<?= h($value) ?>" <?= selected((string) ($oldData['delivery_zone'] ?? 'self_pickup'), $value) ?>>
<?= h($zone['label']) ?> · <?= h(formatCurrency((int) $zone['price_cents'])) ?>
</option>
<?php endforeach; ?>
</select>
</label>
<label>
@@ -54,12 +68,18 @@ $oldData = is_array($old ?? null) ? $old : [];
</select>
</label>
</div>
<p class="form-help">
Abholung kostet <?= h(formatCurrency((int) $deliveryZoneOptions['self_pickup']['price_cents'])) ?> pro Miettag.
Lieferung nach Hannover kostet <?= h(formatCurrency((int) $deliveryZoneOptions['hannover']['price_cents'])) ?>,
in die Region Hannover <?= h(formatCurrency((int) $deliveryZoneOptions['region_hannover']['price_cents'])) ?> und
nach Hameln, Braunschweig, Hildesheim oder Celle <?= h(formatCurrency((int) $deliveryZoneOptions['extended_region']['price_cents'])) ?> pro Miettag.
</p>
</div>
<div class="form-section">
<div class="form-section-header">
<span class="form-step">Schritt 3</span>
<h3>Kundendaten erfassen</h3>
<h3>Kontaktdaten und Veranstaltungsort</h3>
</div>
<div class="form-grid">
<label>
@@ -112,7 +132,7 @@ $oldData = is_array($old ?? null) ? $old : [];
</div>
<div class="summary-line">
<span>Preis pro Miettag</span>
<strong><?= h(formatCurrency((int) $dayRate)) ?></strong>
<strong data-summary-rate><?= h(formatCurrency((int) $dayRate)) ?></strong>
</div>
<div class="summary-line summary-line-total">
<span>Voraussichtlicher Gesamtpreis</span>
@@ -131,7 +151,7 @@ $oldData = is_array($old ?? null) ? $old : [];
</label>
</div>
<button type="submit" class="button-primary button-block">Buchungsanfrage senden</button>
<p class="form-note">Keine Sofortabbuchung. Ihr Auftrag wird erst nach persönlicher Bestätigung verbindlich.</p>
<button type="submit" class="button-primary button-block">Buchungsanfrage unverbindlich senden</button>
<p class="form-note">Sie erhalten schnell eine Rückmeldung zur Verfügbarkeit und zum weiteren Ablauf.</p>
</form>
</div>