1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2025-09-10 14:56:08 +00:00

Add the registration link to the top bar

This commit is contained in:
Timur Ismagilov
2021-05-16 13:47:44 +05:00
parent 39e7f0b880
commit 77d1cf5009
4 changed files with 148 additions and 126 deletions

View File

@@ -143,7 +143,7 @@ header { width: 100%; margin-bottom: 1rem; }
.header-links__entry, .hypha-tabs__tab { list-style-type: none; } .header-links__entry, .hypha-tabs__tab { list-style-type: none; }
.header-links__entry { margin-right: .5rem; } .header-links__entry { margin-right: .5rem; }
.header-links__entry_user { font-style:italic; } .header-links__entry_user, .header-links__entry_register { font-style:italic; }
.header-links__link { display: inline-block; padding: .25rem; text-decoration: none; } .header-links__link { display: inline-block; padding: .25rem; text-decoration: none; }
.hypha-tabs { padding: 0; margin: 0; } .hypha-tabs { padding: 0; margin: 0; }

View File

@@ -28,7 +28,7 @@ header { width: 100%; margin-bottom: 1rem; }
.header-links__entry, .hypha-tabs__tab { list-style-type: none; } .header-links__entry, .hypha-tabs__tab { list-style-type: none; }
.header-links__entry { margin-right: .5rem; } .header-links__entry { margin-right: .5rem; }
.header-links__entry_user { font-style:italic; } .header-links__entry_user, .header-links__entry_register { font-style:italic; }
.header-links__link { display: inline-block; padding: .25rem; text-decoration: none; } .header-links__link { display: inline-block; padding: .25rem; text-decoration: none; }
.hypha-tabs { padding: 0; margin: 0; } .hypha-tabs { padding: 0; margin: 0; }

View File

