57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package controllers
|
|
|
|
import (
|
|
"bytes"
|
|
"html/template"
|
|
"path/filepath"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
func renderPublic(c *fiber.Ctx, page string, data map[string]any) error {
|
|
viewData := map[string]any{}
|
|
for k, v := range localsTemplateData(c) {
|
|
viewData[k] = v
|
|
}
|
|
for k, v := range data {
|
|
viewData[k] = v
|
|
}
|
|
|
|
if _, ok := viewData["Title"]; !ok {
|
|
viewData["Title"] = "Trustcontact"
|
|
}
|
|
if _, ok := viewData["NavSection"]; !ok {
|
|
viewData["NavSection"] = "public"
|
|
}
|
|
|
|
files := []string{
|
|
"web/templates/layout.html",
|
|
"web/templates/public/_navbar.html",
|
|
"web/templates/partials/language_dropdown.html",
|
|
"web/templates/partials/user_dropdown.html",
|
|
"web/templates/public/_flash.html",
|
|
filepath.Join("web/templates/public", page),
|
|
}
|
|
|
|
tmpl, err := template.ParseFiles(files...)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var out bytes.Buffer
|
|
if err := tmpl.ExecuteTemplate(&out, "layout.html", viewData); err != nil {
|
|
return err
|
|
}
|
|
|
|
c.Type("html", "utf-8")
|
|
return c.Send(out.Bytes())
|
|
}
|
|
|
|
func localsTemplateData(c *fiber.Ctx) map[string]any {
|
|
data, ok := c.Locals("template_data").(map[string]any)
|
|
if !ok || data == nil {
|
|
return map[string]any{}
|
|
}
|
|
return data
|
|
}
|