From 0aa8511ef0536c4ef7f4bd4ad1e5aafdc938df7d Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Sat, 15 Feb 2025 17:29:55 +0100 Subject: [PATCH] Single Reihen Page --- dbmodels/seriesses.go | 12 +++++++ pages/reihe.go | 64 +++++++++++++++++++++++++++++++++ pages/reihen.go | 1 - views/routes/reihe/body.gohtml | 6 ++++ views/routes/reihe/head.gohtml | 1 + views/routes/reihen/body.gohtml | 4 +-- 6 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 pages/reihe.go create mode 100644 views/routes/reihe/body.gohtml create mode 100644 views/routes/reihe/head.gohtml diff --git a/dbmodels/seriesses.go b/dbmodels/seriesses.go index 950def0..879b9d2 100644 --- a/dbmodels/seriesses.go +++ b/dbmodels/seriesses.go @@ -246,3 +246,15 @@ func SeriesForYear(app core.App, year int) ([]*Series, SeriesEntries, map[string return SeriesForEntries(app, series) } + +func SeriesForId(app core.App, id string) (*Series, error) { + s := &Series{} + err := app.RecordQuery(SERIES_TABLE). + Where(dbx.HashExp{MUSENALMID_FIELD: id}). + One(s) + if err != nil { + return nil, err + } + + return s, nil +} diff --git a/pages/reihe.go b/pages/reihe.go new file mode 100644 index 0000000..df88a4c --- /dev/null +++ b/pages/reihe.go @@ -0,0 +1,64 @@ +package pages + +import ( + "net/http" + "strings" + + "github.com/Theodor-Springmann-Stiftung/musenalm/app" + "github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels" + "github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels" + "github.com/Theodor-Springmann-Stiftung/musenalm/templating" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/router" +) + +const ( + URL_REIHE = "/reihe/{id}/" + TEMPLATE_REIHE = "/reihe/" +) + +func init() { + rp := &ReihePage{ + Page: pagemodels.Page{ + Name: pagemodels.P_REIHEN_NAME, + }, + } + app.Register(rp) +} + +type ReihePage struct { + pagemodels.Page +} + +func (p *ReihePage) Setup(router *router.Router[*core.RequestEvent], app core.App, engine *templating.Engine) error { + router.GET(URL_REIHE, func(e *core.RequestEvent) error { + id := e.Request.PathValue("id") + data := make(map[string]interface{}) + reihe, err := dbmodels.SeriesForId(app, id) + if err != nil { + return err + } + data["series"] = reihe + + rmap, emap, err := dbmodels.EntriesForSeriesses(app, []*dbmodels.Series{reihe}) + if err != nil { + return err + } + + data["relations"] = rmap + data["entries"] = emap + + return p.Get(e, engine, data) + + }) + return nil +} + +func (p *ReihePage) Get(request *core.RequestEvent, engine *templating.Engine, data map[string]interface{}) error { + var builder strings.Builder + err := engine.Render(&builder, TEMPLATE_REIHE, data) + if err != nil { + return err + } + return request.HTML(http.StatusOK, builder.String()) +} diff --git a/pages/reihen.go b/pages/reihen.go index 8060196..0af5fc3 100644 --- a/pages/reihen.go +++ b/pages/reihen.go @@ -15,7 +15,6 @@ import ( const ( URL_REIHEN = "/reihen/" - URL_REIHE = "/reihen/{id}/" PARAM_LETTER = "letter" PARAM_SEARCH = "search" PARAM_PERSON = "agent" diff --git a/views/routes/reihe/body.gohtml b/views/routes/reihe/body.gohtml new file mode 100644 index 0000000..5a0ba10 --- /dev/null +++ b/views/routes/reihe/body.gohtml @@ -0,0 +1,6 @@ +{{ if .series }} + {{ .series.Title }} +
+ {{ Safe .series.Annotation }} +
+{{ end }} diff --git a/views/routes/reihe/head.gohtml b/views/routes/reihe/head.gohtml new file mode 100644 index 0000000..9b9c1dc --- /dev/null +++ b/views/routes/reihe/head.gohtml @@ -0,0 +1 @@ +Musenalm - Reihen diff --git a/views/routes/reihen/body.gohtml b/views/routes/reihen/body.gohtml index 5ec5432..db4ed7f 100644 --- a/views/routes/reihen/body.gohtml +++ b/views/routes/reihen/body.gohtml @@ -8,7 +8,7 @@ {{ range $id, $r := .series }}
- {{ $r.Title }} + {{ $r.Title }}
{{ Safe $r.Annotation }}
@@ -21,7 +21,7 @@
{{ range $id, $r := .altseries }}
- {{ $r.Title }} + {{ $r.Title }}
{{ Safe $r.Annotation }}