From 03268160865c220e5bdd6ad6110fc8a20bbc1c7d Mon Sep 17 00:00:00 2001 From: Timur Ismagilov Date: Fri, 31 Dec 2021 01:16:09 +0500 Subject: [PATCH] Backlinks: Improve /backlinks/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * There is a link to the hypha in question in the heading, similar to other pages related to a selected hypha. * The locale keys (?) are reworded to get rid of the word ‘query’. * The phrasing is more precise. Kinda verbose doe. --- l18n/l18n.go | 12 +- l18n_src/en/ui.json | 6 +- l18n_src/ru/ui.json | 6 +- views/stuff.qtpl | 13 +- views/stuff.qtpl.go | 968 ++++++++++++++++++++++---------------------- 5 files changed, 514 insertions(+), 491 deletions(-) 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")%}

`) -//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(` `) -//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: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:225 +//line views/stuff.qtpl:236 qw422016.E().S(lc.Get("ui.users_admins")) -//line views/stuff.qtpl:225 +//line views/stuff.qtpl:236 qw422016.N().S(`

    `) -//line views/stuff.qtpl:226 +//line views/stuff.qtpl:237 for _, name := range admins { -//line views/stuff.qtpl:226 +//line views/stuff.qtpl:237 qw422016.N().S(`
  1. `) -//line views/stuff.qtpl:227 +//line views/stuff.qtpl:238 qw422016.E().S(name) -//line views/stuff.qtpl:227 +//line views/stuff.qtpl:238 qw422016.N().S(`
  2. `) -//line views/stuff.qtpl:228 +//line views/stuff.qtpl:239 } -//line views/stuff.qtpl:228 +//line views/stuff.qtpl:239 qw422016.N().S(`

`) -//line views/stuff.qtpl:231 +//line views/stuff.qtpl:242 qw422016.E().S(lc.Get("ui.users_moderators")) -//line views/stuff.qtpl:231 +//line views/stuff.qtpl:242 qw422016.N().S(`

    `) -//line views/stuff.qtpl:232 +//line views/stuff.qtpl:243 for _, name := range moderators { -//line views/stuff.qtpl:232 +//line views/stuff.qtpl:243 qw422016.N().S(`
  1. `) -//line views/stuff.qtpl:233 +//line views/stuff.qtpl:244 qw422016.E().S(name) -//line views/stuff.qtpl:233 +//line views/stuff.qtpl:244 qw422016.N().S(`
  2. `) -//line views/stuff.qtpl:234 +//line views/stuff.qtpl:245 } -//line views/stuff.qtpl:234 +//line views/stuff.qtpl:245 qw422016.N().S(`

`) -//line views/stuff.qtpl:237 +//line views/stuff.qtpl:248 qw422016.E().S(lc.Get("ui.users_editors")) -//line views/stuff.qtpl:237 +//line views/stuff.qtpl:248 qw422016.N().S(`

    `) -//line views/stuff.qtpl:238 +//line views/stuff.qtpl:249 for _, name := range editors { -//line views/stuff.qtpl:238 +//line views/stuff.qtpl:249 qw422016.N().S(`
  1. `) -//line views/stuff.qtpl:239 +//line views/stuff.qtpl:250 qw422016.E().S(name) -//line views/stuff.qtpl:239 +//line views/stuff.qtpl:250 qw422016.N().S(`
  2. `) -//line views/stuff.qtpl:240 +//line views/stuff.qtpl:251 } -//line views/stuff.qtpl:240 +//line views/stuff.qtpl:251 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 }