Erste Experimente mit Reihen

This commit is contained in:
Simon Martens
2025-02-13 17:20:16 +01:00
parent ae041aa3bf
commit 8d00f6a44d
15 changed files with 394 additions and 64 deletions

View File

@@ -2,6 +2,10 @@ package pagemodels
const PAGE_DB_PREFIX = "page_"
func GeneratePageTableName(pagename, tablename string) string {
return PAGE_DB_PREFIX + pagename + "_" + tablename
func GeneratePageTableName(pagename string, tablename ...string) string {
name := PAGE_DB_PREFIX + pagename
for _, t := range tablename {
name += "_" + t
}
return name
}

65
pagemodels/functions.go Normal file
View File

@@ -0,0 +1,65 @@
package pagemodels
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
)
func BasePageCollection(pagename string) *core.Collection {
c := core.NewBaseCollection(GeneratePageTableName(pagename))
c.ListRule = dbmodels.PUBLIC_LIST_RULE
c.ViewRule = dbmodels.PUBLIC_VIEW_RULE
c.Fields = StandardPageFields()
return c
}
func StandardPageFields() core.FieldsList {
ret := core.NewFieldsList(
RequiredTextField(F_TITLE),
EditorField(F_DESCRIPTION),
TextField(F_TAGS),
)
return ret
}
func RequiredTextField(name string) *core.TextField {
return &core.TextField{Name: name, Required: true, Presentable: true}
}
func EditorField(name string) *core.EditorField {
return &core.EditorField{Name: name, Required: false, Presentable: false}
}
func TextField(name string) *core.TextField {
return &core.TextField{Name: name, Required: false, Presentable: false}
}
func ImageField(name string, multiselect bool) *core.FileField {
maxSelect := 1
if multiselect {
maxSelect = 999
}
return &core.FileField{
Name: name,
Required: false,
MaxSize: 100 * 1024 * 1024,
MaxSelect: maxSelect,
MimeTypes: dbmodels.MUSENALM_MIME_TYPES,
Thumbs: []string{"0x300", "0x500", "0x1000", "300x0", "500x0", "1000x0"},
}
}
func RequiredImageField(name string, multiselect bool) *core.FileField {
maxSelect := 1
if multiselect {
maxSelect = 999
}
return &core.FileField{
Name: name,
Required: true,
MaxSize: 100 * 1024 * 1024,
MaxSelect: maxSelect,
MimeTypes: dbmodels.MUSENALM_MIME_TYPES,
Thumbs: []string{"0x300", "0x500", "0x1000", "300x0", "500x0", "1000x0"},
}
}

View File

