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>
49 lines
1.6 KiB
Go
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{}
|
|
)
|