Replace admin’s campsite map with a booking grid

Customer told us that they are used to a view of the booking status of
each campsite in the form of a grid: each campsite is a row, and each
day a column; bookings are show as boxes from the first day to the last
day on the corresponding campsite’s row.

I do not yet show the booking boxes, but at least now i have the grid
and date selector form in place.

In the form i would need a couple of input[type=month], but this is not
yet supported in Firefox and Safari. According to MDN, one common way
to bypass that problem is to have two fields, one for the month and the
other for the year; i just did that, but had to create a new input type
in the `form` package just for this.
This commit is contained in:
jordi fita mas 2024-04-19 11:29:43 +02:00
parent 746aa013d3
commit e726bde025
14 changed files with 793 additions and 442 deletions

View File

@ -7,7 +7,9 @@ package campsite
import (
"context"
"fmt"
"net/http"
"time"
"github.com/jackc/pgx/v4"
@ -17,6 +19,7 @@ import (
"dev.tandem.ws/tandem/camper/pkg/form"
httplib "dev.tandem.ws/tandem/camper/pkg/http"
"dev.tandem.ws/tandem/camper/pkg/locale"
"dev.tandem.ws/tandem/camper/pkg/season"
"dev.tandem.ws/tandem/camper/pkg/template"
)
@ -92,9 +95,12 @@ func serveCampsiteIndex(w http.ResponseWriter, r *http.Request, user *auth.User,
if err != nil {
panic(err)
}
page := &campsiteIndex{
Campsites: campsites,
page := newCampsiteIndex(campsites)
if err := page.Parse(r); err != nil {
panic(err)
}
fmt.Println(page.From, page.To)
page.Months = collectMonths(page.From.Date(), page.To.Date())
page.MustRender(w, r, user, company)
}
@ -131,7 +137,92 @@ type campsiteEntry struct {
}
type campsiteIndex struct {
From *form.Month
To *form.Month
Campsites []*campsiteEntry
Months []*Month
}
func newCampsiteIndex(campsites []*campsiteEntry) *campsiteIndex {
now := time.Now()
from := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, time.UTC)
to := from.AddDate(0, 3, 0)
return &campsiteIndex{
Campsites: campsites,
From: &form.Month{
Name: "from",
Year: from.Year(),
Month: from.Month(),
},
To: &form.Month{
Name: "to",
Year: to.Year(),
Month: to.Month(),
},
}
}
func (page *campsiteIndex) Parse(r *http.Request) error {
if err := r.ParseForm(); err != nil {
return err
}
page.From.FillValue(r)
page.To.FillValue(r)
return nil
}
type Month struct {
Year int
Month time.Month
Name string
Days []time.Time
Spans []*Span
}
type Span struct {
Weekend bool
Count int
}
func isWeekend(t time.Time) bool {
switch t.Weekday() {
case time.Saturday, time.Sunday:
return true
default:
return false
}
}
func collectMonths(from time.Time, to time.Time) []*Month {
current := time.Date(from.Year(), from.Month(), 1, 0, 0, 0, 0, time.UTC)
numMonths := (to.Year()-from.Year())*12 + int(to.Month()) - int(from.Month()) + 1
var months []*Month
for i := 0; i < numMonths; i++ {
span := &Span{
Weekend: isWeekend(current),
}
month := &Month{
Year: current.Year(),
Month: current.Month(),
Name: season.LongMonthNames[current.Month()-1],
Days: make([]time.Time, 0, 31),
Spans: make([]*Span, 0, 10),
}
month.Spans = append(month.Spans, span)
for current.Month() == month.Month {
month.Days = append(month.Days, current)
if span.Weekend != isWeekend(current) {
span = &Span{
Weekend: !span.Weekend,
}
month.Spans = append(month.Spans, span)
}
span.Count = span.Count + 1
current = current.AddDate(0, 0, 1)
}
months = append(months, month)
}
return months
}
func (page *campsiteIndex) MustRender(w http.ResponseWriter, r *http.Request, user *auth.User, company *auth.Company) {

32
pkg/form/month.go Normal file
View File

@ -0,0 +1,32 @@
package form
import (
"fmt"
"net/http"
"strconv"
"time"
)
type Month struct {
Name string
Year int
Month time.Month
Error error
}
func (input *Month) FillValue(r *http.Request) {
if year, err := strconv.Atoi(r.FormValue(input.Name + ".year")); err == nil {
input.Year = year
} else {
fmt.Println(err, r.FormValue(input.Name+".year"))
}
if month, err := strconv.Atoi(r.FormValue(input.Name + ".month")); err == nil && month > 0 && month < 13 {
input.Month = time.Month(month)
} else {
fmt.Println(err, r.FormValue(input.Name+".month"))
}
}
func (input *Month) Date() time.Time {
return time.Date(input.Year, input.Month, 1, 0, 0, 0, 0, time.UTC)
}

View File

@ -179,7 +179,7 @@ type seasonEntry struct {
Active bool
}
var longMonthNames = []string{
var LongMonthNames = []string{
locale.PgettextNoop("January", "month"),
locale.PgettextNoop("February", "month"),
locale.PgettextNoop("March", "month"),
@ -231,7 +231,7 @@ func CollectSeasonCalendar(ctx context.Context, company *auth.Company, conn *dat
month = &Month{
Year: day.Date.Year(),
Month: dayMonth,
Name: longMonthNames[dayMonth-1],
Name: LongMonthNames[dayMonth-1],
}
week = Week{}
weekday = int(time.Monday)

303
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: 2024-03-24 21:59+0100\n"
"POT-Creation-Date: 2024-04-19 11:18+0200\n"
"PO-Revision-Date: 2024-02-06 10:04+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@ -134,7 +134,6 @@ msgstr "Targeta ACSI?"
#: web/templates/mail/payment/details.gotxt:18
#: web/templates/admin/payment/details.gohtml:83
#: web/templates/admin/campsite/index.gohtml:41
#: web/templates/admin/campsite/type/index.gohtml:53
#: web/templates/admin/season/index.gohtml:44
#: web/templates/admin/user/login-attempts.gohtml:31
@ -144,7 +143,6 @@ msgstr "Sí"
#: web/templates/mail/payment/details.gotxt:18
#: web/templates/admin/payment/details.gohtml:83
#: web/templates/admin/campsite/index.gohtml:41
#: web/templates/admin/campsite/type/index.gohtml:53
#: web/templates/admin/season/index.gohtml:44
#: web/templates/admin/user/login-attempts.gohtml:31
@ -489,6 +487,88 @@ msgstr "A menys duna hora de <strong>Girona</strong>, a una de <strong>La Bis
msgid "Discover"
msgstr "Descobreix"
#: web/templates/public/form.gohtml:28 web/templates/admin/form.gohtml:28
msgctxt "input"
msgid "Month"
msgstr "Mes"
#: web/templates/public/form.gohtml:30 web/templates/admin/form.gohtml:30
#: pkg/season/admin.go:183
msgctxt "month"
msgid "January"
msgstr "gener"
#: web/templates/public/form.gohtml:31 web/templates/admin/form.gohtml:31
#: pkg/season/admin.go:184
msgctxt "month"
msgid "February"
msgstr "febrer"
#: web/templates/public/form.gohtml:32 web/templates/admin/form.gohtml:32
#: pkg/season/admin.go:185
msgctxt "month"
msgid "March"
msgstr "març"
#: web/templates/public/form.gohtml:33 web/templates/admin/form.gohtml:33
#: pkg/season/admin.go:186
msgctxt "month"
msgid "April"
msgstr "abril"
#: web/templates/public/form.gohtml:34 web/templates/admin/form.gohtml:34
#: pkg/season/admin.go:187
msgctxt "month"
msgid "May"
msgstr "maig"
#: web/templates/public/form.gohtml:35 web/templates/admin/form.gohtml:35
#: pkg/season/admin.go:188
msgctxt "month"
msgid "June"
msgstr "juny"
#: web/templates/public/form.gohtml:36 web/templates/admin/form.gohtml:36
#: pkg/season/admin.go:189
msgctxt "month"
msgid "July"
msgstr "juliol"
#: web/templates/public/form.gohtml:37 web/templates/admin/form.gohtml:37
#: pkg/season/admin.go:190
msgctxt "month"
msgid "August"
msgstr "agost"
#: web/templates/public/form.gohtml:38 web/templates/admin/form.gohtml:38
#: pkg/season/admin.go:191
msgctxt "month"
msgid "September"
msgstr "setembre"
#: web/templates/public/form.gohtml:39 web/templates/admin/form.gohtml:39
#: pkg/season/admin.go:192
msgctxt "month"
msgid "October"
msgstr "octubre"
#: web/templates/public/form.gohtml:40 web/templates/admin/form.gohtml:40
#: pkg/season/admin.go:193
msgctxt "month"
msgid "November"
msgstr "novembre"
#: web/templates/public/form.gohtml:41 web/templates/admin/form.gohtml:41
#: pkg/season/admin.go:194
msgctxt "month"
msgid "December"
msgstr "desembre"
#: web/templates/public/form.gohtml:45 web/templates/admin/form.gohtml:45
msgctxt "input"
msgid "Year"
msgstr "Any"
#: web/templates/public/campsite/type.gohtml:49
#: web/templates/public/booking/fields.gohtml:273
msgctxt "action"
@ -1059,7 +1139,7 @@ msgid "Slug"
msgstr "Àlies"
#: web/templates/admin/legal/form.gohtml:50
#: web/templates/admin/campsite/feature/form.gohtml:50
#: web/templates/admin/campsite/feature/form.gohtml:51
#: web/templates/admin/campsite/type/feature/form.gohtml:59
#: web/templates/admin/campsite/type/form.gohtml:51
#: web/templates/admin/campsite/type/option/form.gohtml:41
@ -1080,9 +1160,9 @@ msgstr "Contingut"
#: web/templates/admin/legal/form.gohtml:88
#: web/templates/admin/carousel/form.gohtml:55
#: web/templates/admin/campsite/feature/form.gohtml:65
#: web/templates/admin/campsite/carousel/form.gohtml:50
#: web/templates/admin/campsite/form.gohtml:92
#: web/templates/admin/campsite/feature/form.gohtml:66
#: web/templates/admin/campsite/carousel/form.gohtml:51
#: web/templates/admin/campsite/form.gohtml:96
#: web/templates/admin/campsite/type/feature/form.gohtml:74
#: web/templates/admin/campsite/type/carousel/form.gohtml:59
#: web/templates/admin/campsite/type/form.gohtml:287
@ -1102,9 +1182,9 @@ msgstr "Actualitza"
#: web/templates/admin/legal/form.gohtml:90
#: web/templates/admin/carousel/form.gohtml:57
#: web/templates/admin/campsite/feature/form.gohtml:67
#: web/templates/admin/campsite/carousel/form.gohtml:52
#: web/templates/admin/campsite/form.gohtml:94
#: web/templates/admin/campsite/feature/form.gohtml:68
#: web/templates/admin/campsite/carousel/form.gohtml:53
#: web/templates/admin/campsite/form.gohtml:98
#: web/templates/admin/campsite/type/feature/form.gohtml:76
#: web/templates/admin/campsite/type/carousel/form.gohtml:61
#: web/templates/admin/campsite/type/form.gohtml:289
@ -1125,7 +1205,7 @@ msgid "Add Legal Text"
msgstr "Afegeix text legal"
#: web/templates/admin/legal/index.gohtml:20
#: web/templates/admin/campsite/feature/index.gohtml:30
#: web/templates/admin/campsite/feature/index.gohtml:31
#: web/templates/admin/campsite/type/feature/index.gohtml:31
#: web/templates/admin/campsite/type/option/index.gohtml:30
#: web/templates/admin/campsite/type/index.gohtml:29
@ -1155,7 +1235,7 @@ msgid "New Carousel Slide"
msgstr "Nova diapositiva del carrusel"
#: web/templates/admin/carousel/form.gohtml:40
#: web/templates/admin/campsite/carousel/form.gohtml:35
#: web/templates/admin/campsite/carousel/form.gohtml:36
#: web/templates/admin/campsite/type/carousel/form.gohtml:44
#: web/templates/admin/amenity/carousel/form.gohtml:35
msgctxt "input"
@ -1193,12 +1273,21 @@ msgid "New Campsite Feature"
msgstr "Nova característica de lallotjament"
#: web/templates/admin/campsite/feature/form.gohtml:17
#: web/templates/admin/campsite/feature/index.gohtml:11
#: web/templates/admin/campsite/carousel/form.gohtml:17
#: web/templates/admin/campsite/carousel/index.gohtml:11
#: web/templates/admin/campsite/form.gohtml:8
msgctxt "title"
msgid "Edit Campsite"
msgstr "Edició de lallotjament"
#: web/templates/admin/campsite/feature/form.gohtml:18
#: web/templates/admin/campsite/feature/index.gohtml:6
msgctxt "title"
msgid "Campsite Features"
msgstr "Característiques de lallotjament"
#: web/templates/admin/campsite/feature/form.gohtml:32
#: web/templates/admin/campsite/feature/form.gohtml:33
#: web/templates/admin/campsite/type/feature/form.gohtml:41
#: web/templates/admin/services/form.gohtml:35
#: web/templates/admin/amenity/feature/form.gohtml:32
@ -1206,15 +1295,15 @@ msgctxt "input"
msgid "Icon"
msgstr "Icona"
#: web/templates/admin/campsite/feature/index.gohtml:15
#: web/templates/admin/campsite/feature/index.gohtml:16
#: web/templates/admin/campsite/type/feature/index.gohtml:16
#: web/templates/admin/amenity/feature/index.gohtml:15
msgctxt "action"
msgid "Add Feature"
msgstr "Afegeix característica"
#: web/templates/admin/campsite/feature/index.gohtml:31
#: web/templates/admin/campsite/carousel/index.gohtml:31
#: web/templates/admin/campsite/feature/index.gohtml:32
#: web/templates/admin/campsite/carousel/index.gohtml:32
#: web/templates/admin/campsite/type/feature/index.gohtml:32
#: web/templates/admin/campsite/type/carousel/index.gohtml:32
#: web/templates/admin/campsite/type/option/index.gohtml:31
@ -1231,14 +1320,14 @@ msgctxt "header"
msgid "Actions"
msgstr "Accions"
#: web/templates/admin/campsite/feature/index.gohtml:35
#: web/templates/admin/campsite/feature/index.gohtml:36
#: web/templates/admin/campsite/type/feature/index.gohtml:36
#: web/templates/admin/amenity/feature/index.gohtml:35
msgid "Are you sure you wish to delete this feature?"
msgstr "Esteu segur de voler esborrar aquesta característica?"
#: web/templates/admin/campsite/feature/index.gohtml:47
#: web/templates/admin/campsite/carousel/index.gohtml:49
#: web/templates/admin/campsite/feature/index.gohtml:48
#: web/templates/admin/campsite/carousel/index.gohtml:50
#: web/templates/admin/campsite/type/feature/index.gohtml:48
#: web/templates/admin/campsite/type/carousel/index.gohtml:50
#: web/templates/admin/campsite/type/option/index.gohtml:47
@ -1256,7 +1345,7 @@ msgctxt "action"
msgid "Delete"
msgstr "Esborra"
#: web/templates/admin/campsite/feature/index.gohtml:56
#: web/templates/admin/campsite/feature/index.gohtml:57
msgid "No campsite features added yet."
msgstr "No sha afegit cap característica a lallotjament encara."
@ -1270,13 +1359,13 @@ msgctxt "title"
msgid "New Campsite Carousel Slide"
msgstr "Nova diapositiva del carrusel de lallotjament"
#: web/templates/admin/campsite/carousel/form.gohtml:17
#: web/templates/admin/campsite/carousel/form.gohtml:18
#: web/templates/admin/campsite/carousel/index.gohtml:6
msgctxt "title"
msgid "Campsite Carousel"
msgstr "Carrusel de lallotjament"
#: web/templates/admin/campsite/carousel/index.gohtml:16
#: web/templates/admin/campsite/carousel/index.gohtml:17
#: web/templates/admin/campsite/type/carousel/index.gohtml:17
#: web/templates/admin/services/index.gohtml:15
#: web/templates/admin/amenity/carousel/index.gohtml:16
@ -1285,7 +1374,7 @@ msgctxt "action"
msgid "Add slide"
msgstr "Afegeix diapositiva"
#: web/templates/admin/campsite/carousel/index.gohtml:29
#: web/templates/admin/campsite/carousel/index.gohtml:30
#: web/templates/admin/campsite/type/carousel/index.gohtml:30
#: web/templates/admin/services/index.gohtml:28
#: web/templates/admin/surroundings/index.gohtml:82
@ -1296,7 +1385,7 @@ msgctxt "header"
msgid "Image"
msgstr "Imatge"
#: web/templates/admin/campsite/carousel/index.gohtml:30
#: web/templates/admin/campsite/carousel/index.gohtml:31
#: web/templates/admin/campsite/type/carousel/index.gohtml:31
#: web/templates/admin/services/index.gohtml:29
#: web/templates/admin/amenity/carousel/index.gohtml:30
@ -1306,7 +1395,7 @@ msgctxt "header"
msgid "Caption"
msgstr "Llegenda"
#: web/templates/admin/campsite/carousel/index.gohtml:35
#: web/templates/admin/campsite/carousel/index.gohtml:36
#: web/templates/admin/campsite/type/carousel/index.gohtml:36
#: web/templates/admin/services/index.gohtml:34
#: web/templates/admin/amenity/carousel/index.gohtml:35
@ -1314,7 +1403,7 @@ msgstr "Llegenda"
msgid "Are you sure you wish to delete this slide?"
msgstr "Esteu segur de voler esborrar aquesta diapositiva?"
#: web/templates/admin/campsite/carousel/index.gohtml:58
#: web/templates/admin/campsite/carousel/index.gohtml:59
#: web/templates/admin/campsite/type/carousel/index.gohtml:59
#: web/templates/admin/services/index.gohtml:56
#: web/templates/admin/amenity/carousel/index.gohtml:58
@ -1322,44 +1411,52 @@ msgstr "Esteu segur de voler esborrar aquesta diapositiva?"
msgid "No slides added yet."
msgstr "No sha afegit cap diapositiva encara."
#: web/templates/admin/campsite/form.gohtml:8
msgctxt "title"
msgid "Edit Campsite"
msgstr "Edició de lallotjament"
#: web/templates/admin/campsite/form.gohtml:10
msgctxt "title"
msgid "New Campsite"
msgstr "Nou allotjament"
#: web/templates/admin/campsite/form.gohtml:33
#: web/templates/admin/campsite/index.gohtml:27
#: web/templates/admin/campsite/form.gohtml:21
#: web/templates/admin/campsite/type/index.gohtml:45
#: web/templates/admin/amenity/index.gohtml:35
msgctxt "action"
msgid "Edit Features"
msgstr "Edita les característiques"
#: web/templates/admin/campsite/form.gohtml:22
#: web/templates/admin/campsite/type/index.gohtml:51
#: web/templates/admin/amenity/index.gohtml:38
msgctxt "action"
msgid "Edit Carousel"
msgstr "Edita el carrusel"
#: web/templates/admin/campsite/form.gohtml:37
msgctxt "campsite"
msgid "Active"
msgstr "Actiu"
#: web/templates/admin/campsite/form.gohtml:42
#: web/templates/admin/campsite/form.gohtml:46
msgctxt "input"
msgid "Campsite Type"
msgstr "Tipus dallotjament"
#: web/templates/admin/campsite/form.gohtml:47
#: web/templates/admin/campsite/form.gohtml:51
msgid "Select campsite type"
msgstr "Escolliu un tipus dallotjament"
#: web/templates/admin/campsite/form.gohtml:56
#: web/templates/admin/campsite/form.gohtml:60
#: web/templates/admin/amenity/form.gohtml:42
msgctxt "input"
msgid "Label"
msgstr "Etiqueta"
#: web/templates/admin/campsite/form.gohtml:64
#: web/templates/admin/campsite/form.gohtml:68
#: web/templates/admin/amenity/form.gohtml:63
msgctxt "input"
msgid "Info (First Column)"
msgstr "Informació (primera columna)"
#: web/templates/admin/campsite/form.gohtml:77
#: web/templates/admin/campsite/form.gohtml:81
#: web/templates/admin/amenity/form.gohtml:76
msgctxt "input"
msgid "Info (Second Column)"
@ -1370,46 +1467,26 @@ msgctxt "action"
msgid "Add Campsite"
msgstr "Afegeix allotjament"
#: web/templates/admin/campsite/index.gohtml:23
#: web/templates/admin/campsite/index.gohtml:21
msgid "From Date"
msgstr "De la data"
#: web/templates/admin/campsite/index.gohtml:28
msgid "To Date"
msgstr "A la data"
#: web/templates/admin/campsite/index.gohtml:35
msgctxt "action"
msgid "Show"
msgstr "Mostra"
#: web/templates/admin/campsite/index.gohtml:50
#: web/templates/admin/amenity/index.gohtml:20
msgctxt "header"
msgid "Label"
msgstr "Etiqueta"
#: web/templates/admin/campsite/index.gohtml:24
msgctxt "header"
msgid "Type"
msgstr "Tipus"
#: web/templates/admin/campsite/index.gohtml:25
#: web/templates/admin/campsite/type/index.gohtml:30
#: web/templates/admin/amenity/index.gohtml:22
msgctxt "header"
msgid "Features"
msgstr "Característiques"
#: web/templates/admin/campsite/index.gohtml:26
#: web/templates/admin/campsite/type/index.gohtml:32
#: web/templates/admin/amenity/index.gohtml:23
msgctxt "header"
msgid "Carousel"
msgstr "Carrusel"
#: web/templates/admin/campsite/index.gohtml:36
#: web/templates/admin/campsite/type/index.gohtml:45
#: web/templates/admin/amenity/index.gohtml:35
msgctxt "action"
msgid "Edit Features"
msgstr "Edita les característiques"
#: web/templates/admin/campsite/index.gohtml:39
#: web/templates/admin/campsite/type/index.gohtml:51
#: web/templates/admin/amenity/index.gohtml:38
msgctxt "action"
msgid "Edit Carousel"
msgstr "Edita el carrusel"
#: web/templates/admin/campsite/index.gohtml:47
#: web/templates/admin/campsite/index.gohtml:78
msgid "No campsites added yet."
msgstr "No sha afegit cap allotjament encara."
@ -1654,11 +1731,23 @@ msgctxt "action"
msgid "Add Type"
msgstr "Afegeix tipus"
#: web/templates/admin/campsite/type/index.gohtml:30
#: web/templates/admin/amenity/index.gohtml:22
msgctxt "header"
msgid "Features"
msgstr "Característiques"
#: web/templates/admin/campsite/type/index.gohtml:31
msgctxt "header"
msgid "Options"
msgstr "Opcions"
#: web/templates/admin/campsite/type/index.gohtml:32
#: web/templates/admin/amenity/index.gohtml:23
msgctxt "header"
msgid "Carousel"
msgstr "Carrusel"
#: web/templates/admin/campsite/type/index.gohtml:48
msgctxt "action"
msgid "Edit Options"
@ -2548,75 +2637,15 @@ msgctxt "header"
msgid "Children (aged 2 to 10)"
msgstr "Mainada (entre 2 i 10 anys)"
#: pkg/campsite/admin.go:275 pkg/booking/public.go:172
#: pkg/campsite/admin.go:366 pkg/booking/public.go:172
#: pkg/booking/public.go:227
msgid "Selected campsite type is not valid."
msgstr "El tipus dallotjament escollit no és vàlid."
#: pkg/campsite/admin.go:276 pkg/amenity/admin.go:282
#: pkg/campsite/admin.go:367 pkg/amenity/admin.go:282
msgid "Label can not be empty."
msgstr "No podeu deixar letiqueta en blanc."
#: pkg/season/admin.go:183
msgctxt "month"
msgid "January"
msgstr "gener"
#: pkg/season/admin.go:184
msgctxt "month"
msgid "February"
msgstr "febrer"
#: pkg/season/admin.go:185
msgctxt "month"
msgid "March"
msgstr "març"
#: pkg/season/admin.go:186
msgctxt "month"
msgid "April"
msgstr "abril"
#: pkg/season/admin.go:187
msgctxt "month"
msgid "May"
msgstr "maig"
#: pkg/season/admin.go:188
msgctxt "month"
msgid "June"
msgstr "juny"
#: pkg/season/admin.go:189
msgctxt "month"
msgid "July"
msgstr "juliol"
#: pkg/season/admin.go:190
msgctxt "month"
msgid "August"
msgstr "agost"
#: pkg/season/admin.go:191
msgctxt "month"
msgid "September"
msgstr "setembre"
#: pkg/season/admin.go:192
msgctxt "month"
msgid "October"
msgstr "octubre"
#: pkg/season/admin.go:193
msgctxt "month"
msgid "November"
msgstr "novembre"
#: pkg/season/admin.go:194
msgctxt "month"
msgid "December"
msgstr "desembre"
#: pkg/season/admin.go:412
msgid "Color can not be empty."
msgstr "No podeu deixar el color en blanc."
@ -2956,6 +2985,10 @@ msgstr "No podeu deixar la població en blanc."
msgid "It is mandatory to agree to the reservation conditions."
msgstr "És obligatori acceptar les condicions de reserves."
#~ msgctxt "header"
#~ msgid "Type"
#~ msgstr "Tipus"
#~ msgid "Postal code can not be empty."
#~ msgstr "No podeu deixar el codi postal en blanc."

303
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: 2024-03-24 21:59+0100\n"
"POT-Creation-Date: 2024-04-19 11:18+0200\n"
"PO-Revision-Date: 2024-02-06 10:04+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
@ -134,7 +134,6 @@ msgstr "¿Tarjeta ACSI?"
#: web/templates/mail/payment/details.gotxt:18
#: web/templates/admin/payment/details.gohtml:83
#: web/templates/admin/campsite/index.gohtml:41
#: web/templates/admin/campsite/type/index.gohtml:53
#: web/templates/admin/season/index.gohtml:44
#: web/templates/admin/user/login-attempts.gohtml:31
@ -144,7 +143,6 @@ msgstr "Sí"
#: web/templates/mail/payment/details.gotxt:18
#: web/templates/admin/payment/details.gohtml:83
#: web/templates/admin/campsite/index.gohtml:41
#: web/templates/admin/campsite/type/index.gohtml:53
#: web/templates/admin/season/index.gohtml:44
#: web/templates/admin/user/login-attempts.gohtml:31
@ -489,6 +487,88 @@ msgstr "A menos de una hora de <strong>Girona</strong>, a una de <strong>La Bisb
msgid "Discover"
msgstr "Descubre"
#: web/templates/public/form.gohtml:28 web/templates/admin/form.gohtml:28
msgctxt "input"
msgid "Month"
msgstr "Mes"
#: web/templates/public/form.gohtml:30 web/templates/admin/form.gohtml:30
#: pkg/season/admin.go:183
msgctxt "month"
msgid "January"
msgstr "enero"
#: web/templates/public/form.gohtml:31 web/templates/admin/form.gohtml:31
#: pkg/season/admin.go:184
msgctxt "month"
msgid "February"
msgstr "febrero"
#: web/templates/public/form.gohtml:32 web/templates/admin/form.gohtml:32
#: pkg/season/admin.go:185
msgctxt "month"
msgid "March"
msgstr "marzo"
#: web/templates/public/form.gohtml:33 web/templates/admin/form.gohtml:33
#: pkg/season/admin.go:186
msgctxt "month"
msgid "April"
msgstr "abril"
#: web/templates/public/form.gohtml:34 web/templates/admin/form.gohtml:34
#: pkg/season/admin.go:187
msgctxt "month"
msgid "May"
msgstr "mayo"
#: web/templates/public/form.gohtml:35 web/templates/admin/form.gohtml:35
#: pkg/season/admin.go:188
msgctxt "month"
msgid "June"
msgstr "junio"
#: web/templates/public/form.gohtml:36 web/templates/admin/form.gohtml:36
#: pkg/season/admin.go:189
msgctxt "month"
msgid "July"
msgstr "julio"
#: web/templates/public/form.gohtml:37 web/templates/admin/form.gohtml:37
#: pkg/season/admin.go:190
msgctxt "month"
msgid "August"
msgstr "agosto"
#: web/templates/public/form.gohtml:38 web/templates/admin/form.gohtml:38
#: pkg/season/admin.go:191
msgctxt "month"
msgid "September"
msgstr "septiembre"
#: web/templates/public/form.gohtml:39 web/templates/admin/form.gohtml:39
#: pkg/season/admin.go:192
msgctxt "month"
msgid "October"
msgstr "octubre"
#: web/templates/public/form.gohtml:40 web/templates/admin/form.gohtml:40
#: pkg/season/admin.go:193
msgctxt "month"
msgid "November"
msgstr "noviembre"
#: web/templates/public/form.gohtml:41 web/templates/admin/form.gohtml:41
#: pkg/season/admin.go:194
msgctxt "month"
msgid "December"
msgstr "diciembre"
#: web/templates/public/form.gohtml:45 web/templates/admin/form.gohtml:45
msgctxt "input"
msgid "Year"
msgstr "Año"
#: web/templates/public/campsite/type.gohtml:49
#: web/templates/public/booking/fields.gohtml:273
msgctxt "action"
@ -1059,7 +1139,7 @@ msgid "Slug"
msgstr "Álias"
#: web/templates/admin/legal/form.gohtml:50
#: web/templates/admin/campsite/feature/form.gohtml:50
#: web/templates/admin/campsite/feature/form.gohtml:51
#: web/templates/admin/campsite/type/feature/form.gohtml:59
#: web/templates/admin/campsite/type/form.gohtml:51
#: web/templates/admin/campsite/type/option/form.gohtml:41
@ -1080,9 +1160,9 @@ msgstr "Contenido"
#: web/templates/admin/legal/form.gohtml:88
#: web/templates/admin/carousel/form.gohtml:55
#: web/templates/admin/campsite/feature/form.gohtml:65
#: web/templates/admin/campsite/carousel/form.gohtml:50
#: web/templates/admin/campsite/form.gohtml:92
#: web/templates/admin/campsite/feature/form.gohtml:66
#: web/templates/admin/campsite/carousel/form.gohtml:51
#: web/templates/admin/campsite/form.gohtml:96
#: web/templates/admin/campsite/type/feature/form.gohtml:74
#: web/templates/admin/campsite/type/carousel/form.gohtml:59
#: web/templates/admin/campsite/type/form.gohtml:287
@ -1102,9 +1182,9 @@ msgstr "Actualizar"
#: web/templates/admin/legal/form.gohtml:90
#: web/templates/admin/carousel/form.gohtml:57
#: web/templates/admin/campsite/feature/form.gohtml:67
#: web/templates/admin/campsite/carousel/form.gohtml:52
#: web/templates/admin/campsite/form.gohtml:94
#: web/templates/admin/campsite/feature/form.gohtml:68
#: web/templates/admin/campsite/carousel/form.gohtml:53
#: web/templates/admin/campsite/form.gohtml:98
#: web/templates/admin/campsite/type/feature/form.gohtml:76
#: web/templates/admin/campsite/type/carousel/form.gohtml:61
#: web/templates/admin/campsite/type/form.gohtml:289
@ -1125,7 +1205,7 @@ msgid "Add Legal Text"
msgstr "Añadir texto legal"
#: web/templates/admin/legal/index.gohtml:20
#: web/templates/admin/campsite/feature/index.gohtml:30
#: web/templates/admin/campsite/feature/index.gohtml:31
#: web/templates/admin/campsite/type/feature/index.gohtml:31
#: web/templates/admin/campsite/type/option/index.gohtml:30
#: web/templates/admin/campsite/type/index.gohtml:29
@ -1155,7 +1235,7 @@ msgid "New Carousel Slide"
msgstr "Nueva diapositiva del carrusel"
#: web/templates/admin/carousel/form.gohtml:40
#: web/templates/admin/campsite/carousel/form.gohtml:35
#: web/templates/admin/campsite/carousel/form.gohtml:36
#: web/templates/admin/campsite/type/carousel/form.gohtml:44
#: web/templates/admin/amenity/carousel/form.gohtml:35
msgctxt "input"
@ -1193,12 +1273,21 @@ msgid "New Campsite Feature"
msgstr "Nueva característica del alojamiento"
#: web/templates/admin/campsite/feature/form.gohtml:17
#: web/templates/admin/campsite/feature/index.gohtml:11
#: web/templates/admin/campsite/carousel/form.gohtml:17
#: web/templates/admin/campsite/carousel/index.gohtml:11
#: web/templates/admin/campsite/form.gohtml:8
msgctxt "title"
msgid "Edit Campsite"
msgstr "Edición del alojamientos"
#: web/templates/admin/campsite/feature/form.gohtml:18
#: web/templates/admin/campsite/feature/index.gohtml:6
msgctxt "title"
msgid "Campsite Features"
msgstr "Características del alojamiento"
#: web/templates/admin/campsite/feature/form.gohtml:32
#: web/templates/admin/campsite/feature/form.gohtml:33
#: web/templates/admin/campsite/type/feature/form.gohtml:41
#: web/templates/admin/services/form.gohtml:35
#: web/templates/admin/amenity/feature/form.gohtml:32
@ -1206,15 +1295,15 @@ msgctxt "input"
msgid "Icon"
msgstr "Icono"
#: web/templates/admin/campsite/feature/index.gohtml:15
#: web/templates/admin/campsite/feature/index.gohtml:16
#: web/templates/admin/campsite/type/feature/index.gohtml:16
#: web/templates/admin/amenity/feature/index.gohtml:15
msgctxt "action"
msgid "Add Feature"
msgstr "Añadir características"
#: web/templates/admin/campsite/feature/index.gohtml:31
#: web/templates/admin/campsite/carousel/index.gohtml:31
#: web/templates/admin/campsite/feature/index.gohtml:32
#: web/templates/admin/campsite/carousel/index.gohtml:32
#: web/templates/admin/campsite/type/feature/index.gohtml:32
#: web/templates/admin/campsite/type/carousel/index.gohtml:32
#: web/templates/admin/campsite/type/option/index.gohtml:31
@ -1231,14 +1320,14 @@ msgctxt "header"
msgid "Actions"
msgstr "Acciones"
#: web/templates/admin/campsite/feature/index.gohtml:35
#: web/templates/admin/campsite/feature/index.gohtml:36
#: web/templates/admin/campsite/type/feature/index.gohtml:36
#: web/templates/admin/amenity/feature/index.gohtml:35
msgid "Are you sure you wish to delete this feature?"
msgstr "¿Estáis seguro de querer borrar esta característica?"
#: web/templates/admin/campsite/feature/index.gohtml:47
#: web/templates/admin/campsite/carousel/index.gohtml:49
#: web/templates/admin/campsite/feature/index.gohtml:48
#: web/templates/admin/campsite/carousel/index.gohtml:50
#: web/templates/admin/campsite/type/feature/index.gohtml:48
#: web/templates/admin/campsite/type/carousel/index.gohtml:50
#: web/templates/admin/campsite/type/option/index.gohtml:47
@ -1256,7 +1345,7 @@ msgctxt "action"
msgid "Delete"
msgstr "Borrar"
#: web/templates/admin/campsite/feature/index.gohtml:56
#: web/templates/admin/campsite/feature/index.gohtml:57
msgid "No campsite features added yet."
msgstr "No se ha añadido ninguna característica al alojamiento todavía."
@ -1270,13 +1359,13 @@ msgctxt "title"
msgid "New Campsite Carousel Slide"
msgstr "Nueva diapositiva del carrusel del alojamiento"
#: web/templates/admin/campsite/carousel/form.gohtml:17
#: web/templates/admin/campsite/carousel/form.gohtml:18
#: web/templates/admin/campsite/carousel/index.gohtml:6
msgctxt "title"
msgid "Campsite Carousel"
msgstr "Carrusel del alojamiento"
#: web/templates/admin/campsite/carousel/index.gohtml:16
#: web/templates/admin/campsite/carousel/index.gohtml:17
#: web/templates/admin/campsite/type/carousel/index.gohtml:17
#: web/templates/admin/services/index.gohtml:15
#: web/templates/admin/amenity/carousel/index.gohtml:16
@ -1285,7 +1374,7 @@ msgctxt "action"
msgid "Add slide"
msgstr "Añadir diapositiva"
#: web/templates/admin/campsite/carousel/index.gohtml:29
#: web/templates/admin/campsite/carousel/index.gohtml:30
#: web/templates/admin/campsite/type/carousel/index.gohtml:30
#: web/templates/admin/services/index.gohtml:28
#: web/templates/admin/surroundings/index.gohtml:82
@ -1296,7 +1385,7 @@ msgctxt "header"
msgid "Image"
msgstr "Imagen"
#: web/templates/admin/campsite/carousel/index.gohtml:30
#: web/templates/admin/campsite/carousel/index.gohtml:31
#: web/templates/admin/campsite/type/carousel/index.gohtml:31
#: web/templates/admin/services/index.gohtml:29
#: web/templates/admin/amenity/carousel/index.gohtml:30
@ -1306,7 +1395,7 @@ msgctxt "header"
msgid "Caption"
msgstr "Leyenda"
#: web/templates/admin/campsite/carousel/index.gohtml:35
#: web/templates/admin/campsite/carousel/index.gohtml:36
#: web/templates/admin/campsite/type/carousel/index.gohtml:36
#: web/templates/admin/services/index.gohtml:34
#: web/templates/admin/amenity/carousel/index.gohtml:35
@ -1314,7 +1403,7 @@ msgstr "Leyenda"
msgid "Are you sure you wish to delete this slide?"
msgstr "¿Estáis seguro de querer borrar esta diapositiva?"
#: web/templates/admin/campsite/carousel/index.gohtml:58
#: web/templates/admin/campsite/carousel/index.gohtml:59
#: web/templates/admin/campsite/type/carousel/index.gohtml:59
#: web/templates/admin/services/index.gohtml:56
#: web/templates/admin/amenity/carousel/index.gohtml:58
@ -1322,44 +1411,52 @@ msgstr "¿Estáis seguro de querer borrar esta diapositiva?"
msgid "No slides added yet."
msgstr "No se ha añadido ninguna diapositiva todavía."
#: web/templates/admin/campsite/form.gohtml:8
msgctxt "title"
msgid "Edit Campsite"
msgstr "Edición del alojamientos"
#: web/templates/admin/campsite/form.gohtml:10
msgctxt "title"
msgid "New Campsite"
msgstr "Nuevo alojamiento"
#: web/templates/admin/campsite/form.gohtml:33
#: web/templates/admin/campsite/index.gohtml:27
#: web/templates/admin/campsite/form.gohtml:21
#: web/templates/admin/campsite/type/index.gohtml:45
#: web/templates/admin/amenity/index.gohtml:35
msgctxt "action"
msgid "Edit Features"
msgstr "Editar las características"
#: web/templates/admin/campsite/form.gohtml:22
#: web/templates/admin/campsite/type/index.gohtml:51
#: web/templates/admin/amenity/index.gohtml:38
msgctxt "action"
msgid "Edit Carousel"
msgstr "Editar el carrusel"
#: web/templates/admin/campsite/form.gohtml:37
msgctxt "campsite"
msgid "Active"
msgstr "Activo"
#: web/templates/admin/campsite/form.gohtml:42
#: web/templates/admin/campsite/form.gohtml:46
msgctxt "input"
msgid "Campsite Type"
msgstr "Tipo de alojamiento"
#: web/templates/admin/campsite/form.gohtml:47
#: web/templates/admin/campsite/form.gohtml:51
msgid "Select campsite type"
msgstr "Escoged un tipo de alojamiento"
#: web/templates/admin/campsite/form.gohtml:56
#: web/templates/admin/campsite/form.gohtml:60
#: web/templates/admin/amenity/form.gohtml:42
msgctxt "input"
msgid "Label"
msgstr "Etiqueta"
#: web/templates/admin/campsite/form.gohtml:64
#: web/templates/admin/campsite/form.gohtml:68
#: web/templates/admin/amenity/form.gohtml:63
msgctxt "input"
msgid "Info (First Column)"
msgstr "Información (primera columna)"
#: web/templates/admin/campsite/form.gohtml:77
#: web/templates/admin/campsite/form.gohtml:81
#: web/templates/admin/amenity/form.gohtml:76
msgctxt "input"
msgid "Info (Second Column)"
@ -1370,46 +1467,26 @@ msgctxt "action"
msgid "Add Campsite"
msgstr "Añadir alojamiento"
#: web/templates/admin/campsite/index.gohtml:23
#: web/templates/admin/campsite/index.gohtml:21
msgid "From Date"
msgstr "De la fecha"
#: web/templates/admin/campsite/index.gohtml:28
msgid "To Date"
msgstr "A la fecha"
#: web/templates/admin/campsite/index.gohtml:35
msgctxt "action"
msgid "Show"
msgstr "Mostrar"
#: web/templates/admin/campsite/index.gohtml:50
#: web/templates/admin/amenity/index.gohtml:20
msgctxt "header"
msgid "Label"
msgstr "Etiqueta"
#: web/templates/admin/campsite/index.gohtml:24
msgctxt "header"
msgid "Type"
msgstr "Tipo"
#: web/templates/admin/campsite/index.gohtml:25
#: web/templates/admin/campsite/type/index.gohtml:30
#: web/templates/admin/amenity/index.gohtml:22
msgctxt "header"
msgid "Features"
msgstr "Características"
#: web/templates/admin/campsite/index.gohtml:26
#: web/templates/admin/campsite/type/index.gohtml:32
#: web/templates/admin/amenity/index.gohtml:23
msgctxt "header"
msgid "Carousel"
msgstr "Carrusel"
#: web/templates/admin/campsite/index.gohtml:36
#: web/templates/admin/campsite/type/index.gohtml:45
#: web/templates/admin/amenity/index.gohtml:35
msgctxt "action"
msgid "Edit Features"
msgstr "Editar las características"
#: web/templates/admin/campsite/index.gohtml:39
#: web/templates/admin/campsite/type/index.gohtml:51
#: web/templates/admin/amenity/index.gohtml:38
msgctxt "action"
msgid "Edit Carousel"
msgstr "Editar el carrusel"
#: web/templates/admin/campsite/index.gohtml:47
#: web/templates/admin/campsite/index.gohtml:78
msgid "No campsites added yet."
msgstr "No se ha añadido ningún alojamiento todavía."
@ -1654,11 +1731,23 @@ msgctxt "action"
msgid "Add Type"
msgstr "Añadir tipo"
#: web/templates/admin/campsite/type/index.gohtml:30
#: web/templates/admin/amenity/index.gohtml:22
msgctxt "header"
msgid "Features"
msgstr "Características"
#: web/templates/admin/campsite/type/index.gohtml:31
msgctxt "header"
msgid "Options"
msgstr "Opciones"
#: web/templates/admin/campsite/type/index.gohtml:32
#: web/templates/admin/amenity/index.gohtml:23
msgctxt "header"
msgid "Carousel"
msgstr "Carrusel"
#: web/templates/admin/campsite/type/index.gohtml:48
msgctxt "action"
msgid "Edit Options"
@ -2548,75 +2637,15 @@ msgctxt "header"
msgid "Children (aged 2 to 10)"
msgstr "Niños (de 2 a 10 años)"
#: pkg/campsite/admin.go:275 pkg/booking/public.go:172
#: pkg/campsite/admin.go:366 pkg/booking/public.go:172
#: pkg/booking/public.go:227
msgid "Selected campsite type is not valid."
msgstr "El tipo de alojamiento escogido no es válido."
#: pkg/campsite/admin.go:276 pkg/amenity/admin.go:282
#: pkg/campsite/admin.go:367 pkg/amenity/admin.go:282
msgid "Label can not be empty."
msgstr "No podéis dejar la etiqueta en blanco."
#: pkg/season/admin.go:183
msgctxt "month"
msgid "January"
msgstr "enero"
#: pkg/season/admin.go:184
msgctxt "month"
msgid "February"
msgstr "febrero"
#: pkg/season/admin.go:185
msgctxt "month"
msgid "March"
msgstr "marzo"
#: pkg/season/admin.go:186
msgctxt "month"
msgid "April"
msgstr "abril"
#: pkg/season/admin.go:187
msgctxt "month"
msgid "May"
msgstr "mayo"
#: pkg/season/admin.go:188
msgctxt "month"
msgid "June"
msgstr "junio"
#: pkg/season/admin.go:189
msgctxt "month"
msgid "July"
msgstr "julio"
#: pkg/season/admin.go:190
msgctxt "month"
msgid "August"
msgstr "agosto"
#: pkg/season/admin.go:191
msgctxt "month"
msgid "September"
msgstr "septiembre"
#: pkg/season/admin.go:192
msgctxt "month"
msgid "October"
msgstr "octubre"
#: pkg/season/admin.go:193
msgctxt "month"
msgid "November"
msgstr "noviembre"
#: pkg/season/admin.go:194
msgctxt "month"
msgid "December"
msgstr "diciembre"
#: pkg/season/admin.go:412
msgid "Color can not be empty."
msgstr "No podéis dejar el color en blanco."
@ -2956,6 +2985,10 @@ msgstr "No podéis dejar la población en blanco."
msgid "It is mandatory to agree to the reservation conditions."
msgstr "Es obligatorio aceptar las condiciones de reserva."
#~ msgctxt "header"
#~ msgid "Type"
#~ msgstr "Tipo"
#~ msgid "Postal code can not be empty."
#~ msgstr "No podéis dejar el código postal en blanco."

303
po/fr.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: 2024-03-24 21:59+0100\n"
"POT-Creation-Date: 2024-04-19 11:18+0200\n"
"PO-Revision-Date: 2024-02-06 10:05+0100\n"
"Last-Translator: Oriol Carbonell <info@oriolcarbonell.cat>\n"
"Language-Team: French <traduc@traduc.org>\n"
@ -134,7 +134,6 @@ msgstr "Carte ACSI ?"
#: web/templates/mail/payment/details.gotxt:18
#: web/templates/admin/payment/details.gohtml:83
#: web/templates/admin/campsite/index.gohtml:41
#: web/templates/admin/campsite/type/index.gohtml:53
#: web/templates/admin/season/index.gohtml:44
#: web/templates/admin/user/login-attempts.gohtml:31
@ -144,7 +143,6 @@ msgstr "Oui"
#: web/templates/mail/payment/details.gotxt:18
#: web/templates/admin/payment/details.gohtml:83
#: web/templates/admin/campsite/index.gohtml:41
#: web/templates/admin/campsite/type/index.gohtml:53
#: web/templates/admin/season/index.gohtml:44
#: web/templates/admin/user/login-attempts.gohtml:31
@ -489,6 +487,88 @@ msgstr "À moins dune heure de <strong>Gérone</strong>, un de <strong>La Bis
msgid "Discover"
msgstr "Découvrir"
#: web/templates/public/form.gohtml:28 web/templates/admin/form.gohtml:28
msgctxt "input"
msgid "Month"
msgstr "Mois"
#: web/templates/public/form.gohtml:30 web/templates/admin/form.gohtml:30
#: pkg/season/admin.go:183
msgctxt "month"
msgid "January"
msgstr "Janvier"
#: web/templates/public/form.gohtml:31 web/templates/admin/form.gohtml:31
#: pkg/season/admin.go:184
msgctxt "month"
msgid "February"
msgstr "Février"
#: web/templates/public/form.gohtml:32 web/templates/admin/form.gohtml:32
#: pkg/season/admin.go:185
msgctxt "month"
msgid "March"
msgstr "Mars"
#: web/templates/public/form.gohtml:33 web/templates/admin/form.gohtml:33
#: pkg/season/admin.go:186
msgctxt "month"
msgid "April"
msgstr "Avril"
#: web/templates/public/form.gohtml:34 web/templates/admin/form.gohtml:34
#: pkg/season/admin.go:187
msgctxt "month"
msgid "May"
msgstr "Mai"
#: web/templates/public/form.gohtml:35 web/templates/admin/form.gohtml:35
#: pkg/season/admin.go:188
msgctxt "month"
msgid "June"
msgstr "Juin"
#: web/templates/public/form.gohtml:36 web/templates/admin/form.gohtml:36
#: pkg/season/admin.go:189
msgctxt "month"
msgid "July"
msgstr "Juillet"
#: web/templates/public/form.gohtml:37 web/templates/admin/form.gohtml:37
#: pkg/season/admin.go:190
msgctxt "month"
msgid "August"
msgstr "Août"
#: web/templates/public/form.gohtml:38 web/templates/admin/form.gohtml:38
#: pkg/season/admin.go:191
msgctxt "month"
msgid "September"
msgstr "Septembre"
#: web/templates/public/form.gohtml:39 web/templates/admin/form.gohtml:39
#: pkg/season/admin.go:192
msgctxt "month"
msgid "October"
msgstr "Octobre"
#: web/templates/public/form.gohtml:40 web/templates/admin/form.gohtml:40
#: pkg/season/admin.go:193
msgctxt "month"
msgid "November"
msgstr "Novembre"
#: web/templates/public/form.gohtml:41 web/templates/admin/form.gohtml:41
#: pkg/season/admin.go:194
msgctxt "month"
msgid "December"
msgstr "Décembre"
#: web/templates/public/form.gohtml:45 web/templates/admin/form.gohtml:45
msgctxt "input"
msgid "Year"
msgstr "Année"
#: web/templates/public/campsite/type.gohtml:49
#: web/templates/public/booking/fields.gohtml:273
msgctxt "action"
@ -1059,7 +1139,7 @@ msgid "Slug"
msgstr "Slug"
#: web/templates/admin/legal/form.gohtml:50
#: web/templates/admin/campsite/feature/form.gohtml:50
#: web/templates/admin/campsite/feature/form.gohtml:51
#: web/templates/admin/campsite/type/feature/form.gohtml:59
#: web/templates/admin/campsite/type/form.gohtml:51
#: web/templates/admin/campsite/type/option/form.gohtml:41
@ -1080,9 +1160,9 @@ msgstr "Contenu"
#: web/templates/admin/legal/form.gohtml:88
#: web/templates/admin/carousel/form.gohtml:55
#: web/templates/admin/campsite/feature/form.gohtml:65
#: web/templates/admin/campsite/carousel/form.gohtml:50
#: web/templates/admin/campsite/form.gohtml:92
#: web/templates/admin/campsite/feature/form.gohtml:66
#: web/templates/admin/campsite/carousel/form.gohtml:51
#: web/templates/admin/campsite/form.gohtml:96
#: web/templates/admin/campsite/type/feature/form.gohtml:74
#: web/templates/admin/campsite/type/carousel/form.gohtml:59
#: web/templates/admin/campsite/type/form.gohtml:287
@ -1102,9 +1182,9 @@ msgstr "Mettre à jour"
#: web/templates/admin/legal/form.gohtml:90
#: web/templates/admin/carousel/form.gohtml:57
#: web/templates/admin/campsite/feature/form.gohtml:67
#: web/templates/admin/campsite/carousel/form.gohtml:52
#: web/templates/admin/campsite/form.gohtml:94
#: web/templates/admin/campsite/feature/form.gohtml:68
#: web/templates/admin/campsite/carousel/form.gohtml:53
#: web/templates/admin/campsite/form.gohtml:98
#: web/templates/admin/campsite/type/feature/form.gohtml:76
#: web/templates/admin/campsite/type/carousel/form.gohtml:61
#: web/templates/admin/campsite/type/form.gohtml:289
@ -1125,7 +1205,7 @@ msgid "Add Legal Text"
msgstr "Ajouter un texte juridique"
#: web/templates/admin/legal/index.gohtml:20
#: web/templates/admin/campsite/feature/index.gohtml:30
#: web/templates/admin/campsite/feature/index.gohtml:31
#: web/templates/admin/campsite/type/feature/index.gohtml:31
#: web/templates/admin/campsite/type/option/index.gohtml:30
#: web/templates/admin/campsite/type/index.gohtml:29
@ -1155,7 +1235,7 @@ msgid "New Carousel Slide"
msgstr "Nouveau diapositive carrousel"
#: web/templates/admin/carousel/form.gohtml:40
#: web/templates/admin/campsite/carousel/form.gohtml:35
#: web/templates/admin/campsite/carousel/form.gohtml:36
#: web/templates/admin/campsite/type/carousel/form.gohtml:44
#: web/templates/admin/amenity/carousel/form.gohtml:35
msgctxt "input"
@ -1193,12 +1273,21 @@ msgid "New Campsite Feature"
msgstr "Nouvelle caractéristique de camping"
#: web/templates/admin/campsite/feature/form.gohtml:17
#: web/templates/admin/campsite/feature/index.gohtml:11
#: web/templates/admin/campsite/carousel/form.gohtml:17
#: web/templates/admin/campsite/carousel/index.gohtml:11
#: web/templates/admin/campsite/form.gohtml:8
msgctxt "title"
msgid "Edit Campsite"
msgstr "Modifier le camping"
#: web/templates/admin/campsite/feature/form.gohtml:18
#: web/templates/admin/campsite/feature/index.gohtml:6
msgctxt "title"
msgid "Campsite Features"
msgstr "Caractéristiques de camping"
#: web/templates/admin/campsite/feature/form.gohtml:32
#: web/templates/admin/campsite/feature/form.gohtml:33
#: web/templates/admin/campsite/type/feature/form.gohtml:41
#: web/templates/admin/services/form.gohtml:35
#: web/templates/admin/amenity/feature/form.gohtml:32
@ -1206,15 +1295,15 @@ msgctxt "input"
msgid "Icon"
msgstr "Icône"
#: web/templates/admin/campsite/feature/index.gohtml:15
#: web/templates/admin/campsite/feature/index.gohtml:16
#: web/templates/admin/campsite/type/feature/index.gohtml:16
#: web/templates/admin/amenity/feature/index.gohtml:15
msgctxt "action"
msgid "Add Feature"
msgstr "Ajouter une caractéristique"
#: web/templates/admin/campsite/feature/index.gohtml:31
#: web/templates/admin/campsite/carousel/index.gohtml:31
#: web/templates/admin/campsite/feature/index.gohtml:32
#: web/templates/admin/campsite/carousel/index.gohtml:32
#: web/templates/admin/campsite/type/feature/index.gohtml:32
#: web/templates/admin/campsite/type/carousel/index.gohtml:32
#: web/templates/admin/campsite/type/option/index.gohtml:31
@ -1231,14 +1320,14 @@ msgctxt "header"
msgid "Actions"
msgstr "Actions"
#: web/templates/admin/campsite/feature/index.gohtml:35
#: web/templates/admin/campsite/feature/index.gohtml:36
#: web/templates/admin/campsite/type/feature/index.gohtml:36
#: web/templates/admin/amenity/feature/index.gohtml:35
msgid "Are you sure you wish to delete this feature?"
msgstr "Êtes-vous sûr de vouloir supprimer cette caractéristique ?"
#: web/templates/admin/campsite/feature/index.gohtml:47
#: web/templates/admin/campsite/carousel/index.gohtml:49
#: web/templates/admin/campsite/feature/index.gohtml:48
#: web/templates/admin/campsite/carousel/index.gohtml:50
#: web/templates/admin/campsite/type/feature/index.gohtml:48
#: web/templates/admin/campsite/type/carousel/index.gohtml:50
#: web/templates/admin/campsite/type/option/index.gohtml:47
@ -1256,7 +1345,7 @@ msgctxt "action"
msgid "Delete"
msgstr "Supprimer"
#: web/templates/admin/campsite/feature/index.gohtml:56
#: web/templates/admin/campsite/feature/index.gohtml:57
msgid "No campsite features added yet."
msgstr "Aucune caractéristique de camping na encore été ajoutée."
@ -1270,13 +1359,13 @@ msgctxt "title"
msgid "New Campsite Carousel Slide"
msgstr "Nouveau diapositive de carrousel de camping"
#: web/templates/admin/campsite/carousel/form.gohtml:17
#: web/templates/admin/campsite/carousel/form.gohtml:18
#: web/templates/admin/campsite/carousel/index.gohtml:6
msgctxt "title"
msgid "Campsite Carousel"
msgstr "Camping Carrousel"
#: web/templates/admin/campsite/carousel/index.gohtml:16
#: web/templates/admin/campsite/carousel/index.gohtml:17
#: web/templates/admin/campsite/type/carousel/index.gohtml:17
#: web/templates/admin/services/index.gohtml:15
#: web/templates/admin/amenity/carousel/index.gohtml:16
@ -1285,7 +1374,7 @@ msgctxt "action"
msgid "Add slide"
msgstr "Ajouter la diapositive"
#: web/templates/admin/campsite/carousel/index.gohtml:29
#: web/templates/admin/campsite/carousel/index.gohtml:30
#: web/templates/admin/campsite/type/carousel/index.gohtml:30
#: web/templates/admin/services/index.gohtml:28
#: web/templates/admin/surroundings/index.gohtml:82
@ -1296,7 +1385,7 @@ msgctxt "header"
msgid "Image"
msgstr "Image"
#: web/templates/admin/campsite/carousel/index.gohtml:30
#: web/templates/admin/campsite/carousel/index.gohtml:31
#: web/templates/admin/campsite/type/carousel/index.gohtml:31
#: web/templates/admin/services/index.gohtml:29
#: web/templates/admin/amenity/carousel/index.gohtml:30
@ -1306,7 +1395,7 @@ msgctxt "header"
msgid "Caption"
msgstr "Légende"
#: web/templates/admin/campsite/carousel/index.gohtml:35
#: web/templates/admin/campsite/carousel/index.gohtml:36
#: web/templates/admin/campsite/type/carousel/index.gohtml:36
#: web/templates/admin/services/index.gohtml:34
#: web/templates/admin/amenity/carousel/index.gohtml:35
@ -1314,7 +1403,7 @@ msgstr "Légende"
msgid "Are you sure you wish to delete this slide?"
msgstr "Êtes-vous sûr de vouloir supprimer cette diapositive ?"
#: web/templates/admin/campsite/carousel/index.gohtml:58
#: web/templates/admin/campsite/carousel/index.gohtml:59
#: web/templates/admin/campsite/type/carousel/index.gohtml:59
#: web/templates/admin/services/index.gohtml:56
#: web/templates/admin/amenity/carousel/index.gohtml:58
@ -1322,44 +1411,52 @@ msgstr "Êtes-vous sûr de vouloir supprimer cette diapositive ?"
msgid "No slides added yet."
msgstr "Aucune diapositive na encore été ajoutée."
#: web/templates/admin/campsite/form.gohtml:8
msgctxt "title"
msgid "Edit Campsite"
msgstr "Modifier le camping"
#: web/templates/admin/campsite/form.gohtml:10
msgctxt "title"
msgid "New Campsite"
msgstr "Nouveau camping"
#: web/templates/admin/campsite/form.gohtml:33
#: web/templates/admin/campsite/index.gohtml:27
#: web/templates/admin/campsite/form.gohtml:21
#: web/templates/admin/campsite/type/index.gohtml:45
#: web/templates/admin/amenity/index.gohtml:35
msgctxt "action"
msgid "Edit Features"
msgstr "Edit caractéristiques"
#: web/templates/admin/campsite/form.gohtml:22
#: web/templates/admin/campsite/type/index.gohtml:51
#: web/templates/admin/amenity/index.gohtml:38
msgctxt "action"
msgid "Edit Carousel"
msgstr "Modifier le carrousel"
#: web/templates/admin/campsite/form.gohtml:37
msgctxt "campsite"
msgid "Active"
msgstr "Actif"
#: web/templates/admin/campsite/form.gohtml:42
#: web/templates/admin/campsite/form.gohtml:46
msgctxt "input"
msgid "Campsite Type"
msgstr "Type demplacement de camping"
#: web/templates/admin/campsite/form.gohtml:47
#: web/templates/admin/campsite/form.gohtml:51
msgid "Select campsite type"
msgstr "Sélectionnez le type demplacement"
#: web/templates/admin/campsite/form.gohtml:56
#: web/templates/admin/campsite/form.gohtml:60
#: web/templates/admin/amenity/form.gohtml:42
msgctxt "input"
msgid "Label"
msgstr "Label"
#: web/templates/admin/campsite/form.gohtml:64
#: web/templates/admin/campsite/form.gohtml:68
#: web/templates/admin/amenity/form.gohtml:63
msgctxt "input"
msgid "Info (First Column)"
msgstr "Info (première colonne)"
#: web/templates/admin/campsite/form.gohtml:77
#: web/templates/admin/campsite/form.gohtml:81
#: web/templates/admin/amenity/form.gohtml:76
msgctxt "input"
msgid "Info (Second Column)"
@ -1370,46 +1467,26 @@ msgctxt "action"
msgid "Add Campsite"
msgstr "Ajouter un camping"
#: web/templates/admin/campsite/index.gohtml:23
#: web/templates/admin/campsite/index.gohtml:21
msgid "From Date"
msgstr "Partir de la date"
#: web/templates/admin/campsite/index.gohtml:28
msgid "To Date"
msgstr "À la date"
#: web/templates/admin/campsite/index.gohtml:35
msgctxt "action"
msgid "Show"
msgstr "Montrer"
#: web/templates/admin/campsite/index.gohtml:50
#: web/templates/admin/amenity/index.gohtml:20
msgctxt "header"
msgid "Label"
msgstr "Label"
#: web/templates/admin/campsite/index.gohtml:24
msgctxt "header"
msgid "Type"
msgstr "Type"
#: web/templates/admin/campsite/index.gohtml:25
#: web/templates/admin/campsite/type/index.gohtml:30
#: web/templates/admin/amenity/index.gohtml:22
msgctxt "header"
msgid "Features"
msgstr "Caractéristiques"
#: web/templates/admin/campsite/index.gohtml:26
#: web/templates/admin/campsite/type/index.gohtml:32
#: web/templates/admin/amenity/index.gohtml:23
msgctxt "header"
msgid "Carousel"
msgstr "Carrousel"
#: web/templates/admin/campsite/index.gohtml:36
#: web/templates/admin/campsite/type/index.gohtml:45
#: web/templates/admin/amenity/index.gohtml:35
msgctxt "action"
msgid "Edit Features"
msgstr "Edit caractéristiques"
#: web/templates/admin/campsite/index.gohtml:39
#: web/templates/admin/campsite/type/index.gohtml:51
#: web/templates/admin/amenity/index.gohtml:38
msgctxt "action"
msgid "Edit Carousel"
msgstr "Modifier le carrousel"
#: web/templates/admin/campsite/index.gohtml:47
#: web/templates/admin/campsite/index.gohtml:78
msgid "No campsites added yet."
msgstr "Aucun camping na encore été ajouté."
@ -1654,11 +1731,23 @@ msgctxt "action"
msgid "Add Type"
msgstr "Ajouter un type"
#: web/templates/admin/campsite/type/index.gohtml:30
#: web/templates/admin/amenity/index.gohtml:22
msgctxt "header"
msgid "Features"
msgstr "Caractéristiques"
#: web/templates/admin/campsite/type/index.gohtml:31
msgctxt "header"
msgid "Options"
msgstr "Options"
#: web/templates/admin/campsite/type/index.gohtml:32
#: web/templates/admin/amenity/index.gohtml:23
msgctxt "header"
msgid "Carousel"
msgstr "Carrousel"
#: web/templates/admin/campsite/type/index.gohtml:48
msgctxt "action"
msgid "Edit Options"
@ -2548,75 +2637,15 @@ msgctxt "header"
msgid "Children (aged 2 to 10)"
msgstr "Enfants (de 2 à 10 anys)"
#: pkg/campsite/admin.go:275 pkg/booking/public.go:172
#: pkg/campsite/admin.go:366 pkg/booking/public.go:172
#: pkg/booking/public.go:227
msgid "Selected campsite type is not valid."
msgstr "Le type demplacement sélectionné nest pas valide."
#: pkg/campsite/admin.go:276 pkg/amenity/admin.go:282
#: pkg/campsite/admin.go:367 pkg/amenity/admin.go:282
msgid "Label can not be empty."
msgstr "L'étiquette ne peut pas être vide."
#: pkg/season/admin.go:183
msgctxt "month"
msgid "January"
msgstr "Janvier"
#: pkg/season/admin.go:184
msgctxt "month"
msgid "February"
msgstr "Février"
#: pkg/season/admin.go:185
msgctxt "month"
msgid "March"
msgstr "Mars"
#: pkg/season/admin.go:186
msgctxt "month"
msgid "April"
msgstr "Avril"
#: pkg/season/admin.go:187
msgctxt "month"
msgid "May"
msgstr "Mai"
#: pkg/season/admin.go:188
msgctxt "month"
msgid "June"
msgstr "Juin"
#: pkg/season/admin.go:189
msgctxt "month"
msgid "July"
msgstr "Juillet"
#: pkg/season/admin.go:190
msgctxt "month"
msgid "August"
msgstr "Août"
#: pkg/season/admin.go:191
msgctxt "month"
msgid "September"
msgstr "Septembre"
#: pkg/season/admin.go:192
msgctxt "month"
msgid "October"
msgstr "Octobre"
#: pkg/season/admin.go:193
msgctxt "month"
msgid "November"
msgstr "Novembre"
#: pkg/season/admin.go:194
msgctxt "month"
msgid "December"
msgstr "Décembre"
#: pkg/season/admin.go:412
msgid "Color can not be empty."
msgstr "La couleur ne peut pas être vide."
@ -2956,6 +2985,10 @@ msgstr "La ville ne peut pas être vide."
msgid "It is mandatory to agree to the reservation conditions."
msgstr "Il est obligatoire daccepter les conditions de réservation."
#~ msgctxt "header"
#~ msgid "Type"
#~ msgstr "Type"
#~ msgid "Postal code can not be empty."
#~ msgstr "Le code postal ne peut pas être vide."

View File

@ -769,3 +769,75 @@ label[x-show] > span, label[x-show] > br {
}
/*</editor-fold>*/
/*<editor-fold desc="Campsites Booking">*/
#campsites-booking {
height: 90vh;
overflow: scroll;
}
#campsites-booking table {
width: auto;
}
#campsites-booking .weekend {
background-color: var(--camper--color--rosy);
}
#campsites-booking colgroup {
border-right: 2px solid;
}
#campsites-booking col {
border: 1px solid;
min-width: 2.25ch;
max-width: 2.25ch;
}
#campsites-booking th {
background-color: var(--camper--background-color);
background-clip: padding-box;
}
#campsites-booking thead tr:first-child th, #campsites-booking tbody th {
padding: 0 .5ch;
}
#campsites-booking thead tr:last-child th {
padding: 0;
text-align: center;
}
#campsites-booking thead {
position: sticky;
top: 0;
}
#campsites-booking tbody th {
position: sticky;
left: 0;
}
#booking-filter, #booking-filter fieldset {
display: flex;
gap: 1ch;
}
#booking-filter label, #booking-filter fieldset + fieldset, #booking-filter footer {
margin-top: 0;
}
#booking-filter input[type="number"] {
width: 9ch;
}
#booking-filter footer {
align-self: end;
}
#booking-filter button {
min-width: unset;
padding: .25em 1em;
}
/*</editor-fold>*/

