diff --git a/baseTemplates/baseTemplates.go b/baseTemplates/baseTemplates.go index 4edfd7c..fdccc9d 100644 --- a/baseTemplates/baseTemplates.go +++ b/baseTemplates/baseTemplates.go @@ -1,6 +1,21 @@ package baseTemplates -import "embed" +import ( + "embed" + "html/template" + "net/http" +) //go:embed templates/* var FS embed.FS + +func WithBase(w http.ResponseWriter, templateData any, patterns ...string) { + args := append([]string{"templates/base.tmpl"}, patterns...) + tmpl := template.Must(template.ParseFS(FS, args...)) + + err := tmpl.ExecuteTemplate(w, "base", templateData) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } +} diff --git a/regio43/templates/regio43.tmpl b/baseTemplates/templates/regio43.tmpl similarity index 77% rename from regio43/templates/regio43.tmpl rename to baseTemplates/templates/regio43.tmpl index ccb21b9..96946ea 100644 --- a/regio43/templates/regio43.tmpl +++ b/baseTemplates/templates/regio43.tmpl @@ -1,19 +1,13 @@ - - - - - - prettysunflower - Regio 43 - - - -
+{{ define "bodyClass" }}page-regio43{{ end }} + +{{ define "content" }} +
-

Regio 43

+

Regio43

-
+
{{ range .PlaylistItems }}
@@ -52,5 +46,4 @@ } }) - - \ No newline at end of file +{{ end }} \ No newline at end of file diff --git a/regio43/init.go b/regio43/init.go index 3443bfd..ae82a7b 100644 --- a/regio43/init.go +++ b/regio43/init.go @@ -1,13 +1,9 @@ package regio43 import ( - "embed" "net/http" ) -//go:embed templates/* -var content embed.FS - func InitHttpHandlers() { http.HandleFunc("/regio43/", trains) } diff --git a/regio43/trains.go b/regio43/trains.go index 5d622ba..0541247 100644 --- a/regio43/trains.go +++ b/regio43/trains.go @@ -1,9 +1,9 @@ package regio43 import ( - "html/template" "math/rand" "net/http" + "prettysunflower-website/baseTemplates" ) type TrainsTemplateData struct { @@ -16,19 +16,7 @@ func trains(w http.ResponseWriter, r *http.Request) { trainsPlaylist[i], trainsPlaylist[j] = trainsPlaylist[j], trainsPlaylist[i] }) - templateFile := "templates/regio43.tmpl" - files, err := template.New(templateFile).ParseFS(content, templateFile) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - - err = files.ExecuteTemplate(w, "regio43.tmpl", TrainsTemplateData{ + baseTemplates.WithBase(w, TrainsTemplateData{ PlaylistItems: trainsPlaylist, - }) - - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } + }, "templates/regio43.tmpl") } diff --git a/static/static/css/radio.scss b/static/static/css/radio.scss index e3929ce..18d1346 100644 --- a/static/static/css/radio.scss +++ b/static/static/css/radio.scss @@ -1,6 +1,6 @@ @use "colors"; -.page-radio-trains { +.page-regio43 { .video-zone { display: flex; justify-content: center; diff --git a/static/static/css/style.css b/static/static/css/style.css index 10c7db3..a2bfa61 100644 --- a/static/static/css/style.css +++ b/static/static/css/style.css @@ -192,53 +192,53 @@ body { border: 0.5px solid oklch(75% 0 0deg); } -.page-radio-trains .video-zone { +.page-regio43 .video-zone { display: flex; justify-content: center; align-items: center; padding: 1rem; } -.page-radio-trains .video-zone #video-player { +.page-regio43 .video-zone #video-player { aspect-ratio: 16/9; max-width: 80%; max-height: 50vh; width: 100%; } -.page-radio-trains h1 { +.page-regio43 h1 { padding: 0 1rem; text-align: center; } -.page-radio-trains main { +.page-regio43 main { display: grid; gap: 1rem; padding: 1rem; grid-template-columns: repeat(4, 1fr); } -.page-radio-trains main > div img { +.page-regio43 main > div img { width: 100%; } -.page-radio-trains main > div.active { +.page-regio43 main > div.active { background-color: oklch(from oklch(97% 0.0261 90.1deg) calc(l - 0.05) c h); } -.page-radio-trains main > div p { +.page-regio43 main > div p { margin: 0.5em; } -.page-radio-trains main > div p a { +.page-regio43 main > div p a { text-decoration: none; color: black; } @media screen and (max-width: 992px) { - .page-radio-trains main { + .page-regio43 main { grid-template-columns: repeat(3, 1fr); } } @media screen and (max-width: 768px) { - .page-radio-trains main { + .page-regio43 main { grid-template-columns: repeat(2, 1fr); } } @media screen and (max-width: 576px) { - .page-radio-trains main { + .page-regio43 main { grid-template-columns: 1fr; } }