diff --git a/pkg/handler/about/handler.go b/pkg/handler/about/handler.go
index a2caa4eeea02e1e6885069fc90f0d1ef479b4798..1acde601c7aa036550ab6e73253f7c820646e1e6 100644
--- a/pkg/handler/about/handler.go
+++ b/pkg/handler/about/handler.go
@@ -50,7 +50,7 @@ renderer := html.NewRenderer(opts)
bs = markdown.Render(doc, renderer)
- gitList := &templates.HelloPage{
+ gitList := &templates.AboutPage{
Body: bs,
}
templates.WritePageTemplate(w, gitList)
diff --git a/pkg/handler/config/handler.go b/pkg/handler/config/handler.go
index c278e35d0e624ac09c1a0065f0f906bd6e88dfe1..30f428383db9ada7b0337c2400b983a7d1a4b8c2 100644
--- a/pkg/handler/config/handler.go
+++ b/pkg/handler/config/handler.go
@@ -56,7 +56,7 @@ slog.Error("Error format", "error", err)
return
}
- hello := &templates.HelloPage{
+ hello := &templates.ConfigPage{
Body: code.Bytes(),
}
diff --git a/scss/main.scss b/scss/main.scss
index fc16ca57f6aa40d4c92e7243b7c9bee7b10b3ea5..f57579ac37605a06ed15ba86c2f689c926d07f4c 100644
--- a/scss/main.scss
+++ b/scss/main.scss
@@ -50,6 +50,10 @@ margin: 0.5rem 0;
background: #f8f9fa;
}
+.selected {
+ text-decoration: underline;
+}
+
.event > h4 {
margin: 0;
}
diff --git a/templates/about.qtpl b/templates/about.qtpl
new file mode 100644
index 0000000000000000000000000000000000000000..faee50e18821c54e739efd5611c0b548cf94cc15
--- /dev/null
+++ b/templates/about.qtpl
@@ -0,0 +1,16 @@
+{% code
+type AboutPage struct {
+ Body []byte
+}
+%}
+
+{% func (p *AboutPage) Title() %}Hello{% endfunc %}
+
+{% func (p *AboutPage) Navbar() %}{%= Navbar(About) %}{% endfunc %}
+
+{% func (p *AboutPage) Content() %}
+{%z= p.Body %}
+{% endfunc %}
+
+{% func (p *AboutPage) Script() %}
+{% endfunc %}
diff --git a/templates/about.qtpl.go b/templates/about.qtpl.go
new file mode 100644
index 0000000000000000000000000000000000000000..aaa25148913dfd971fc954840e85f3c2aef70905
--- /dev/null
+++ b/templates/about.qtpl.go
@@ -0,0 +1,162 @@
+// Code generated by qtc from "about.qtpl". DO NOT EDIT.
+// See https://github.com/valyala/quicktemplate for details.
+
+//line about.qtpl:1
+package templates
+
+//line about.qtpl:1
+import (
+ qtio422016 "io"
+
+ qt422016 "github.com/valyala/quicktemplate"
+)
+
+//line about.qtpl:1
+var (
+ _ = qtio422016.Copy
+ _ = qt422016.AcquireByteBuffer
+)
+
+//line about.qtpl:2
+type AboutPage struct {
+ Body []byte
+}
+
+//line about.qtpl:7
+func (p *AboutPage) StreamTitle(qw422016 *qt422016.Writer) {
+//line about.qtpl:7
+ qw422016.N().S(`Hello`)
+//line about.qtpl:7
+}
+
+//line about.qtpl:7
+func (p *AboutPage) WriteTitle(qq422016 qtio422016.Writer) {
+//line about.qtpl:7
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line about.qtpl:7
+ p.StreamTitle(qw422016)
+//line about.qtpl:7
+ qt422016.ReleaseWriter(qw422016)
+//line about.qtpl:7
+}
+
+//line about.qtpl:7
+func (p *AboutPage) Title() string {
+//line about.qtpl:7
+ qb422016 := qt422016.AcquireByteBuffer()
+//line about.qtpl:7
+ p.WriteTitle(qb422016)
+//line about.qtpl:7
+ qs422016 := string(qb422016.B)
+//line about.qtpl:7
+ qt422016.ReleaseByteBuffer(qb422016)
+//line about.qtpl:7
+ return qs422016
+//line about.qtpl:7
+}
+
+//line about.qtpl:9
+func (p *AboutPage) StreamNavbar(qw422016 *qt422016.Writer) {
+//line about.qtpl:9
+ StreamNavbar(qw422016, About)
+//line about.qtpl:9
+}
+
+//line about.qtpl:9
+func (p *AboutPage) WriteNavbar(qq422016 qtio422016.Writer) {
+//line about.qtpl:9
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line about.qtpl:9
+ p.StreamNavbar(qw422016)
+//line about.qtpl:9
+ qt422016.ReleaseWriter(qw422016)
+//line about.qtpl:9
+}
+
+//line about.qtpl:9
+func (p *AboutPage) Navbar() string {
+//line about.qtpl:9
+ qb422016 := qt422016.AcquireByteBuffer()
+//line about.qtpl:9
+ p.WriteNavbar(qb422016)
+//line about.qtpl:9
+ qs422016 := string(qb422016.B)
+//line about.qtpl:9
+ qt422016.ReleaseByteBuffer(qb422016)
+//line about.qtpl:9
+ return qs422016
+//line about.qtpl:9
+}
+
+//line about.qtpl:11
+func (p *AboutPage) StreamContent(qw422016 *qt422016.Writer) {
+//line about.qtpl:11
+ qw422016.N().S(`
+`)
+//line about.qtpl:12
+ qw422016.N().Z(p.Body)
+//line about.qtpl:12
+ qw422016.N().S(`
+`)
+//line about.qtpl:13
+}
+
+//line about.qtpl:13
+func (p *AboutPage) WriteContent(qq422016 qtio422016.Writer) {
+//line about.qtpl:13
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line about.qtpl:13
+ p.StreamContent(qw422016)
+//line about.qtpl:13
+ qt422016.ReleaseWriter(qw422016)
+//line about.qtpl:13
+}
+
+//line about.qtpl:13
+func (p *AboutPage) Content() string {
+//line about.qtpl:13
+ qb422016 := qt422016.AcquireByteBuffer()
+//line about.qtpl:13
+ p.WriteContent(qb422016)
+//line about.qtpl:13
+ qs422016 := string(qb422016.B)
+//line about.qtpl:13
+ qt422016.ReleaseByteBuffer(qb422016)
+//line about.qtpl:13
+ return qs422016
+//line about.qtpl:13
+}
+
+//line about.qtpl:15
+func (p *AboutPage) StreamScript(qw422016 *qt422016.Writer) {
+//line about.qtpl:15
+ qw422016.N().S(`
+`)
+//line about.qtpl:16
+}
+
+//line about.qtpl:16
+func (p *AboutPage) WriteScript(qq422016 qtio422016.Writer) {
+//line about.qtpl:16
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line about.qtpl:16
+ p.StreamScript(qw422016)
+//line about.qtpl:16
+ qt422016.ReleaseWriter(qw422016)
+//line about.qtpl:16
+}
+
+//line about.qtpl:16
+func (p *AboutPage) Script() string {
+//line about.qtpl:16
+ qb422016 := qt422016.AcquireByteBuffer()
+//line about.qtpl:16
+ p.WriteScript(qb422016)
+//line about.qtpl:16
+ qs422016 := string(qb422016.B)
+//line about.qtpl:16
+ qt422016.ReleaseByteBuffer(qb422016)
+//line about.qtpl:16
+ return qs422016
+//line about.qtpl:16
+}
diff --git a/templates/base.qtpl b/templates/base.qtpl
index d8d1d344fcc5a6f70683c0c3fd95494ec6055322..ba32aad77d3aa3bf33796127b6af71409d673e1c 100644
--- a/templates/base.qtpl
+++ b/templates/base.qtpl
@@ -2,14 +2,19 @@ This is a base page template. All the other template pages implement this interface.
{% import "strconv" %}
+{% code
+ var Slug = ""
+%}
+
{% interface
Page {
Title()
Content()
Script()
+ Navbar()
}
-
%}
+
{% code func FromUInttoString(u *uint) string {
if u != nil {
@@ -19,10 +24,6 @@ return ""
}
%}
-{% code
- var Slug = ""
-%}
-
Page prints a page implementing Page interface.
{% func PageTemplate(p Page) %}
<html lang="en">
@@ -34,14 +35,7 @@ <link rel="stylesheet" href="/static/main{%s Slug%}.css">
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
- <nav class="container navbar navbar-expand-sm">
- <div class="navbar-nav">
- <a class="nav-link" href="/git">git</a>
- <a class="nav-link" href="/list">list</a>
- <a class="nav-link" href="/about">about</a>
- <a class="nav-link" href="/config">config</a>
- </div>
- </nav>
+ {%= p.Navbar() %}
<div class="container">
{%= p.Content() %}
</div>
diff --git a/templates/base.qtpl.go b/templates/base.qtpl.go
index 15c9e4f0ae2b83b1bb86993cb9e15a280a821318..2f419c68086d58c248e274382152c0ab9a3fc6fb 100644
--- a/templates/base.qtpl.go
+++ b/templates/base.qtpl.go
@@ -24,29 +24,38 @@ _ = qt422016.AcquireByteBuffer
)
//line base.qtpl:6
+var Slug = ""
+
+//line base.qtpl:10
type Page interface {
-//line base.qtpl:6
+//line base.qtpl:10
Title() string
-//line base.qtpl:6
+//line base.qtpl:10
StreamTitle(qw422016 *qt422016.Writer)
-//line base.qtpl:6
+//line base.qtpl:10
WriteTitle(qq422016 qtio422016.Writer)
-//line base.qtpl:6
+//line base.qtpl:10
Content() string
-//line base.qtpl:6
+//line base.qtpl:10
StreamContent(qw422016 *qt422016.Writer)
-//line base.qtpl:6
+//line base.qtpl:10
WriteContent(qq422016 qtio422016.Writer)
-//line base.qtpl:6
+//line base.qtpl:10
Script() string
-//line base.qtpl:6
+//line base.qtpl:10
StreamScript(qw422016 *qt422016.Writer)
-//line base.qtpl:6
+//line base.qtpl:10
WriteScript(qq422016 qtio422016.Writer)
-//line base.qtpl:6
+//line base.qtpl:10
+ Navbar() string
+//line base.qtpl:10
+ StreamNavbar(qw422016 *qt422016.Writer)
+//line base.qtpl:10
+ WriteNavbar(qq422016 qtio422016.Writer)
+//line base.qtpl:10
}
-//line base.qtpl:14
+//line base.qtpl:19
func FromUInttoString(u *uint) string {
if u != nil {
return strconv.FormatUint(uint64(*u), 10)
@@ -54,180 +63,174 @@ }
return ""
}
-//line base.qtpl:23
-var Slug = ""
-
// Page prints a page implementing Page interface.
-//line base.qtpl:27
+//line base.qtpl:28
func StreamPageTemplate(qw422016 *qt422016.Writer, p Page) {
-//line base.qtpl:27
+//line base.qtpl:28
qw422016.N().S(`
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="icon" href="data:,">
<title>cerrado | `)
-//line base.qtpl:32
+//line base.qtpl:33
p.StreamTitle(qw422016)
-//line base.qtpl:32
+//line base.qtpl:33
qw422016.N().S(`</title>
<link rel="stylesheet" href="/static/main`)
-//line base.qtpl:33
+//line base.qtpl:34
qw422016.E().S(Slug)
-//line base.qtpl:33
+//line base.qtpl:34
qw422016.N().S(`.css">
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
- <nav class="container navbar navbar-expand-sm">
- <div class="navbar-nav">
- <a class="nav-link" href="/git">git</a>
- <a class="nav-link" href="/list">list</a>
- <a class="nav-link" href="/about">about</a>
- <a class="nav-link" href="/config">config</a>
- </div>
- </nav>
+ `)
+//line base.qtpl:38
+ p.StreamNavbar(qw422016)
+//line base.qtpl:38
+ qw422016.N().S(`
<div class="container">
`)
-//line base.qtpl:46
+//line base.qtpl:40
p.StreamContent(qw422016)
-//line base.qtpl:46
+//line base.qtpl:40
qw422016.N().S(`
</div>
</body>
`)
-//line base.qtpl:49
+//line base.qtpl:43
p.StreamScript(qw422016)
-//line base.qtpl:49
+//line base.qtpl:43
qw422016.N().S(`
</html>
`)
-//line base.qtpl:51
+//line base.qtpl:45
}
-//line base.qtpl:51
+//line base.qtpl:45
func WritePageTemplate(qq422016 qtio422016.Writer, p Page) {
-//line base.qtpl:51
+//line base.qtpl:45
qw422016 := qt422016.AcquireWriter(qq422016)
-//line base.qtpl:51
+//line base.qtpl:45
StreamPageTemplate(qw422016, p)
-//line base.qtpl:51
+//line base.qtpl:45
qt422016.ReleaseWriter(qw422016)
-//line base.qtpl:51
+//line base.qtpl:45
}
-//line base.qtpl:51
+//line base.qtpl:45
func PageTemplate(p Page) string {
-//line base.qtpl:51
+//line base.qtpl:45
qb422016 := qt422016.AcquireByteBuffer()
-//line base.qtpl:51
+//line base.qtpl:45
WritePageTemplate(qb422016, p)
-//line base.qtpl:51
+//line base.qtpl:45
qs422016 := string(qb422016.B)
-//line base.qtpl:51
+//line base.qtpl:45
qt422016.ReleaseByteBuffer(qb422016)
-//line base.qtpl:51
+//line base.qtpl:45
return qs422016
-//line base.qtpl:51
+//line base.qtpl:45
}
-//line base.qtpl:53
+//line base.qtpl:47
type BasePage struct{}
-//line base.qtpl:54
+//line base.qtpl:48
func (p *BasePage) StreamTitle(qw422016 *qt422016.Writer) {
-//line base.qtpl:54
+//line base.qtpl:48
qw422016.N().S(`Empty`)
-//line base.qtpl:54
+//line base.qtpl:48
}
-//line base.qtpl:54
+//line base.qtpl:48
func (p *BasePage) WriteTitle(qq422016 qtio422016.Writer) {
-//line base.qtpl:54
+//line base.qtpl:48
qw422016 := qt422016.AcquireWriter(qq422016)
-//line base.qtpl:54
+//line base.qtpl:48
p.StreamTitle(qw422016)
-//line base.qtpl:54
+//line base.qtpl:48
qt422016.ReleaseWriter(qw422016)
-//line base.qtpl:54
+//line base.qtpl:48
}
-//line base.qtpl:54
+//line base.qtpl:48
func (p *BasePage) Title() string {
-//line base.qtpl:54
+//line base.qtpl:48
qb422016 := qt422016.AcquireByteBuffer()
-//line base.qtpl:54
+//line base.qtpl:48
p.WriteTitle(qb422016)
-//line base.qtpl:54
+//line base.qtpl:48
qs422016 := string(qb422016.B)
-//line base.qtpl:54
+//line base.qtpl:48
qt422016.ReleaseByteBuffer(qb422016)
-//line base.qtpl:54
+//line base.qtpl:48
return qs422016
-//line base.qtpl:54
+//line base.qtpl:48
}
-//line base.qtpl:55
+//line base.qtpl:49
func (p *BasePage) StreamBody(qw422016 *qt422016.Writer) {
-//line base.qtpl:55
+//line base.qtpl:49
qw422016.N().S(`HelloWorld`)
-//line base.qtpl:55
+//line base.qtpl:49
}
-//line base.qtpl:55
+//line base.qtpl:49
func (p *BasePage) WriteBody(qq422016 qtio422016.Writer) {
-//line base.qtpl:55
+//line base.qtpl:49
qw422016 := qt422016.AcquireWriter(qq422016)
-//line base.qtpl:55
+//line base.qtpl:49
p.StreamBody(qw422016)
-//line base.qtpl:55
+//line base.qtpl:49
qt422016.ReleaseWriter(qw422016)
-//line base.qtpl:55
+//line base.qtpl:49
}
-//line base.qtpl:55
+//line base.qtpl:49
func (p *BasePage) Body() string {
-//line base.qtpl:55
+//line base.qtpl:49
qb422016 := qt422016.AcquireByteBuffer()
-//line base.qtpl:55
+//line base.qtpl:49
p.WriteBody(qb422016)
-//line base.qtpl:55
+//line base.qtpl:49
qs422016 := string(qb422016.B)
-//line base.qtpl:55
+//line base.qtpl:49
qt422016.ReleaseByteBuffer(qb422016)
-//line base.qtpl:55
+//line base.qtpl:49
return qs422016
-//line base.qtpl:55
+//line base.qtpl:49
}
-//line base.qtpl:56
+//line base.qtpl:50
func (p *BasePage) StreamScript(qw422016 *qt422016.Writer) {
-//line base.qtpl:56
+//line base.qtpl:50
}
-//line base.qtpl:56
+//line base.qtpl:50
func (p *BasePage) WriteScript(qq422016 qtio422016.Writer) {
-//line base.qtpl:56
+//line base.qtpl:50
qw422016 := qt422016.AcquireWriter(qq422016)
-//line base.qtpl:56
+//line base.qtpl:50
p.StreamScript(qw422016)
-//line base.qtpl:56
+//line base.qtpl:50
qt422016.ReleaseWriter(qw422016)
-//line base.qtpl:56
+//line base.qtpl:50
}
-//line base.qtpl:56
+//line base.qtpl:50
func (p *BasePage) Script() string {
-//line base.qtpl:56
+//line base.qtpl:50
qb422016 := qt422016.AcquireByteBuffer()
-//line base.qtpl:56
+//line base.qtpl:50
p.WriteScript(qb422016)
-//line base.qtpl:56
+//line base.qtpl:50
qs422016 := string(qb422016.B)
-//line base.qtpl:56
+//line base.qtpl:50
qt422016.ReleaseByteBuffer(qb422016)
-//line base.qtpl:56
+//line base.qtpl:50
return qs422016
-//line base.qtpl:56
+//line base.qtpl:50
}
diff --git a/templates/config.qtpl b/templates/config.qtpl
new file mode 100644
index 0000000000000000000000000000000000000000..c5146b8b015513ceeec3fe0bcaf42c3301380309
--- /dev/null
+++ b/templates/config.qtpl
@@ -0,0 +1,16 @@
+{% code
+type ConfigPage struct {
+ Body []byte
+}
+%}
+
+{% func (p *ConfigPage) Title() %}Hello{% endfunc %}
+
+{% func (p *ConfigPage) Navbar() %}{%= Navbar(Config) %}{% endfunc %}
+
+{% func (p *ConfigPage) Content() %}
+{%z= p.Body %}
+{% endfunc %}
+
+{% func (p *ConfigPage) Script() %}
+{% endfunc %}
diff --git a/templates/config.qtpl.go b/templates/config.qtpl.go
new file mode 100644
index 0000000000000000000000000000000000000000..a5df086e3ce1d3f9f186b3fb28aea4659db0649c
--- /dev/null
+++ b/templates/config.qtpl.go
@@ -0,0 +1,162 @@
+// Code generated by qtc from "config.qtpl". DO NOT EDIT.
+// See https://github.com/valyala/quicktemplate for details.
+
+//line config.qtpl:1
+package templates
+
+//line config.qtpl:1
+import (
+ qtio422016 "io"
+
+ qt422016 "github.com/valyala/quicktemplate"
+)
+
+//line config.qtpl:1
+var (
+ _ = qtio422016.Copy
+ _ = qt422016.AcquireByteBuffer
+)
+
+//line config.qtpl:2
+type ConfigPage struct {
+ Body []byte
+}
+
+//line config.qtpl:7
+func (p *ConfigPage) StreamTitle(qw422016 *qt422016.Writer) {
+//line config.qtpl:7
+ qw422016.N().S(`Hello`)
+//line config.qtpl:7
+}
+
+//line config.qtpl:7
+func (p *ConfigPage) WriteTitle(qq422016 qtio422016.Writer) {
+//line config.qtpl:7
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line config.qtpl:7
+ p.StreamTitle(qw422016)
+//line config.qtpl:7
+ qt422016.ReleaseWriter(qw422016)
+//line config.qtpl:7
+}
+
+//line config.qtpl:7
+func (p *ConfigPage) Title() string {
+//line config.qtpl:7
+ qb422016 := qt422016.AcquireByteBuffer()
+//line config.qtpl:7
+ p.WriteTitle(qb422016)
+//line config.qtpl:7
+ qs422016 := string(qb422016.B)
+//line config.qtpl:7
+ qt422016.ReleaseByteBuffer(qb422016)
+//line config.qtpl:7
+ return qs422016
+//line config.qtpl:7
+}
+
+//line config.qtpl:9
+func (p *ConfigPage) StreamNavbar(qw422016 *qt422016.Writer) {
+//line config.qtpl:9
+ StreamNavbar(qw422016, Config)
+//line config.qtpl:9
+}
+
+//line config.qtpl:9
+func (p *ConfigPage) WriteNavbar(qq422016 qtio422016.Writer) {
+//line config.qtpl:9
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line config.qtpl:9
+ p.StreamNavbar(qw422016)
+//line config.qtpl:9
+ qt422016.ReleaseWriter(qw422016)
+//line config.qtpl:9
+}
+
+//line config.qtpl:9
+func (p *ConfigPage) Navbar() string {
+//line config.qtpl:9
+ qb422016 := qt422016.AcquireByteBuffer()
+//line config.qtpl:9
+ p.WriteNavbar(qb422016)
+//line config.qtpl:9
+ qs422016 := string(qb422016.B)
+//line config.qtpl:9
+ qt422016.ReleaseByteBuffer(qb422016)
+//line config.qtpl:9
+ return qs422016
+//line config.qtpl:9
+}
+
+//line config.qtpl:11
+func (p *ConfigPage) StreamContent(qw422016 *qt422016.Writer) {
+//line config.qtpl:11
+ qw422016.N().S(`
+`)
+//line config.qtpl:12
+ qw422016.N().Z(p.Body)
+//line config.qtpl:12
+ qw422016.N().S(`
+`)
+//line config.qtpl:13
+}
+
+//line config.qtpl:13
+func (p *ConfigPage) WriteContent(qq422016 qtio422016.Writer) {
+//line config.qtpl:13
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line config.qtpl:13
+ p.StreamContent(qw422016)
+//line config.qtpl:13
+ qt422016.ReleaseWriter(qw422016)
+//line config.qtpl:13
+}
+
+//line config.qtpl:13
+func (p *ConfigPage) Content() string {
+//line config.qtpl:13
+ qb422016 := qt422016.AcquireByteBuffer()
+//line config.qtpl:13
+ p.WriteContent(qb422016)
+//line config.qtpl:13
+ qs422016 := string(qb422016.B)
+//line config.qtpl:13
+ qt422016.ReleaseByteBuffer(qb422016)
+//line config.qtpl:13
+ return qs422016
+//line config.qtpl:13
+}
+
+//line config.qtpl:15
+func (p *ConfigPage) StreamScript(qw422016 *qt422016.Writer) {
+//line config.qtpl:15
+ qw422016.N().S(`
+`)
+//line config.qtpl:16
+}
+
+//line config.qtpl:16
+func (p *ConfigPage) WriteScript(qq422016 qtio422016.Writer) {
+//line config.qtpl:16
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line config.qtpl:16
+ p.StreamScript(qw422016)
+//line config.qtpl:16
+ qt422016.ReleaseWriter(qw422016)
+//line config.qtpl:16
+}
+
+//line config.qtpl:16
+func (p *ConfigPage) Script() string {
+//line config.qtpl:16
+ qb422016 := qt422016.AcquireByteBuffer()
+//line config.qtpl:16
+ p.WriteScript(qb422016)
+//line config.qtpl:16
+ qs422016 := string(qb422016.B)
+//line config.qtpl:16
+ qt422016.ReleaseByteBuffer(qb422016)
+//line config.qtpl:16
+ return qs422016
+//line config.qtpl:16
+}
diff --git a/templates/gitlist.qtpl b/templates/gitlist.qtpl
index fef912632b84fac88e3a587d3f28eed195d58d50..588c26460e2549a7a8164dc5d6ee467a12329dd2 100644
--- a/templates/gitlist.qtpl
+++ b/templates/gitlist.qtpl
@@ -8,6 +8,8 @@ %}
{% func (p *GitListPage) Title() %}Git | List{% endfunc %}
+{% func (p *GitListPage) Navbar() %}{%= Navbar(Git) %}{% endfunc %}
+
{% func (p *GitListPage) Content() %}
<div class="row">
<div class="col-md-8 offset-md-2">
diff --git a/templates/gitlist.qtpl.go b/templates/gitlist.qtpl.go
index 89d1d71c2a63543102dcec825cc68031fdc436fa..54387293127fea06b93cde8fe006eb4e3223430e 100644
--- a/templates/gitlist.qtpl.go
+++ b/templates/gitlist.qtpl.go
@@ -59,111 +59,144 @@ //line gitlist.qtpl:9
}
//line gitlist.qtpl:11
-func (p *GitListPage) StreamContent(qw422016 *qt422016.Writer) {
+func (p *GitListPage) StreamNavbar(qw422016 *qt422016.Writer) {
+//line gitlist.qtpl:11
+ StreamNavbar(qw422016, Git)
+//line gitlist.qtpl:11
+}
+
+//line gitlist.qtpl:11
+func (p *GitListPage) WriteNavbar(qq422016 qtio422016.Writer) {
+//line gitlist.qtpl:11
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line gitlist.qtpl:11
+ p.StreamNavbar(qw422016)
+//line gitlist.qtpl:11
+ qt422016.ReleaseWriter(qw422016)
+//line gitlist.qtpl:11
+}
+
+//line gitlist.qtpl:11
+func (p *GitListPage) Navbar() string {
+//line gitlist.qtpl:11
+ qb422016 := qt422016.AcquireByteBuffer()
//line gitlist.qtpl:11
+ p.WriteNavbar(qb422016)
+//line gitlist.qtpl:11
+ qs422016 := string(qb422016.B)
+//line gitlist.qtpl:11
+ qt422016.ReleaseByteBuffer(qb422016)
+//line gitlist.qtpl:11
+ return qs422016
+//line gitlist.qtpl:11
+}
+
+//line gitlist.qtpl:13
+func (p *GitListPage) StreamContent(qw422016 *qt422016.Writer) {
+//line gitlist.qtpl:13
qw422016.N().S(`
<div class="row">
<div class="col-md-8 offset-md-2">
<div class="event-list">
`)
-//line gitlist.qtpl:15
+//line gitlist.qtpl:17
for _, r := range p.Respositories {
-//line gitlist.qtpl:15
+//line gitlist.qtpl:17
qw422016.N().S(`
<div class="event">
<h4>
<a href="/`)
-//line gitlist.qtpl:18
+//line gitlist.qtpl:20
qw422016.E().S(r.Name)
-//line gitlist.qtpl:18
+//line gitlist.qtpl:20
qw422016.N().S(`">`)
-//line gitlist.qtpl:18
+//line gitlist.qtpl:20
qw422016.E().S(r.Name)
-//line gitlist.qtpl:18
+//line gitlist.qtpl:20
qw422016.N().S(`</a>
</h4>
</hr>
<p>`)
-//line gitlist.qtpl:21
+//line gitlist.qtpl:23
qw422016.E().S(r.LastCommitMessage)
-//line gitlist.qtpl:21
+//line gitlist.qtpl:23
qw422016.N().S(`</p>
<p><small>`)
-//line gitlist.qtpl:22
+//line gitlist.qtpl:24
qw422016.E().S(r.LastCommitDate)
-//line gitlist.qtpl:22
+//line gitlist.qtpl:24
qw422016.N().S(`</small></p>
</div>
`)
-//line gitlist.qtpl:24
+//line gitlist.qtpl:26
}
-//line gitlist.qtpl:24
+//line gitlist.qtpl:26
qw422016.N().S(`
</div>
`)
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
}
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
func (p *GitListPage) WriteContent(qq422016 qtio422016.Writer) {
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
qw422016 := qt422016.AcquireWriter(qq422016)
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
p.StreamContent(qw422016)
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
qt422016.ReleaseWriter(qw422016)
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
}
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
func (p *GitListPage) Content() string {
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
qb422016 := qt422016.AcquireByteBuffer()
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
p.WriteContent(qb422016)
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
qs422016 := string(qb422016.B)
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
qt422016.ReleaseByteBuffer(qb422016)
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
return qs422016
-//line gitlist.qtpl:26
+//line gitlist.qtpl:28
}
// </div>
// </div>
//
-//line gitlist.qtpl:30
+//line gitlist.qtpl:32
func (p *GitListPage) StreamScript(qw422016 *qt422016.Writer) {
-//line gitlist.qtpl:30
+//line gitlist.qtpl:32
qw422016.N().S(`
`)
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
}
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
func (p *GitListPage) WriteScript(qq422016 qtio422016.Writer) {
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
qw422016 := qt422016.AcquireWriter(qq422016)
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
p.StreamScript(qw422016)
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
qt422016.ReleaseWriter(qw422016)
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
}
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
func (p *GitListPage) Script() string {
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
qb422016 := qt422016.AcquireByteBuffer()
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
p.WriteScript(qb422016)
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
qs422016 := string(qb422016.B)
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
qt422016.ReleaseByteBuffer(qb422016)
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
return qs422016
-//line gitlist.qtpl:31
+//line gitlist.qtpl:33
}
diff --git a/templates/helloworld.qtpl b/templates/helloworld.qtpl
deleted file mode 100644
index 1785bb5b399087bb3237a3673a9b1e3717e45e81..0000000000000000000000000000000000000000
--- a/templates/helloworld.qtpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{% code
-type HelloPage struct {
- Body []byte
-}
-%}
-
-{% func (p *HelloPage) Title() %}Hello{% endfunc %}
-
-{% func (p *HelloPage) Content() %}
-{%z= p.Body %}
-{% endfunc %}
-
-{% func (p *HelloPage) Script() %}
-{% endfunc %}
diff --git a/templates/helloworld.qtpl.go b/templates/helloworld.qtpl.go
deleted file mode 100644
index 7e37f3bca4276829888fe900fa3d9bf53ff094ed..0000000000000000000000000000000000000000
--- a/templates/helloworld.qtpl.go
+++ /dev/null
@@ -1,129 +0,0 @@
-// Code generated by qtc from "helloworld.qtpl". DO NOT EDIT.
-// See https://github.com/valyala/quicktemplate for details.
-
-//line helloworld.qtpl:1
-package templates
-
-//line helloworld.qtpl:1
-import (
- qtio422016 "io"
-
- qt422016 "github.com/valyala/quicktemplate"
-)
-
-//line helloworld.qtpl:1
-var (
- _ = qtio422016.Copy
- _ = qt422016.AcquireByteBuffer
-)
-
-//line helloworld.qtpl:2
-type HelloPage struct {
- Body []byte
-}
-
-//line helloworld.qtpl:7
-func (p *HelloPage) StreamTitle(qw422016 *qt422016.Writer) {
-//line helloworld.qtpl:7
- qw422016.N().S(`Hello`)
-//line helloworld.qtpl:7
-}
-
-//line helloworld.qtpl:7
-func (p *HelloPage) WriteTitle(qq422016 qtio422016.Writer) {
-//line helloworld.qtpl:7
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line helloworld.qtpl:7
- p.StreamTitle(qw422016)
-//line helloworld.qtpl:7
- qt422016.ReleaseWriter(qw422016)
-//line helloworld.qtpl:7
-}
-
-//line helloworld.qtpl:7
-func (p *HelloPage) Title() string {
-//line helloworld.qtpl:7
- qb422016 := qt422016.AcquireByteBuffer()
-//line helloworld.qtpl:7
- p.WriteTitle(qb422016)
-//line helloworld.qtpl:7
- qs422016 := string(qb422016.B)
-//line helloworld.qtpl:7
- qt422016.ReleaseByteBuffer(qb422016)
-//line helloworld.qtpl:7
- return qs422016
-//line helloworld.qtpl:7
-}
-
-//line helloworld.qtpl:9
-func (p *HelloPage) StreamContent(qw422016 *qt422016.Writer) {
-//line helloworld.qtpl:9
- qw422016.N().S(`
-`)
-//line helloworld.qtpl:10
- qw422016.N().Z(p.Body)
-//line helloworld.qtpl:10
- qw422016.N().S(`
-`)
-//line helloworld.qtpl:11
-}
-
-//line helloworld.qtpl:11
-func (p *HelloPage) WriteContent(qq422016 qtio422016.Writer) {
-//line helloworld.qtpl:11
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line helloworld.qtpl:11
- p.StreamContent(qw422016)
-//line helloworld.qtpl:11
- qt422016.ReleaseWriter(qw422016)
-//line helloworld.qtpl:11
-}
-
-//line helloworld.qtpl:11
-func (p *HelloPage) Content() string {
-//line helloworld.qtpl:11
- qb422016 := qt422016.AcquireByteBuffer()
-//line helloworld.qtpl:11
- p.WriteContent(qb422016)
-//line helloworld.qtpl:11
- qs422016 := string(qb422016.B)
-//line helloworld.qtpl:11
- qt422016.ReleaseByteBuffer(qb422016)
-//line helloworld.qtpl:11
- return qs422016
-//line helloworld.qtpl:11
-}
-
-//line helloworld.qtpl:13
-func (p *HelloPage) StreamScript(qw422016 *qt422016.Writer) {
-//line helloworld.qtpl:13
- qw422016.N().S(`
-`)
-//line helloworld.qtpl:14
-}
-
-//line helloworld.qtpl:14
-func (p *HelloPage) WriteScript(qq422016 qtio422016.Writer) {
-//line helloworld.qtpl:14
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line helloworld.qtpl:14
- p.StreamScript(qw422016)
-//line helloworld.qtpl:14
- qt422016.ReleaseWriter(qw422016)
-//line helloworld.qtpl:14
-}
-
-//line helloworld.qtpl:14
-func (p *HelloPage) Script() string {
-//line helloworld.qtpl:14
- qb422016 := qt422016.AcquireByteBuffer()
-//line helloworld.qtpl:14
- p.WriteScript(qb422016)
-//line helloworld.qtpl:14
- qs422016 := string(qb422016.B)
-//line helloworld.qtpl:14
- qt422016.ReleaseByteBuffer(qb422016)
-//line helloworld.qtpl:14
- return qs422016
-//line helloworld.qtpl:14
-}
diff --git a/templates/navbar.qtpl b/templates/navbar.qtpl
new file mode 100644
index 0000000000000000000000000000000000000000..26991a37dd96d09dc51cfe7366aea56aceed8828
--- /dev/null
+++ b/templates/navbar.qtpl
@@ -0,0 +1,23 @@
+{% code
+type Selection int
+const (
+ Git Selection = iota
+ List
+ About
+ Config
+)
+%}
+
+{% func insertIfEqual(s, d Selection) %}{% if s == d %} selected{% endif %}{% endfunc %}
+
+
+{% func Navbar (s Selection) %}
+ <nav class="container navbar navbar-expand-sm">
+ <div class="navbar-nav">
+ <a class="nav-link{%= insertIfEqual(s, Git) %}" href="/git">git</a>
+ <a class="nav-link{%= insertIfEqual(s, List) %}" href="/list">list</a>
+ <a class="nav-link{%= insertIfEqual(s, About) %}" href="/about">about</a>
+ <a class="nav-link{%= insertIfEqual(s, Config) %}" href="/config">config</a>
+ </div>
+ </nav>
+{% endfunc %}
diff --git a/templates/navbar.qtpl.go b/templates/navbar.qtpl.go
new file mode 100644
index 0000000000000000000000000000000000000000..e2b738ccae4df0a80353a23aa195a6099cbde6cc
--- /dev/null
+++ b/templates/navbar.qtpl.go
@@ -0,0 +1,123 @@
+// Code generated by qtc from "navbar.qtpl". DO NOT EDIT.
+// See https://github.com/valyala/quicktemplate for details.
+
+//line navbar.qtpl:1
+package templates
+
+//line navbar.qtpl:1
+import (
+ qtio422016 "io"
+
+ qt422016 "github.com/valyala/quicktemplate"
+)
+
+//line navbar.qtpl:1
+var (
+ _ = qtio422016.Copy
+ _ = qt422016.AcquireByteBuffer
+)
+
+//line navbar.qtpl:2
+type Selection int
+
+const (
+ Git Selection = iota
+ List
+ About
+ Config
+)
+
+//line navbar.qtpl:11
+func streaminsertIfEqual(qw422016 *qt422016.Writer, s, d Selection) {
+//line navbar.qtpl:11
+ if s == d {
+//line navbar.qtpl:11
+ qw422016.N().S(` selected`)
+//line navbar.qtpl:11
+ }
+//line navbar.qtpl:11
+}
+
+//line navbar.qtpl:11
+func writeinsertIfEqual(qq422016 qtio422016.Writer, s, d Selection) {
+//line navbar.qtpl:11
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line navbar.qtpl:11
+ streaminsertIfEqual(qw422016, s, d)
+//line navbar.qtpl:11
+ qt422016.ReleaseWriter(qw422016)
+//line navbar.qtpl:11
+}
+
+//line navbar.qtpl:11
+func insertIfEqual(s, d Selection) string {
+//line navbar.qtpl:11
+ qb422016 := qt422016.AcquireByteBuffer()
+//line navbar.qtpl:11
+ writeinsertIfEqual(qb422016, s, d)
+//line navbar.qtpl:11
+ qs422016 := string(qb422016.B)
+//line navbar.qtpl:11
+ qt422016.ReleaseByteBuffer(qb422016)
+//line navbar.qtpl:11
+ return qs422016
+//line navbar.qtpl:11
+}
+
+//line navbar.qtpl:14
+func StreamNavbar(qw422016 *qt422016.Writer, s Selection) {
+//line navbar.qtpl:14
+ qw422016.N().S(`
+ <nav class="container navbar navbar-expand-sm">
+ <div class="navbar-nav">
+ <a class="nav-link`)
+//line navbar.qtpl:17
+ streaminsertIfEqual(qw422016, s, Git)
+//line navbar.qtpl:17
+ qw422016.N().S(`" href="/git">git</a>
+ <a class="nav-link`)
+//line navbar.qtpl:18
+ streaminsertIfEqual(qw422016, s, List)
+//line navbar.qtpl:18
+ qw422016.N().S(`" href="/list">list</a>
+ <a class="nav-link`)
+//line navbar.qtpl:19
+ streaminsertIfEqual(qw422016, s, About)
+//line navbar.qtpl:19
+ qw422016.N().S(`" href="/about">about</a>
+ <a class="nav-link`)
+//line navbar.qtpl:20
+ streaminsertIfEqual(qw422016, s, Config)
+//line navbar.qtpl:20
+ qw422016.N().S(`" href="/config">config</a>
+ </div>
+ </nav>
+`)
+//line navbar.qtpl:23
+}
+
+//line navbar.qtpl:23
+func WriteNavbar(qq422016 qtio422016.Writer, s Selection) {
+//line navbar.qtpl:23
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line navbar.qtpl:23
+ StreamNavbar(qw422016, s)
+//line navbar.qtpl:23
+ qt422016.ReleaseWriter(qw422016)
+//line navbar.qtpl:23
+}
+
+//line navbar.qtpl:23
+func Navbar(s Selection) string {
+//line navbar.qtpl:23
+ qb422016 := qt422016.AcquireByteBuffer()
+//line navbar.qtpl:23
+ WriteNavbar(qb422016, s)
+//line navbar.qtpl:23
+ qs422016 := string(qb422016.B)
+//line navbar.qtpl:23
+ qt422016.ReleaseByteBuffer(qb422016)
+//line navbar.qtpl:23
+ return qs422016
+//line navbar.qtpl:23
+}