@@ -2,6 +2,7 @@
{% import "strings" %} {% import "strings" %}
{% import "github.com/bouncepaw/mycorrhiza/cfg" %} {% import "github.com/bouncepaw/mycorrhiza/cfg" %}
{% import "github.com/bouncepaw/mycorrhiza/user" %} {% import "github.com/bouncepaw/mycorrhiza/user" %}
{% import "github.com/bouncepaw/mycorrhiza/util" %}
This is the <nav> seen on top of many pages. This is the <nav> seen on top of many pages.
{% code {% code
@@ -48,13 +49,18 @@ var navEntries = []navEntry{
{% func UserMenuHTML(u *user.User) %} {% func UserMenuHTML(u *user.User) %}
{% if user.AuthUsed %} {% if user.AuthUsed %}
<li class="header-links__entry header-links__entry_user"> <li class="header-links__entry header-links__entry_user">
{% if u.Group == "anon" %} {% if u.Group == "anon" %}
<a href="/login" class="header-links__link">Login</a> <a href="/login" class="header-links__link">Login</a>
{% else %} {% else %}
<a href="/hypha/{%s cfg.UserHypha %}/{%s u.Name %}" class="header-links__link">{%s u.Name %}</a> <a href="/hypha/{%s cfg.UserHypha %}/{%s u.Name %}" class="header-links__link">{%s util.BeautifulName(u.Name) %}</a>
{% endif %} {% endif %}
</li> </li>
{% endif %}
{% if user.AuthUsed && cfg.UseRegistration && u.Group == "anon" %}
<li class="header-links__entry header-links__entry_register">
<a href="/register" class="header-links__link">Register</a>
</li>
{% endif %} {% endif %}
{% endfunc %} {% endfunc %}

View File

@@ -16,22 +16,25 @@ import "github.com/bouncepaw/mycorrhiza/cfg"
//line views/nav.qtpl:4 //line views/nav.qtpl:4
import "github.com/bouncepaw/mycorrhiza/user" import "github.com/bouncepaw/mycorrhiza/user"
//line views/nav.qtpl:5
import "github.com/bouncepaw/mycorrhiza/util"
// This is the <nav> seen on top of many pages. // This is the <nav> seen on top of many pages.
//line views/nav.qtpl:7 //line views/nav.qtpl:8
import ( import (
qtio422016 "io" qtio422016 "io"
qt422016 "github.com/valyala/quicktemplate" qt422016 "github.com/valyala/quicktemplate"
) )
//line views/nav.qtpl:7 //line views/nav.qtpl:8
var ( var (
_ = qtio422016.Copy _ = qtio422016.Copy
_ = qt422016.AcquireByteBuffer _ = qt422016.AcquireByteBuffer
) )
//line views/nav.qtpl:8 //line views/nav.qtpl:9
type navEntry struct { type navEntry struct {
path string path string
title string title string
@@ -48,268 +51,281 @@ var navEntries = []navEntry{
{"text", "Raw text"}, {"text", "Raw text"},
} }
//line views/nav.qtpl:24 //line views/nav.qtpl:25
func StreamNavHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, navType string, revisionHash ...string) { func StreamNavHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, navType string, revisionHash ...string) {
//line views/nav.qtpl:24 //line views/nav.qtpl:25
qw422016.N().S(` qw422016.N().S(`
`) `)
//line views/nav.qtpl:26 //line views/nav.qtpl:27
u := user.FromRequest(rq) u := user.FromRequest(rq)
//line views/nav.qtpl:27 //line views/nav.qtpl:28
qw422016.N().S(` qw422016.N().S(`
<nav class="hypha-tabs main-width"> <nav class="hypha-tabs main-width">
<ul class="hypha-tabs__flex"> <ul class="hypha-tabs__flex">
`) `)
//line views/nav.qtpl:30 //line views/nav.qtpl:31
for _, entry := range navEntries { for _, entry := range navEntries {
//line views/nav.qtpl:31 //line views/nav.qtpl:32
if navType == "revision" && entry.path == "revision" { if navType == "revision" && entry.path == "revision" {
//line views/nav.qtpl:31 //line views/nav.qtpl:32
qw422016.N().S(` <li class="hypha-tabs__tab hypha-tabs__tab_active"> qw422016.N().S(` <li class="hypha-tabs__tab hypha-tabs__tab_active">
<span class="hypha-tabs__selection">`) <span class="hypha-tabs__selection">`)
//line views/nav.qtpl:33 //line views/nav.qtpl:34
qw422016.E().S(revisionHash[0]) qw422016.E().S(revisionHash[0])
//line views/nav.qtpl:33 //line views/nav.qtpl:34
qw422016.N().S(`</span> qw422016.N().S(`</span>
</li> </li>
`) `)
//line views/nav.qtpl:35 //line views/nav.qtpl:36
} else if navType == entry.path { } else if navType == entry.path {
//line views/nav.qtpl:35 //line views/nav.qtpl:36
qw422016.N().S(` <li class="hypha-tabs__tab hypha-tabs__tab_active"> qw422016.N().S(` <li class="hypha-tabs__tab hypha-tabs__tab_active">
<span class="hypha-tabs__selection">`) <span class="hypha-tabs__selection">`)
//line views/nav.qtpl:37 //line views/nav.qtpl:38
qw422016.E().S(entry.title) qw422016.E().S(entry.title)
//line views/nav.qtpl:37 //line views/nav.qtpl:38
qw422016.N().S(`</span> qw422016.N().S(`</span>
</li> </li>
`) `)
//line views/nav.qtpl:39 //line views/nav.qtpl:40
} else if entry.path != "revision" && u.CanProceed(entry.path) { } else if entry.path != "revision" && u.CanProceed(entry.path) {
//line views/nav.qtpl:39 //line views/nav.qtpl:40
qw422016.N().S(` <li class="hypha-tabs__tab"> qw422016.N().S(` <li class="hypha-tabs__tab">
<a class="hypha-tabs__link" href="/`) <a class="hypha-tabs__link" href="/`)
//line views/nav.qtpl:41 //line views/nav.qtpl:42
qw422016.E().S(entry.path) qw422016.E().S(entry.path)
//line views/nav.qtpl:41 //line views/nav.qtpl:42
qw422016.N().S(`/`) qw422016.N().S(`/`)
//line views/nav.qtpl:41 //line views/nav.qtpl:42
qw422016.E().S(hyphaName) qw422016.E().S(hyphaName)
//line views/nav.qtpl:41 //line views/nav.qtpl:42
qw422016.N().S(`">`) qw422016.N().S(`">`)
//line views/nav.qtpl:41 //line views/nav.qtpl:42
qw422016.E().S(entry.title) qw422016.E().S(entry.title)
//line views/nav.qtpl:41 //line views/nav.qtpl:42
qw422016.N().S(`</a> qw422016.N().S(`</a>
</li> </li>
`) `)
//line views/nav.qtpl:43 //line views/nav.qtpl:44
} }
//line views/nav.qtpl:44 //line views/nav.qtpl:45
} }
//line views/nav.qtpl:44 //line views/nav.qtpl:45
qw422016.N().S(` </ul> qw422016.N().S(` </ul>
</nav> </nav>
`) `)
//line views/nav.qtpl:47 //line views/nav.qtpl:48
} }
//line views/nav.qtpl:47 //line views/nav.qtpl:48
func WriteNavHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, navType string, revisionHash ...string) { func WriteNavHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, navType string, revisionHash ...string) {
//line views/nav.qtpl:47 //line views/nav.qtpl:48
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/nav.qtpl:47 //line views/nav.qtpl:48
StreamNavHTML(qw422016, rq, hyphaName, navType, revisionHash...) StreamNavHTML(qw422016, rq, hyphaName, navType, revisionHash...)
//line views/nav.qtpl:47 //line views/nav.qtpl:48
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/nav.qtpl:47 //line views/nav.qtpl:48
} }
//line views/nav.qtpl:47 //line views/nav.qtpl:48
func NavHTML(rq *http.Request, hyphaName, navType string, revisionHash ...string) string { func NavHTML(rq *http.Request, hyphaName, navType string, revisionHash ...string) string {
//line views/nav.qtpl:47 //line views/nav.qtpl:48
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/nav.qtpl:47 //line views/nav.qtpl:48
WriteNavHTML(qb422016, rq, hyphaName, navType, revisionHash...) WriteNavHTML(qb422016, rq, hyphaName, navType, revisionHash...)
//line views/nav.qtpl:47 //line views/nav.qtpl:48
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/nav.qtpl:47 //line views/nav.qtpl:48
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/nav.qtpl:47 //line views/nav.qtpl:48
return qs422016 return qs422016
//line views/nav.qtpl:47 //line views/nav.qtpl:48
} }
//line views/nav.qtpl:49 //line views/nav.qtpl:50
func StreamUserMenuHTML(qw422016 *qt422016.Writer, u *user.User) { func StreamUserMenuHTML(qw422016 *qt422016.Writer, u *user.User) {
//line views/nav.qtpl:49 //line views/nav.qtpl:50
qw422016.N().S(` qw422016.N().S(`
`) `)
//line views/nav.qtpl:50 //line views/nav.qtpl:51
if user.AuthUsed { if user.AuthUsed {
//line views/nav.qtpl:50 //line views/nav.qtpl:51
qw422016.N().S(` qw422016.N().S(`
<li class="header-links__entry header-links__entry_user"> <li class="header-links__entry header-links__entry_user">
`) `)
//line views/nav.qtpl:52 //line views/nav.qtpl:53
if u.Group == "anon" { if u.Group == "anon" {
//line views/nav.qtpl:52 //line views/nav.qtpl:53
qw422016.N().S(` qw422016.N().S(`
<a href="/login" class="header-links__link">Login</a> <a href="/login" class="header-links__link">Login</a>
`) `)
//line views/nav.qtpl:54 //line views/nav.qtpl:55
} else { } else {
//line views/nav.qtpl:54 //line views/nav.qtpl:55
qw422016.N().S(` qw422016.N().S(`
<a href="/hypha/`) <a href="/hypha/`)
//line views/nav.qtpl:55 //line views/nav.qtpl:56
qw422016.E().S(cfg.UserHypha) qw422016.E().S(cfg.UserHypha)
//line views/nav.qtpl:55 //line views/nav.qtpl:56
qw422016.N().S(`/`) qw422016.N().S(`/`)
//line views/nav.qtpl:55 //line views/nav.qtpl:56
qw422016.E().S(u.Name) qw422016.E().S(u.Name)
//line views/nav.qtpl:55 //line views/nav.qtpl:56
qw422016.N().S(`" class="header-links__link">`) qw422016.N().S(`" class="header-links__link">`)
//line views/nav.qtpl:55 //line views/nav.qtpl:56
qw422016.E().S(u.Name) qw422016.E().S(util.BeautifulName(u.Name))
//line views/nav.qtpl:55 //line views/nav.qtpl:56
qw422016.N().S(`</a> qw422016.N().S(`</a>
`) `)
//line views/nav.qtpl:56 //line views/nav.qtpl:57
} }
//line views/nav.qtpl:56 //line views/nav.qtpl:57
qw422016.N().S(` qw422016.N().S(`
</li> </li>
`) `)
//line views/nav.qtpl:58 //line views/nav.qtpl:59
} }
//line views/nav.qtpl:58 //line views/nav.qtpl:59
qw422016.N().S(` qw422016.N().S(`
`) `)
//line views/nav.qtpl:59 //line views/nav.qtpl:60
if user.AuthUsed && cfg.UseRegistration && u.Group == "anon" {
//line views/nav.qtpl:60
qw422016.N().S(`
<li class="header-links__entry header-links__entry_register">
<a href="/register" class="header-links__link">Register</a>
</li>
`)
//line views/nav.qtpl:64
}
//line views/nav.qtpl:64
qw422016.N().S(`
`)
//line views/nav.qtpl:65
} }
//line views/nav.qtpl:59 //line views/nav.qtpl:65
func WriteUserMenuHTML(qq422016 qtio422016.Writer, u *user.User) { func WriteUserMenuHTML(qq422016 qtio422016.Writer, u *user.User) {
//line views/nav.qtpl:59 //line views/nav.qtpl:65
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/nav.qtpl:59 //line views/nav.qtpl:65
StreamUserMenuHTML(qw422016, u) StreamUserMenuHTML(qw422016, u)
//line views/nav.qtpl:59 //line views/nav.qtpl:65
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/nav.qtpl:59 //line views/nav.qtpl:65
} }
//line views/nav.qtpl:59 //line views/nav.qtpl:65
func UserMenuHTML(u *user.User) string { func UserMenuHTML(u *user.User) string {
//line views/nav.qtpl:59 //line views/nav.qtpl:65
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/nav.qtpl:59 //line views/nav.qtpl:65
WriteUserMenuHTML(qb422016, u) WriteUserMenuHTML(qb422016, u)
//line views/nav.qtpl:59 //line views/nav.qtpl:65
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/nav.qtpl:59 //line views/nav.qtpl:65
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/nav.qtpl:59 //line views/nav.qtpl:65
return qs422016 return qs422016
//line views/nav.qtpl:59 //line views/nav.qtpl:65
} }
//line views/nav.qtpl:61 //line views/nav.qtpl:67
func StreamRelativeHyphaeHTML(qw422016 *qt422016.Writer, relatives string) { func StreamRelativeHyphaeHTML(qw422016 *qt422016.Writer, relatives string) {
//line views/nav.qtpl:61 //line views/nav.qtpl:67
qw422016.N().S(` qw422016.N().S(`
<aside class="relative-hyphae layout-card"> <aside class="relative-hyphae layout-card">
<h2 class="relative-hyphae__title layout-card__title">Relative hyphae</h2> <h2 class="relative-hyphae__title layout-card__title">Relative hyphae</h2>
`) `)
//line views/nav.qtpl:64 //line views/nav.qtpl:70
qw422016.N().S(relatives) qw422016.N().S(relatives)
//line views/nav.qtpl:64 //line views/nav.qtpl:70
qw422016.N().S(` qw422016.N().S(`
</aside> </aside>
`) `)
//line views/nav.qtpl:66 //line views/nav.qtpl:72
} }
//line views/nav.qtpl:66 //line views/nav.qtpl:72
func WriteRelativeHyphaeHTML(qq422016 qtio422016.Writer, relatives string) { func WriteRelativeHyphaeHTML(qq422016 qtio422016.Writer, relatives string) {
//line views/nav.qtpl:66 //line views/nav.qtpl:72
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/nav.qtpl:66 //line views/nav.qtpl:72
StreamRelativeHyphaeHTML(qw422016, relatives) StreamRelativeHyphaeHTML(qw422016, relatives)
//line views/nav.qtpl:66 //line views/nav.qtpl:72
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/nav.qtpl:66 //line views/nav.qtpl:72
} }
//line views/nav.qtpl:66 //line views/nav.qtpl:72
func RelativeHyphaeHTML(relatives string) string { func RelativeHyphaeHTML(relatives string) string {
//line views/nav.qtpl:66 //line views/nav.qtpl:72
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/nav.qtpl:66 //line views/nav.qtpl:72
WriteRelativeHyphaeHTML(qb422016, relatives) WriteRelativeHyphaeHTML(qb422016, relatives)
//line views/nav.qtpl:66 //line views/nav.qtpl:72
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/nav.qtpl:66 //line views/nav.qtpl:72
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/nav.qtpl:66 //line views/nav.qtpl:72
return qs422016 return qs422016
//line views/nav.qtpl:66 //line views/nav.qtpl:72
} }
//line views/nav.qtpl:68 //line views/nav.qtpl:74
func StreamSubhyphaeHTML(qw422016 *qt422016.Writer, subhyphae string) { func StreamSubhyphaeHTML(qw422016 *qt422016.Writer, subhyphae string) {
//line views/nav.qtpl:68 //line views/nav.qtpl:74
qw422016.N().S(` qw422016.N().S(`
`) `)
//line views/nav.qtpl:69 //line views/nav.qtpl:75
if strings.TrimSpace(subhyphae) != "" { if strings.TrimSpace(subhyphae) != "" {
//line views/nav.qtpl:69 //line views/nav.qtpl:75
qw422016.N().S(` qw422016.N().S(`
<section class="subhyphae"> <section class="subhyphae">
<h2 class="subhyphae__title">Subhyphae</h2> <h2 class="subhyphae__title">Subhyphae</h2>
<nav class="subhyphae__nav"> <nav class="subhyphae__nav">
<ul class="subhyphae__list"> <ul class="subhyphae__list">
`) `)
//line views/nav.qtpl:74 //line views/nav.qtpl:80
qw422016.N().S(subhyphae) qw422016.N().S(subhyphae)
//line views/nav.qtpl:74 //line views/nav.qtpl:80
qw422016.N().S(` qw422016.N().S(`
</ul> </ul>
</nav> </nav>
</section> </section>
`) `)
//line views/nav.qtpl:78 //line views/nav.qtpl:84
} }
//line views/nav.qtpl:78 //line views/nav.qtpl:84
qw422016.N().S(` qw422016.N().S(`
`) `)
//line views/nav.qtpl:79 //line views/nav.qtpl:85
} }
//line views/nav.qtpl:79 //line views/nav.qtpl:85
func WriteSubhyphaeHTML(qq422016 qtio422016.Writer, subhyphae string) { func WriteSubhyphaeHTML(qq422016 qtio422016.Writer, subhyphae string) {
//line views/nav.qtpl:79 //line views/nav.qtpl:85
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/nav.qtpl:79 //line views/nav.qtpl:85
StreamSubhyphaeHTML(qw422016, subhyphae) StreamSubhyphaeHTML(qw422016, subhyphae)
//line views/nav.qtpl:79 //line views/nav.qtpl:85
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/nav.qtpl:79 //line views/nav.qtpl:85
} }
//line views/nav.qtpl:79 //line views/nav.qtpl:85
func SubhyphaeHTML(subhyphae string) string { func SubhyphaeHTML(subhyphae string) string {
//line views/nav.qtpl:79 //line views/nav.qtpl:85
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/nav.qtpl:79 //line views/nav.qtpl:85
WriteSubhyphaeHTML(qb422016, subhyphae) WriteSubhyphaeHTML(qb422016, subhyphae)
//line views/nav.qtpl:79 //line views/nav.qtpl:85
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/nav.qtpl:79 //line views/nav.qtpl:85
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/nav.qtpl:79 //line views/nav.qtpl:85
return qs422016 return qs422016
//line views/nav.qtpl:79 //line views/nav.qtpl:85
} }