1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2024-10-30 03:36:16 +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 {
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 %}
{% endif %}
{%s= helpTopicBadgeHTML("en", "recent_changes") %}
</section>
</main>
</div>

View File

@ -260,181 +260,186 @@ func StreamRecentChangesHTML(qw422016 *qt422016.Writer, n int) {
//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(`
</section>
</main>
</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) {
//line views/history.qtpl:88
//line views/history.qtpl:89
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:88
//line views/history.qtpl:89
StreamRecentChangesHTML(qw422016, n)
//line views/history.qtpl:88
//line views/history.qtpl:89
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 {
//line views/history.qtpl:88
//line views/history.qtpl:89
qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:88
//line views/history.qtpl:89
WriteRecentChangesHTML(qb422016, n)
//line views/history.qtpl:88
//line views/history.qtpl:89
qs422016 := string(qb422016.B)
//line views/history.qtpl:88
//line views/history.qtpl:89
qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:88
//line views/history.qtpl:89
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) {
//line views/history.qtpl:90
//line views/history.qtpl:91
qw422016.N().S(`
<div>
<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"))
//line views/history.qtpl:93
//line views/history.qtpl:94
qw422016.N().S(`
</time>
<a class="recent-changes__entry__message">`)
//line views/history.qtpl:95
//line views/history.qtpl:96
qw422016.E().S(rev.Hash)
//line views/history.qtpl:95
//line views/history.qtpl:96
qw422016.N().S(`</a>
`)
//line views/history.qtpl:97
//line views/history.qtpl:98
if rev.Username != "anon" {
//line views/history.qtpl:97
//line views/history.qtpl:98
qw422016.N().S(`
<span class="recent-changes__entry__author">
&mdash; <a href="/hypha/`)
//line views/history.qtpl:99
//line views/history.qtpl:100
qw422016.E().S(cfg.UserHypha)
//line views/history.qtpl:99
//line views/history.qtpl:100
qw422016.N().S(`/`)
//line views/history.qtpl:99
//line views/history.qtpl:100
qw422016.E().S(rev.Username)
//line views/history.qtpl:99
//line views/history.qtpl:100
qw422016.N().S(`" rel="author">`)
//line views/history.qtpl:99
//line views/history.qtpl:100
qw422016.E().S(rev.Username)
//line views/history.qtpl:99
//line views/history.qtpl:100
qw422016.N().S(`</a>
</span>
`)
//line views/history.qtpl:101
//line views/history.qtpl:102
}
//line views/history.qtpl:101
//line views/history.qtpl:102
qw422016.N().S(`
</div>
<div>
<span class="recent-changes__entry__links">
`)
//line views/history.qtpl:105
//line views/history.qtpl:106
qw422016.N().S(rev.HyphaeLinksHTML())
//line views/history.qtpl:105
//line views/history.qtpl:106
qw422016.N().S(`
</span>
<span class="recent-changes__entry__message">
`)
//line views/history.qtpl:108
//line views/history.qtpl:109
qw422016.E().S(rev.Message)
//line views/history.qtpl:108
//line views/history.qtpl:109
qw422016.N().S(`
</span>
</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) {
//line views/history.qtpl:111
//line views/history.qtpl:112
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:111
//line views/history.qtpl:112
streamrecentChangesEntry(qw422016, rev)
//line views/history.qtpl:111
//line views/history.qtpl:112
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 {
//line views/history.qtpl:111
//line views/history.qtpl:112
qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:111
//line views/history.qtpl:112
writerecentChangesEntry(qb422016, rev)
//line views/history.qtpl:111
//line views/history.qtpl:112
qs422016 := string(qb422016.B)
//line views/history.qtpl:111
//line views/history.qtpl:112
qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:111
//line views/history.qtpl:112
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) {
//line views/history.qtpl:113
//line views/history.qtpl:114
qw422016.N().S(`
`)
//line views/history.qtpl:114
//line views/history.qtpl:115
StreamNavHTML(qw422016, rq, hyphaName, "history")
//line views/history.qtpl:114
//line views/history.qtpl:115
qw422016.N().S(`
<div class="layout">
<main class="main-width">
<article class="history">
<h1>History of `)
//line views/history.qtpl:118
//line views/history.qtpl:119
qw422016.E().S(util.BeautifulName(hyphaName))
//line views/history.qtpl:118
//line views/history.qtpl:119
qw422016.N().S(`</h1>
`)
//line views/history.qtpl:119
//line views/history.qtpl:120
qw422016.N().S(list)
//line views/history.qtpl:119
//line views/history.qtpl:120
qw422016.N().S(`
</article>
</main>
</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) {
//line views/history.qtpl:123
//line views/history.qtpl:124
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:123
//line views/history.qtpl:124
StreamHistoryHTML(qw422016, rq, hyphaName, list)
//line views/history.qtpl:123
//line views/history.qtpl:124
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 {
//line views/history.qtpl:123
//line views/history.qtpl:124
qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:123
//line views/history.qtpl:124
WriteHistoryHTML(qb422016, rq, hyphaName, list)
//line views/history.qtpl:123
//line views/history.qtpl:124
qs422016 := string(qb422016.B)
//line views/history.qtpl:123
//line views/history.qtpl:124
qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:123
//line views/history.qtpl:124
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>
</ul>
</li>
<li>Special pages
<ul>
<li><a href="/help/en/recent_changes">Recent changes</a></li>
</ul>
</li>
<li>Configuration (for administrators)
<ul>
<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>
{% endfunc %}
{% func helpTopicBadgeHTML(lang, topic string) %}
<a class="help-topic-badge" href="/help/{%s lang %}/{%s topic %}">?</a>
{% endfunc %}
{% func UserListHTML() %}
<div class="layout">
<main class="main-width user-list">

View File

@ -504,6 +504,11 @@ func streamhelpTopicsHTML(qw422016 *qt422016.Writer) {
<li>...</li>
</ul>
</li>
<li>Special pages
<ul>
<li><a href="/help/en/recent_changes">Recent changes</a></li>
</ul>
</li>
<li>Configuration (for administrators)
<ul>
<li><a href="/help/en/lock">Lock</a></li>
@ -515,44 +520,87 @@ func streamhelpTopicsHTML(qw422016 *qt422016.Writer) {
</ul>
</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) {
//line views/stuff.qtpl:168
//line views/stuff.qtpl:173
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:168
//line views/stuff.qtpl:173
streamhelpTopicsHTML(qw422016)
//line views/stuff.qtpl:168
//line views/stuff.qtpl:173
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 {
//line views/stuff.qtpl:168
//line views/stuff.qtpl:173
qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:168
//line views/stuff.qtpl:173
writehelpTopicsHTML(qb422016)
//line views/stuff.qtpl:168
//line views/stuff.qtpl:173
qs422016 := string(qb422016.B)
//line views/stuff.qtpl:168
//line views/stuff.qtpl:173
qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:168
//line views/stuff.qtpl:173
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) {
//line views/stuff.qtpl:170
//line views/stuff.qtpl:179
qw422016.N().S(`
<div class="layout">
<main class="main-width user-list">
<h1>List of users</h1>
`)
//line views/stuff.qtpl:175
//line views/stuff.qtpl:184
var (
admins = 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(`
<section>
<h2>Admins</h2>
<ol>`)
//line views/stuff.qtpl:193
//line views/stuff.qtpl:202
for _, name := range admins {
//line views/stuff.qtpl:193
//line views/stuff.qtpl:202
qw422016.N().S(`
<li><a href="/hypha/`)
//line views/stuff.qtpl:194
//line views/stuff.qtpl:203
qw422016.E().S(cfg.UserHypha)
//line views/stuff.qtpl:194
//line views/stuff.qtpl:203
qw422016.N().S(`/`)
//line views/stuff.qtpl:194
//line views/stuff.qtpl:203
qw422016.E().S(name)
//line views/stuff.qtpl:194
//line views/stuff.qtpl:203
qw422016.N().S(`">`)
//line views/stuff.qtpl:194
//line views/stuff.qtpl:203
qw422016.E().S(name)
//line views/stuff.qtpl:194
//line views/stuff.qtpl:203
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>
</section>
<section>
<h2>Moderators</h2>
<ol>`)
//line views/stuff.qtpl:199
//line views/stuff.qtpl:208
for _, name := range moderators {
//line views/stuff.qtpl:199
//line views/stuff.qtpl:208
qw422016.N().S(`
<li><a href="/hypha/`)
//line views/stuff.qtpl:200
//line views/stuff.qtpl:209
qw422016.E().S(cfg.UserHypha)
//line views/stuff.qtpl:200
//line views/stuff.qtpl:209
qw422016.N().S(`/`)
//line views/stuff.qtpl:200
//line views/stuff.qtpl:209
qw422016.E().S(name)
//line views/stuff.qtpl:200
//line views/stuff.qtpl:209
qw422016.N().S(`">`)
//line views/stuff.qtpl:200
//line views/stuff.qtpl:209
qw422016.E().S(name)
//line views/stuff.qtpl:200
//line views/stuff.qtpl:209
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>
</section>
<section>
<h2>Editors</h2>
<ol>`)
//line views/stuff.qtpl:205
//line views/stuff.qtpl:214
for _, name := range editors {
//line views/stuff.qtpl:205
//line views/stuff.qtpl:214
qw422016.N().S(`
<li><a href="/hypha/`)
//line views/stuff.qtpl:206
//line views/stuff.qtpl:215
qw422016.E().S(cfg.UserHypha)
//line views/stuff.qtpl:206
//line views/stuff.qtpl:215
qw422016.N().S(`/`)
//line views/stuff.qtpl:206
//line views/stuff.qtpl:215
qw422016.E().S(name)
//line views/stuff.qtpl:206
//line views/stuff.qtpl:215
qw422016.N().S(`">`)
//line views/stuff.qtpl:206
//line views/stuff.qtpl:215
qw422016.E().S(name)
//line views/stuff.qtpl:206
//line views/stuff.qtpl:215
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>
</section>
</main>
</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) {
//line views/stuff.qtpl:211
//line views/stuff.qtpl:220
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:211
//line views/stuff.qtpl:220
StreamUserListHTML(qw422016)
//line views/stuff.qtpl:211
//line views/stuff.qtpl:220
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 {
//line views/stuff.qtpl:211
//line views/stuff.qtpl:220
qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:211
//line views/stuff.qtpl:220
WriteUserListHTML(qb422016)
//line views/stuff.qtpl:211
//line views/stuff.qtpl:220
qs422016 := string(qb422016.B)
//line views/stuff.qtpl:211
//line views/stuff.qtpl:220
qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:211
//line views/stuff.qtpl:220
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) {
//line views/stuff.qtpl:213
//line views/stuff.qtpl:222
qw422016.N().S(`
<div class="layout">
<main class="main-width">
<h1>List of hyphae</h1>
<p>This wiki has `)
//line views/stuff.qtpl:217
//line views/stuff.qtpl:226
qw422016.N().D(hyphae.Count())
//line views/stuff.qtpl:217
//line views/stuff.qtpl:226
qw422016.N().S(` hyphae.</p>
<ul class="hypha-list">
`)
//line views/stuff.qtpl:219
//line views/stuff.qtpl:228
for h := range hyphae.YieldExistingHyphae() {
//line views/stuff.qtpl:219
//line views/stuff.qtpl:228
qw422016.N().S(`
<li class="hypha-list__entry">
<a class="hypha-list__link" href="/hypha/`)
//line views/stuff.qtpl:221
//line views/stuff.qtpl:230
qw422016.E().S(h.Name)
//line views/stuff.qtpl:221
//line views/stuff.qtpl:230
qw422016.N().S(`">`)
//line views/stuff.qtpl:221
//line views/stuff.qtpl:230
qw422016.E().S(util.BeautifulName(h.Name))
//line views/stuff.qtpl:221
//line views/stuff.qtpl:230
qw422016.N().S(`</a>
`)
//line views/stuff.qtpl:222
//line views/stuff.qtpl:231
if h.BinaryPath != "" {
//line views/stuff.qtpl:222
//line views/stuff.qtpl:231
qw422016.N().S(`
<span class="hypha-list__amnt-type">`)
//line views/stuff.qtpl:223
//line views/stuff.qtpl:232
qw422016.E().S(filepath.Ext(h.BinaryPath)[1:])
//line views/stuff.qtpl:223
//line views/stuff.qtpl:232
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(`
</li>
`)
//line views/stuff.qtpl:226
//line views/stuff.qtpl:235
}
//line views/stuff.qtpl:226
//line views/stuff.qtpl:235
qw422016.N().S(`
</ul>
</main>
</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) {
//line views/stuff.qtpl:230
//line views/stuff.qtpl:239
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:230
//line views/stuff.qtpl:239
StreamHyphaListHTML(qw422016)
//line views/stuff.qtpl:230
//line views/stuff.qtpl:239
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 {
//line views/stuff.qtpl:230
//line views/stuff.qtpl:239
qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:230
//line views/stuff.qtpl:239
WriteHyphaListHTML(qb422016)
//line views/stuff.qtpl:230
//line views/stuff.qtpl:239
qs422016 := string(qb422016.B)
//line views/stuff.qtpl:230
//line views/stuff.qtpl:239
qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:230
//line views/stuff.qtpl:239
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) {
//line views/stuff.qtpl:232
//line views/stuff.qtpl:241
qw422016.N().S(`
<div class="layout">
<main class="main-width">
<section>
<h1>About `)
//line views/stuff.qtpl:236
//line views/stuff.qtpl:245
qw422016.E().S(cfg.WikiName)
//line views/stuff.qtpl:236
//line views/stuff.qtpl:245
qw422016.N().S(`</h1>
<ul>
<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 {
//line views/stuff.qtpl:239
//line views/stuff.qtpl:248
qw422016.N().S(` <li><b>User count:</b> `)
//line views/stuff.qtpl:240
//line views/stuff.qtpl:249
qw422016.N().DUL(user.Count())
//line views/stuff.qtpl:240
//line views/stuff.qtpl:249
qw422016.N().S(`</li>
<li><b>Home page:</b> <a href="/">`)
//line views/stuff.qtpl:241
//line views/stuff.qtpl:250
qw422016.E().S(cfg.HomeHypha)
//line views/stuff.qtpl:241
//line views/stuff.qtpl:250
qw422016.N().S(`</a></li>
<li><b>Administrators:</b>`)
//line views/stuff.qtpl:242
//line views/stuff.qtpl:251
for i, username := range user.ListUsersWithGroup("admin") {
//line views/stuff.qtpl:243
//line views/stuff.qtpl:252
if i > 0 {
//line views/stuff.qtpl:243
//line views/stuff.qtpl:252
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/`)
//line views/stuff.qtpl:245
//line views/stuff.qtpl:254
qw422016.E().S(cfg.UserHypha)
//line views/stuff.qtpl:245
//line views/stuff.qtpl:254
qw422016.N().S(`/`)
//line views/stuff.qtpl:245
//line views/stuff.qtpl:254
qw422016.E().S(username)
//line views/stuff.qtpl:245
//line views/stuff.qtpl:254
qw422016.N().S(`">`)
//line views/stuff.qtpl:245
//line views/stuff.qtpl:254
qw422016.E().S(username)
//line views/stuff.qtpl:245
//line views/stuff.qtpl:254
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>
`)
//line views/stuff.qtpl:246
//line views/stuff.qtpl:255
} else {
//line views/stuff.qtpl:246
//line views/stuff.qtpl:255
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>
<p>See <a href="/list">/list</a> for information about hyphae on this wiki.</p>
</section>
</main>
</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) {
//line views/stuff.qtpl:254
//line views/stuff.qtpl:263
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:254
//line views/stuff.qtpl:263
StreamAboutHTML(qw422016)
//line views/stuff.qtpl:254
//line views/stuff.qtpl:263
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 {
//line views/stuff.qtpl:254
//line views/stuff.qtpl:263
qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:254
//line views/stuff.qtpl:263
WriteAboutHTML(qb422016)
//line views/stuff.qtpl:254
//line views/stuff.qtpl:263
qs422016 := string(qb422016.B)
//line views/stuff.qtpl:254
//line views/stuff.qtpl:263
qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:254
//line views/stuff.qtpl:263
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) {
//line views/stuff.qtpl:256
//line views/stuff.qtpl:265
qw422016.N().S(`
`)
//line views/stuff.qtpl:257
//line views/stuff.qtpl:266
for _, scriptPath := range cfg.CommonScripts {
//line views/stuff.qtpl:257
//line views/stuff.qtpl:266
qw422016.N().S(`
<script src="`)
//line views/stuff.qtpl:258
//line views/stuff.qtpl:267
qw422016.E().S(scriptPath)
//line views/stuff.qtpl:258
//line views/stuff.qtpl:267
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(`
`)
//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) {
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
StreamCommonScripts(qw422016)
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
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 {
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
qb422016 := qt422016.AcquireByteBuffer()
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
WriteCommonScripts(qb422016)
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
qs422016 := string(qb422016.B)
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
qt422016.ReleaseByteBuffer(qb422016)
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
return qs422016
//line views/stuff.qtpl:260
//line views/stuff.qtpl:269
}