View File

@ -14,6 +14,7 @@
{{ define "breadcrumb" -}}
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/campsite/types.slideForm*/ -}}
<li><a href="/admin/campsites">{{( pgettext "Campsites" "title" )}}</a></li>
<li><a href="/admin/campsites/{{ .Label }}">{{( pgettext "Edit Campsite" "title" )}}</a></li>
<li><a href="/admin/campsites/{{ .Label }}/slides">{{( pgettext "Campsite Carousel" "title" )}}</a></li>
{{- end }}

View File

@ -8,6 +8,7 @@
{{ define "breadcrumb" -}}
<li><a href="/admin/campsites">{{( pgettext "Campsites" "title" )}}</a></li>
<li><a href="/admin/campsites/{{ .Label }}">{{( pgettext "Edit Campsite" "title" )}}</a></li>
{{- end }}
{{ define "content" -}}

View File

@ -14,6 +14,7 @@
{{ define "breadcrumb" -}}
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/campsite.featureForm*/ -}}
<li><a href="/admin/campsites">{{( pgettext "Campsites" "title" )}}</a></li>
<li><a href="/admin/campsites/{{ .Label }}">{{( pgettext "Edit Campsite" "title" )}}</a></li>
<li><a href="/admin/campsites/{{ .Label }}/features">{{( pgettext "Campsite Features" "title" )}}</a></li>
{{- end }}

