Files
sm-journal-plugin/controllers/categories.go
Jakub Zych afd0a2cafc feat(15-02): add Categories, Tags, and journal settings admin
Register the remaining YAML admin screens and the settings singleton
so a host can boot Posts, Categories, Tags, and Code journal. Posts
update and delete refuse other authors without access_other_posts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 18:42:29 +02:00

49 lines
1.6 KiB
Go

package controllers
import (
"git.golem15.com/golem15/sm-journal-plugin/models"
"git.golem15.com/golem15/summercms/modules/backpack"
"git.golem15.com/golem15/summercms/modules/cabana"
"git.golem15.com/golem15/summercms/modules/pact"
)
const (
// CategoriesControllerID is the cabana controller id of the Categories screen.
CategoriesControllerID = "golem15.journal.categories"
// PermissionAccessCategories is Categories::$requiredPermissions.
PermissionAccessCategories = "golem15.journal.access_categories"
)
type categoriesAdminController struct {
app func() *backpack.App
}
func (categoriesAdminController) ID() string { return CategoriesControllerID }
func (categoriesAdminController) ModelName() string { return `Golem15\Journal\Models\Category` }
func (categoriesAdminController) ConfigDir() string { return "controllers/categories" }
func (categoriesAdminController) RequiredPermissions() []string {
return []string{PermissionAccessCategories}
}
func (categoriesAdminController) NewRecord() any { return &models.Category{} }
func (categoriesAdminController) AdminFieldRelations() []cabana.FieldRelationContract {
return []cabana.FieldRelationContract{{
Field: "parent",
Kind: "belongsTo",
NewRelated: func() any { return &models.Category{} },
ForeignKey: "parent_id",
LabelColumn: "name",
}}
}
var (
_ pact.AdminController = categoriesAdminController{}
_ pact.AdminPermissioned = categoriesAdminController{}
_ pact.AdminRecordSource = categoriesAdminController{}
_ cabana.FieldRelationProvider = categoriesAdminController{}
)