mirror of
https://github.com/Theodor-Springmann-Stiftung/lenz-web.git
synced 2025-10-28 16:55:32 +00:00
Briefansicht
This commit is contained in:
27
controllers/brief.go
Normal file
27
controllers/brief.go
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/Theodor-Springmann-Stiftung/lenz-web/xmlmodels"
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetLetter(c *fiber.Ctx) error {
|
||||||
|
lib := xmlmodels.Get()
|
||||||
|
l := c.Params(LETTER_PARAM)
|
||||||
|
letter, err := strconv.Atoi(l)
|
||||||
|
if err != nil {
|
||||||
|
return c.SendStatus(fiber.StatusNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
meta := lib.Metas.Item(letter)
|
||||||
|
if meta == nil {
|
||||||
|
return c.SendStatus(fiber.StatusNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
text := lib.Letters.Item(letter)
|
||||||
|
tradition := lib.Traditions.Item(letter)
|
||||||
|
|
||||||
|
return c.Render("/brief/", map[string]any{"meta": meta, "text": text, "tradition": tradition})
|
||||||
|
}
|
||||||
@@ -1,16 +1,27 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/Theodor-Springmann-Stiftung/lenz-web/xmlmodels"
|
"github.com/Theodor-Springmann-Stiftung/lenz-web/xmlmodels"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
const DEFAULT_YEAR = 1765
|
const DEFAULT_YEAR = 1765
|
||||||
|
|
||||||
func GetIndex(fiber *fiber.Ctx) error {
|
func GetIndex(c *fiber.Ctx) error {
|
||||||
|
return c.Redirect("/" + strconv.Itoa(DEFAULT_YEAR))
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetIndexYear(c *fiber.Ctx) error {
|
||||||
lib := xmlmodels.Get()
|
lib := xmlmodels.Get()
|
||||||
// Years
|
|
||||||
years, yearmap := lib.Years()
|
years, yearmap := lib.Years()
|
||||||
|
|
||||||
return fiber.Render("/", map[string]any{"years": years, "yearmap": yearmap})
|
y := c.Params(YEAR_PARAM)
|
||||||
|
year, err := strconv.Atoi(y)
|
||||||
|
if _, ok := yearmap[year]; (err != nil || !ok) && y != "all" {
|
||||||
|
return c.SendStatus(fiber.StatusNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Render("/", map[string]any{"years": years, "yearmap": yearmap, "year": year, "all": y == "all"})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,21 +10,25 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const ASSETS_URL = "/assets"
|
const ASSETS_URL = "/assets"
|
||||||
const WBHOOK_URL = "/webhook"
|
const INDEX_URL = "/"
|
||||||
|
const YEAR_PARAM = "year"
|
||||||
|
const LETTER_PARAM = "letter"
|
||||||
|
|
||||||
|
var INDEX_YEAR_URL = "/:" + YEAR_PARAM
|
||||||
|
var LETTER_URL = "/brief/:" + LETTER_PARAM
|
||||||
|
|
||||||
func Register(server server.Server, cfg config.Config) {
|
func Register(server server.Server, cfg config.Config) {
|
||||||
server.Server.Use(ASSETS_URL, compress.New(compress.Config{
|
server.Server.Use(ASSETS_URL, compress.New(compress.Config{
|
||||||
Level: compress.LevelBestSpeed,
|
Level: compress.LevelBestSpeed,
|
||||||
}))
|
}))
|
||||||
server.Server.Use(ASSETS_URL, middleware.StaticHandler(&views.StaticFS))
|
server.Server.Use(ASSETS_URL, middleware.StaticHandler(&views.StaticFS))
|
||||||
server.Server.Get("/", GetIndex)
|
server.Server.Get(INDEX_URL, GetIndex)
|
||||||
|
server.Server.Get(INDEX_YEAR_URL, GetIndexYear)
|
||||||
|
server.Server.Get(LETTER_URL, GetLetter)
|
||||||
|
|
||||||
|
// INFO: we map the webhook when a secret was provided
|
||||||
if cfg.WebHookSecret != "" {
|
if cfg.WebHookSecret != "" {
|
||||||
whurl := WBHOOK_URL
|
server.Server.Post(cfg.WebHookEndpoint, PostWebhook(cfg))
|
||||||
if cfg.WebHookEndpoint != "" {
|
|
||||||
whurl = cfg.WebHookEndpoint
|
|
||||||
}
|
|
||||||
server.Server.Post(whurl, PostWebhook(cfg))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
|||||||
{{- $date := Today -}}
|
{{- $date := Today -}}
|
||||||
<footer class="container-normal pb-1.5 text-base text-gray-800 self-end justify-self-end">
|
<footer class="container-normal pb-1.5 text-base text-gray-800 justify-self-end">
|
||||||
<div class="mt-12 pt-3 flex flex-row justify-between">
|
<div class="mt-12 pt-3 flex flex-row justify-between">
|
||||||
<div>
|
<div>
|
||||||
<i class="ri-creative-commons-line"></i>
|
<i class="ri-creative-commons-line"></i>
|
||||||
|
|||||||
@@ -1,46 +1,39 @@
|
|||||||
{{ $model := . }}
|
{{ $model := . }}
|
||||||
|
|
||||||
{{- if .years -}}
|
|
||||||
|
<div>
|
||||||
{{- range $y := .years -}}
|
{{- range $y := .years -}}
|
||||||
<div>
|
<a class="inline-block px-0.5" href="/{{ $y }}">{{ $y }}</a>
|
||||||
{{- printf "%d " $y -}}
|
{{- end -}}
|
||||||
{{- $letters := index $model.yearmap $y -}}
|
<a class="inline-block px-0.5" href="/all">Alle</a>
|
||||||
{{- len $letters }}
|
</div>
|
||||||
{{ range $l := $letters -}}
|
|
||||||
<div>{{ $l.Letter }}</div>
|
{{- if .years -}}
|
||||||
<div>{{ $l.Earliest.Text -}}</div>
|
{{- if .year -}}
|
||||||
{{- range $sr := $l.SendReceivedPairs -}}
|
{{- $letters := index $model.yearmap $model.year -}}
|
||||||
<div>
|
<div class="flex flex-row gap-x-1">
|
||||||
<div>
|
<div>{{- .year }}</div>
|
||||||
{{- range $i, $p := $sr.Sent.Persons -}}
|
<div>({{- len $letters }})</div>
|
||||||
<div>
|
|
||||||
{{- if $i -}}
|
|
||||||
,
|
|
||||||
{{ end -}}
|
|
||||||
{{- $person := Person $p.Reference -}}
|
|
||||||
{{- $person.Name -}}
|
|
||||||
</div>
|
|
||||||
{{- end -}}
|
|
||||||
</div>
|
|
||||||
<div>an</div>
|
|
||||||
{{- if $sr.Received -}}
|
|
||||||
<div>
|
|
||||||
{{- range $i, $p := $sr.Received.Persons -}}
|
|
||||||
<div>
|
|
||||||
{{- if $i -}}
|
|
||||||
,
|
|
||||||
{{ end -}}
|
|
||||||
{{- $person := Person $p.Reference -}}
|
|
||||||
{{- $person.Name -}}
|
|
||||||
</div>
|
|
||||||
{{- end -}}
|
|
||||||
</div>
|
|
||||||
{{- else -}}
|
|
||||||
<div>Unbekannt</div>
|
|
||||||
{{- end -}}
|
|
||||||
</div>
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
</div>
|
</div>
|
||||||
|
{{ range $l := $letters -}}
|
||||||
|
<a href="/brief/{{ $l.Letter }}" class="">
|
||||||
|
{{- template "_letterhead" $l -}}
|
||||||
|
</a>
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if .all -}}
|
||||||
|
{{- range $y := .years -}}
|
||||||
|
<div>
|
||||||
|
{{- $y -}}
|
||||||
|
{{- $letters := index $model.yearmap $y -}}
|
||||||
|
{{- len $letters }}
|
||||||
|
{{ range $l := $letters -}}
|
||||||
|
<a href="/brief/{{ $l.Letter }}" class="">
|
||||||
|
{{- template "_letterhead" $l -}}
|
||||||
|
</a>
|
||||||
|
{{- end -}}
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|||||||
1
views/routes/brief/body.gohtml
Normal file
1
views/routes/brief/body.gohtml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{{- template "_letterhead" .meta -}}
|
||||||
34
views/routes/components/_letterhead.gohtml
Normal file
34
views/routes/components/_letterhead.gohtml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{{ $model := . }}
|
||||||
|
<div>{{ $model.Letter }}</div>
|
||||||
|
<div>{{ $model.Earliest.Text -}}</div>
|
||||||
|
{{- range $sr := $model.SendReceivedPairs -}}
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
{{- range $i, $p := $sr.Sent.Persons -}}
|
||||||
|
<div>
|
||||||
|
{{- if $i -}}
|
||||||
|
,
|
||||||
|
{{ end -}}
|
||||||
|
{{- $person := Person $p.Reference -}}
|
||||||
|
{{- $person.Name -}}
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
</div>
|
||||||
|
<div>an</div>
|
||||||
|
{{- if $sr.Received -}}
|
||||||
|
<div>
|
||||||
|
{{- range $i, $p := $sr.Received.Persons -}}
|
||||||
|
<div>
|
||||||
|
{{- if $i -}}
|
||||||
|
,
|
||||||
|
{{ end -}}
|
||||||
|
{{- $person := Person $p.Reference -}}
|
||||||
|
{{- $person.Name -}}
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
</div>
|
||||||
|
{{- else -}}
|
||||||
|
<div>Unbekannt</div>
|
||||||
|
{{- end -}}
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
Reference in New Issue
Block a user