View File

@ -8,6 +8,7 @@
{{ define "breadcrumb" -}}
<li><a href="/admin/campsites">{{( pgettext "Campsites" "title" )}}</a></li>
<li><a href="/admin/campsites/{{ .Label }}">{{( pgettext "Edit Campsite" "title" )}}</a></li>
{{- end }}
{{ define "content" -}}

View File

@ -17,6 +17,10 @@
{{ define "content" -}}
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/campsite.campsiteForm*/ -}}
{{ if .ID -}}
<a href="/admin/campsites/{{ .CurrentLabel }}/features">{{( pgettext "Edit Features" "action" )}}</a>
<a href="/admin/campsites/{{ .CurrentLabel }}/slides">{{( pgettext "Edit Carousel" "action" )}}</a>
{{- end }}
<form
{{- if .ID }} data-hx-put="/admin/campsites/{{ .CurrentLabel }}"
{{- else }} action="/admin/campsites" method="post"

View File

@ -13,43 +13,68 @@
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/campsite.campsiteIndex*/ -}}
<a href="/admin/campsites/new">{{( pgettext "Add Campsite" "action" )}}</a>
<h2>{{( pgettext "Campsites" "title" )}}</h2>
<div id="campground_map">
{{ template "campground_map.svg" }}
</div>
{{ if .Campsites -}}
<table>
<thead>
<tr>
<th scope="col">{{( pgettext "Label" "header" )}}</th>
<th scope="col">{{( pgettext "Type" "header" )}}</th>
<th scope="col">{{( pgettext "Features" "header" )}}</th>
<th scope="col">{{( pgettext "Carousel" "header" )}}</th>
<th scope="col">{{( pgettext "Active" "campsite" )}}</th>
</tr>
</thead>
<tbody>
{{ range .Campsites -}}
<form id="booking-filter">
<fieldset>
{{ with .From -}}
<fieldset>
<legend>{{( gettext "From Date" )}}</legend>
{{ template "month-input" . }}
{{ template "error-message" . }}
</fieldset>
{{- end }}
{{ with .To -}}
<fieldset>
<legend>{{( gettext "To Date" )}}</legend>
{{ template "month-input" . }}
{{ template "error-message" . }}
</fieldset>
{{- end }}
</fieldset>
<footer>
<button type="submit">{{( pgettext "Show" "action" )}}</button>
</footer>
</form>
<div id="campsites-booking">
<table>
<colgroup></colgroup>
{{ range .Months }}
<colgroup>
{{ range .Spans }}
<col span="{{ .Count }}" class="{{ if .Weekend }}weekend{{ else }}weekday{{ end }}">
{{- end }}
</colgroup>
{{- end }}
<thead>
<tr>
<td><a href="/admin/campsites/{{ .Label }}">{{ .Label }}</a></td>
<td>{{ .Type }}</td>
<td>
<a href="/admin/campsites/{{ .Label }}/features">{{( pgettext "Edit Features" "action" )}}</a>
</td>
<td>
<a href="/admin/campsites/{{ .Label }}/slides">{{( pgettext "Edit Carousel" "action" )}}</a>
</td>
<td>{{ if .Active }}{{( gettext "Yes" )}}{{ else }}{{( gettext "No" )}}{{ end }}</td>
<th scope="col" rowspan="2">{{( pgettext "Label" "header" )}}</th>
{{ range .Months }}
<th scope="col" colspan="{{ len .Days }}">{{ pgettext .Name "month" }} {{ .Year }}</th>
{{- end }}
</tr>
{{- end }}
</tbody>
</table>
<tr>
{{ range .Months }}
{{ range .Days }}
<th scope="col">{{ .Day }}</th>
{{- end }}
{{- end }}
</tr>
</thead>
<tbody>
{{ range .Campsites -}}
<tr>
<th scope="row"><a href="/admin/campsites/{{ .Label }}">{{ .Label }}</a></th>
{{ range $.Months }}
{{ range .Days }}
<td></td>
{{- end }}
{{- end }}
</tr>
{{- end }}
</tbody>
</table>
</div>
{{ else -}}
<p>{{( gettext "No campsites added yet." )}}</p>
{{- end }}
<script type="module">
import {setupCampgroundMap} from "/static/camper.js?v=";
setupCampgroundMap(document.getElementById('campground_map'));
</script>
{{- end }}

