Files
sm-bm-plugin/controllers/materials.go
Jakub Zych ff2f97eb2b feat: materials by zjazd in the student API and admin
The material admin form gets the "Na zjazd" picker, every student
material JSON carries meeting_id, and GET /materials accepts meeting=
inside the published-only scope, so the Pulpit hero can list the
zjazd's materials next to its readings.
2026-10-27 01:44:38 +01:00

52 lines
1.7 KiB
Go

// Code generated by summer make. DO NOT EDIT.
package controllers
import (
"git.golem15.com/golem15/summercms/modules/cabana"
"git.golem15.com/golem15/summercms/modules/pact"
"git.golem15.com/jakub/sm-bm-plugin/models"
)
var (
_ pact.AdminController = materialsAdmin{}
_ pact.AdminRecordSource = materialsAdmin{}
_ pact.AdminPermissioned = materialsAdmin{}
)
// materialsAdmin is the admin controller for materials.
type materialsAdmin struct{ temporalHooks }
func (materialsAdmin) ID() string { return "jz.bm.materials" }
func (materialsAdmin) ModelName() string { return "Material" }
func (materialsAdmin) ConfigDir() string { return "controllers/materials" }
// NewRecord returns the model the generic admin handlers query and fill.
func (materialsAdmin) NewRecord() any { return &models.Material{} }
// RequiredPermissions is checked before any schema or record is served.
func (materialsAdmin) RequiredPermissions() []string {
return []string{PermMaterials}
}
// AdminFieldRelations binds the course and meeting pickers and the tags. The files field
// is bound by models.Material.AttachRelations.
func (materialsAdmin) AdminFieldRelations() []cabana.FieldRelationContract {
return []cabana.FieldRelationContract{
courseRelation("course_id"),
meetingRelation(),
{
Field: "tags",
Kind: "belongsToMany",
NewRelated: func() any { return &models.Tag{} },
NewPivot: func() any { return &models.MaterialTag{} },
ParentForeignKey: "material_id",
RelatedForeignKey: "tag_id",
LabelColumn: "name",
},
}
}
// MaterialsController returns the jz.bm.materials admin controller.
func MaterialsController() pact.AdminController { return materialsAdmin{} }