diff --git a/l18n/l18n.go b/l18n/l18n.go
index 2f8951d..65d0f70 100644
--- a/l18n/l18n.go
+++ b/l18n/l18n.go
@@ -164,12 +164,12 @@ var localizations = map[string]string{
"en.ui.attach_title": "Attachment of {{.name}}",
"en.ui.attach_upload": "Upload",
"en.ui.attachment_link": "Manage attachment",
- "en.ui.backlinks_desc": "Hyphae which have a link to the selected hypha are listed below.",
+ "en.ui.backlinks_desc": "Hyphae which have a link to this hypha, embed it as an image or transclude it are listed below.",
+ "en.ui.backlinks_heading": "Backlinks to {{.hypha_link}}",
"en.ui.backlinks_link": "{{.n}} backlink%s",
"en.ui.backlinks_link+one": "",
"en.ui.backlinks_link+other": "s",
- "en.ui.backlinks_query": "Backlinks to ‘{{.query}}’",
- "en.ui.backlinks_title": "Backlinks to {{.query}}",
+ "en.ui.backlinks_title": "Backlinks to {{.hypha_name}}",
"en.ui.cancel": "Cancel",
"en.ui.close_dialog": "Close this dialog",
"en.ui.confirm": "Confirm",
@@ -400,13 +400,13 @@ var localizations = map[string]string{
"ru.ui.attach_title": "Вложение «{{.name}}»",
"ru.ui.attach_upload": "Загрузить",
"ru.ui.attachment_link": "Вложение",
- "ru.ui.backlinks_desc": "Ниже перечислены гифы, содержащие ссылку на выбранную гифу.",
+ "ru.ui.backlinks_desc": "Ниже перечислены гифы, на которых есть ссылка на эту гифу, трансклюзия этой гифы или эта гифа вставлена как изображение.",
+ "ru.ui.backlinks_heading": "Обратные ссылки на {{.hypha_link}}",
"ru.ui.backlinks_link": "{{.n}} %s сюда",
"ru.ui.backlinks_link+few": "ссылки",
"ru.ui.backlinks_link+many": "ссылок",
"ru.ui.backlinks_link+one": "ссылка",
- "ru.ui.backlinks_query": "Обратные ссылки на «{{.query}}»",
- "ru.ui.backlinks_title": "Обратные ссылки на {{.query}}",
+ "ru.ui.backlinks_title": "Обратные ссылки на {{.hypha_name}}",
"ru.ui.cancel": "Отмена",
"ru.ui.close_dialog": "Закрыть этот диалог",
"ru.ui.confirm": "Применить",
diff --git a/l18n_src/en/ui.json b/l18n_src/en/ui.json
index ac59aff..b431f6c 100644
--- a/l18n_src/en/ui.json
+++ b/l18n_src/en/ui.json
@@ -8,9 +8,9 @@
"search_results_query": "Search results for ‘{{.query}}’",
"search_results_desc": "Every hypha name has been compared with the query. Hyphae that have matched the query are listed below.",
- "backlinks_title": "Backlinks to {{.query}}",
- "backlinks_query": "Backlinks to ‘{{.query}}’",
- "backlinks_desc": "Hyphae which have a link to the selected hypha are listed below.",
+ "backlinks_title": "Backlinks to {{.hypha_name}}",
+ "backlinks_heading": "Backlinks to {{.hypha_link}}",
+ "backlinks_desc": "Hyphae which have a link to this hypha, embed it as an image or transclude it are listed below.",
"list_title": "List of pages",
"list_heading": "List of hyphae",
diff --git a/l18n_src/ru/ui.json b/l18n_src/ru/ui.json
index 27a4555..3bc5a52 100644
--- a/l18n_src/ru/ui.json
+++ b/l18n_src/ru/ui.json
@@ -8,9 +8,9 @@
"search_results_query": "Результаты поиска для «{{.query}}»",
"search_results_desc": "Название каждой из существующих гиф сопоставлено с запросом. Подходящие гифы приведены ниже.",
- "backlinks_title": "Обратные ссылки на {{.query}}",
- "backlinks_query": "Обратные ссылки на «{{.query}}»",
- "backlinks_desc": "Ниже перечислены гифы, содержащие ссылку на выбранную гифу.",
+ "backlinks_title": "Обратные ссылки на {{.hypha_name}}",
+ "backlinks_heading": "Обратные ссылки на {{.hypha_link}}",
+ "backlinks_desc": "Ниже перечислены гифы, на которых есть ссылка на эту гифу, трансклюзия этой гифы или эта гифа вставлена как изображение.",
"list_title": "Список страниц",
"list_heading": "Список гиф",
diff --git a/views/stuff.qtpl b/views/stuff.qtpl
index b796711..357838c 100644
--- a/views/stuff.qtpl
+++ b/views/stuff.qtpl
@@ -1,5 +1,7 @@
+{% import "fmt" %}
{% import "path/filepath" %}
{% import "sort" %}
+
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
{% import "github.com/bouncepaw/mycorrhiza/user" %}
@@ -125,7 +127,16 @@ It outputs a poorly formatted JSON, but it works and is valid.
{% func BacklinksHTML(hyphaName string, generator func(string) <-chan string, lc *l18n.Localizer) %}
- {%s lc.Get("ui.backlinks_query", &l18n.Replacements{"query": hyphaName})%}
+ {%s= lc.Get(
+ "ui.backlinks_heading",
+ &l18n.Replacements{
+ "hypha_link": fmt.Sprintf(
+ `%s `,
+ hyphaName,
+ util.BeautifulName(hyphaName),
+ ),
+ },
+ )%}
{%s lc.Get("ui.backlinks_desc")%}
{% for hyphaName := range generator(hyphaName) %}
diff --git a/views/stuff.qtpl.go b/views/stuff.qtpl.go
index 06cde20..7ffd2c6 100644
--- a/views/stuff.qtpl.go
+++ b/views/stuff.qtpl.go
@@ -5,68 +5,71 @@
package views
//line views/stuff.qtpl:1
-import "path/filepath"
+import "fmt"
//line views/stuff.qtpl:2
-import "sort"
+import "path/filepath"
//line views/stuff.qtpl:3
-import "github.com/bouncepaw/mycorrhiza/cfg"
-
-//line views/stuff.qtpl:4
-import "github.com/bouncepaw/mycorrhiza/hyphae"
+import "sort"
//line views/stuff.qtpl:5
-import "github.com/bouncepaw/mycorrhiza/user"
+import "github.com/bouncepaw/mycorrhiza/cfg"
//line views/stuff.qtpl:6
-import "github.com/bouncepaw/mycorrhiza/util"
+import "github.com/bouncepaw/mycorrhiza/hyphae"
//line views/stuff.qtpl:7
-import "github.com/bouncepaw/mycorrhiza/l18n"
+import "github.com/bouncepaw/mycorrhiza/user"
+
+//line views/stuff.qtpl:8
+import "github.com/bouncepaw/mycorrhiza/util"
//line views/stuff.qtpl:9
+import "github.com/bouncepaw/mycorrhiza/l18n"
+
+//line views/stuff.qtpl:11
import (
qtio422016 "io"
qt422016 "github.com/valyala/quicktemplate"
)
-//line views/stuff.qtpl:9
+//line views/stuff.qtpl:11
var (
_ = qtio422016.Copy
_ = qt422016.AcquireByteBuffer
)
-//line views/stuff.qtpl:9
+//line views/stuff.qtpl:11
func StreamBaseHTML(qw422016 *qt422016.Writer, title, body string, lc *l18n.Localizer, u *user.User, headElements ...string) {
-//line views/stuff.qtpl:9
+//line views/stuff.qtpl:11
qw422016.N().S(`
`)
-//line views/stuff.qtpl:15
+//line views/stuff.qtpl:17
qw422016.E().S(title)
-//line views/stuff.qtpl:15
+//line views/stuff.qtpl:17
qw422016.N().S(`
`)
-//line views/stuff.qtpl:19
+//line views/stuff.qtpl:21
for _, el := range headElements {
-//line views/stuff.qtpl:19
+//line views/stuff.qtpl:21
qw422016.N().S(el)
-//line views/stuff.qtpl:19
+//line views/stuff.qtpl:21
}
-//line views/stuff.qtpl:19
+//line views/stuff.qtpl:21
qw422016.N().S(`
@@ -76,144 +79,144 @@ func StreamBaseHTML(qw422016 *qt422016.Writer, title, body string, lc *l18n.Loca
`)
-//line views/stuff.qtpl:36
+//line views/stuff.qtpl:38
if cfg.UseAuth {
-//line views/stuff.qtpl:36
+//line views/stuff.qtpl:38
qw422016.N().S(`
`)
-//line views/stuff.qtpl:56
+//line views/stuff.qtpl:58
}
-//line views/stuff.qtpl:56
+//line views/stuff.qtpl:58
qw422016.N().S(`
`)
-//line views/stuff.qtpl:72
+//line views/stuff.qtpl:74
qw422016.N().S(body)
-//line views/stuff.qtpl:72
+//line views/stuff.qtpl:74
qw422016.N().S(`
@@ -221,9 +224,9 @@ func StreamBaseHTML(qw422016 *qt422016.Writer, title, body string, lc *l18n.Loca
@@ -231,536 +234,545 @@ func StreamBaseHTML(qw422016 *qt422016.Writer, title, body string, lc *l18n.Loca
`)
-//line views/stuff.qtpl:84
+//line views/stuff.qtpl:86
StreamCommonScripts(qw422016)
-//line views/stuff.qtpl:84
+//line views/stuff.qtpl:86
qw422016.N().S(`
`)
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
}
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
func WriteBaseHTML(qq422016 qtio422016.Writer, title, body string, lc *l18n.Localizer, u *user.User, headElements ...string) {
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
StreamBaseHTML(qw422016, title, body, lc, u, headElements...)
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
}
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
func BaseHTML(title, body string, lc *l18n.Localizer, u *user.User, headElements ...string) string {
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
WriteBaseHTML(qb422016, title, body, lc, u, headElements...)
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
return qs422016
-//line views/stuff.qtpl:88
+//line views/stuff.qtpl:90
}
-//line views/stuff.qtpl:90
+//line views/stuff.qtpl:92
func StreamTitleSearchHTML(qw422016 *qt422016.Writer, query string, generator func(string) <-chan string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:90
+//line views/stuff.qtpl:92
qw422016.N().S(`
`)
-//line views/stuff.qtpl:93
+//line views/stuff.qtpl:95
qw422016.E().S(lc.Get("ui.search_results_query", &l18n.Replacements{"query": query}))
-//line views/stuff.qtpl:93
+//line views/stuff.qtpl:95
qw422016.N().S(`
`)
-//line views/stuff.qtpl:94
+//line views/stuff.qtpl:96
qw422016.E().S(lc.Get("ui.search_results_desc"))
-//line views/stuff.qtpl:94
+//line views/stuff.qtpl:96
qw422016.N().S(`
`)
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
}
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
func WriteTitleSearchHTML(qq422016 qtio422016.Writer, query string, generator func(string) <-chan string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
StreamTitleSearchHTML(qw422016, query, generator, lc)
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
}
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
func TitleSearchHTML(query string, generator func(string) <-chan string, lc *l18n.Localizer) string {
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
WriteTitleSearchHTML(qb422016, query, generator, lc)
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
return qs422016
-//line views/stuff.qtpl:103
+//line views/stuff.qtpl:105
}
// It outputs a poorly formatted JSON, but it works and is valid.
-//line views/stuff.qtpl:106
+//line views/stuff.qtpl:108
func StreamTitleSearchJSON(qw422016 *qt422016.Writer, query string, generator func(string) <-chan string) {
-//line views/stuff.qtpl:106
+//line views/stuff.qtpl:108
qw422016.N().S(`
`)
-//line views/stuff.qtpl:108
+//line views/stuff.qtpl:110
// Lol
counter := 0
-//line views/stuff.qtpl:110
+//line views/stuff.qtpl:112
qw422016.N().S(`
{
"source_query": "`)
-//line views/stuff.qtpl:112
+//line views/stuff.qtpl:114
qw422016.E().S(query)
-//line views/stuff.qtpl:112
+//line views/stuff.qtpl:114
qw422016.N().S(`",
"results": [
`)
-//line views/stuff.qtpl:114
+//line views/stuff.qtpl:116
for hyphaName := range generator(query) {
-//line views/stuff.qtpl:114
+//line views/stuff.qtpl:116
qw422016.N().S(`
`)
-//line views/stuff.qtpl:115
+//line views/stuff.qtpl:117
if counter > 0 {
-//line views/stuff.qtpl:115
+//line views/stuff.qtpl:117
qw422016.N().S(`, `)
-//line views/stuff.qtpl:115
+//line views/stuff.qtpl:117
}
-//line views/stuff.qtpl:115
+//line views/stuff.qtpl:117
qw422016.N().S(`{
"canonical_name": "`)
-//line views/stuff.qtpl:116
+//line views/stuff.qtpl:118
qw422016.E().S(hyphaName)
-//line views/stuff.qtpl:116
+//line views/stuff.qtpl:118
qw422016.N().S(`",
"beautiful_name": "`)
-//line views/stuff.qtpl:117
+//line views/stuff.qtpl:119
qw422016.E().S(util.BeautifulName(hyphaName))
-//line views/stuff.qtpl:117
+//line views/stuff.qtpl:119
qw422016.N().S(`",
"url": "`)
-//line views/stuff.qtpl:118
+//line views/stuff.qtpl:120
qw422016.E().S(cfg.URL + "/hypha/" + hyphaName)
-//line views/stuff.qtpl:118
+//line views/stuff.qtpl:120
qw422016.N().S(`"
}`)
-//line views/stuff.qtpl:119
+//line views/stuff.qtpl:121
counter++
-//line views/stuff.qtpl:119
+//line views/stuff.qtpl:121
qw422016.N().S(`
`)
-//line views/stuff.qtpl:120
+//line views/stuff.qtpl:122
}
-//line views/stuff.qtpl:120
+//line views/stuff.qtpl:122
qw422016.N().S(`
]
}
`)
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
}
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
func WriteTitleSearchJSON(qq422016 qtio422016.Writer, query string, generator func(string) <-chan string) {
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
StreamTitleSearchJSON(qw422016, query, generator)
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
}
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
func TitleSearchJSON(query string, generator func(string) <-chan string) string {
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
WriteTitleSearchJSON(qb422016, query, generator)
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
return qs422016
-//line views/stuff.qtpl:123
+//line views/stuff.qtpl:125
}
-//line views/stuff.qtpl:125
+//line views/stuff.qtpl:127
func StreamBacklinksHTML(qw422016 *qt422016.Writer, hyphaName string, generator func(string) <-chan string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:125
+//line views/stuff.qtpl:127
qw422016.N().S(`
`)
-//line views/stuff.qtpl:128
- qw422016.E().S(lc.Get("ui.backlinks_query", &l18n.Replacements{"query": hyphaName}))
-//line views/stuff.qtpl:128
+//line views/stuff.qtpl:130
+ qw422016.N().S(lc.Get(
+ "ui.backlinks_heading",
+ &l18n.Replacements{
+ "hypha_link": fmt.Sprintf(
+ `%s `,
+ hyphaName,
+ util.BeautifulName(hyphaName),
+ ),
+ },
+ ))
+//line views/stuff.qtpl:139
qw422016.N().S(`
`)
-//line views/stuff.qtpl:129
+//line views/stuff.qtpl:140
qw422016.E().S(lc.Get("ui.backlinks_desc"))
-//line views/stuff.qtpl:129
+//line views/stuff.qtpl:140
qw422016.N().S(`
`)
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
}
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
func WriteBacklinksHTML(qq422016 qtio422016.Writer, hyphaName string, generator func(string) <-chan string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
StreamBacklinksHTML(qw422016, hyphaName, generator, lc)
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
}
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
func BacklinksHTML(hyphaName string, generator func(string) <-chan string, lc *l18n.Localizer) string {
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
WriteBacklinksHTML(qb422016, hyphaName, generator, lc)
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
return qs422016
-//line views/stuff.qtpl:139
+//line views/stuff.qtpl:150
}
-//line views/stuff.qtpl:141
+//line views/stuff.qtpl:152
func StreamHelpHTML(qw422016 *qt422016.Writer, content, lang string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:141
+//line views/stuff.qtpl:152
qw422016.N().S(`
`)
-//line views/stuff.qtpl:145
+//line views/stuff.qtpl:156
qw422016.N().S(content)
-//line views/stuff.qtpl:145
+//line views/stuff.qtpl:156
qw422016.N().S(`
`)
-//line views/stuff.qtpl:148
+//line views/stuff.qtpl:159
qw422016.N().S(helpTopicsHTML(lang, lc))
-//line views/stuff.qtpl:148
+//line views/stuff.qtpl:159
qw422016.N().S(`
`)
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
}
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
func WriteHelpHTML(qq422016 qtio422016.Writer, content, lang string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
StreamHelpHTML(qw422016, content, lang, lc)
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
}
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
func HelpHTML(content, lang string, lc *l18n.Localizer) string {
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
WriteHelpHTML(qb422016, content, lang, lc)
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
return qs422016
-//line views/stuff.qtpl:150
+//line views/stuff.qtpl:161
}
-//line views/stuff.qtpl:152
+//line views/stuff.qtpl:163
func StreamHelpEmptyErrorHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:152
+//line views/stuff.qtpl:163
qw422016.N().S(`
`)
-//line views/stuff.qtpl:153
+//line views/stuff.qtpl:164
qw422016.E().S(lc.Get("help.empty_error_title"))
-//line views/stuff.qtpl:153
+//line views/stuff.qtpl:164
qw422016.N().S(`
`)
-//line views/stuff.qtpl:154
+//line views/stuff.qtpl:165
qw422016.E().S(lc.Get("help.empty_error_line_1"))
-//line views/stuff.qtpl:154
+//line views/stuff.qtpl:165
qw422016.N().S(`
`)
-//line views/stuff.qtpl:155
+//line views/stuff.qtpl:166
qw422016.E().S(lc.Get("help.empty_error_line_2a"))
-//line views/stuff.qtpl:155
+//line views/stuff.qtpl:166
qw422016.N().S(` `)
-//line views/stuff.qtpl:155
+//line views/stuff.qtpl:166
qw422016.E().S(lc.Get("help.empty_error_link"))
-//line views/stuff.qtpl:155
+//line views/stuff.qtpl:166
qw422016.N().S(` `)
-//line views/stuff.qtpl:155
+//line views/stuff.qtpl:166
qw422016.E().S(lc.Get("help.empty_error_line_2b"))
-//line views/stuff.qtpl:155
+//line views/stuff.qtpl:166
qw422016.N().S(`
`)
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
}
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
func WriteHelpEmptyErrorHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
StreamHelpEmptyErrorHTML(qw422016, lc)
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
}
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
func HelpEmptyErrorHTML(lc *l18n.Localizer) string {
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
WriteHelpEmptyErrorHTML(qb422016, lc)
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
return qs422016
-//line views/stuff.qtpl:156
+//line views/stuff.qtpl:167
}
-//line views/stuff.qtpl:158
+//line views/stuff.qtpl:169
func streamhelpTopicsHTML(qw422016 *qt422016.Writer, lang string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:158
+//line views/stuff.qtpl:169
qw422016.N().S(`
`)
-//line views/stuff.qtpl:160
+//line views/stuff.qtpl:171
qw422016.E().S(lc.GetWithLocale(lang, "help.topics"))
-//line views/stuff.qtpl:160
+//line views/stuff.qtpl:171
qw422016.N().S(`
`)
-//line views/stuff.qtpl:162
+//line views/stuff.qtpl:173
qw422016.E().S(lc.GetWithLocale(lang, "help.main"))
-//line views/stuff.qtpl:162
+//line views/stuff.qtpl:173
qw422016.N().S(`
`)
-//line views/stuff.qtpl:163
+//line views/stuff.qtpl:174
qw422016.E().S(lc.GetWithLocale(lang, "help.hypha"))
-//line views/stuff.qtpl:163
+//line views/stuff.qtpl:174
qw422016.N().S(`
`)
-//line views/stuff.qtpl:168
+//line views/stuff.qtpl:179
qw422016.E().S(lc.GetWithLocale(lang, "help.mycomarkup"))
-//line views/stuff.qtpl:168
+//line views/stuff.qtpl:179
qw422016.N().S(`
`)
-//line views/stuff.qtpl:169
+//line views/stuff.qtpl:180
qw422016.E().S(lc.GetWithLocale(lang, "help.interface"))
-//line views/stuff.qtpl:169
+//line views/stuff.qtpl:180
qw422016.N().S(`
`)
-//line views/stuff.qtpl:177
+//line views/stuff.qtpl:188
qw422016.E().S(lc.GetWithLocale(lang, "help.special_pages"))
-//line views/stuff.qtpl:177
+//line views/stuff.qtpl:188
qw422016.N().S(`
`)
-//line views/stuff.qtpl:183
+//line views/stuff.qtpl:194
qw422016.E().S(lc.GetWithLocale(lang, "help.configuration"))
-//line views/stuff.qtpl:183
+//line views/stuff.qtpl:194
qw422016.N().S(`
@@ -768,91 +780,91 @@ func streamhelpTopicsHTML(qw422016 *qt422016.Writer, lang string, lc *l18n.Local
`)
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
}
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
func writehelpTopicsHTML(qq422016 qtio422016.Writer, lang string, lc *l18n.Localizer) {
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
streamhelpTopicsHTML(qw422016, lang, lc)
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
}
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
func helpTopicsHTML(lang string, lc *l18n.Localizer) string {
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
writehelpTopicsHTML(qb422016, lang, lc)
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
return qs422016
-//line views/stuff.qtpl:194
+//line views/stuff.qtpl:205
}
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:207
func streamhelpTopicBadgeHTML(qw422016 *qt422016.Writer, lang, topic string) {
-//line views/stuff.qtpl:196
+//line views/stuff.qtpl:207
qw422016.N().S(`
?
`)
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
}
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
func writehelpTopicBadgeHTML(qq422016 qtio422016.Writer, lang, topic string) {
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
streamhelpTopicBadgeHTML(qw422016, lang, topic)
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
}
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
func helpTopicBadgeHTML(lang, topic string) string {
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
writehelpTopicBadgeHTML(qb422016, lang, topic)
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
return qs422016
-//line views/stuff.qtpl:198
+//line views/stuff.qtpl:209
}
-//line views/stuff.qtpl:200
+//line views/stuff.qtpl:211
func StreamUserListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:200
+//line views/stuff.qtpl:211
qw422016.N().S(`
`)
-//line views/stuff.qtpl:203
+//line views/stuff.qtpl:214
qw422016.E().S(lc.Get("ui.users_heading"))
-//line views/stuff.qtpl:203
+//line views/stuff.qtpl:214
qw422016.N().S(`
`)
-//line views/stuff.qtpl:205
+//line views/stuff.qtpl:216
var (
admins = make([]string, 0)
moderators = make([]string, 0)
@@ -872,149 +884,149 @@ func StreamUserListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
sort.Strings(moderators)
sort.Strings(editors)
-//line views/stuff.qtpl:223
+//line views/stuff.qtpl:234
qw422016.N().S(`
`)
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
}
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
func WriteUserListHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
StreamUserListHTML(qw422016, lc)
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
}
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
func UserListHTML(lc *l18n.Localizer) string {
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
WriteUserListHTML(qb422016, lc)
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
return qs422016
-//line views/stuff.qtpl:244
+//line views/stuff.qtpl:255
}
-//line views/stuff.qtpl:246
+//line views/stuff.qtpl:257
func StreamHyphaListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:246
+//line views/stuff.qtpl:257
qw422016.N().S(`
`)
-//line views/stuff.qtpl:249
+//line views/stuff.qtpl:260
qw422016.E().S(lc.Get("ui.list_heading"))
-//line views/stuff.qtpl:249
+//line views/stuff.qtpl:260
qw422016.N().S(`
`)
-//line views/stuff.qtpl:250
+//line views/stuff.qtpl:261
qw422016.E().S(lc.GetPlural("ui.list_desc", hyphae.Count()))
-//line views/stuff.qtpl:250
+//line views/stuff.qtpl:261
qw422016.N().S(`
`)
-//line views/stuff.qtpl:253
+//line views/stuff.qtpl:264
hyphaNames := make(chan string)
sortedHypha := hyphae.PathographicSort(hyphaNames)
for hypha := range hyphae.YieldExistingHyphae() {
@@ -1022,252 +1034,252 @@ func StreamHyphaListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
}
close(hyphaNames)
-//line views/stuff.qtpl:259
+//line views/stuff.qtpl:270
qw422016.N().S(`
`)
-//line views/stuff.qtpl:260
+//line views/stuff.qtpl:271
for hyphaName := range sortedHypha {
-//line views/stuff.qtpl:260
+//line views/stuff.qtpl:271
qw422016.N().S(`
`)
-//line views/stuff.qtpl:261
+//line views/stuff.qtpl:272
hypha := hyphae.ByName(hyphaName)
-//line views/stuff.qtpl:261
+//line views/stuff.qtpl:272
qw422016.N().S(`
`)
-//line views/stuff.qtpl:263
+//line views/stuff.qtpl:274
qw422016.E().S(util.BeautifulName(hypha.Name))
-//line views/stuff.qtpl:263
+//line views/stuff.qtpl:274
qw422016.N().S(`
`)
-//line views/stuff.qtpl:264
+//line views/stuff.qtpl:275
if hypha.BinaryPath != "" {
-//line views/stuff.qtpl:264
+//line views/stuff.qtpl:275
qw422016.N().S(`
`)
-//line views/stuff.qtpl:265
+//line views/stuff.qtpl:276
qw422016.E().S(filepath.Ext(hypha.BinaryPath)[1:])
-//line views/stuff.qtpl:265
+//line views/stuff.qtpl:276
qw422016.N().S(`
`)
-//line views/stuff.qtpl:266
+//line views/stuff.qtpl:277
}
-//line views/stuff.qtpl:266
+//line views/stuff.qtpl:277
qw422016.N().S(`
`)
-//line views/stuff.qtpl:268
+//line views/stuff.qtpl:279
}
-//line views/stuff.qtpl:268
+//line views/stuff.qtpl:279
qw422016.N().S(`
`)
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
}
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
func WriteHyphaListHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
StreamHyphaListHTML(qw422016, lc)
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
}
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
func HyphaListHTML(lc *l18n.Localizer) string {
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
WriteHyphaListHTML(qb422016, lc)
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
return qs422016
-//line views/stuff.qtpl:272
+//line views/stuff.qtpl:283
}
-//line views/stuff.qtpl:274
+//line views/stuff.qtpl:285
func StreamAboutHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:274
+//line views/stuff.qtpl:285
qw422016.N().S(`
`)
-//line views/stuff.qtpl:278
+//line views/stuff.qtpl:289
qw422016.E().S(lc.Get("ui.about_title", &l18n.Replacements{"name": cfg.WikiName}))
-//line views/stuff.qtpl:278
+//line views/stuff.qtpl:289
qw422016.N().S(`
`)
-//line views/stuff.qtpl:280
+//line views/stuff.qtpl:291
qw422016.N().S(lc.Get("ui.about_version", &l18n.Replacements{"pre": "", "post": " "}))
-//line views/stuff.qtpl:280
+//line views/stuff.qtpl:291
qw422016.N().S(` 1.7.0
`)
-//line views/stuff.qtpl:281
+//line views/stuff.qtpl:292
if cfg.UseAuth {
-//line views/stuff.qtpl:281
+//line views/stuff.qtpl:292
qw422016.N().S(` `)
-//line views/stuff.qtpl:282
+//line views/stuff.qtpl:293
qw422016.E().S(lc.Get("ui.about_usercount"))
-//line views/stuff.qtpl:282
+//line views/stuff.qtpl:293
qw422016.N().S(` `)
-//line views/stuff.qtpl:282
+//line views/stuff.qtpl:293
qw422016.N().DUL(user.Count())
-//line views/stuff.qtpl:282
+//line views/stuff.qtpl:293
qw422016.N().S(`
`)
-//line views/stuff.qtpl:283
+//line views/stuff.qtpl:294
qw422016.E().S(lc.Get("ui.about_homepage"))
-//line views/stuff.qtpl:283
+//line views/stuff.qtpl:294
qw422016.N().S(` `)
-//line views/stuff.qtpl:283
+//line views/stuff.qtpl:294
qw422016.E().S(cfg.HomeHypha)
-//line views/stuff.qtpl:283
+//line views/stuff.qtpl:294
qw422016.N().S(`
`)
-//line views/stuff.qtpl:284
+//line views/stuff.qtpl:295
qw422016.E().S(lc.Get("ui.about_admins"))
-//line views/stuff.qtpl:284
+//line views/stuff.qtpl:295
qw422016.N().S(` `)
-//line views/stuff.qtpl:284
+//line views/stuff.qtpl:295
for i, username := range user.ListUsersWithGroup("admin") {
-//line views/stuff.qtpl:285
+//line views/stuff.qtpl:296
if i > 0 {
-//line views/stuff.qtpl:285
+//line views/stuff.qtpl:296
qw422016.N().S(`,
`)
-//line views/stuff.qtpl:286
+//line views/stuff.qtpl:297
}
-//line views/stuff.qtpl:286
+//line views/stuff.qtpl:297
qw422016.N().S(` `)
-//line views/stuff.qtpl:287
+//line views/stuff.qtpl:298
qw422016.E().S(username)
-//line views/stuff.qtpl:287
+//line views/stuff.qtpl:298
qw422016.N().S(` `)
-//line views/stuff.qtpl:287
+//line views/stuff.qtpl:298
}
-//line views/stuff.qtpl:287
+//line views/stuff.qtpl:298
qw422016.N().S(`
`)
-//line views/stuff.qtpl:288
+//line views/stuff.qtpl:299
} else {
-//line views/stuff.qtpl:288
+//line views/stuff.qtpl:299
qw422016.N().S(` `)
-//line views/stuff.qtpl:289
+//line views/stuff.qtpl:300
qw422016.E().S(lc.Get("ui.about_noauth"))
-//line views/stuff.qtpl:289
+//line views/stuff.qtpl:300
qw422016.N().S(`
`)
-//line views/stuff.qtpl:290
+//line views/stuff.qtpl:301
}
-//line views/stuff.qtpl:290
+//line views/stuff.qtpl:301
qw422016.N().S(`
`)
-//line views/stuff.qtpl:292
+//line views/stuff.qtpl:303
qw422016.N().S(lc.Get("ui.about_hyphae", &l18n.Replacements{"link": "/list "}))
-//line views/stuff.qtpl:292
+//line views/stuff.qtpl:303
qw422016.N().S(`
`)
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
}
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
func WriteAboutHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) {
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
StreamAboutHTML(qw422016, lc)
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
}
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
func AboutHTML(lc *l18n.Localizer) string {
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
WriteAboutHTML(qb422016, lc)
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
return qs422016
-//line views/stuff.qtpl:296
+//line views/stuff.qtpl:307
}
-//line views/stuff.qtpl:298
+//line views/stuff.qtpl:309
func StreamCommonScripts(qw422016 *qt422016.Writer) {
-//line views/stuff.qtpl:298
+//line views/stuff.qtpl:309
qw422016.N().S(`
`)
-//line views/stuff.qtpl:299
+//line views/stuff.qtpl:310
for _, scriptPath := range cfg.CommonScripts {
-//line views/stuff.qtpl:299
+//line views/stuff.qtpl:310
qw422016.N().S(`
`)
-//line views/stuff.qtpl:301
+//line views/stuff.qtpl:312
}
-//line views/stuff.qtpl:301
+//line views/stuff.qtpl:312
qw422016.N().S(`
`)
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
}
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
func WriteCommonScripts(qq422016 qtio422016.Writer) {
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
qw422016 := qt422016.AcquireWriter(qq422016)
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
StreamCommonScripts(qw422016)
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
qt422016.ReleaseWriter(qw422016)
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
}
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
func CommonScripts() string {
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
qb422016 := qt422016.AcquireByteBuffer()
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
WriteCommonScripts(qb422016)
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
qs422016 := string(qb422016.B)
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
qt422016.ReleaseByteBuffer(qb422016)
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
return qs422016
-//line views/stuff.qtpl:302
+//line views/stuff.qtpl:313
}