<!-- SPDX-FileCopyrightText: 2023 jordi fita mas <jordi@tandem.blog> SPDX-FileCopyrightText: 2023 Oriol Carbonell <info@oriolcarbonell.cat> SPDX-License-Identifier: AGPL-3.0-only --> {{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.adminBookingForm*/ -}} <input type="hidden" name="{{ .PaymentSlug.Name }}" value="{{ .PaymentSlug.Val }}"> {{ if .Error -}} <p class="error">{{ .Error }}</p> {{- end }} {{ with .CampsiteType -}} <label> {{( pgettext "Accommodation" "title" )}}<br> <select name="{{ .Name }}" required data-hx-get="{{ $.URL }}" data-hx-trigger="change" {{ template "error-attrs" . }} > <option value="">{{( gettext "Choose an accommodation" )}}</option> {{ template "list-options" . }} </select><br> {{ template "error-message" . }} </label> {{- end }} {{ with .Dates -}} <fieldset class="booking-period" data-hx-get="{{ $.URL }}" data-hx-trigger="change delay:500ms" > {{ with .ArrivalDate -}} <label> {{( pgettext "Arrival date" "input" )}}<br> <input type="date" required min="{{ formatDateAttr .MinDate }}" max="{{ formatDateAttr .MaxDate }}" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> {{ template "error-message" . }} </label> {{- end }} {{ with .DepartureDate -}} <label> {{( pgettext "Departure date" "input" )}}<br> <input type="date" required min="{{ formatDateAttr .MinDate }}" max="{{ formatDateAttr .MaxDate }}" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> {{ template "error-message" . }} </label> {{- end }} </fieldset> {{- end }} {{ with .Options -}} {{ with .ZonePreferences -}} <label>{{( pgettext "Area preferences (optional)" "input" )}}<br> <input type="text" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> <a href="/{{ currentLocale }}/campground?zones" target="_blank">{{( gettext "Campground map" )}}</a><br> {{ template "error-message" . }} </label> {{- end }} {{- end }} {{ with $guests := .Guests -}} {{ $draft := $.Cart.Draft }} <fieldset class="booking-items" data-hx-get="{{ $.URL }}" data-hx-trigger="change" > <table> <thead> <tr> <th scope="col">{{( pgettext "Units" "header" )}}</th> <th scope="col">{{( pgettext "Decription" "header" )}}</th> <th scope="col" class="numeric">{{( pgettext "Total" "header" )}}</th> </tr> </thead> <tbody> <tr> <td>{{ $draft.NumNights }}</td> <td>{{( pgettext "Night" "cart" )}}</td> <td class="numeric">{{ formatPrice $draft.Nights }}</td> </tr> {{ with .NumberAdults -}} <tr> <td><input id="adults" type="number" required name="{{ .Name }}" value="{{ .Val }}" min="1"{{if not $guests.OverflowAllowed }} max="{{ $guests.MaxGuests }}"{{ end }} {{ template "error-attrs" . }} > </td> <td> <label for="adults">{{( pgettext "Adults aged 17 or older" "input" )}}</label><br> {{ template "error-message" . }} </td> <td class="numeric">{{ formatPrice $draft.Adults }}</td> </tr> {{- end }} {{ with .NumberTeenagers -}} <tr> <td> <input id="teenagers" type="number" required name="{{ .Name }}" value="{{ .Val }}" min="0"{{if not $guests.OverflowAllowed }} max="{{ $guests.MaxGuests | dec }}"{{ end }} {{ template "error-attrs" . }} > </td> <td> <label for="teenagers">{{( pgettext "Teenagers from 11 to 16 years old" "input" )}}</label><br> {{ template "error-message" . }} </td> <td class="numeric">{{ formatPrice $draft.Teenagers }}</td> </tr> {{- end }} {{ with .NumberChildren -}} <tr> <td> <input id="children" type="number" required name="{{ .Name }}" value="{{ .Val }}" min="0"{{if not $guests.OverflowAllowed }} max="{{ $guests.MaxGuests | dec }}"{{ end }} {{ template "error-attrs" . }} > </td> <td> <label for="children">{{( pgettext "Children from 2 to 10 years old" "input" )}}</label><br> {{ template "error-message" . }} </td> <td class="numeric">{{ formatPrice $draft.Children }}</td> </tr> {{- end }} {{ with .NumberDogs -}} <tr> <td> <input id="dogs" type="number" required name="{{ .Name }}" value="{{ .Val }}" min="0" {{ template "error-attrs" . }} > </td> <td> <label for="dogs">{{( pgettext "Dogs" "input" )}}</label><br> {{ template "error-message" . }} </td> <td class="numeric">{{ formatPrice $draft.Dogs }}</td> </tr> {{- end }} {{ with $.Options -}} {{ range .Options -}} <tr> <td> <input id="{{ .Input.Name }}" type="number" required name="{{ .Input.Name }}" value="{{ .Input.Val }}" min="{{ .Min }}" max="{{ .Max }}" {{ template "error-attrs" .Input }} > </td> <td> <label for="{{ .Input.Name }}">{{ .Label }}</label><br> {{ template "error-message" .Input }} </td> <td class="numeric">{{ formatPrice .Subtotal }}</td> </tr> {{- end }} {{- end }} <tr> <td>{{ $draft.NumAdults }}</td> <td>{{( pgettext "Tourist tax" "cart" )}}</td> <td class="numeric">{{ formatPrice $draft.TouristTax }}</td> </tr> </tbody> <tfoot> <tr> <th scope="row" colspan="2" class="numeric">{{( pgettext "Total" "header" )}}</th> <td class="numeric">{{ formatPrice $draft.Total }}</td> </tr> </tfoot> </table> {{ if not .NumberDogs -}} <small>{{( gettext "Note: This accommodation does <strong>not</strong> allow dogs.") | raw }}</small> {{- end }} {{ if .Error -}} <p class="error">{{ .Error }}</p> {{- end }} </fieldset> {{- end }} {{ with .Customer -}} <fieldset class="customer-details"> <legend>{{( pgettext "Customer Details" "title" )}}</legend> {{ with .FullName -}} <label> {{( pgettext "Full name" "input" )}}<br> <input type="text" required minlength="2" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> {{ template "error-message" . }} </label> {{- end }} {{ with .Country -}} <label> {{( pgettext "Country (optional)" "input" )}}<br> <select name="{{ .Name }}" {{ template "error-attrs" . }} > <option value="">{{( gettext "Choose a country" )}}</option> {{ template "list-options" . }} </select><br> {{ template "error-message" . }} </label> {{- end }} {{ with .Address -}} <label class="colspan"> {{( pgettext "Address (optional)" "input" )}}<br> <input type="text" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> {{ template "error-message" . }} </label> {{- end }} {{ with .PostalCode -}} <label> {{( pgettext "Postcode (optional)" "input" )}}<br> <input type="text" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> {{ template "error-message" . }} </label> {{- end }} {{ with .City -}} <label> {{( pgettext "Town or village (optional)" "input" )}}<br> <input type="text" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> {{ template "error-message" . }} </label> {{- end }} {{ with .Email -}} <label> {{( pgettext "Email (optional)" "input" )}}<br> <input type="email" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> {{ template "error-message" . }} </label> {{- end }} {{ with .Phone -}} <label> {{( pgettext "Phone (optional)" "input" )}}<br> <input type="tel" name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }} ><br> {{ template "error-message" . }} </label> {{- end }} {{ with $.Guests.ACSICard -}} <label class="colspan" data-hx-get="{{ $.URL }}" data-hx-trigger="change"> <input type="checkbox" name="{{ .Name }}" {{ if .Checked}}checked{{ end }} {{ template "error-attrs" . }} > {{( pgettext "ACSI / ANWB card? (optional)" "input" )}}<br> {{ template "error-message" . }} </label> {{- end }} </fieldset> {{- end }} {{ if .Campsites -}} <h3>{{( pgettext "Campsites" "title" )}}</h3> {{ template "grid.gohtml" . }} {{ if .Error -}} <p class="error">{{ .Error }}</p> {{- end }} {{- end }} {{ define "campsite-heading" -}} {{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.CampsiteEntry*/ -}} <label> <input type="checkbox" name="campsite" value="{{ .ID }}" {{- if .Selected }} checked="checked"{{ end -}} > {{ .Label }}</label> {{- end }}