Move controller to the template renderer (#68)
This commit is contained in:
parent
baa391fb20
commit
8eafb6b666
26 changed files with 654 additions and 679 deletions
|
|
@ -5,7 +5,7 @@ import (
|
|||
"html/template"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/mikestefanello/pagoda/pkg/controller"
|
||||
"github.com/mikestefanello/pagoda/pkg/page"
|
||||
"github.com/mikestefanello/pagoda/pkg/services"
|
||||
"github.com/mikestefanello/pagoda/templates"
|
||||
)
|
||||
|
|
@ -17,7 +17,7 @@ const (
|
|||
|
||||
type (
|
||||
Pages struct {
|
||||
controller.Controller
|
||||
*services.TemplateRenderer
|
||||
}
|
||||
|
||||
post struct {
|
||||
|
|
@ -41,30 +41,30 @@ func init() {
|
|||
Register(new(Pages))
|
||||
}
|
||||
|
||||
func (c *Pages) Init(ct *services.Container) error {
|
||||
c.Controller = controller.NewController(ct)
|
||||
func (h *Pages) Init(c *services.Container) error {
|
||||
h.TemplateRenderer = c.TemplateRenderer
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Pages) Routes(g *echo.Group) {
|
||||
g.GET("/", c.Home).Name = routeNameHome
|
||||
g.GET("/about", c.About).Name = routeNameAbout
|
||||
func (h *Pages) Routes(g *echo.Group) {
|
||||
g.GET("/", h.Home).Name = routeNameHome
|
||||
g.GET("/about", h.About).Name = routeNameAbout
|
||||
}
|
||||
|
||||
func (c *Pages) Home(ctx echo.Context) error {
|
||||
page := controller.NewPage(ctx)
|
||||
page.Layout = templates.LayoutMain
|
||||
page.Name = templates.PageHome
|
||||
page.Metatags.Description = "Welcome to the homepage."
|
||||
page.Metatags.Keywords = []string{"Go", "MVC", "Web", "Software"}
|
||||
page.Pager = controller.NewPager(ctx, 4)
|
||||
page.Data = c.fetchPosts(&page.Pager)
|
||||
func (h *Pages) Home(ctx echo.Context) error {
|
||||
p := page.New(ctx)
|
||||
p.Layout = templates.LayoutMain
|
||||
p.Name = templates.PageHome
|
||||
p.Metatags.Description = "Welcome to the homepage."
|
||||
p.Metatags.Keywords = []string{"Go", "MVC", "Web", "Software"}
|
||||
p.Pager = page.NewPager(ctx, 4)
|
||||
p.Data = h.fetchPosts(&p.Pager)
|
||||
|
||||
return c.RenderPage(ctx, page)
|
||||
return h.RenderPage(ctx, p)
|
||||
}
|
||||
|
||||
// fetchPosts is an mock example of fetching posts to illustrate how paging works
|
||||
func (c *Pages) fetchPosts(pager *controller.Pager) []post {
|
||||
func (h *Pages) fetchPosts(pager *page.Pager) []post {
|
||||
pager.SetItems(20)
|
||||
posts := make([]post, 20)
|
||||
|
||||
|
|
@ -77,19 +77,19 @@ func (c *Pages) fetchPosts(pager *controller.Pager) []post {
|
|||
return posts[pager.GetOffset() : pager.GetOffset()+pager.ItemsPerPage]
|
||||
}
|
||||
|
||||
func (c *Pages) About(ctx echo.Context) error {
|
||||
page := controller.NewPage(ctx)
|
||||
page.Layout = templates.LayoutMain
|
||||
page.Name = templates.PageAbout
|
||||
page.Title = "About"
|
||||
func (h *Pages) About(ctx echo.Context) error {
|
||||
p := page.New(ctx)
|
||||
p.Layout = templates.LayoutMain
|
||||
p.Name = templates.PageAbout
|
||||
p.Title = "About"
|
||||
|
||||
// This page will be cached!
|
||||
page.Cache.Enabled = true
|
||||
page.Cache.Tags = []string{"page_about", "page:list"}
|
||||
p.Cache.Enabled = true
|
||||
p.Cache.Tags = []string{"page_about", "page:list"}
|
||||
|
||||
// A simple example of how the Data field can contain anything you want to send to the templates
|
||||
// even though you wouldn't normally send markup like this
|
||||
page.Data = aboutData{
|
||||
p.Data = aboutData{
|
||||
ShowCacheWarning: true,
|
||||
FrontendTabs: []aboutTab{
|
||||
{
|
||||
|
|
@ -117,5 +117,5 @@ func (c *Pages) About(ctx echo.Context) error {
|
|||
},
|
||||
}
|
||||
|
||||
return c.RenderPage(ctx, page)
|
||||
return h.RenderPage(ctx, p)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue