39 lines
1 KiB
Go
39 lines
1 KiB
Go
// Package exampleplugin is an example Go plugin for alps.
|
|
//
|
|
// To enable it, import this package from cmd/alps/main.go.
|
|
package exampleplugin
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"git.sr.ht/~migadu/alps"
|
|
alpsbase "git.sr.ht/~migadu/alps/plugins/base"
|
|
)
|
|
|
|
func init() {
|
|
p := alps.GoPlugin{Name: "example"}
|
|
|
|
// Setup a function called when the mailbox view is rendered
|
|
p.Inject("mailbox.html", func(ctx *alps.Context, kdata alps.RenderData) error {
|
|
data := kdata.(*alpsbase.MailboxRenderData)
|
|
fmt.Println("The mailbox view for " + data.Mailbox.Name + " is being rendered")
|
|
// Set extra data that can be accessed from the mailbox.html template
|
|
data.Extra["Example"] = "Hi from Go"
|
|
return nil
|
|
})
|
|
|
|
// Wire up a new route
|
|
p.GET("/example", func(ctx *alps.Context) error {
|
|
return ctx.String(http.StatusOK, "This is an example page.")
|
|
})
|
|
|
|
// Register a helper function that can be called from templates
|
|
p.TemplateFuncs(map[string]interface{}{
|
|
"example_and": func(a, b string) string {
|
|
return a + " and " + b
|
|
},
|
|
})
|
|
|
|
alps.RegisterPluginLoader(p.Loader())
|
|
}
|