@@ -5,21 +5,6 @@ import (
"github.com/pocketbase/pocketbase/tools/filesystem"
)
const (
P_INDEX_NAME = "index"
T_INDEX_BILDER = "bilder"
T_INDEX_TEXTE = "texte"
F_INDEX_BILDER_TITEL = "Titel"
F_INDEX_BILDER_BESCHREIBUNG = "Beschreibung"
F_INDEX_BILDER_BILD = "Bild"
F_INDEX_BILDER_VORSCHAU = "Vorschau"
F_INDEX_TEXTE_TITEL = "Titel"
F_INDEX_TEXTE_ABS1 = "Abs1"
F_INDEX_TEXTE_ABS2 = "Abs2"
)
type IndexBilder struct {
core.BaseRecordProxy
}
@@ -35,35 +20,35 @@ func NewIndexBilder(record *core.Record) *IndexBilder {
}
func (b *IndexBilder) Titel() string {
return b.GetString(F_INDEX_BILDER_TITEL)
return b.GetString(F_TITLE)
}
func (b *IndexBilder) SetTitel(titel string) {
b.Set(F_INDEX_BILDER_TITEL, titel)
b.Set(F_TITLE, titel)
}
func (b *IndexBilder) Beschreibung() string {
return b.GetString(F_INDEX_BILDER_BESCHREIBUNG)
return b.GetString(F_DESCRIPTION)
}
func (b *IndexBilder) SetBeschreibung(beschreibung string) {
b.Set(F_INDEX_BILDER_BESCHREIBUNG, beschreibung)
b.Set(F_DESCRIPTION, beschreibung)
}
func (b *IndexBilder) Bild() string {
return b.GetString(F_INDEX_BILDER_BILD)
return b.GetString(F_IMAGE)
}
func (b *IndexBilder) SetBild(bild *filesystem.File) {
b.Set(F_INDEX_BILDER_BILD, bild)
b.Set(F_IMAGE, bild)
}
func (b *IndexBilder) Vorschau() string {
return b.GetString(F_INDEX_BILDER_VORSCHAU)
return b.GetString(F_PREVIEW)
}
func (b *IndexBilder) SetVorschau(vorschau *filesystem.File) {
b.Set(F_INDEX_BILDER_VORSCHAU, vorschau)
b.Set(F_PREVIEW, vorschau)
}
type IndexTexte struct {
@@ -71,7 +56,7 @@ type IndexTexte struct {
}
func (t *IndexTexte) TableName() string {
return GeneratePageTableName(P_INDEX_NAME, T_INDEX_TEXTE)
return GeneratePageTableName(P_INDEX_NAME)
}
func NewIndexTexte(record *core.Record) *IndexTexte {
@@ -81,11 +66,11 @@ func NewIndexTexte(record *core.Record) *IndexTexte {
}
func (t *IndexTexte) Titel() string {
return t.GetString(F_INDEX_TEXTE_TITEL)
return t.GetString(F_TITLE)
}
func (t *IndexTexte) SetTitel(titel string) {
t.Set(F_INDEX_TEXTE_TITEL, titel)
t.Set(F_TITLE, titel)
}
func (t *IndexTexte) Abs1() string {

20
pagemodels/pagedata.go Normal file
View File

@@ -0,0 +1,20 @@
package pagemodels
const (
P_INDEX_NAME = "index"
T_INDEX_BILDER = "bilder"
T_INDEX_TEXTE = "texte"
P_REIHEN_NAME = "reihen"
F_TITLE = "Titel"
F_DESCRIPTION = "Beschreibung"
F_IMAGE = "Bild"
F_PREVIEW = "Vorschau"
F_TEXT = "Text"
F_TAGS = "Stichworte"
F_INDEX_TEXTE_ABS1 = "Abs1"
F_INDEX_TEXTE_ABS2 = "Abs2"
F_INDEX_GO_BUTTON = "GoButton"
)

60
pagemodels/reihen.go Normal file
View File

@@ -0,0 +1,60 @@
package pagemodels
import (
"github.com/pocketbase/pocketbase/core"
"github.com/pocketbase/pocketbase/tools/filesystem"
)
type Reihen struct {
core.BaseRecordProxy
}
func (r *Reihen) TableName() string {
return GeneratePageTableName(P_REIHEN_NAME)
}
func NewReihen(record *core.Record) *Reihen {
i := &Reihen{}
i.SetProxyRecord(record)
return i
}
func (r *Reihen) Title() string {
return r.GetString(F_TITLE)
}
func (r *Reihen) SetTitle(titel string) {
r.Set(F_TITLE, titel)
}
func (r *Reihen) Description() string {
return r.GetString(F_DESCRIPTION)
}
func (r *Reihen) SetDescription(beschreibung string) {
r.Set(F_DESCRIPTION, beschreibung)
}
func (r *Reihen) Keywords() string {
return r.GetString(F_TAGS)
}
func (r *Reihen) SetKeywords(keywords string) {
r.Set(F_TAGS, keywords)
}
func (r *Reihen) Text() string {
return r.GetString(F_TEXT)
}
func (r *Reihen) SetText(text string) {
r.Set(F_TEXT, text)
}
func (r *Reihen) Image() string {
return r.GetString(F_IMAGE)
}
func (r *Reihen) SetImage(image *filesystem.File) {
r.Set(F_IMAGE, image)
}