View File

@ -23,6 +23,30 @@
{{- end }}
{{- end }}
{{ define "month-input" -}}
<label>
<span class="sr-only">{{( pgettext "Month" "input" )}}</span>
<select name="{{ .Name }}.month">
<option value="1"{{ if eq .Month 1}} selected{{ end }}>{{( pgettext "January" "month" )}}</option>
<option value="2"{{ if eq .Month 2}} selected{{ end }}>{{( pgettext "February" "month" )}}</option>
<option value="3"{{ if eq .Month 3}} selected{{ end }}>{{( pgettext "March" "month" )}}</option>
<option value="4"{{ if eq .Month 4}} selected{{ end }}>{{( pgettext "April" "month" )}}</option>
<option value="5"{{ if eq .Month 5}} selected{{ end }}>{{( pgettext "May" "month" )}}</option>
<option value="6"{{ if eq .Month 6}} selected{{ end }}>{{( pgettext "June" "month" )}}</option>
<option value="7"{{ if eq .Month 7}} selected{{ end }}>{{( pgettext "July" "month" )}}</option>
<option value="8"{{ if eq .Month 8}} selected{{ end }}>{{( pgettext "August" "month" )}}</option>
<option value="9"{{ if eq .Month 9}} selected{{ end }}>{{( pgettext "September" "month" )}}</option>
<option value="10"{{ if eq .Month 10}} selected{{ end }}>{{( pgettext "October" "month" )}}</option>
<option value="11"{{ if eq .Month 11}} selected{{ end }}>{{( pgettext "November" "month" )}}</option>
<option value="12"{{ if eq .Month 12}} selected{{ end }}>{{( pgettext "December" "month" )}}</option>
</select>
</label>
<label>
<span class="sr-only">{{( pgettext "Year" "input" )}}</span>
<input name="{{ .Name }}.year" type="number" value="{{ .Year }}">
</label>
{{- end }}
{{ define "media-picker" -}}
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/form.Media*/ -}}
<fieldset data-hx-target="this" data-hx-swap="outerHTML">