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 Country *form.Select
Email *form.Input Email *form.Input
Phone *form.Input Phone *form.Input
Adults *form.Input
Teenagers *form.Input
Children *form.Input
Dogs *form.Input
CampsiteType *form.Select CampsiteType *form.Select
CampsiteTypeOptions map[string][]*campsiteTypeOption CampsiteTypeOptions map[string][]*campsiteTypeOption
ArrivalDate *form.Input ArrivalDate *form.Input
@ -172,22 +168,6 @@ func newBookingForm(ctx context.Context, company *auth.Company, conn *database.C
Phone: &form.Input{ Phone: &form.Input{
Name: "phone", 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{ CampsiteType: &form.Select{
Name: "campsite_type", 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), 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.Country.FillValue(r)
f.Email.FillValue(r) f.Email.FillValue(r)
f.Phone.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.CampsiteType.FillValue(r)
f.ArrivalDate.FillValue(r) f.ArrivalDate.FillValue(r)
f.DepartureDate.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 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 var validBefore bool
v.CheckSelectedOptions(f.CampsiteType, l.GettextNoop("Selected campsite type is not valid.")) 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")) { 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 "" msgstr ""
"Project-Id-Version: camper\n" "Project-Id-Version: camper\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\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" "PO-Revision-Date: 2023-07-22 23:45+0200\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n" "Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Catalan <ca@dodds.net>\n" "Language-Team: Catalan <ca@dodds.net>\n"
@ -30,7 +30,7 @@ msgctxt "title"
msgid "Payment" msgid "Payment"
msgstr "Pagament" msgstr "Pagament"
#: web/templates/public/payment/request.gohtml:17 #: web/templates/public/payment/request.gohtml:23
msgctxt "action" msgctxt "action"
msgid "Pay" msgid "Pay"
msgstr "Paga" msgstr "Paga"
@ -111,7 +111,7 @@ msgid "Check-out Date"
msgstr "Data de sortida" msgstr "Data de sortida"
#: web/templates/public/campsite/type.gohtml:54 #: web/templates/public/campsite/type.gohtml:54
#: web/templates/public/booking.gohtml:194 #: web/templates/public/booking.gohtml:155
msgctxt "action" msgctxt "action"
msgid "Book" msgid "Book"
msgstr "Reserva" msgstr "Reserva"
@ -329,60 +329,35 @@ msgstr "Telèfon"
#: web/templates/public/booking.gohtml:83 #: web/templates/public/booking.gohtml:83
msgctxt "title" 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" msgid "Accomodation"
msgstr "Acomodacions" msgstr "Acomodacions"
#: web/templates/public/booking.gohtml:150 #: web/templates/public/booking.gohtml:98
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
msgctxt "input" msgctxt "input"
msgid "Area preferences (optional)" msgid "Area preferences (optional)"
msgstr "Preferències dàrea (opcional)" 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" msgctxt "input"
msgid "ACSI card? (optional)" msgid "ACSI card? (optional)"
msgstr "Targeta ACSI? (opcional)" msgstr "Targeta ACSI? (opcional)"
#: web/templates/public/booking.gohtml:189 #: web/templates/public/booking.gohtml:150
msgctxt "input" msgctxt "input"
msgid "I have read and I accept the reservation conditions" msgid "I have read and I accept the reservation conditions"
msgstr "He llegit i accepto les condicions de reserves" 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." 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/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." msgid "Email can not be empty."
msgstr "No podeu deixar el correu-e en blanc." 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/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." 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." msgstr "Aquest correu-e no és vàlid. Hauria de ser similar a nom@domini.com."
@ -1385,7 +1360,7 @@ msgctxt "season"
msgid "Closed" msgid "Closed"
msgstr "Tancat" 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." msgid "Selected campsite type is not valid."
msgstr "El tipus dallotjament escollit no és vàlid." 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." msgid "End date must be a valid date."
msgstr "La data de fi ha de ser una data vàlida." 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." msgid "Selected country is not valid."
msgstr "El país escollit no és vàlid." 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." msgid "This VAT number is not valid."
msgstr "Aquest NIF no és vàlid." 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." msgid "Phone can not be empty."
msgstr "No podeu deixar el telèfon en blanc." 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." msgid "This phone number is not valid."
msgstr "Aquest número de telèfon no és vàlid." 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." msgid "Postal code can not be empty."
msgstr "No podeu deixar el codi postal en blanc." 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." msgid "This postal code is not valid."
msgstr "Aquest codi postal no és vàlid." 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." msgid "The merchant key is not valid."
msgstr "Aquesta clau del comerç no és vàlid." 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." msgid "Full name can not be empty."
msgstr "No podeu deixar el nom i els cognoms en blanc." 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." msgid "Full name must have at least one letter."
msgstr "El nom i els cognoms han de tenir com a mínim una lletra." msgstr "El nom i els cognoms han de tenir com a mínim una lletra."
#: pkg/booking/public.go:296 #: pkg/booking/public.go:274
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
msgid "Arrival date can not be empty" msgid "Arrival date can not be empty"
msgstr "No podeu deixar la data darribada en blanc." 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." msgid "Arrival date must be a valid date."
msgstr "La data darribada ha de ser una data vàlida." 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" msgid "Departure date can not be empty"
msgstr "No podeu deixar la data de sortida en blanc." 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." msgid "Departure date must be a valid date."
msgstr "La data de sortida ha de ser una data vàlida." 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." msgid "The departure date must be after the arrival date."
msgstr "La data de sortida ha de ser posterior a la darribada." 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." msgid "It is mandatory to agree to the reservation conditions."
msgstr "És obligatori acceptar les condicions de reserves." msgstr "És obligatori acceptar les condicions de reserves."
#: pkg/booking/public.go:331 #: pkg/booking/public.go:287
#, c-format #, c-format
msgid "%s can not be empty" msgid "%s can not be empty"
msgstr "No podeu deixar %s en blanc." msgstr "No podeu deixar %s en blanc."
#: pkg/booking/public.go:332 #: pkg/booking/public.go:288
#, c-format #, c-format
msgid "%s must be an integer." msgid "%s must be an integer."
msgstr "%s ha de ser un número enter." msgstr "%s ha de ser un número enter."
#: pkg/booking/public.go:333 #: pkg/booking/public.go:289
#, c-format #, c-format
msgid "%s must be %d or greater." msgid "%s must be %d or greater."
msgstr "El valor de %s ha de ser com a mínim %d." 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 #, c-format
msgid "%s must be at most %d." msgid "%s must be at most %d."
msgstr "El valor de %s ha de ser com a màxim %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" #~ msgid "%s: %s €/night"
#~ msgstr "%s: %s €/nit" #~ msgstr "%s: %s €/nit"

209
po/es.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: camper\n" "Project-Id-Version: camper\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\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" "PO-Revision-Date: 2023-07-22 23:46+0200\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n" "Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Spanish <es@tp.org.es>\n" "Language-Team: Spanish <es@tp.org.es>\n"
@ -30,7 +30,7 @@ msgctxt "title"
msgid "Payment" msgid "Payment"
msgstr "Pago" msgstr "Pago"
#: web/templates/public/payment/request.gohtml:17 #: web/templates/public/payment/request.gohtml:23
msgctxt "action" msgctxt "action"
msgid "Pay" msgid "Pay"
msgstr "Pagar" msgstr "Pagar"
@ -111,7 +111,7 @@ msgid "Check-out Date"
msgstr "Fecha de salida" msgstr "Fecha de salida"
#: web/templates/public/campsite/type.gohtml:54 #: web/templates/public/campsite/type.gohtml:54
#: web/templates/public/booking.gohtml:194 #: web/templates/public/booking.gohtml:155
msgctxt "action" msgctxt "action"
msgid "Book" msgid "Book"
msgstr "Reservar" msgstr "Reservar"
@ -329,60 +329,35 @@ msgstr "Teléfono"
#: web/templates/public/booking.gohtml:83 #: web/templates/public/booking.gohtml:83
msgctxt "title" 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" msgid "Accomodation"
msgstr "Acomodaciones" msgstr "Acomodaciones"
#: web/templates/public/booking.gohtml:150 #: web/templates/public/booking.gohtml:98
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
msgctxt "input" msgctxt "input"
msgid "Area preferences (optional)" msgid "Area preferences (optional)"
msgstr "Preferencias de área (opcional)" 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" msgctxt "input"
msgid "ACSI card? (optional)" msgid "ACSI card? (optional)"
msgstr "¿Tarjeta ACSI? (opcional)" msgstr "¿Tarjeta ACSI? (opcional)"
#: web/templates/public/booking.gohtml:189 #: web/templates/public/booking.gohtml:150
msgctxt "input" msgctxt "input"
msgid "I have read and I accept the reservation conditions" msgid "I have read and I accept the reservation conditions"
msgstr "He leído y acepto las condiciones de reserva" 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." 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/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." msgid "Email can not be empty."
msgstr "No podéis dejar el correo-e en blanco." 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/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." 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." msgstr "Este correo-e no es válido. Tiene que ser parecido a nombre@dominio.com."
@ -1385,7 +1360,7 @@ msgctxt "season"
msgid "Closed" msgid "Closed"
msgstr "Cerrado" 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." msgid "Selected campsite type is not valid."
msgstr "El tipo de alojamiento escogido no es válido." 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." msgid "End date must be a valid date."
msgstr "La fecha final tiene que ser una fecha válida." 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." msgid "Selected country is not valid."
msgstr "El país escogido no es válido." 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." msgid "This VAT number is not valid."
msgstr "Este NIF no es válido." 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." msgid "Phone can not be empty."
msgstr "No podéis dejar el teléfono en blanco." 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." msgid "This phone number is not valid."
msgstr "Este teléfono no es válido." 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." msgid "Postal code can not be empty."
msgstr "No podéis dejar el código postal en blanco." 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." msgid "This postal code is not valid."
msgstr "Este código postal no es válido." 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." msgid "The merchant key is not valid."
msgstr "Esta clave del comercio no es válida." 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." msgid "Full name can not be empty."
msgstr "No podéis dejar el nombre y los apellidos en blanco." 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." msgid "Full name must have at least one letter."
msgstr "El nombre y los apellidos tienen que tener como mínimo una letra." msgstr "El nombre y los apellidos tienen que tener como mínimo una letra."
#: pkg/booking/public.go:296 #: pkg/booking/public.go:274
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
msgid "Arrival date can not be empty" msgid "Arrival date can not be empty"
msgstr "No podéis dejar la fecha de llegada en blanco." 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." msgid "Arrival date must be a valid date."
msgstr "La fecha de llegada tiene que ser una fecha válida." 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" msgid "Departure date can not be empty"
msgstr "No podéis dejar la fecha de partida en blanco." 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." msgid "Departure date must be a valid date."
msgstr "La fecha de partida tiene que ser una fecha válida." 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." msgid "The departure date must be after the arrival date."
msgstr "La fecha de partida tiene que ser posterior a la de llegada." 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." msgid "It is mandatory to agree to the reservation conditions."
msgstr "Es obligatorio aceptar las condiciones de reserva." msgstr "Es obligatorio aceptar las condiciones de reserva."
#: pkg/booking/public.go:331 #: pkg/booking/public.go:287
#, c-format #, c-format
msgid "%s can not be empty" msgid "%s can not be empty"
msgstr "No podéis dejar %s en blanco." msgstr "No podéis dejar %s en blanco."
#: pkg/booking/public.go:332 #: pkg/booking/public.go:288
#, c-format #, c-format
msgid "%s must be an integer." msgid "%s must be an integer."
msgstr "%s tiene que ser un número entero." msgstr "%s tiene que ser un número entero."
#: pkg/booking/public.go:333 #: pkg/booking/public.go:289
#, c-format #, c-format
msgid "%s must be %d or greater." msgid "%s must be %d or greater."
msgstr "%s tiene que ser como mínimo %d." msgstr "%s tiene que ser como mínimo %d."
#: pkg/booking/public.go:334 #: pkg/booking/public.go:290
#, c-format #, c-format
msgid "%s must be at most %d." msgid "%s must be at most %d."
msgstr "%s tiene que ser como máximo %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" #~ msgid "%s: %s €/night"
#~ msgstr "%s: %s €/noche" #~ msgstr "%s: %s €/noche"

View File

@ -899,6 +899,67 @@ dt {
height: .8rem; 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 { body > footer {
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -10,7 +10,7 @@
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.publicPage*/ -}} {{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.publicPage*/ -}}
<h2>{{( pgettext "Booking" "title" )}}</h2> <h2>{{( pgettext "Booking" "title" )}}</h2>
{{ with .Form -}} {{ with .Form -}}
<form action="/{{ currentLocale }}/booking" method="post"> <form id="booking" action="/{{ currentLocale }}/booking" method="post">
<fieldset> <fieldset>
<legend>{{( pgettext "Customer Details" "title" )}}</legend> <legend>{{( pgettext "Customer Details" "title" )}}</legend>
{{ with .FullName -}} {{ with .FullName -}}
@ -79,59 +79,29 @@
{{ template "error-message" . }} {{ template "error-message" . }}
{{- end }} {{- end }}
</fieldset> </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> <fieldset>
<legend>{{( pgettext "Accomodation" "title" )}}</legend> <legend>{{( pgettext "Accomodation" "title" )}}</legend>
{{ range .CampsiteType.Options -}} {{ range .CampsiteType.Options -}}
<label><input type="radio" name="{{ $.Form.CampsiteType.Name }}" value="{{ .Value }}" <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> > {{ .Label }}</label><br>
{{- end }} {{- end }}
{{ template "error-message" .CampsiteType }} {{ template "error-message" .CampsiteType }}
</fieldset> </fieldset>
{{ range .CampsiteType.Options -}} {{ range $campsiteType := .CampsiteType.Options -}}
{{ $options := index $.Form.CampsiteTypeOptions .Value }} {{ $options := index $.Form.CampsiteTypeOptions .Value }}
{{ if $options -}} {{ if $options -}}
<fieldset> <fieldset class="campsite-options" data-campsite="{{ $campsiteType.Value }}">
<legend>{{ .Label }}</legend> <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 -}} {{ range $options -}}
<label> <label>
{{ .Label }}<br> {{ .Label }}<br>
@ -166,15 +136,6 @@
</label> </label>
{{ template "error-message" . }} {{ template "error-message" . }}
{{- end }} {{- 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 -}} {{ with .ACSICard -}}
<label> <label>
<input type="checkbox" name="{{ .Name }}" {{ if .Checked}}checked{{ end }} <input type="checkbox" name="{{ .Name }}" {{ if .Checked}}checked{{ end }}
@ -195,4 +156,27 @@
</footer> </footer>
</form> </form>
{{- end }} {{- 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 }} {{- end }}