mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2025-06-09 22:24:05 +00:00
Experiment № 3. QTPL+l10nEntry
Encapsulate translations, but still use QTPL. Hmm
This commit is contained in:
parent
4494f2677e
commit
bd6b46f346
@ -93,10 +93,6 @@
|
|||||||
"about_title": "About {{.name}}",
|
"about_title": "About {{.name}}",
|
||||||
|
|
||||||
"users_title": "User list",
|
"users_title": "User list",
|
||||||
"users_heading": "List of users",
|
|
||||||
"users_admins": "Admins",
|
|
||||||
"users_moderators": "Moderators",
|
|
||||||
"users_editors": "Editors",
|
|
||||||
|
|
||||||
"no_rights": "Not enough rights",
|
"no_rights": "Not enough rights",
|
||||||
"reindex_no_rights": "You must be an admin to reindex hyphae.",
|
"reindex_no_rights": "You must be an admin to reindex hyphae.",
|
||||||
|
@ -96,10 +96,6 @@
|
|||||||
"about_title": "О {{.name}}",
|
"about_title": "О {{.name}}",
|
||||||
|
|
||||||
"users_title": "Список пользователей",
|
"users_title": "Список пользователей",
|
||||||
"users_heading": "Список пользователей",
|
|
||||||
"users_admins": "Администраторы",
|
|
||||||
"users_moderators": "Модераторы",
|
|
||||||
"users_editors": "Редакторы",
|
|
||||||
|
|
||||||
"no_rights": "Недостаточно прав",
|
"no_rights": "Недостаточно прав",
|
||||||
"reindex_no_rights": "Вы должны быть администратором, чтобы переиндексировать гифы.",
|
"reindex_no_rights": "Вы должны быть администратором, чтобы переиндексировать гифы.",
|
||||||
|
@ -14,6 +14,10 @@ type l10nEntry struct {
|
|||||||
_ru string
|
_ru string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func en(v string) l10nEntry {
|
||||||
|
return e().en(v)
|
||||||
|
}
|
||||||
|
|
||||||
func e() l10nEntry {
|
func e() l10nEntry {
|
||||||
return l10nEntry{}
|
return l10nEntry{}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
{% import "fmt" %}
|
{% import "fmt" %}
|
||||||
{% import "path/filepath" %}
|
{% import "path/filepath" %}
|
||||||
{% import "sort" %}
|
|
||||||
|
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
|
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
|
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
|
||||||
@ -165,52 +164,6 @@ It outputs a poorly formatted JSON, but it works and is valid.
|
|||||||
<a class="help-topic-badge" href="/help/en/{%s topic %}">?</a>
|
<a class="help-topic-badge" href="/help/en/{%s topic %}">?</a>
|
||||||
{% endfunc %}
|
{% endfunc %}
|
||||||
|
|
||||||
{% func UserListHTML(lc *l18n.Localizer) %}
|
|
||||||
<div class="layout">
|
|
||||||
<main class="main-width user-list">
|
|
||||||
<h1>{%s lc.Get("ui.users_heading") %}</h1>
|
|
||||||
{% code
|
|
||||||
var (
|
|
||||||
admins = make([]string, 0)
|
|
||||||
moderators = make([]string, 0)
|
|
||||||
editors = make([]string, 0)
|
|
||||||
)
|
|
||||||
for u := range user.YieldUsers() {
|
|
||||||
switch u.Group {
|
|
||||||
case "admin":
|
|
||||||
admins = append(admins, u.Name)
|
|
||||||
case "moderator":
|
|
||||||
moderators = append(moderators, u.Name)
|
|
||||||
case "editor", "trusted":
|
|
||||||
editors = append(editors, u.Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sort.Strings(admins)
|
|
||||||
sort.Strings(moderators)
|
|
||||||
sort.Strings(editors)
|
|
||||||
%}
|
|
||||||
<section>
|
|
||||||
<h2>{%s lc.Get("ui.users_admins") %}</h2>
|
|
||||||
<ol>{% for _, name := range admins %}
|
|
||||||
<li><a href="/hypha/{%s cfg.UserHypha %}/{%s name %}">{%s name %}</a></li>
|
|
||||||
{% endfor %}</ol>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h2>{%s lc.Get("ui.users_moderators") %}</h2>
|
|
||||||
<ol>{% for _, name := range moderators %}
|
|
||||||
<li><a href="/hypha/{%s cfg.UserHypha %}/{%s name %}">{%s name %}</a></li>
|
|
||||||
{% endfor %}</ol>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h2>{%s lc.Get("ui.users_editors") %}</h2>
|
|
||||||
<ol>{% for _, name := range editors %}
|
|
||||||
<li><a href="/hypha/{%s cfg.UserHypha %}/{%s name %}">{%s name %}</a></li>
|
|
||||||
{% endfor %}</ol>
|
|
||||||
</section>
|
|
||||||
</main>
|
|
||||||
</div>
|
|
||||||
{% endfunc %}
|
|
||||||
|
|
||||||
{% func HyphaListHTML(lc *l18n.Localizer) %}
|
{% func HyphaListHTML(lc *l18n.Localizer) %}
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width">
|
<main class="main-width">
|
||||||
|
File diff suppressed because it is too large
Load Diff
64
views/user_list.qtpl
Normal file
64
views/user_list.qtpl
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
|
||||||
|
{% import "github.com/bouncepaw/mycorrhiza/l18n" %}
|
||||||
|
{% import "github.com/bouncepaw/mycorrhiza/user" %}
|
||||||
|
{% import "sort" %}
|
||||||
|
|
||||||
|
{% code
|
||||||
|
var hyphaListL10n = map[string]l10nEntry{
|
||||||
|
"heading": en("List of users").ru("Список пользователей"),
|
||||||
|
"administrators": en("Administrators").ru("Администраторы"),
|
||||||
|
"moderators": en("Moderators").ru("Модераторы"),
|
||||||
|
"editors": en("Editors").ru("Редакторы"),
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
{% func UserListHTML(lc *l18n.Localizer) %}
|
||||||
|
<div class="layout">
|
||||||
|
<main class="main-width user-list">
|
||||||
|
{% code
|
||||||
|
var get = func(key string) string {
|
||||||
|
return hyphaListL10n[key].get(lc.Locale)
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
admins = make([]string, 0)
|
||||||
|
moderators = make([]string, 0)
|
||||||
|
editors = make([]string, 0)
|
||||||
|
)
|
||||||
|
for u := range user.YieldUsers() {
|
||||||
|
switch u.Group {
|
||||||
|
// What if we place the users into sorted slices?
|
||||||
|
case "admin":
|
||||||
|
admins = append(admins, u.Name)
|
||||||
|
case "moderator":
|
||||||
|
moderators = append(moderators, u.Name)
|
||||||
|
case "editor", "trusted":
|
||||||
|
editors = append(editors, u.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort.Strings(admins)
|
||||||
|
sort.Strings(moderators)
|
||||||
|
sort.Strings(editors)
|
||||||
|
%}
|
||||||
|
<h1>{%s get("heading") %}</h1>
|
||||||
|
<section>
|
||||||
|
<h2>{%s get("administrators") %}</h2>
|
||||||
|
<ol>{% for _, name := range admins %}
|
||||||
|
<li><a href="/hypha/{%s cfg.UserHypha %}/{%s name %}">{%s name %}</a></li>
|
||||||
|
{% endfor %}</ol>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>{%s get("moderators") %}</h2>
|
||||||
|
<ol>{% for _, name := range moderators %}
|
||||||
|
<li><a href="/hypha/{%s cfg.UserHypha %}/{%s name %}">{%s name %}</a></li>
|
||||||
|
{% endfor %}</ol>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>{%s get("editors") %}</h2>
|
||||||
|
<ol>{% for _, name := range editors %}
|
||||||
|
<li><a href="/hypha/{%s cfg.UserHypha %}/{%s name %}">{%s name %}</a></li>
|
||||||
|
{% endfor %}</ol>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
{% endfunc %}
|
199
views/user_list.qtpl.go
Normal file
199
views/user_list.qtpl.go
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
// Code generated by qtc from "user_list.qtpl". DO NOT EDIT.
|
||||||
|
// See https://github.com/valyala/quicktemplate for details.
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:1
|
||||||
|
package views
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:1
|
||||||
|
import "github.com/bouncepaw/mycorrhiza/cfg"
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:2
|
||||||
|
import "github.com/bouncepaw/mycorrhiza/l18n"
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:3
|
||||||
|
import "github.com/bouncepaw/mycorrhiza/user"
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:4
|
||||||
|
import "sort"
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:6
|
||||||
|
import (
|
||||||
|
qtio422016 "io"
|
||||||
|
|
||||||
|
qt422016 "github.com/valyala/quicktemplate"
|
||||||
|
)
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:6
|
||||||
|
var (
|
||||||
|
_ = qtio422016.Copy
|
||||||
|
_ = qt422016.AcquireByteBuffer
|
||||||
|
)
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:7
|
||||||
|
var hyphaListL10n = map[string]l10nEntry{
|
||||||
|
"heading": en("List of users").ru("Список пользователей"),
|
||||||
|
"administrators": en("Administrators").ru("Администраторы"),
|
||||||
|
"moderators": en("Moderators").ru("Модераторы"),
|
||||||
|
"editors": en("Editors").ru("Редакторы"),
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:15
|
||||||
|
func StreamUserListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
|
||||||
|
//line views/user_list.qtpl:15
|
||||||
|
qw422016.N().S(`
|
||||||
|
<div class="layout">
|
||||||
|
<main class="main-width user-list">
|
||||||
|
`)
|
||||||
|
//line views/user_list.qtpl:19
|
||||||
|
var get = func(key string) string {
|
||||||
|
return hyphaListL10n[key].get(lc.Locale)
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
admins = make([]string, 0)
|
||||||
|
moderators = make([]string, 0)
|
||||||
|
editors = make([]string, 0)
|
||||||
|
)
|
||||||
|
for u := range user.YieldUsers() {
|
||||||
|
switch u.Group {
|
||||||
|
// What if we place the users into sorted slices?
|
||||||
|
case "admin":
|
||||||
|
admins = append(admins, u.Name)
|
||||||
|
case "moderator":
|
||||||
|
moderators = append(moderators, u.Name)
|
||||||
|
case "editor", "trusted":
|
||||||
|
editors = append(editors, u.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort.Strings(admins)
|
||||||
|
sort.Strings(moderators)
|
||||||
|
sort.Strings(editors)
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:42
|
||||||
|
qw422016.N().S(`
|
||||||
|
<h1>`)
|
||||||
|
//line views/user_list.qtpl:43
|
||||||
|
qw422016.E().S(get("heading"))
|
||||||
|
//line views/user_list.qtpl:43
|
||||||
|
qw422016.N().S(`</h1>
|
||||||
|
<section>
|
||||||
|
<h2>`)
|
||||||
|
//line views/user_list.qtpl:45
|
||||||
|
qw422016.E().S(get("administrators"))
|
||||||
|
//line views/user_list.qtpl:45
|
||||||
|
qw422016.N().S(`</h2>
|
||||||
|
<ol>`)
|
||||||
|
//line views/user_list.qtpl:46
|
||||||
|
for _, name := range admins {
|
||||||
|
//line views/user_list.qtpl:46
|
||||||
|
qw422016.N().S(`
|
||||||
|
<li><a href="/hypha/`)
|
||||||
|
//line views/user_list.qtpl:47
|
||||||
|
qw422016.E().S(cfg.UserHypha)
|
||||||
|
//line views/user_list.qtpl:47
|
||||||
|
qw422016.N().S(`/`)
|
||||||
|
//line views/user_list.qtpl:47
|
||||||
|
qw422016.E().S(name)
|
||||||
|
//line views/user_list.qtpl:47
|
||||||
|
qw422016.N().S(`">`)
|
||||||
|
//line views/user_list.qtpl:47
|
||||||
|
qw422016.E().S(name)
|
||||||
|
//line views/user_list.qtpl:47
|
||||||
|
qw422016.N().S(`</a></li>
|
||||||
|
`)
|
||||||
|
//line views/user_list.qtpl:48
|
||||||
|
}
|
||||||
|
//line views/user_list.qtpl:48
|
||||||
|
qw422016.N().S(`</ol>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>`)
|
||||||
|
//line views/user_list.qtpl:51
|
||||||
|
qw422016.E().S(get("moderators"))
|
||||||
|
//line views/user_list.qtpl:51
|
||||||
|
qw422016.N().S(`</h2>
|
||||||
|
<ol>`)
|
||||||
|
//line views/user_list.qtpl:52
|
||||||
|
for _, name := range moderators {
|
||||||
|
//line views/user_list.qtpl:52
|
||||||
|
qw422016.N().S(`
|
||||||
|
<li><a href="/hypha/`)
|
||||||
|
//line views/user_list.qtpl:53
|
||||||
|
qw422016.E().S(cfg.UserHypha)
|
||||||
|
//line views/user_list.qtpl:53
|
||||||
|
qw422016.N().S(`/`)
|
||||||
|
//line views/user_list.qtpl:53
|
||||||
|
qw422016.E().S(name)
|
||||||
|
//line views/user_list.qtpl:53
|
||||||
|
qw422016.N().S(`">`)
|
||||||
|
//line views/user_list.qtpl:53
|
||||||
|
qw422016.E().S(name)
|
||||||
|
//line views/user_list.qtpl:53
|
||||||
|
qw422016.N().S(`</a></li>
|
||||||
|
`)
|
||||||
|
//line views/user_list.qtpl:54
|
||||||
|
}
|
||||||
|
//line views/user_list.qtpl:54
|
||||||
|
qw422016.N().S(`</ol>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>`)
|
||||||
|
//line views/user_list.qtpl:57
|
||||||
|
qw422016.E().S(get("editors"))
|
||||||
|
//line views/user_list.qtpl:57
|
||||||
|
qw422016.N().S(`</h2>
|
||||||
|
<ol>`)
|
||||||
|
//line views/user_list.qtpl:58
|
||||||
|
for _, name := range editors {
|
||||||
|
//line views/user_list.qtpl:58
|
||||||
|
qw422016.N().S(`
|
||||||
|
<li><a href="/hypha/`)
|
||||||
|
//line views/user_list.qtpl:59
|
||||||
|
qw422016.E().S(cfg.UserHypha)
|
||||||
|
//line views/user_list.qtpl:59
|
||||||
|
qw422016.N().S(`/`)
|
||||||
|
//line views/user_list.qtpl:59
|
||||||
|
qw422016.E().S(name)
|
||||||
|
//line views/user_list.qtpl:59
|
||||||
|
qw422016.N().S(`">`)
|
||||||
|
//line views/user_list.qtpl:59
|
||||||
|
qw422016.E().S(name)
|
||||||
|
//line views/user_list.qtpl:59
|
||||||
|
qw422016.N().S(`</a></li>
|
||||||
|
`)
|
||||||
|
//line views/user_list.qtpl:60
|
||||||
|
}
|
||||||
|
//line views/user_list.qtpl:60
|
||||||
|
qw422016.N().S(`</ol>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
`)
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
func WriteUserListHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) {
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
StreamUserListHTML(qw422016, lc)
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
qt422016.ReleaseWriter(qw422016)
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
func UserListHTML(lc *l18n.Localizer) string {
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
WriteUserListHTML(qb422016, lc)
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
qs422016 := string(qb422016.B)
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
return qs422016
|
||||||
|
//line views/user_list.qtpl:64
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user