1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2025-06-02 11:14:05 +00:00

Write the recent changes doc

And add the link to the doc on the page itself
This commit is contained in:
Timur Ismagilov 2021-08-02 00:25:24 +05:00
parent c59a73d74f
commit b2890b26cf
6 changed files with 318 additions and 219 deletions

View File

@ -0,0 +1,20 @@
# Recent changes
**Recent changes** is a special page that lists all latest changes on the wiki. There is a link to it by default in the [[/help/en/top_bar | top bar]]. You can also jump to it quickly by pressing the `g r` hotkey.
Engaged wiki editors usually visit this page quite often.
=> /recent-changes See this wiki's recent changes
By default, it lists 20 recent changes. On the page, you can choose other number: 50 or 100.
The changes are grouped by date.
Each edit has these properties:
* **UTC time.**
* **Commit hash.** It functions as edit's id.
* **Editor,** if any.
* **Affected hyphae.** Most actions affect one hypha (such as actual editing), but some affect more (recursive editing, for example).
* **Message.** This message tells you what the edit is about. The message format is quite regular and parseable.
## See also
=> /help/en/feeds Feeds

View File

@ -761,4 +761,20 @@ kbd {
.top-bar__section_hidden-on-mobile { .top-bar__section_hidden-on-mobile {
display: none; display: none;
} }
}
/*
* Help badge
*/
.help-topic-badge {
display: block;
float: right;
line-height: 2rem;
height: 2rem;
width: 2rem;
text-align: center;
color: inherit;
text-decoration: none;
border: 1px solid #999;
border-radius: 1rem;
} }

View File

