Files
musenalm/pagemodels/functions.go
Simon Martens eb4bffdeec Pages now work
Default Pages
Created & Updated Fields for every collection
2025-02-16 20:42:31 +01:00

75 lines
1.9 KiB
Go

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 = append(c.Fields, StandardPageFields()...)
return c
}
func StandardPageFields() core.FieldsList {
ret := core.NewFieldsList(
RequiredTextField(F_TITLE),
EditorField(F_DESCRIPTION),
TextField(F_TAGS),
)
ret = append(ret, CreatedUpdatedFields()...)
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"},
}
}
func CreatedUpdatedFields() core.FieldsList {
return core.NewFieldsList(
&core.AutodateField{Name: dbmodels.CREATED_FIELD, OnCreate: true},
&core.AutodateField{Name: dbmodels.UPDATED_FIELD, OnCreate: true, OnUpdate: true},
)
}