+extra page table

This commit is contained in:
Simon Martens
2026-01-14 16:36:23 +01:00
parent ca2df2da8a
commit 941ecbecaf
6 changed files with 126 additions and 46 deletions

View File

@@ -582,6 +582,7 @@ func pagesTable() *core.Collection {
func pagesTableFields() core.FieldsList {
fields := core.NewFieldsList(
&core.TextField{Name: dbmodels.KEY_FIELD, Required: true, Presentable: true},
&core.TextField{Name: dbmodels.TITLE_FIELD, Required: false},
&core.TextField{Name: dbmodels.URL_FIELD, Required: false},
&core.TextField{Name: dbmodels.TEMPLATE_FIELD, Required: false},
&core.TextField{Name: dbmodels.LAYOUT_FIELD, Required: false},

View File

@@ -325,42 +325,42 @@ const (
)
var pageMetaSeed = map[string]PageMeta{
pageDataKey(pagemodels.P_INDEX_NAME): {
pagemodels.P_INDEX_NAME: {
Title: INDEX_TITLE,
Description: INDEX_DESCRIPTION,
Keywords: "",
},
pageDataKey(pagemodels.P_REIHEN_NAME): {
pagemodels.P_REIHEN_NAME: {
Title: REIHEN_TITLE,
Description: REIHEN_DESCRIPTION,
Keywords: "",
},
pageDataKey(pagemodels.P_DANK_NAME): {
pagemodels.P_DANK_NAME: {
Title: "Danksagungen",
Description: DANKSAGUNGEN_DESCRIPTION,
Keywords: "",
},
pageDataKey(pagemodels.P_EINFUEHRUNG_NAME): {
pagemodels.P_EINFUEHRUNG_NAME: {
Title: EINLEITUNG_TITLE,
Description: EINLEITUNG_DESCRIPTION,
Keywords: "",
},
pageDataKey(pagemodels.P_KONTAKT_NAME): {
pagemodels.P_KONTAKT_NAME: {
Title: KONTAKT_TITLE,
Description: KONTAKT_DESCRIPTION,
Keywords: "",
},
pageDataKey(pagemodels.P_LIT_NAME): {
pagemodels.P_LIT_NAME: {
Title: LITERATUR_TITLE,
Description: LITERATUR_DESCRIPTION,
Keywords: "",
},
pageDataKey(pagemodels.P_DOK_NAME): {
pagemodels.P_DOK_NAME: {
Title: DOKUMENTATION_TITLE,
Description: DOKUMENTATION_DESCRIPTION,
Keywords: "",
},
pageDataKey(pagemodels.P_KABINETT_NAME): {
pagemodels.P_KABINETT_NAME: {
Title: KABINETT_TITLE,
Description: KABINETT_DESCRIPTION,
Keywords: "",
@@ -382,7 +382,7 @@ var pageHTMLSeed = map[string]string{
func init() {
m.Register(func(app core.App) error {
for key, meta := range pageMetaSeed {
if err := upsertData(app, key, meta); err != nil {
if err := upsertPageMeta(app, key, meta); err != nil {
return err
}
}
@@ -413,7 +413,7 @@ func init() {
}
for key := range pageMetaSeed {
if err := deleteByKey(app, dbmodels.DATA_TABLE, key); err != nil {
if err := deleteByKey(app, dbmodels.PAGES_TABLE, key); err != nil {
return err
}
}

View File

@@ -11,10 +11,6 @@ type PageMeta struct {
Keywords string `json:"keywords"`
}
func pageDataKey(name string) string {
return "page." + name
}
func pageHTMLKey(name, section string) string {
if section == "" {
return "page." + name
@@ -22,6 +18,33 @@ func pageHTMLKey(name, section string) string {
return "page." + name + "." + section
}
func upsertPageMeta(app core.App, key string, meta PageMeta) error {
collection, err := app.FindCollectionByNameOrId(dbmodels.PAGES_TABLE)
if err != nil {
return err
}
record, _ := app.FindFirstRecordByData(collection.Id, dbmodels.KEY_FIELD, key)
if record == nil {
record = core.NewRecord(collection)
record.Set(dbmodels.KEY_FIELD, key)
}
record.Set(dbmodels.TITLE_FIELD, meta.Title)
data := map[string]any{}
if existing := record.Get(dbmodels.DATA_FIELD); existing != nil {
if existingMap, ok := existing.(map[string]any); ok {
data = existingMap
} else if existingMap, ok := existing.(map[string]interface{}); ok {
data = map[string]any(existingMap)
}
}
data["description"] = meta.Description
data["keywords"] = meta.Keywords
record.Set(dbmodels.DATA_FIELD, data)
return app.Save(record)
}
func upsertHTML(app core.App, key, value string) error {
collection, err := app.FindCollectionByNameOrId(dbmodels.HTML_TABLE)
if err != nil {