@ -82,6 +82,7 @@ if err != nil {
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{%s= helpTopicBadgeHTML("en", "recent_changes") %}
</section> </section>
</main> </main>
</div> </div>

View File

@ -260,181 +260,186 @@ func StreamRecentChangesHTML(qw422016 *qt422016.Writer, n int) {
//line views/history.qtpl:84 //line views/history.qtpl:84
} }
//line views/history.qtpl:84 //line views/history.qtpl:84
qw422016.N().S(`
`)
//line views/history.qtpl:85
qw422016.N().S(helpTopicBadgeHTML("en", "recent_changes"))
//line views/history.qtpl:85
qw422016.N().S(` qw422016.N().S(`
</section> </section>
</main> </main>
</div> </div>
`) `)
//line views/history.qtpl:88 //line views/history.qtpl:89
} }
//line views/history.qtpl:88 //line views/history.qtpl:89
func WriteRecentChangesHTML(qq422016 qtio422016.Writer, n int) { func WriteRecentChangesHTML(qq422016 qtio422016.Writer, n int) {
//line views/history.qtpl:88 //line views/history.qtpl:89
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:88 //line views/history.qtpl:89
StreamRecentChangesHTML(qw422016, n) StreamRecentChangesHTML(qw422016, n)
//line views/history.qtpl:88 //line views/history.qtpl:89
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/history.qtpl:88 //line views/history.qtpl:89
} }
//line views/history.qtpl:88 //line views/history.qtpl:89
func RecentChangesHTML(n int) string { func RecentChangesHTML(n int) string {
//line views/history.qtpl:88 //line views/history.qtpl:89
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:88 //line views/history.qtpl:89
WriteRecentChangesHTML(qb422016, n) WriteRecentChangesHTML(qb422016, n)
//line views/history.qtpl:88 //line views/history.qtpl:89
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/history.qtpl:88 //line views/history.qtpl:89
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:88 //line views/history.qtpl:89
return qs422016 return qs422016
//line views/history.qtpl:88 //line views/history.qtpl:89
} }
//line views/history.qtpl:90 //line views/history.qtpl:91
func streamrecentChangesEntry(qw422016 *qt422016.Writer, rev history.Revision) { func streamrecentChangesEntry(qw422016 *qt422016.Writer, rev history.Revision) {
//line views/history.qtpl:90 //line views/history.qtpl:91
qw422016.N().S(` qw422016.N().S(`
<div> <div>
<time class="recent-changes__entry__time"> <time class="recent-changes__entry__time">
`) `)
//line views/history.qtpl:93 //line views/history.qtpl:94
qw422016.E().S(rev.Time.UTC().Format("15:04 UTC")) qw422016.E().S(rev.Time.UTC().Format("15:04 UTC"))
//line views/history.qtpl:93 //line views/history.qtpl:94
qw422016.N().S(` qw422016.N().S(`
</time> </time>
<a class="recent-changes__entry__message">`) <a class="recent-changes__entry__message">`)
//line views/history.qtpl:95 //line views/history.qtpl:96
qw422016.E().S(rev.Hash) qw422016.E().S(rev.Hash)
//line views/history.qtpl:95 //line views/history.qtpl:96
qw422016.N().S(`</a> qw422016.N().S(`</a>
`) `)
//line views/history.qtpl:97 //line views/history.qtpl:98
if rev.Username != "anon" { if rev.Username != "anon" {
//line views/history.qtpl:97 //line views/history.qtpl:98
qw422016.N().S(` qw422016.N().S(`
<span class="recent-changes__entry__author"> <span class="recent-changes__entry__author">
&mdash; <a href="/hypha/`) &mdash; <a href="/hypha/`)
//line views/history.qtpl:99 //line views/history.qtpl:100
qw422016.E().S(cfg.UserHypha) qw422016.E().S(cfg.UserHypha)
//line views/history.qtpl:99 //line views/history.qtpl:100
qw422016.N().S(`/`) qw422016.N().S(`/`)
//line views/history.qtpl:99 //line views/history.qtpl:100
qw422016.E().S(rev.Username) qw422016.E().S(rev.Username)
//line views/history.qtpl:99 //line views/history.qtpl:100
qw422016.N().S(`" rel="author">`) qw422016.N().S(`" rel="author">`)
//line views/history.qtpl:99 //line views/history.qtpl:100
qw422016.E().S(rev.Username) qw422016.E().S(rev.Username)
//line views/history.qtpl:99 //line views/history.qtpl:100
qw422016.N().S(`</a> qw422016.N().S(`</a>
</span> </span>
`) `)
//line views/history.qtpl:101 //line views/history.qtpl:102
} }
//line views/history.qtpl:101 //line views/history.qtpl:102
qw422016.N().S(` qw422016.N().S(`
</div> </div>
<div> <div>
<span class="recent-changes__entry__links"> <span class="recent-changes__entry__links">
`) `)
//line views/history.qtpl:105 //line views/history.qtpl:106
qw422016.N().S(rev.HyphaeLinksHTML()) qw422016.N().S(rev.HyphaeLinksHTML())
//line views/history.qtpl:105 //line views/history.qtpl:106
qw422016.N().S(` qw422016.N().S(`
</span> </span>
<span class="recent-changes__entry__message"> <span class="recent-changes__entry__message">
`) `)
//line views/history.qtpl:108 //line views/history.qtpl:109
qw422016.E().S(rev.Message) qw422016.E().S(rev.Message)
//line views/history.qtpl:108 //line views/history.qtpl:109
qw422016.N().S(` qw422016.N().S(`
</span> </span>
</div> </div>
`) `)
//line views/history.qtpl:111 //line views/history.qtpl:112
} }
//line views/history.qtpl:111 //line views/history.qtpl:112
func writerecentChangesEntry(qq422016 qtio422016.Writer, rev history.Revision) { func writerecentChangesEntry(qq422016 qtio422016.Writer, rev history.Revision) {
//line views/history.qtpl:111 //line views/history.qtpl:112
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:111 //line views/history.qtpl:112
streamrecentChangesEntry(qw422016, rev) streamrecentChangesEntry(qw422016, rev)
//line views/history.qtpl:111 //line views/history.qtpl:112
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/history.qtpl:111 //line views/history.qtpl:112
} }
//line views/history.qtpl:111 //line views/history.qtpl:112
func recentChangesEntry(rev history.Revision) string { func recentChangesEntry(rev history.Revision) string {
//line views/history.qtpl:111 //line views/history.qtpl:112
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:111 //line views/history.qtpl:112
writerecentChangesEntry(qb422016, rev) writerecentChangesEntry(qb422016, rev)
//line views/history.qtpl:111 //line views/history.qtpl:112
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/history.qtpl:111 //line views/history.qtpl:112
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:111 //line views/history.qtpl:112
return qs422016 return qs422016
//line views/history.qtpl:111 //line views/history.qtpl:112
} }
//line views/history.qtpl:113 //line views/history.qtpl:114
func StreamHistoryHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, list string) { func StreamHistoryHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, list string) {
//line views/history.qtpl:113 //line views/history.qtpl:114
qw422016.N().S(` qw422016.N().S(`
`) `)
//line views/history.qtpl:114 //line views/history.qtpl:115
StreamNavHTML(qw422016, rq, hyphaName, "history") StreamNavHTML(qw422016, rq, hyphaName, "history")
//line views/history.qtpl:114 //line views/history.qtpl:115
qw422016.N().S(` qw422016.N().S(`
<div class="layout"> <div class="layout">
<main class="main-width"> <main class="main-width">
<article class="history"> <article class="history">
<h1>History of `) <h1>History of `)
//line views/history.qtpl:118 //line views/history.qtpl:119
qw422016.E().S(util.BeautifulName(hyphaName)) qw422016.E().S(util.BeautifulName(hyphaName))
//line views/history.qtpl:118 //line views/history.qtpl:119
qw422016.N().S(`</h1> qw422016.N().S(`</h1>
`) `)
//line views/history.qtpl:119 //line views/history.qtpl:120
qw422016.N().S(list) qw422016.N().S(list)
//line views/history.qtpl:119 //line views/history.qtpl:120
qw422016.N().S(` qw422016.N().S(`
</article> </article>
</main> </main>
</div> </div>
`) `)
//line views/history.qtpl:123 //line views/history.qtpl:124
} }
//line views/history.qtpl:123 //line views/history.qtpl:124
func WriteHistoryHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, list string) { func WriteHistoryHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, list string) {
//line views/history.qtpl:123 //line views/history.qtpl:124
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:123 //line views/history.qtpl:124
StreamHistoryHTML(qw422016, rq, hyphaName, list) StreamHistoryHTML(qw422016, rq, hyphaName, list)
//line views/history.qtpl:123 //line views/history.qtpl:124
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/history.qtpl:123 //line views/history.qtpl:124
} }
//line views/history.qtpl:123 //line views/history.qtpl:124
func HistoryHTML(rq *http.Request, hyphaName, list string) string { func HistoryHTML(rq *http.Request, hyphaName, list string) string {
//line views/history.qtpl:123 //line views/history.qtpl:124
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:123 //line views/history.qtpl:124
WriteHistoryHTML(qb422016, rq, hyphaName, list) WriteHistoryHTML(qb422016, rq, hyphaName, list)
//line views/history.qtpl:123 //line views/history.qtpl:124
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/history.qtpl:123 //line views/history.qtpl:124
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:123 //line views/history.qtpl:124
return qs422016 return qs422016
//line views/history.qtpl:123 //line views/history.qtpl:124
} }

View File

@ -155,6 +155,11 @@ It outputs a poorly formatted JSON, but it works and is valid.
<li>...</li> <li>...</li>
</ul> </ul>
</li> </li>
<li>Special pages
<ul>
<li><a href="/help/en/recent_changes">Recent changes</a></li>
</ul>
</li>
<li>Configuration (for administrators) <li>Configuration (for administrators)
<ul> <ul>
<li><a href="/help/en/lock">Lock</a></li> <li><a href="/help/en/lock">Lock</a></li>
@ -167,6 +172,10 @@ It outputs a poorly formatted JSON, but it works and is valid.
</aside> </aside>
{% endfunc %} {% endfunc %}
{% func helpTopicBadgeHTML(lang, topic string) %}
<a class="help-topic-badge" href="/help/{%s lang %}/{%s topic %}">?</a>
{% endfunc %}
{% func UserListHTML() %} {% func UserListHTML() %}
<div class="layout"> <div class="layout">
<main class="main-width user-list"> <main class="main-width user-list">

View File

@ -504,6 +504,11 @@ func streamhelpTopicsHTML(qw422016 *qt422016.Writer) {
<li>...</li> <li>...</li>
</ul> </ul>
</li> </li>
<li>Special pages
<ul>
<li><a href="/help/en/recent_changes">Recent changes</a></li>
</ul>
</li>
<li>Configuration (for administrators) <li>Configuration (for administrators)
<ul> <ul>
<li><a href="/help/en/lock">Lock</a></li> <li><a href="/help/en/lock">Lock</a></li>
@ -515,44 +520,87 @@ func streamhelpTopicsHTML(qw422016 *qt422016.Writer) {
</ul> </ul>
</aside> </aside>
`) `)
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
} }
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
func writehelpTopicsHTML(qq422016 qtio422016.Writer) { func writehelpTopicsHTML(qq422016 qtio422016.Writer) {
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
streamhelpTopicsHTML(qw422016) streamhelpTopicsHTML(qw422016)
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
} }
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
func helpTopicsHTML() string { func helpTopicsHTML() string {
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
writehelpTopicsHTML(qb422016) writehelpTopicsHTML(qb422016)
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
return qs422016 return qs422016
//line views/stuff.qtpl:168 //line views/stuff.qtpl:173
} }
//line views/stuff.qtpl:170 //line views/stuff.qtpl:175
func streamhelpTopicBadgeHTML(qw422016 *qt422016.Writer, lang, topic string) {
//line views/stuff.qtpl:175
qw422016.N().S(`
<a class="help-topic-badge" href="/help/`)
//line views/stuff.qtpl:176
qw422016.E().S(lang)
//line views/stuff.qtpl:176
qw422016.N().S(`/`)
//line views/stuff.qtpl:176
qw422016.E().S(topic)
//line views/stuff.qtpl:176
qw422016.N().S(`">?</a>
`)
//line views/stuff.qtpl:177
}
//line views/stuff.qtpl:177
func writehelpTopicBadgeHTML(qq422016 qtio422016.Writer, lang, topic string) {
//line views/stuff.qtpl:177
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:177
streamhelpTopicBadgeHTML(qw422016, lang, topic)
//line views/stuff.qtpl:177
qt422016.ReleaseWriter(qw422016)
//line views/stuff.qtpl:177
}
//line views/stuff.qtpl:177
func helpTopicBadgeHTML(lang, topic string) string {
//line views/stuff.qtpl:177
qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:177
writehelpTopicBadgeHTML(qb422016, lang, topic)
//line views/stuff.qtpl:177
qs422016 := string(qb422016.B)
//line views/stuff.qtpl:177
qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:177
return qs422016
//line views/stuff.qtpl:177
}
//line views/stuff.qtpl:179
func StreamUserListHTML(qw422016 *qt422016.Writer) { func StreamUserListHTML(qw422016 *qt422016.Writer) {
//line views/stuff.qtpl:170 //line views/stuff.qtpl:179
qw422016.N().S(` qw422016.N().S(`
<div class="layout"> <div class="layout">
<main class="main-width user-list"> <main class="main-width user-list">
<h1>List of users</h1> <h1>List of users</h1>
`) `)
//line views/stuff.qtpl:175 //line views/stuff.qtpl:184
var ( var (
admins = make([]string, 0) admins = make([]string, 0)
moderators = make([]string, 0) moderators = make([]string, 0)
@ -569,345 +617,345 @@ func StreamUserListHTML(qw422016 *qt422016.Writer) {
} }
} }
//line views/stuff.qtpl:190 //line views/stuff.qtpl:199
qw422016.N().S(` qw422016.N().S(`
<section> <section>
<h2>Admins</h2> <h2>Admins</h2>
<ol>`) <ol>`)
//line views/stuff.qtpl:193 //line views/stuff.qtpl:202
for _, name := range admins { for _, name := range admins {
//line views/stuff.qtpl:193 //line views/stuff.qtpl:202
qw422016.N().S(` qw422016.N().S(`
<li><a href="/hypha/`) <li><a href="/hypha/`)
//line views/stuff.qtpl:194 //line views/stuff.qtpl:203
qw422016.E().S(cfg.UserHypha) qw422016.E().S(cfg.UserHypha)
//line views/stuff.qtpl:194 //line views/stuff.qtpl:203
qw422016.N().S(`/`) qw422016.N().S(`/`)
//line views/stuff.qtpl:194 //line views/stuff.qtpl:203
qw422016.E().S(name) qw422016.E().S(name)
//line views/stuff.qtpl:194 //line views/stuff.qtpl:203
qw422016.N().S(`">`) qw422016.N().S(`">`)
//line views/stuff.qtpl:194 //line views/stuff.qtpl:203
qw422016.E().S(name) qw422016.E().S(name)
//line views/stuff.qtpl:194 //line views/stuff.qtpl:203
qw422016.N().S(`</a></li> qw422016.N().S(`</a></li>
`) `)
//line views/stuff.qtpl:195 //line views/stuff.qtpl:204
} }
//line views/stuff.qtpl:195 //line views/stuff.qtpl:204
qw422016.N().S(`</ol> qw422016.N().S(`</ol>
</section> </section>
<section> <section>
<h2>Moderators</h2> <h2>Moderators</h2>
<ol>`) <ol>`)
//line views/stuff.qtpl:199 //line views/stuff.qtpl:208
for _, name := range moderators { for _, name := range moderators {
//line views/stuff.qtpl:199 //line views/stuff.qtpl:208
qw422016.N().S(` qw422016.N().S(`
<li><a href="/hypha/`) <li><a href="/hypha/`)
//line views/stuff.qtpl:200 //line views/stuff.qtpl:209
qw422016.E().S(cfg.UserHypha) qw422016.E().S(cfg.UserHypha)
//line views/stuff.qtpl:200 //line views/stuff.qtpl:209
qw422016.N().S(`/`) qw422016.N().S(`/`)
//line views/stuff.qtpl:200 //line views/stuff.qtpl:209
qw422016.E().S(name) qw422016.E().S(name)
//line views/stuff.qtpl:200 //line views/stuff.qtpl:209
qw422016.N().S(`">`) qw422016.N().S(`">`)
//line views/stuff.qtpl:200 //line views/stuff.qtpl:209
qw422016.E().S(name) qw422016.E().S(name)
//line views/stuff.qtpl:200 //line views/stuff.qtpl:209
qw422016.N().S(`</a></li> qw422016.N().S(`</a></li>
`) `)
//line views/stuff.qtpl:201 //line views/stuff.qtpl:210
} }
//line views/stuff.qtpl:201 //line views/stuff.qtpl:210
qw422016.N().S(`</ol> qw422016.N().S(`</ol>
</section> </section>
<section> <section>
<h2>Editors</h2> <h2>Editors</h2>
<ol>`) <ol>`)
//line views/stuff.qtpl:205 //line views/stuff.qtpl:214
for _, name := range editors { for _, name := range editors {
//line views/stuff.qtpl:205 //line views/stuff.qtpl:214
qw422016.N().S(` qw422016.N().S(`
<li><a href="/hypha/`) <li><a href="/hypha/`)
//line views/stuff.qtpl:206 //line views/stuff.qtpl:215
qw422016.E().S(cfg.UserHypha) qw422016.E().S(cfg.UserHypha)
//line views/stuff.qtpl:206 //line views/stuff.qtpl:215
qw422016.N().S(`/`) qw422016.N().S(`/`)
//line views/stuff.qtpl:206 //line views/stuff.qtpl:215
qw422016.E().S(name) qw422016.E().S(name)
//line views/stuff.qtpl:206 //line views/stuff.qtpl:215
qw422016.N().S(`">`) qw422016.N().S(`">`)
//line views/stuff.qtpl:206 //line views/stuff.qtpl:215
qw422016.E().S(name) qw422016.E().S(name)
//line views/stuff.qtpl:206 //line views/stuff.qtpl:215
qw422016.N().S(`</a></li> qw422016.N().S(`</a></li>
`) `)
//line views/stuff.qtpl:207 //line views/stuff.qtpl:216
} }
//line views/stuff.qtpl:207 //line views/stuff.qtpl:216
qw422016.N().S(`</ol> qw422016.N().S(`</ol>
</section> </section>
</main> </main>
</div> </div>
`) `)
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
} }
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
func WriteUserListHTML(qq422016 qtio422016.Writer) { func WriteUserListHTML(qq422016 qtio422016.Writer) {
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
StreamUserListHTML(qw422016) StreamUserListHTML(qw422016)
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
} }
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
func UserListHTML() string { func UserListHTML() string {
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
WriteUserListHTML(qb422016) WriteUserListHTML(qb422016)
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
return qs422016 return qs422016
//line views/stuff.qtpl:211 //line views/stuff.qtpl:220
} }
//line views/stuff.qtpl:213 //line views/stuff.qtpl:222
func StreamHyphaListHTML(qw422016 *qt422016.Writer) { func StreamHyphaListHTML(qw422016 *qt422016.Writer) {
//line views/stuff.qtpl:213 //line views/stuff.qtpl:222
qw422016.N().S(` qw422016.N().S(`
<div class="layout"> <div class="layout">
<main class="main-width"> <main class="main-width">
<h1>List of hyphae</h1> <h1>List of hyphae</h1>
<p>This wiki has `) <p>This wiki has `)
//line views/stuff.qtpl:217 //line views/stuff.qtpl:226
qw422016.N().D(hyphae.Count()) qw422016.N().D(hyphae.Count())
//line views/stuff.qtpl:217 //line views/stuff.qtpl:226
qw422016.N().S(` hyphae.</p> qw422016.N().S(` hyphae.</p>
<ul class="hypha-list"> <ul class="hypha-list">
`) `)
//line views/stuff.qtpl:219 //line views/stuff.qtpl:228
for h := range hyphae.YieldExistingHyphae() { for h := range hyphae.YieldExistingHyphae() {
//line views/stuff.qtpl:219 //line views/stuff.qtpl:228
qw422016.N().S(` qw422016.N().S(`
<li class="hypha-list__entry"> <li class="hypha-list__entry">
<a class="hypha-list__link" href="/hypha/`) <a class="hypha-list__link" href="/hypha/`)
//line views/stuff.qtpl:221 //line views/stuff.qtpl:230
qw422016.E().S(h.Name) qw422016.E().S(h.Name)
//line views/stuff.qtpl:221 //line views/stuff.qtpl:230
qw422016.N().S(`">`) qw422016.N().S(`">`)
//line views/stuff.qtpl:221 //line views/stuff.qtpl:230
qw422016.E().S(util.BeautifulName(h.Name)) qw422016.E().S(util.BeautifulName(h.Name))
//line views/stuff.qtpl:221 //line views/stuff.qtpl:230
qw422016.N().S(`</a> qw422016.N().S(`</a>
`) `)
//line views/stuff.qtpl:222 //line views/stuff.qtpl:231
if h.BinaryPath != "" { if h.BinaryPath != "" {
//line views/stuff.qtpl:222 //line views/stuff.qtpl:231
qw422016.N().S(` qw422016.N().S(`
<span class="hypha-list__amnt-type">`) <span class="hypha-list__amnt-type">`)
//line views/stuff.qtpl:223 //line views/stuff.qtpl:232
qw422016.E().S(filepath.Ext(h.BinaryPath)[1:]) qw422016.E().S(filepath.Ext(h.BinaryPath)[1:])
//line views/stuff.qtpl:223 //line views/stuff.qtpl:232
qw422016.N().S(`</span> qw422016.N().S(`</span>
`) `)
//line views/stuff.qtpl:224 //line views/stuff.qtpl:233
} }
//line views/stuff.qtpl:224 //line views/stuff.qtpl:233
qw422016.N().S(` qw422016.N().S(`
</li> </li>
`) `)
//line views/stuff.qtpl:226 //line views/stuff.qtpl:235
} }
//line views/stuff.qtpl:226 //line views/stuff.qtpl:235
qw422016.N().S(` qw422016.N().S(`
</ul> </ul>
</main> </main>
</div> </div>
`) `)
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
} }
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
func WriteHyphaListHTML(qq422016 qtio422016.Writer) { func WriteHyphaListHTML(qq422016 qtio422016.Writer) {
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
StreamHyphaListHTML(qw422016) StreamHyphaListHTML(qw422016)
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
} }
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
func HyphaListHTML() string { func HyphaListHTML() string {
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
WriteHyphaListHTML(qb422016) WriteHyphaListHTML(qb422016)
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
return qs422016 return qs422016
//line views/stuff.qtpl:230 //line views/stuff.qtpl:239
} }
//line views/stuff.qtpl:232 //line views/stuff.qtpl:241
func StreamAboutHTML(qw422016 *qt422016.Writer) { func StreamAboutHTML(qw422016 *qt422016.Writer) {
//line views/stuff.qtpl:232 //line views/stuff.qtpl:241
qw422016.N().S(` qw422016.N().S(`
<div class="layout"> <div class="layout">
<main class="main-width"> <main class="main-width">
<section> <section>
<h1>About `) <h1>About `)
//line views/stuff.qtpl:236 //line views/stuff.qtpl:245
qw422016.E().S(cfg.WikiName) qw422016.E().S(cfg.WikiName)
//line views/stuff.qtpl:236 //line views/stuff.qtpl:245
qw422016.N().S(`</h1> qw422016.N().S(`</h1>
<ul> <ul>
<li><b><a href="https://mycorrhiza.wiki">Mycorrhiza Wiki</a> version:</b> 1.4.0</li> <li><b><a href="https://mycorrhiza.wiki">Mycorrhiza Wiki</a> version:</b> 1.4.0</li>
`) `)
//line views/stuff.qtpl:239 //line views/stuff.qtpl:248
if cfg.UseAuth { if cfg.UseAuth {
//line views/stuff.qtpl:239 //line views/stuff.qtpl:248
qw422016.N().S(` <li><b>User count:</b> `) qw422016.N().S(` <li><b>User count:</b> `)
//line views/stuff.qtpl:240 //line views/stuff.qtpl:249
qw422016.N().DUL(user.Count()) qw422016.N().DUL(user.Count())
//line views/stuff.qtpl:240 //line views/stuff.qtpl:249
qw422016.N().S(`</li> qw422016.N().S(`</li>
<li><b>Home page:</b> <a href="/">`) <li><b>Home page:</b> <a href="/">`)
//line views/stuff.qtpl:241 //line views/stuff.qtpl:250
qw422016.E().S(cfg.HomeHypha) qw422016.E().S(cfg.HomeHypha)
//line views/stuff.qtpl:241 //line views/stuff.qtpl:250
qw422016.N().S(`</a></li> qw422016.N().S(`</a></li>
<li><b>Administrators:</b>`) <li><b>Administrators:</b>`)
//line views/stuff.qtpl:242 //line views/stuff.qtpl:251
for i, username := range user.ListUsersWithGroup("admin") { for i, username := range user.ListUsersWithGroup("admin") {
//line views/stuff.qtpl:243 //line views/stuff.qtpl:252
if i > 0 { if i > 0 {
//line views/stuff.qtpl:243 //line views/stuff.qtpl:252
qw422016.N().S(`<span aria-hidden="true">, </span> qw422016.N().S(`<span aria-hidden="true">, </span>
`) `)
//line views/stuff.qtpl:244 //line views/stuff.qtpl:253
} }
//line views/stuff.qtpl:244 //line views/stuff.qtpl:253
qw422016.N().S(` <a href="/hypha/`) qw422016.N().S(` <a href="/hypha/`)
//line views/stuff.qtpl:245 //line views/stuff.qtpl:254
qw422016.E().S(cfg.UserHypha) qw422016.E().S(cfg.UserHypha)
//line views/stuff.qtpl:245 //line views/stuff.qtpl:254
qw422016.N().S(`/`) qw422016.N().S(`/`)
//line views/stuff.qtpl:245 //line views/stuff.qtpl:254
qw422016.E().S(username) qw422016.E().S(username)
//line views/stuff.qtpl:245 //line views/stuff.qtpl:254
qw422016.N().S(`">`) qw422016.N().S(`">`)
//line views/stuff.qtpl:245 //line views/stuff.qtpl:254
qw422016.E().S(username) qw422016.E().S(username)
//line views/stuff.qtpl:245 //line views/stuff.qtpl:254
qw422016.N().S(`</a>`) qw422016.N().S(`</a>`)
//line views/stuff.qtpl:245 //line views/stuff.qtpl:254
} }
//line views/stuff.qtpl:245 //line views/stuff.qtpl:254
qw422016.N().S(`</li> qw422016.N().S(`</li>
`) `)
//line views/stuff.qtpl:246 //line views/stuff.qtpl:255
} else { } else {
//line views/stuff.qtpl:246 //line views/stuff.qtpl:255
qw422016.N().S(` <li>This wiki does not use authorization</li> qw422016.N().S(` <li>This wiki does not use authorization</li>
`) `)
//line views/stuff.qtpl:248 //line views/stuff.qtpl:257
} }
//line views/stuff.qtpl:248 //line views/stuff.qtpl:257
qw422016.N().S(` </ul> qw422016.N().S(` </ul>
<p>See <a href="/list">/list</a> for information about hyphae on this wiki.</p> <p>See <a href="/list">/list</a> for information about hyphae on this wiki.</p>
</section> </section>
</main> </main>
</div> </div>
`) `)
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
} }
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
func WriteAboutHTML(qq422016 qtio422016.Writer) { func WriteAboutHTML(qq422016 qtio422016.Writer) {
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
StreamAboutHTML(qw422016) StreamAboutHTML(qw422016)
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
} }
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
func AboutHTML() string { func AboutHTML() string {
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
WriteAboutHTML(qb422016) WriteAboutHTML(qb422016)
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
return qs422016 return qs422016
//line views/stuff.qtpl:254 //line views/stuff.qtpl:263
} }
//line views/stuff.qtpl:256 //line views/stuff.qtpl:265
func StreamCommonScripts(qw422016 *qt422016.Writer) { func StreamCommonScripts(qw422016 *qt422016.Writer) {
//line views/stuff.qtpl:256 //line views/stuff.qtpl:265
qw422016.N().S(` qw422016.N().S(`
`) `)
//line views/stuff.qtpl:257 //line views/stuff.qtpl:266
for _, scriptPath := range cfg.CommonScripts { for _, scriptPath := range cfg.CommonScripts {
//line views/stuff.qtpl:257 //line views/stuff.qtpl:266
qw422016.N().S(` qw422016.N().S(`
<script src="`) <script src="`)
//line views/stuff.qtpl:258 //line views/stuff.qtpl:267
qw422016.E().S(scriptPath) qw422016.E().S(scriptPath)
//line views/stuff.qtpl:258 //line views/stuff.qtpl:267
qw422016.N().S(`"></script> qw422016.N().S(`"></script>
`) `)
//line views/stuff.qtpl:259 //line views/stuff.qtpl:268
} }
//line views/stuff.qtpl:259 //line views/stuff.qtpl:268
qw422016.N().S(` qw422016.N().S(`
`) `)
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
} }
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
func WriteCommonScripts(qq422016 qtio422016.Writer) { func WriteCommonScripts(qq422016 qtio422016.Writer) {
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
qw422016 := qt422016.AcquireWriter(qq422016) qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
StreamCommonScripts(qw422016) StreamCommonScripts(qw422016)
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
qt422016.ReleaseWriter(qw422016) qt422016.ReleaseWriter(qw422016)
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
} }
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
func CommonScripts() string { func CommonScripts() string {
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
qb422016 := qt422016.AcquireByteBuffer() qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
WriteCommonScripts(qb422016) WriteCommonScripts(qb422016)
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
qs422016 := string(qb422016.B) qs422016 := string(qb422016.B)
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
qt422016.ReleaseByteBuffer(qb422016) qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
return qs422016 return qs422016
//line views/stuff.qtpl:260 //line views/stuff.qtpl:269
} }