diff --git a/examples/pong2-render/main.go b/examples/pong2-render/main.go new file mode 100644 index 00000000..e0de2934 --- /dev/null +++ b/examples/pong2-render/main.go @@ -0,0 +1,36 @@ +package main + +import ( + "github.com/flosch/pongo2" + "github.com/gin-gonic/gin" +) + +func main() { + r := gin.Default() + r.HTMLRender = NewNgPongRender() + pages := r.Group("/") + { + pages.GET("/", func(c *gin.Context) { + ctx := pongo2.Context{ + "hello": "Hello Home Pages", + } + c.HTML(200, "templates/sites/home/index.html", ctx) + }) + pages.GET("/user", func(c *gin.Context) { + ctx := pongo2.Context{ + "hello": "Hello User Pages", + } + c.HTML(200, "templates/sites/user/index.html", ctx) + }) + } + admins := r.Group("/admin") + { + admins.GET("/", func(c *gin.Context) { + ctx := pongo2.Context{ + "hello": "Hello Admin Dashboard Pages", + } + c.HTML(200, "templates/admins/dashboard/index.html", ctx) + }) + } + r.Run(":8080") +} diff --git a/examples/pong2-render/pongo2.go b/examples/pong2-render/pongo2.go new file mode 100644 index 00000000..cb3bd518 --- /dev/null +++ b/examples/pong2-render/pongo2.go @@ -0,0 +1,48 @@ +package main + +import ( + "github.com/flosch/pongo2" + "github.com/gin-gonic/gin/render" + "net/http" +) + +type NgHTML struct { + Template map[string]*pongo2.Template + Name string + Data interface{} +} + +func (n NgHTML) Write(w http.ResponseWriter) error { + file := n.Name + ctx := n.Data.(pongo2.Context) + + var t *pongo2.Template + + if tmpl, ok := n.Template[file]; ok { + t = tmpl + } else { + tmpl, err := pongo2.FromFile(file) + if err != nil { + return err + } + n.Template[file] = tmpl + t = tmpl + } + w.Header().Set("Content-Type", "text/html; charset=utf-8") + return t.ExecuteWriter(ctx, w) +} + +type NgPongRender struct { + Template map[string]*pongo2.Template +} + +func (n *NgPongRender) Instance(name string, data interface{}) render.Render { + return NgHTML{ + Template: n.Template, + Name: name, + Data: data, + } +} +func NewNgPongRender() *NgPongRender { + return &NgPongRender{Template: map[string]*pongo2.Template{}} +} diff --git a/examples/pong2-render/templates/admins/common/footer.html b/examples/pong2-render/templates/admins/common/footer.html new file mode 100644 index 00000000..4a0d1b5e --- /dev/null +++ b/examples/pong2-render/templates/admins/common/footer.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/examples/pong2-render/templates/admins/common/header.html b/examples/pong2-render/templates/admins/common/header.html new file mode 100644 index 00000000..669a8fdc --- /dev/null +++ b/examples/pong2-render/templates/admins/common/header.html @@ -0,0 +1,3 @@ +
+

Header Admin

+
\ No newline at end of file diff --git a/examples/pong2-render/templates/admins/common/layout.html b/examples/pong2-render/templates/admins/common/layout.html new file mode 100644 index 00000000..0ebdd714 --- /dev/null +++ b/examples/pong2-render/templates/admins/common/layout.html @@ -0,0 +1,14 @@ + + + + + + + {% include "header.html" %} + + {%block content%} + {%endblock%} + + {% include "footer.html"%} + + \ No newline at end of file diff --git a/examples/pong2-render/templates/admins/dashboard/index.html b/examples/pong2-render/templates/admins/dashboard/index.html new file mode 100644 index 00000000..ee9793ed --- /dev/null +++ b/examples/pong2-render/templates/admins/dashboard/index.html @@ -0,0 +1,4 @@ +{% extends "layout.html" %} +{%block view%} +

{{hello}}

+{%endblock%} \ No newline at end of file diff --git a/examples/pong2-render/templates/admins/dashboard/layout.html b/examples/pong2-render/templates/admins/dashboard/layout.html new file mode 100644 index 00000000..0ccaae43 --- /dev/null +++ b/examples/pong2-render/templates/admins/dashboard/layout.html @@ -0,0 +1,6 @@ +{% extends "../common/layout.html" %} +{%block content%} + {%block view%} + + {%endblock%} +{%endblock%} \ No newline at end of file diff --git a/examples/pong2-render/templates/sites/common/footer.html b/examples/pong2-render/templates/sites/common/footer.html new file mode 100644 index 00000000..1bad18f7 --- /dev/null +++ b/examples/pong2-render/templates/sites/common/footer.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/examples/pong2-render/templates/sites/common/header.html b/examples/pong2-render/templates/sites/common/header.html new file mode 100644 index 00000000..fc0e3f16 --- /dev/null +++ b/examples/pong2-render/templates/sites/common/header.html @@ -0,0 +1,3 @@ +
+

Header Site

+
\ No newline at end of file diff --git a/examples/pong2-render/templates/sites/common/layout.html b/examples/pong2-render/templates/sites/common/layout.html new file mode 100644 index 00000000..0ebdd714 --- /dev/null +++ b/examples/pong2-render/templates/sites/common/layout.html @@ -0,0 +1,14 @@ + + + + + + + {% include "header.html" %} + + {%block content%} + {%endblock%} + + {% include "footer.html"%} + + \ No newline at end of file diff --git a/examples/pong2-render/templates/sites/home/index.html b/examples/pong2-render/templates/sites/home/index.html new file mode 100644 index 00000000..ee9793ed --- /dev/null +++ b/examples/pong2-render/templates/sites/home/index.html @@ -0,0 +1,4 @@ +{% extends "layout.html" %} +{%block view%} +

{{hello}}

+{%endblock%} \ No newline at end of file diff --git a/examples/pong2-render/templates/sites/home/layout.html b/examples/pong2-render/templates/sites/home/layout.html new file mode 100644 index 00000000..0ccaae43 --- /dev/null +++ b/examples/pong2-render/templates/sites/home/layout.html @@ -0,0 +1,6 @@ +{% extends "../common/layout.html" %} +{%block content%} + {%block view%} + + {%endblock%} +{%endblock%} \ No newline at end of file diff --git a/examples/pong2-render/templates/sites/user/index.html b/examples/pong2-render/templates/sites/user/index.html new file mode 100644 index 00000000..1de078cf --- /dev/null +++ b/examples/pong2-render/templates/sites/user/index.html @@ -0,0 +1,4 @@ +{% extends "layout.html" %} +{%block view%} +

{{hello}}

+{%endblock%} diff --git a/examples/pong2-render/templates/sites/user/layout.html b/examples/pong2-render/templates/sites/user/layout.html new file mode 100644 index 00000000..0ccaae43 --- /dev/null +++ b/examples/pong2-render/templates/sites/user/layout.html @@ -0,0 +1,6 @@ +{% extends "../common/layout.html" %} +{%block content%} + {%block view%} + + {%endblock%} +{%endblock%} \ No newline at end of file