Remove “Party Details” from booking form, and stylize it a bit

This commit is contained in:
jordi fita mas 2023-12-12 23:16:04 +01:00
parent ac09fd77da
commit cfd5d5675c
5 changed files with 289 additions and 322 deletions

View File

@ -128,10 +128,6 @@ type bookingForm struct {
Country *form.Select
Email *form.Input
Phone *form.Input
Adults *form.Input
Teenagers *form.Input
Children *form.Input
Dogs *form.Input
CampsiteType *form.Select
CampsiteTypeOptions map[string][]*campsiteTypeOption
ArrivalDate *form.Input
@ -172,22 +168,6 @@ func newBookingForm(ctx context.Context, company *auth.Company, conn *database.C
Phone: &form.Input{
Name: "phone",
},
Adults: &form.Input{
Name: "adults",
Val: "2",
},
Teenagers: &form.Input{
Name: "teenagers",
Val: "0",
},
Children: &form.Input{
Name: "children",
Val: "0",
},
Dogs: &form.Input{
Name: "dogs",
Val: "0",
},
CampsiteType: &form.Select{
Name: "campsite_type",
Options: form.MustGetOptions(ctx, conn, "select type.slug, coalesce(i18n.name, type.name) as l10n_name from campsite_type as type left join campsite_type_i18n as i18n on type.campsite_type_id = i18n.campsite_type_id and i18n.lang_tag = $1 where company_id = $2 order by l10n_name", l.Language, company.ID),
@ -250,10 +230,6 @@ func (f *bookingForm) Parse(r *http.Request) error {
f.Country.FillValue(r)
f.Email.FillValue(r)
f.Phone.FillValue(r)
f.Adults.FillValue(r)
f.Teenagers.FillValue(r)
f.Children.FillValue(r)
f.Dogs.FillValue(r)
f.CampsiteType.FillValue(r)
f.ArrivalDate.FillValue(r)
f.DepartureDate.FillValue(r)
@ -293,26 +269,6 @@ func (f *bookingForm) Valid(ctx context.Context, conn *database.Conn, l *locale.
return false, err
}
}
if v.CheckRequired(f.Adults, l.GettextNoop("Number of adults can not be empty")) {
if v.CheckValidInteger(f.Adults, l.GettextNoop("Number of adults must be an integer.")) {
v.CheckMinInteger(f.Adults, 1, l.GettextNoop("Number of adults must be one or greater."))
}
}
if v.CheckRequired(f.Teenagers, l.GettextNoop("Number of teenagers can not be empty")) {
if v.CheckValidInteger(f.Teenagers, l.GettextNoop("Number of teenagers must be an integer.")) {
v.CheckMinInteger(f.Teenagers, 0, l.GettextNoop("Number of teenagers must be zero or greater."))
}
}
if v.CheckRequired(f.Children, l.GettextNoop("Number of children can not be empty")) {
if v.CheckValidInteger(f.Children, l.GettextNoop("Number of children must be an integer.")) {
v.CheckMinInteger(f.Children, 0, l.GettextNoop("Number of children must be zero or greater."))
}
}
if v.CheckRequired(f.Dogs, l.GettextNoop("Number of dogs can not be empty")) {
if v.CheckValidInteger(f.Dogs, l.GettextNoop("Number of dogs must be an integer.")) {
v.CheckMinInteger(f.Dogs, 0, l.GettextNoop("Number of dogs must be zero or greater."))
}
}
var validBefore bool
v.CheckSelectedOptions(f.CampsiteType, l.GettextNoop("Selected campsite type is not valid."))
if v.CheckRequired(f.ArrivalDate, l.GettextNoop("Arrival date can not be empty")) {

209
po/ca.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: camper\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2023-10-27 15:59+0200\n"
"POT-Creation-Date: 2023-12-12 23:14+0100\n"
"PO-Revision-Date: 2023-07-22 23:45+0200\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@ -30,7 +30,7 @@ msgctxt "title"
msgid "Payment"
msgstr "Pagament"
#: web/templates/public/payment/request.gohtml:17
#: web/templates/public/payment/request.gohtml:23
msgctxt "action"
msgid "Pay"
msgstr "Paga"
@ -111,7 +111,7 @@ msgid "Check-out Date"
msgstr "Data de sortida"
#: web/templates/public/campsite/type.gohtml:54
#: web/templates/public/booking.gohtml:194
#: web/templates/public/booking.gohtml:155
msgctxt "action"
msgid "Book"
msgstr "Reserva"
@ -329,60 +329,35 @@ msgstr "Telèfon"
#: web/templates/public/booking.gohtml:83
msgctxt "title"
msgid "Party Details"
msgstr "Dades dels visitants"
#: web/templates/public/booking.gohtml:86
msgctxt "input"
msgid "Adults"
msgstr "Adults"
#: web/templates/public/booking.gohtml:95
msgctxt "input"
msgid "Teenagers (from 11 to 16 years old)"
msgstr "Adolescents (entre 11 i 16 anys)"
#: web/templates/public/booking.gohtml:104
msgctxt "input"
msgid "Children (up to 10 years old)"
msgstr "Nens (fins a 10 anys)"
#: web/templates/public/booking.gohtml:113
msgctxt "input"
msgid "Dogs"
msgstr "Gossos"
#: web/templates/public/booking.gohtml:122
msgctxt "title"
msgid "Accomodation"
msgstr "Acomodacions"
#: web/templates/public/booking.gohtml:150
msgctxt "title"
msgid "Booking Period"
msgstr "Període de reserva"
#: web/templates/public/booking.gohtml:153
msgctxt "input"
msgid "Arrival date"
msgstr "Data darribada"
#: web/templates/public/booking.gohtml:162
msgctxt "input"
msgid "Departure date"
msgstr "Data de sortida"
#: web/templates/public/booking.gohtml:171
#: web/templates/public/booking.gohtml:98
msgctxt "input"
msgid "Area preferences (optional)"
msgstr "Preferències dàrea (opcional)"
#: web/templates/public/booking.gohtml:182
#: web/templates/public/booking.gohtml:120
msgctxt "title"
msgid "Booking Period"
msgstr "Període de reserva"
#: web/templates/public/booking.gohtml:123
msgctxt "input"
msgid "Arrival date"
msgstr "Data darribada"
#: web/templates/public/booking.gohtml:132
msgctxt "input"
msgid "Departure date"
msgstr "Data de sortida"
#: web/templates/public/booking.gohtml:143
msgctxt "input"
msgid "ACSI card? (optional)"
msgstr "Targeta ACSI? (opcional)"
#: web/templates/public/booking.gohtml:189
#: web/templates/public/booking.gohtml:150
msgctxt "input"
msgid "I have read and I accept the reservation conditions"
msgstr "He llegit i accepto les condicions de reserves"
@ -1247,12 +1222,12 @@ msgid "Slide image must be an image media type."
msgstr "La imatge de la diapositiva ha de ser un mèdia de tipus imatge."
#: pkg/app/login.go:56 pkg/app/user.go:246 pkg/company/admin.go:210
#: pkg/booking/public.go:288
#: pkg/booking/public.go:264
msgid "Email can not be empty."
msgstr "No podeu deixar el correu-e en blanc."
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/company/admin.go:211
#: pkg/booking/public.go:289
#: pkg/booking/public.go:265
msgid "This email is not valid. It should be like name@domain.com."
msgstr "Aquest correu-e no és vàlid. Hauria de ser similar a nom@domini.com."
@ -1385,7 +1360,7 @@ msgctxt "season"
msgid "Closed"
msgstr "Tancat"
#: pkg/campsite/admin.go:226 pkg/booking/public.go:317
#: pkg/campsite/admin.go:226 pkg/booking/public.go:273
msgid "Selected campsite type is not valid."
msgstr "El tipus dallotjament escollit no és vàlid."
@ -1482,7 +1457,7 @@ msgstr "No podeu deixar la data de fi en blanc."
msgid "End date must be a valid date."
msgstr "La data de fi ha de ser una data vàlida."
#: pkg/company/admin.go:193 pkg/booking/public.go:275
#: pkg/company/admin.go:193 pkg/booking/public.go:251
msgid "Selected country is not valid."
msgstr "El país escollit no és vàlid."
@ -1502,11 +1477,11 @@ msgstr "No podeu deixar el NIF en blanc."
msgid "This VAT number is not valid."
msgstr "Aquest NIF no és vàlid."
#: pkg/company/admin.go:205 pkg/booking/public.go:291
#: pkg/company/admin.go:205 pkg/booking/public.go:267
msgid "Phone can not be empty."
msgstr "No podeu deixar el telèfon en blanc."
#: pkg/company/admin.go:206 pkg/booking/public.go:292
#: pkg/company/admin.go:206 pkg/booking/public.go:268
msgid "This phone number is not valid."
msgstr "Aquest número de telèfon no és vàlid."
@ -1530,7 +1505,7 @@ msgstr "No podeu deixar la província en blanc."
msgid "Postal code can not be empty."
msgstr "No podeu deixar el codi postal en blanc."
#: pkg/company/admin.go:220 pkg/booking/public.go:284
#: pkg/company/admin.go:220 pkg/booking/public.go:260
msgid "This postal code is not valid."
msgstr "Aquest codi postal no és vàlid."
@ -1610,106 +1585,114 @@ msgstr "La integració escollida no és vàlida."
msgid "The merchant key is not valid."
msgstr "Aquesta clau del comerç no és vàlid."
#: pkg/booking/public.go:279
#: pkg/booking/public.go:255
msgid "Full name can not be empty."
msgstr "No podeu deixar el nom i els cognoms en blanc."
#: pkg/booking/public.go:280
#: pkg/booking/public.go:256
msgid "Full name must have at least one letter."
msgstr "El nom i els cognoms han de tenir com a mínim una lletra."
#: pkg/booking/public.go:296
msgid "Number of adults can not be empty"
msgstr "No podeu deixar el número dadults en blanc."
#: pkg/booking/public.go:297
msgid "Number of adults must be an integer."
msgstr "El número dadults ha de ser enter."
#: pkg/booking/public.go:298
msgid "Number of adults must be one or greater."
msgstr "El número dadults no pot ser zero."
#: pkg/booking/public.go:301
msgid "Number of teenagers can not be empty"
msgstr "No podeu deixar el número dadolescents en blanc."
#: pkg/booking/public.go:302
msgid "Number of teenagers must be an integer."
msgstr "El número dadolescents ha de ser enter."
#: pkg/booking/public.go:303
msgid "Number of teenagers must be zero or greater."
msgstr "El número dadolescents ha de ser com a mínim zero."
#: pkg/booking/public.go:306
msgid "Number of children can not be empty"
msgstr "No podeu deixar el número de nens en blanc."
#: pkg/booking/public.go:307
msgid "Number of children must be an integer."
msgstr "El número de nens ha de ser enter."
#: pkg/booking/public.go:308
msgid "Number of children must be zero or greater."
msgstr "El número de nens ha de ser com a mínim zero."
#: pkg/booking/public.go:311
msgid "Number of dogs can not be empty"
msgstr "No podeu deixar el número de gossos en blanc."
#: pkg/booking/public.go:312
msgid "Number of dogs must be an integer."
msgstr "El número de gossos ha de ser enter."
#: pkg/booking/public.go:313
msgid "Number of dogs must be zero or greater."
msgstr "El número de gossos ha de ser com a mínim zero."
#: pkg/booking/public.go:318
#: pkg/booking/public.go:274
msgid "Arrival date can not be empty"
msgstr "No podeu deixar la data darribada en blanc."
#: pkg/booking/public.go:319
#: pkg/booking/public.go:275
msgid "Arrival date must be a valid date."
msgstr "La data darribada ha de ser una data vàlida."
#: pkg/booking/public.go:323
#: pkg/booking/public.go:279
msgid "Departure date can not be empty"
msgstr "No podeu deixar la data de sortida en blanc."
#: pkg/booking/public.go:324
#: pkg/booking/public.go:280
msgid "Departure date must be a valid date."
msgstr "La data de sortida ha de ser una data vàlida."
#: pkg/booking/public.go:325
#: pkg/booking/public.go:281
msgid "The departure date must be after the arrival date."
msgstr "La data de sortida ha de ser posterior a la darribada."
#: pkg/booking/public.go:328
#: pkg/booking/public.go:284
msgid "It is mandatory to agree to the reservation conditions."
msgstr "És obligatori acceptar les condicions de reserves."
#: pkg/booking/public.go:331
#: pkg/booking/public.go:287
#, c-format
msgid "%s can not be empty"
msgstr "No podeu deixar %s en blanc."
#: pkg/booking/public.go:332
#: pkg/booking/public.go:288
#, c-format
msgid "%s must be an integer."
msgstr "%s ha de ser un número enter."
#: pkg/booking/public.go:333
#: pkg/booking/public.go:289
#, c-format
msgid "%s must be %d or greater."
msgstr "El valor de %s ha de ser com a mínim %d."
#: pkg/booking/public.go:334
#: pkg/booking/public.go:290
#, c-format
msgid "%s must be at most %d."
msgstr "El valor de %s ha de ser com a màxim %d."
#~ msgctxt "title"
#~ msgid "Party Details"
#~ msgstr "Dades dels visitants"
#~ msgctxt "input"
#~ msgid "Adults"
#~ msgstr "Adults"
#~ msgctxt "input"
#~ msgid "Teenagers (from 11 to 16 years old)"
#~ msgstr "Adolescents (entre 11 i 16 anys)"
#~ msgctxt "input"
#~ msgid "Children (up to 10 years old)"
#~ msgstr "Nens (fins a 10 anys)"
#~ msgctxt "input"
#~ msgid "Dogs"
#~ msgstr "Gossos"
#~ msgid "Number of adults can not be empty"
#~ msgstr "No podeu deixar el número dadults en blanc."
#~ msgid "Number of adults must be an integer."
#~ msgstr "El número dadults ha de ser enter."
#~ msgid "Number of adults must be one or greater."
#~ msgstr "El número dadults no pot ser zero."
#~ msgid "Number of teenagers can not be empty"
#~ msgstr "No podeu deixar el número dadolescents en blanc."
#~ msgid "Number of teenagers must be an integer."
#~ msgstr "El número dadolescents ha de ser enter."
#~ msgid "Number of teenagers must be zero or greater."
#~ msgstr "El número dadolescents ha de ser com a mínim zero."
#~ msgid "Number of children can not be empty"
#~ msgstr "No podeu deixar el número de nens en blanc."
#~ msgid "Number of children must be an integer."
#~ msgstr "El número de nens ha de ser enter."
#~ msgid "Number of children must be zero or greater."
#~ msgstr "El número de nens ha de ser com a mínim zero."
#~ msgid "Number of dogs can not be empty"
#~ msgstr "No podeu deixar el número de gossos en blanc."
#~ msgid "Number of dogs must be an integer."
#~ msgstr "El número de gossos ha de ser enter."
#~ msgid "Number of dogs must be zero or greater."
#~ msgstr "El número de gossos ha de ser com a mínim zero."
#~ msgid "%s: %s €/night"
#~ msgstr "%s: %s €/nit"

209
po/es.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: camper\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2023-10-27 15:59+0200\n"
"POT-Creation-Date: 2023-12-12 23:14+0100\n"
"PO-Revision-Date: 2023-07-22 23:46+0200\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
@ -30,7 +30,7 @@ msgctxt "title"
msgid "Payment"
msgstr "Pago"
#: web/templates/public/payment/request.gohtml:17
#: web/templates/public/payment/request.gohtml:23
msgctxt "action"
msgid "Pay"
msgstr "Pagar"
@ -111,7 +111,7 @@ msgid "Check-out Date"
msgstr "Fecha de salida"
#: web/templates/public/campsite/type.gohtml:54
#: web/templates/public/booking.gohtml:194
#: web/templates/public/booking.gohtml:155
msgctxt "action"
msgid "Book"
msgstr "Reservar"
@ -329,60 +329,35 @@ msgstr "Teléfono"
#: web/templates/public/booking.gohtml:83
msgctxt "title"
msgid "Party Details"
msgstr "Datos de los visitantes"
#: web/templates/public/booking.gohtml:86
msgctxt "input"
msgid "Adults"
msgstr "Adultos"
#: web/templates/public/booking.gohtml:95
msgctxt "input"
msgid "Teenagers (from 11 to 16 years old)"
msgstr "Adolescentes (de 11 a 16 años)"
#: web/templates/public/booking.gohtml:104
msgctxt "input"
msgid "Children (up to 10 years old)"
msgstr "Niños (hasta 10 años)"
#: web/templates/public/booking.gohtml:113
msgctxt "input"
msgid "Dogs"
msgstr "Perros"
#: web/templates/public/booking.gohtml:122
msgctxt "title"
msgid "Accomodation"
msgstr "Acomodaciones"
#: web/templates/public/booking.gohtml:150
msgctxt "title"
msgid "Booking Period"
msgstr "Periodo de reserva"
#: web/templates/public/booking.gohtml:153
msgctxt "input"
msgid "Arrival date"
msgstr "Fecha de llegada"
#: web/templates/public/booking.gohtml:162
msgctxt "input"
msgid "Departure date"
msgstr "Fecha de salida"
#: web/templates/public/booking.gohtml:171
#: web/templates/public/booking.gohtml:98
msgctxt "input"
msgid "Area preferences (optional)"
msgstr "Preferencias de área (opcional)"
#: web/templates/public/booking.gohtml:182
#: web/templates/public/booking.gohtml:120
msgctxt "title"
msgid "Booking Period"
msgstr "Periodo de reserva"
#: web/templates/public/booking.gohtml:123
msgctxt "input"
msgid "Arrival date"
msgstr "Fecha de llegada"
#: web/templates/public/booking.gohtml:132
msgctxt "input"
msgid "Departure date"
msgstr "Fecha de salida"
#: web/templates/public/booking.gohtml:143
msgctxt "input"
msgid "ACSI card? (optional)"
msgstr "¿Tarjeta ACSI? (opcional)"
#: web/templates/public/booking.gohtml:189
#: web/templates/public/booking.gohtml:150
msgctxt "input"
msgid "I have read and I accept the reservation conditions"
msgstr "He leído y acepto las condiciones de reserva"
@ -1247,12 +1222,12 @@ msgid "Slide image must be an image media type."
msgstr "La imagen de la diapositiva tiene que ser un medio de tipo imagen."
#: pkg/app/login.go:56 pkg/app/user.go:246 pkg/company/admin.go:210
#: pkg/booking/public.go:288
#: pkg/booking/public.go:264
msgid "Email can not be empty."
msgstr "No podéis dejar el correo-e en blanco."
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/company/admin.go:211
#: pkg/booking/public.go:289
#: pkg/booking/public.go:265
msgid "This email is not valid. It should be like name@domain.com."
msgstr "Este correo-e no es válido. Tiene que ser parecido a nombre@dominio.com."
@ -1385,7 +1360,7 @@ msgctxt "season"
msgid "Closed"
msgstr "Cerrado"
#: pkg/campsite/admin.go:226 pkg/booking/public.go:317
#: pkg/campsite/admin.go:226 pkg/booking/public.go:273
msgid "Selected campsite type is not valid."
msgstr "El tipo de alojamiento escogido no es válido."
@ -1482,7 +1457,7 @@ msgstr "No podéis dejar la fecha final en blanco."
msgid "End date must be a valid date."
msgstr "La fecha final tiene que ser una fecha válida."
#: pkg/company/admin.go:193 pkg/booking/public.go:275
#: pkg/company/admin.go:193 pkg/booking/public.go:251
msgid "Selected country is not valid."
msgstr "El país escogido no es válido."
@ -1502,11 +1477,11 @@ msgstr "No podéis dejar el NIF en blanco."
msgid "This VAT number is not valid."
msgstr "Este NIF no es válido."
#: pkg/company/admin.go:205 pkg/booking/public.go:291
#: pkg/company/admin.go:205 pkg/booking/public.go:267
msgid "Phone can not be empty."
msgstr "No podéis dejar el teléfono en blanco."
#: pkg/company/admin.go:206 pkg/booking/public.go:292
#: pkg/company/admin.go:206 pkg/booking/public.go:268
msgid "This phone number is not valid."
msgstr "Este teléfono no es válido."
@ -1530,7 +1505,7 @@ msgstr "No podéis dejar la provincia en blanco."
msgid "Postal code can not be empty."
msgstr "No podéis dejar el código postal en blanco."
#: pkg/company/admin.go:220 pkg/booking/public.go:284
#: pkg/company/admin.go:220 pkg/booking/public.go:260
msgid "This postal code is not valid."
msgstr "Este código postal no es válido."
@ -1610,106 +1585,114 @@ msgstr "La integración escogida no es válida."
msgid "The merchant key is not valid."
msgstr "Esta clave del comercio no es válida."
#: pkg/booking/public.go:279
#: pkg/booking/public.go:255
msgid "Full name can not be empty."
msgstr "No podéis dejar el nombre y los apellidos en blanco."
#: pkg/booking/public.go:280
#: pkg/booking/public.go:256
msgid "Full name must have at least one letter."
msgstr "El nombre y los apellidos tienen que tener como mínimo una letra."
#: pkg/booking/public.go:296
msgid "Number of adults can not be empty"
msgstr "No podéis dejar el número de adultos blanco."
#: pkg/booking/public.go:297
msgid "Number of adults must be an integer."
msgstr "El número de adultos tiene que ser entero."
#: pkg/booking/public.go:298
msgid "Number of adults must be one or greater."
msgstr "El número de adultos no puede ser cero."
#: pkg/booking/public.go:301
msgid "Number of teenagers can not be empty"
msgstr "No podéis dejar el número de adolescentes en blanco."
#: pkg/booking/public.go:302
msgid "Number of teenagers must be an integer."
msgstr "El número de adolescentes tiene que ser entero."
#: pkg/booking/public.go:303
msgid "Number of teenagers must be zero or greater."
msgstr "El número de adolescentes tiene que ser como mínimo cero."
#: pkg/booking/public.go:306
msgid "Number of children can not be empty"
msgstr "No podéis dejar el número de niños en blanco."
#: pkg/booking/public.go:307
msgid "Number of children must be an integer."
msgstr "El número de niños tiene que ser entero."
#: pkg/booking/public.go:308
msgid "Number of children must be zero or greater."
msgstr "El número de niños tiene que ser como mínimo cero."
#: pkg/booking/public.go:311
msgid "Number of dogs can not be empty"
msgstr "No podéis dejar el número de perros en blanco."
#: pkg/booking/public.go:312
msgid "Number of dogs must be an integer."
msgstr "El número de perros tiene que ser entero."
#: pkg/booking/public.go:313
msgid "Number of dogs must be zero or greater."
msgstr "El número de perros tiene que ser como mínimo cero."
#: pkg/booking/public.go:318
#: pkg/booking/public.go:274
msgid "Arrival date can not be empty"
msgstr "No podéis dejar la fecha de llegada en blanco."
#: pkg/booking/public.go:319
#: pkg/booking/public.go:275
msgid "Arrival date must be a valid date."
msgstr "La fecha de llegada tiene que ser una fecha válida."
#: pkg/booking/public.go:323
#: pkg/booking/public.go:279
msgid "Departure date can not be empty"
msgstr "No podéis dejar la fecha de partida en blanco."
#: pkg/booking/public.go:324
#: pkg/booking/public.go:280
msgid "Departure date must be a valid date."
msgstr "La fecha de partida tiene que ser una fecha válida."
#: pkg/booking/public.go:325
#: pkg/booking/public.go:281
msgid "The departure date must be after the arrival date."
msgstr "La fecha de partida tiene que ser posterior a la de llegada."
#: pkg/booking/public.go:328
#: pkg/booking/public.go:284
msgid "It is mandatory to agree to the reservation conditions."
msgstr "Es obligatorio aceptar las condiciones de reserva."
#: pkg/booking/public.go:331
#: pkg/booking/public.go:287
#, c-format
msgid "%s can not be empty"
msgstr "No podéis dejar %s en blanco."
#: pkg/booking/public.go:332
#: pkg/booking/public.go:288
#, c-format
msgid "%s must be an integer."
msgstr "%s tiene que ser un número entero."
#: pkg/booking/public.go:333
#: pkg/booking/public.go:289
#, c-format
msgid "%s must be %d or greater."
msgstr "%s tiene que ser como mínimo %d."
#: pkg/booking/public.go:334
#: pkg/booking/public.go:290
#, c-format
msgid "%s must be at most %d."
msgstr "%s tiene que ser como máximo %d"
#~ msgctxt "title"
#~ msgid "Party Details"
#~ msgstr "Datos de los visitantes"
#~ msgctxt "input"
#~ msgid "Adults"
#~ msgstr "Adultos"
#~ msgctxt "input"
#~ msgid "Teenagers (from 11 to 16 years old)"
#~ msgstr "Adolescentes (de 11 a 16 años)"
#~ msgctxt "input"
#~ msgid "Children (up to 10 years old)"
#~ msgstr "Niños (hasta 10 años)"
#~ msgctxt "input"
#~ msgid "Dogs"
#~ msgstr "Perros"
#~ msgid "Number of adults can not be empty"
#~ msgstr "No podéis dejar el número de adultos blanco."
#~ msgid "Number of adults must be an integer."
#~ msgstr "El número de adultos tiene que ser entero."
#~ msgid "Number of adults must be one or greater."
#~ msgstr "El número de adultos no puede ser cero."
#~ msgid "Number of teenagers can not be empty"
#~ msgstr "No podéis dejar el número de adolescentes en blanco."
#~ msgid "Number of teenagers must be an integer."
#~ msgstr "El número de adolescentes tiene que ser entero."
#~ msgid "Number of teenagers must be zero or greater."
#~ msgstr "El número de adolescentes tiene que ser como mínimo cero."
#~ msgid "Number of children can not be empty"
#~ msgstr "No podéis dejar el número de niños en blanco."
#~ msgid "Number of children must be an integer."
#~ msgstr "El número de niños tiene que ser entero."
#~ msgid "Number of children must be zero or greater."
#~ msgstr "El número de niños tiene que ser como mínimo cero."
#~ msgid "Number of dogs can not be empty"
#~ msgstr "No podéis dejar el número de perros en blanco."
#~ msgid "Number of dogs must be an integer."
#~ msgstr "El número de perros tiene que ser entero."
#~ msgid "Number of dogs must be zero or greater."
#~ msgstr "El número de perros tiene que ser como mínimo cero."
#~ msgid "%s: %s €/night"
#~ msgstr "%s: %s €/noche"

View File

@ -899,6 +899,67 @@ dt {
height: .8rem;
}
#booking fieldset {
border: none;
}
#booking legend {
font-weight: bold;
}
#booking input:not([type="radio"]):not([type="checkbox"]),
#booking select {
width: 100%;
}
#booking fieldset {
margin-bottom: 1em;
padding-bottom: 1em;
border-bottom: 3px solid black;
}
#booking fieldset:first-of-type,
#booking fieldset:nth-of-type(3),
#booking fieldset:last-of-type {
display: grid;
row-gap: 1em;
column-gap: 1em;
}
#booking fieldset.campsite-options {
transition: opacity .25s ease-in;
}
#booking fieldset.campsite-options:not(.is-visible) {
visibility: hidden;
max-height: 0;
overflow: hidden;
margin: 0;
padding: 0;
border: none;
line-height: 0;
opacity: 0;
}
#booking fieldset:first-of-type {
grid-template-columns: repeat(3, 1fr);
}
#booking fieldset:nth-of-type(3) {
grid-template-columns: repeat(4, 1fr);
}
#booking fieldset:last-of-type {
border-bottom: none;
grid-template-columns: repeat(2, 1fr);
}
@media (max-width: 48rem) {
#booking fieldset {
grid-template-columns: 1fr !important;
}
}
body > footer {
display: flex;
flex-direction: column;

View File

@ -10,7 +10,7 @@
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.publicPage*/ -}}
<h2>{{( pgettext "Booking" "title" )}}</h2>
{{ with .Form -}}
<form action="/{{ currentLocale }}/booking" method="post">
<form id="booking" action="/{{ currentLocale }}/booking" method="post">
<fieldset>
<legend>{{( pgettext "Customer Details" "title" )}}</legend>
{{ with .FullName -}}
@ -79,59 +79,29 @@
{{ template "error-message" . }}
{{- end }}
</fieldset>
<fieldset>
<legend>{{( pgettext "Party Details" "title" )}}</legend>
{{ with .Adults -}}
<label>
{{( pgettext "Adults" "input" )}}<br>
<input type="number" required min="1"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
</label>
{{ template "error-message" . }}
{{- end }}
{{ with .Teenagers -}}
<label>
{{( pgettext "Teenagers (from 11 to 16 years old)" "input" )}}<br>
<input type="number" required min="0"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
</label>
{{ template "error-message" . }}
{{- end }}
{{ with .Children -}}
<label>
{{( pgettext "Children (up to 10 years old)" "input" )}}<br>
<input type="number" required min="0"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
</label>
{{ template "error-message" . }}
{{- end }}
{{ with .Dogs -}}
<label>
{{( pgettext "Dogs" "input" )}}<br>
<input type="number" required min="0"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
</label>
{{ template "error-message" . }}
{{- end }}
</fieldset>
<fieldset>
<legend>{{( pgettext "Accomodation" "title" )}}</legend>
{{ range .CampsiteType.Options -}}
<label><input type="radio" name="{{ $.Form.CampsiteType.Name }}" value="{{ .Value }}"
{{ if $.Form.CampsiteType.IsSelected .Value }}checked{{ end }}
{{ if $.Form.CampsiteType.IsSelected .Value }}checked{{ end }}
> {{ .Label }}</label><br>
{{- end }}
{{ template "error-message" .CampsiteType }}
</fieldset>
{{ range .CampsiteType.Options -}}
{{ range $campsiteType := .CampsiteType.Options -}}
{{ $options := index $.Form.CampsiteTypeOptions .Value }}
{{ if $options -}}
<fieldset>
<fieldset class="campsite-options" data-campsite="{{ $campsiteType.Value }}">
<legend>{{ .Label }}</legend>
{{ with $.Form.AreaPreferences -}}
<label>
{{( pgettext "Area preferences (optional)" "input" )}}<br>
<input type="text"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
</label>
{{ template "error-message" . }}
{{- end }}
{{ range $options -}}
<label>
{{ .Label }}<br>
@ -166,15 +136,6 @@
</label>
{{ template "error-message" . }}
{{- end }}
{{ with .AreaPreferences -}}
<label>
{{( pgettext "Area preferences (optional)" "input" )}}<br>
<input type="text"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
</label>
{{ template "error-message" . }}
{{- end }}
{{ with .ACSICard -}}
<label>
<input type="checkbox" name="{{ .Name }}" {{ if .Checked}}checked{{ end }}
@ -195,4 +156,27 @@
</footer>
</form>
{{- end }}
<script>
const fieldSets = Array.from(document.querySelectorAll('fieldset[data-campsite]'));
const options = document.querySelectorAll('input[type="radio"]');
function toggleFieldSets(input) {
const campsite = input.value;
for (const fieldSet of fieldSets) {
if (fieldSet.dataset.campsite === campsite) {
fieldSet.classList.add('is-visible');
} else {
fieldSet.classList.remove('is-visible');
}
}
}
for (const option of Array.from(options)) {
option.addEventListener('change', (e) => toggleFieldSets(e.target));
if (option.checked) {
toggleFieldSets(option);
}
}
</script>
{{- end }}