Files
kgpz_web/helpers/templatefunctions/categories.go
2025-09-19 19:26:26 +02:00

140 lines
3.5 KiB
Go

package templatefunctions
import "github.com/Theodor-Springmann-Stiftung/kgpz_web/xmlmodels"
// CategoryFlags represents all possible category flags for a piece
type CategoryFlags struct {
Rezension bool
Weltnachrichten bool
EinkommendeFremde bool
Wechselkurse bool
Buecher bool
Lokalanzeigen bool
Lokalnachrichten bool
Lotterie bool
Gedicht bool
Vorladung bool
Auszug bool
Aufsatz bool
GelehrteNachrichten bool
Theaterkritik bool
Uebersetzung bool
Kommentar bool
Nachruf bool
Replik bool
Proklamation bool
Ineigenersache bool
Brief bool
Anzeige bool
Desertionsliste bool
Notenblatt bool
Vorlesungsverzeichnis bool
Erzaehlung bool
Nachtrag bool
Panegyrik bool
Kriminalanzeige bool
Abbildung bool
Rezepte bool
Korrektur bool
}
// GetCategoryFlags analyzes a piece and returns a CategoryFlags struct with all category flags set
func GetCategoryFlags(piece xmlmodels.Piece) CategoryFlags {
flags := CategoryFlags{}
// Process CategoryRefs
for _, catref := range piece.CategoryRefs {
switch catref.Ref {
case "rezension":
flags.Rezension = true
case "weltnachrichten":
flags.Weltnachrichten = true
case "einkommende-fremde":
flags.EinkommendeFremde = true
case "wechselkurse":
flags.Wechselkurse = true
case "buecher":
flags.Buecher = true
case "lokalanzeigen":
flags.Lokalanzeigen = true
case "lokalnachrichten":
flags.Lokalnachrichten = true
case "lotterie":
flags.Lotterie = true
case "gedicht":
flags.Gedicht = true
case "vorladung":
flags.Vorladung = true
case "auszug":
flags.Auszug = true
case "aufsatz":
flags.Aufsatz = true
case "gelehrte-nachrichten":
flags.GelehrteNachrichten = true
case "theaterkritik":
flags.Theaterkritik = true
case "uebersetzung":
flags.Uebersetzung = true
case "kommentar":
flags.Kommentar = true
case "nachruf":
flags.Nachruf = true
case "replik":
flags.Replik = true
case "proklamation":
flags.Proklamation = true
case "ineigenersache":
flags.Ineigenersache = true
case "brief":
flags.Brief = true
case "anzeige":
flags.Anzeige = true
case "desertionsliste":
flags.Desertionsliste = true
case "notenblatt":
flags.Notenblatt = true
case "vorlesungsverzeichnis":
flags.Vorlesungsverzeichnis = true
case "erzaehlung":
flags.Erzaehlung = true
case "nachtrag":
flags.Nachtrag = true
case "panegyrik":
flags.Panegyrik = true
case "kriminalanzeige":
flags.Kriminalanzeige = true
case "abbildung":
flags.Abbildung = true
case "rezepte":
flags.Rezepte = true
case "korrektur":
flags.Korrektur = true
}
}
// Process WorkRefs with category mapping
for _, workref := range piece.WorkRefs {
kat := workref.Category
if kat == "" {
kat = "rezension" // Default category for WorkRefs
}
switch kat {
case "rezension":
flags.Rezension = true
case "auszug":
flags.Auszug = true
case "theaterkritik":
flags.Theaterkritik = true
case "uebersetzung":
flags.Uebersetzung = true
case "kommentar":
flags.Kommentar = true
case "anzeige":
flags.Anzeige = true
case "replik":
flags.Replik = true
}
}
return flags
}