feat(32-02): record events from every admin write path

- Delete and each bulk-delete row fire RecordDeleted after commit
- tree reorder fires RecordSaved per moved record (parent/sort in model types)
- relation-manager child create/update/delete fire events naming the
  controller that edits the child's model
- TestRecordEvents covers create, update, translated slug, no-op, rollback
  (validation, FormBeforeUpdate, extension Save), failing listener, reorder,
  child writes, delete and bulk delete; extension Save sees the changes
- docs: Record events in extending.md, admin-controllers notes, cabana README
This commit is contained in:
2026-10-26 22:35:03 +01:00
parent 753fb5969a
commit ff62906301
11 changed files with 737 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ import (
"slices"
"strings"
"git.golem15.com/golem15/summercms/modules/backpack"
"git.golem15.com/golem15/summercms/modules/lagoon"
"git.golem15.com/golem15/summercms/modules/pact"
"git.golem15.com/golem15/summercms/modules/phrasebook"
@@ -200,6 +201,10 @@ type RelationService struct {
bucket *blob.Bucket
tr *phrasebook.Translator
writer TranslationWriter
// app receives the record events of child writes; reg names the
// controller that edits a child's model. Both may be nil.
app *backpack.App
reg *Registry
}
func (s RelationSchema) MarshalJSON() ([]byte, error) {