diff --git a/data.go b/data.go
index ad6fcea..ad51683 100644
--- a/data.go
+++ b/data.go
@@ -2,6 +2,7 @@ package main
import (
"encoding/json"
+ "fmt"
"github.com/anhgelus/golatt"
"html/template"
"log/slog"
@@ -16,6 +17,7 @@ const (
ParagraphContentType = "paragraph"
ListContentType = "list"
OrderedListContentType = "ordered_list"
+ ButtonsContentType = "links"
)
type ConfigData interface {
@@ -172,7 +174,15 @@ func (p *CustomPage) GetBackground() template.CSS {
return p.Color.GetBackground()
}
-func (c *CustomContent) Get() template.HTML {
+func (p *CustomPage) GetContent() template.HTML {
+ var res template.HTML
+ for _, c := range p.Content {
+ res += c.Get(p)
+ }
+ return res
+}
+
+func (c *CustomContent) Get(p *CustomPage) template.HTML {
if c.Type == TitleContentType {
return template.HTML("
" + c.Content + "
")
} else if c.Type == SubtitleContentType {
@@ -191,12 +201,36 @@ func (c *CustomContent) Get() template.HTML {
} else if c.Type == OrderedListContentType {
v := ""
for _, s := range strings.Split(c.Content, "--") {
- if len(strings.Trim(s, " ")) == 0 {
+ if len(strings.TrimSpace(s)) == 0 {
continue
}
- v += "" + strings.Trim(s, " ") + ""
+ v += "" + strings.TrimSpace(s) + ""
}
return template.HTML("" + v + "
")
+ } else if c.Type == ButtonsContentType {
+ // [Bonsoir](/hello) -- [Bonjour](/not_hello)
+ v := ""
+ for _, s := range strings.Split(c.Content, "--") {
+ if len(strings.TrimSpace(s)) == 0 {
+ continue
+ }
+ sp := strings.Split(s, "](")
+ if len(sp) != 2 {
+ slog.Warn("Invalid button", "s", s)
+ continue
+ }
+ url := strings.TrimSpace(sp[1])
+ v += fmt.Sprintf(
+ ``,
+ url[:len(url)-1],
+ strings.TrimSpace(sp[0])[1:],
+ )
+ }
+ return template.HTML(fmt.Sprintf(
+ ``,
+ p.Color.Button.GetBackground()+p.Color.Button.GetTextColor(),
+ v,
+ ))
}
slog.Warn("Unknown type", "type", c.Type, "value", c.Content)
return ""
diff --git a/scss/main.scss b/scss/main.scss
index 6c1f316..bef8c81 100644
--- a/scss/main.scss
+++ b/scss/main.scss
@@ -247,4 +247,11 @@ h4 {
& ul {
list-style: disc inside;
}
+ & .links {
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
}
diff --git a/templates/page/custom_page.gohtml b/templates/page/custom_page.gohtml
index 4cb8078..83a4983 100644
--- a/templates/page/custom_page.gohtml
+++ b/templates/page/custom_page.gohtml
@@ -6,8 +6,6 @@
Home
- {{ range $content := .Content }}
- {{ .Get }}
- {{ end }}
+ {{ .GetContent }}
{{end}}