refactor(templates): Dynamic template loading

This commit is contained in:
Nicolai Ort 2024-12-09 17:22:37 +01:00
parent f9f30e96c7
commit c5dc4f7e79
Signed by: niggl
GPG Key ID: 13AFA55AF62F269F
17 changed files with 35 additions and 77 deletions

View File

@ -6,7 +6,6 @@ import (
"git.odit.services/lfk/document-server/models" "git.odit.services/lfk/document-server/models"
"git.odit.services/lfk/document-server/services" "git.odit.services/lfk/document-server/services"
"git.odit.services/lfk/document-server/templates"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
@ -32,7 +31,7 @@ func GenerateCard(c *fiber.Ctx) error {
} }
generator := services.DefaultTemplater{} generator := services.DefaultTemplater{}
templateString, err := templates.GetTemplate(cardRequest.Locale, "card") templateString, err := services.GetTemplate(cardRequest.Locale, "card")
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{

View File

@ -6,7 +6,6 @@ import (
"git.odit.services/lfk/document-server/models" "git.odit.services/lfk/document-server/models"
"git.odit.services/lfk/document-server/services" "git.odit.services/lfk/document-server/services"
"git.odit.services/lfk/document-server/templates"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
@ -32,7 +31,7 @@ func GenerateCertificate(c *fiber.Ctx) error {
} }
generator := services.DefaultTemplater{} generator := services.DefaultTemplater{}
templateString, err := templates.GetTemplate(certificateRequest.Locale, "certificate") templateString, err := services.GetTemplate(certificateRequest.Locale, "certificate")
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{

View File

@ -6,7 +6,6 @@ import (
"git.odit.services/lfk/document-server/models" "git.odit.services/lfk/document-server/models"
"git.odit.services/lfk/document-server/services" "git.odit.services/lfk/document-server/services"
"git.odit.services/lfk/document-server/templates"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )
@ -34,7 +33,7 @@ func GenerateContract(c *fiber.Ctx) error {
contract.Runners = repeatRunnerArrayItems(contract.Runners, 2) contract.Runners = repeatRunnerArrayItems(contract.Runners, 2)
generator := services.DefaultTemplater{} generator := services.DefaultTemplater{}
templateString, err := templates.GetTemplate(contract.Locale, "contract") templateString, err := services.GetTemplate(contract.Locale, "contract")
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
@ -48,13 +47,15 @@ func GenerateContract(c *fiber.Ctx) error {
}) })
} }
sponsoringHeader := services.GetImage("sponsoringheader")
genConfig := &models.ContractTemplateOptions{ genConfig := &models.ContractTemplateOptions{
Runners: contract.Runners, Runners: contract.Runners,
CurrencySymbol: "€", CurrencySymbol: "€",
Disclaimer: "This is a disclaimer", Disclaimer: "This is a disclaimer",
ReceiptMinimumAmount: 10, ReceiptMinimumAmount: 10,
EventName: "Event name", EventName: "Event name",
SponsoringHeader: templates.ImageSponsoringHeaderBase64, SponsoringHeader: sponsoringHeader,
BarcodeFormat: "ean13", BarcodeFormat: "ean13",
BarcodePrefix: "1", BarcodePrefix: "1",
} }

View File

@ -9,7 +9,6 @@ import (
"image/png" "image/png"
"strings" "strings"
"git.odit.services/lfk/document-server/templates"
"github.com/boombuler/barcode" "github.com/boombuler/barcode"
"github.com/boombuler/barcode/code128" "github.com/boombuler/barcode/code128"
"github.com/boombuler/barcode/ean" "github.com/boombuler/barcode/ean"
@ -88,7 +87,7 @@ func (t *DefaultTemplater) SelectSponsorImage(id int) (string, error) {
"odit", "odit",
"sparkasse", "sparkasse",
} }
return templates.GetImage(sponsors[id%len(sponsors)]), nil return GetImage(sponsors[id%len(sponsors)]), nil
} }
func FormatUnit(unit string, locale string, amount int) (string, error) { func FormatUnit(unit string, locale string, amount int) (string, error) {

28
services/templates.go Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 KiB

View File

@ -1,68 +0,0 @@
package templates
import (
_ "embed"
"fmt"
"log"
"os"
)
//go:embed card/en.html
var CardTemplateEn string
//go:embed card/de.html
var CardTemplateDe string
//go:embed contract/en.html
var ContractTemplateEn string
//go:embed contract/de.html
var ContractTemplateDe string
//go:embed certificate/de.html
var CertificateTemplateDe string
//go:embed certificate/en.html
var CertificateTemplateEn string
//go:embed images/sponsoringheader.base64
var ImageSponsoringHeaderBase64 string
//go:embed images/error.base64
var ImageErrorBase64 string
func GetTemplate(locale, templateName string) (string, error) {
switch templateName {
case "card":
switch locale {
case "en":
return CardTemplateEn, nil
case "de":
return CardTemplateDe, nil
}
case "contract":
switch locale {
case "en":
return ContractTemplateEn, nil
case "de":
return ContractTemplateDe, nil
}
case "certificate":
switch locale {
case "en":
return CertificateTemplateEn, nil
case "de":
return CertificateTemplateDe, nil
}
}
return "", fmt.Errorf("template not found with name %s and locale %s", templateName, locale)
}
func GetImage(imageName string) string {
content, err := os.ReadFile("static/images/" + imageName + ".base64")
if content == nil || err != nil {
log.Printf("error reading image %s: %v", imageName, err)
return ImageErrorBase64
}
return string(content)
}