feat: SEO change history
This commit is contained in:
@@ -2,8 +2,10 @@ package controllers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"git.golem15.com/golem15/sm-seo-plugin/classes"
|
||||
"git.golem15.com/golem15/sm-seo-plugin/models"
|
||||
"git.golem15.com/golem15/summercms/modules/backpack"
|
||||
"git.golem15.com/golem15/summercms/modules/pact"
|
||||
@@ -48,6 +50,29 @@ func (c rulesAdminController) check(ctx context.Context, model any) error {
|
||||
return problemsError(ctx, translator(c.app), r.Problems(db))
|
||||
}
|
||||
|
||||
// FormAfterDelete records the deleted rule in history inside the delete's
|
||||
// transaction, so its values can be restored.
|
||||
func (c rulesAdminController) FormAfterDelete(ctx context.Context, model any) error {
|
||||
r, ok := model.(*models.Rule)
|
||||
if !ok || r == nil {
|
||||
return nil
|
||||
}
|
||||
svc, err := classes.NewService(appOf(c.app))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
db, err := database(ctx, c.app)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return svc.Record(ctx, db, classes.Change{
|
||||
Kind: models.SubjectRule,
|
||||
SubjectID: strconv.FormatUint(uint64(r.ID), 10),
|
||||
What: svc.Phrase("golem15.seo::lang.history.what_rule", map[string]string{"url": r.URL}),
|
||||
Before: classes.RuleValues(*r),
|
||||
})
|
||||
}
|
||||
|
||||
// ListExtendRecords fills the overrides column: the translated labels of
|
||||
// the properties each rule sets, comma-joined.
|
||||
func (c rulesAdminController) ListExtendRecords(ctx context.Context, _ *gorm.DB, records []any) error {
|
||||
@@ -87,4 +112,5 @@ var (
|
||||
_ pact.FormBeforeUpdate = rulesAdminController{}
|
||||
_ pact.ListExtendRecords = rulesAdminController{}
|
||||
_ pact.FilterOptions = rulesAdminController{}
|
||||
_ pact.FormAfterDelete = rulesAdminController{}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user