feat(04-03): register plugin mail layouts and publish the mailer at boot

- Map short layout names onto dotted layout files and wrap text/HTML
- party.Activate publishes postcard.Mailer before Boot and names missing files
- Hello plugin sends through the app-scoped mailer

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jakub Zych
2026-09-18 13:59:52 +02:00
parent b4fd8339fe
commit 1e515971c9
9 changed files with 251 additions and 4 deletions

View File

@@ -8,6 +8,7 @@ import (
"git.golem15.com/golem15/summercms/backpack"
"git.golem15.com/golem15/summercms/pact"
"git.golem15.com/golem15/summercms/phrasebook"
"git.golem15.com/golem15/summercms/postcard"
)
// Plugin is the required descriptor every compiled plugin implements.
@@ -120,7 +121,13 @@ func activate(registered []Plugin, app *backpack.App, ids []string) ([]Plugin, e
if err := phrasebook.Activate(app, ordered); err != nil {
return nil, fmt.Errorf("party: lang: %w", err)
}
if err := postcard.Activate(app, ordered); err != nil {
return nil, fmt.Errorf("party: mail: %w", err)
}
for _, p := range ordered {
if err := postcard.BootPlugin(app, p); err != nil {
return nil, fmt.Errorf("party: boot %s: %w", p.ID(), err)
}
if err := p.Boot(app); err != nil {
return nil, fmt.Errorf("party: boot %s: %w", p.ID(), err)
}