mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2025-01-06 10:00:26 +00:00
Implement primitive search
Basically, it looks if the query is a substring of hypha names
This commit is contained in:
parent
684172dab4
commit
938a9e832d
27
shroom/search.go
Normal file
27
shroom/search.go
Normal file
@ -0,0 +1,27 @@
|
||||
package shroom
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/bouncepaw/mycorrhiza/hyphae"
|
||||
"github.com/bouncepaw/mycorrhiza/util"
|
||||
)
|
||||
|
||||
func YieldHyphaNamesContainingString(query string) <-chan string {
|
||||
query = util.CanonicalName(query)
|
||||
out := make(chan string)
|
||||
go func() {
|
||||
for h := range hyphae.YieldExistingHyphae() {
|
||||
if hyphaNameMatchesString(h.Name, query) {
|
||||
out <- h.Name
|
||||
}
|
||||
}
|
||||
close(out)
|
||||
}()
|
||||
return out
|
||||
}
|
||||
|
||||
// This thing gotta be changed one day, when a hero has time to implement a good searching algorithm.
|
||||
func hyphaNameMatchesString(hyphaName, query string) bool {
|
||||
return strings.Contains(hyphaName, query)
|
||||
}
|
@ -44,6 +44,19 @@
|
||||
</html>
|
||||
{% endfunc %}
|
||||
|
||||
{% func PrimitiveSearchHTML(query string, generator func(string) <-chan string) %}
|
||||
<div class="layout">
|
||||
<main class="main-width primitive-search">
|
||||
<ul class="primitive-search__results">
|
||||
{% for hyphaName := range generator(query) %}
|
||||
<li class="primitive-search__entry">
|
||||
<a class="primitive-search__link wikilink" href="/hypha/{%s hyphaName %}">{%s hyphaName %}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</main>
|
||||
</div>
|
||||
{% endfunc %}
|
||||
|
||||
{% func HelpHTML(content string) %}
|
||||
<div class="layout">
|
||||
<main class="main-width help">
|
||||
|
@ -142,95 +142,155 @@ func BaseHTML(title, body string, u *user.User, headElements ...string) string {
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:47
|
||||
func StreamHelpHTML(qw422016 *qt422016.Writer, content string) {
|
||||
func StreamPrimitiveSearchHTML(qw422016 *qt422016.Writer, query string, generator func(string) <-chan string) {
|
||||
//line views/stuff.qtpl:47
|
||||
qw422016.N().S(`
|
||||
<div class="layout">
|
||||
<main class="main-width primitive-search">
|
||||
<ul class="primitive-search__results">
|
||||
`)
|
||||
//line views/stuff.qtpl:51
|
||||
for hyphaName := range generator(query) {
|
||||
//line views/stuff.qtpl:51
|
||||
qw422016.N().S(`
|
||||
<li class="primitive-search__entry">
|
||||
<a class="primitive-search__link wikilink" href="/hypha/`)
|
||||
//line views/stuff.qtpl:53
|
||||
qw422016.E().S(hyphaName)
|
||||
//line views/stuff.qtpl:53
|
||||
qw422016.N().S(`">`)
|
||||
//line views/stuff.qtpl:53
|
||||
qw422016.E().S(hyphaName)
|
||||
//line views/stuff.qtpl:53
|
||||
qw422016.N().S(`</a>
|
||||
</li>
|
||||
`)
|
||||
//line views/stuff.qtpl:55
|
||||
}
|
||||
//line views/stuff.qtpl:55
|
||||
qw422016.N().S(`
|
||||
</main>
|
||||
</div>
|
||||
`)
|
||||
//line views/stuff.qtpl:58
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:58
|
||||
func WritePrimitiveSearchHTML(qq422016 qtio422016.Writer, query string, generator func(string) <-chan string) {
|
||||
//line views/stuff.qtpl:58
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/stuff.qtpl:58
|
||||
StreamPrimitiveSearchHTML(qw422016, query, generator)
|
||||
//line views/stuff.qtpl:58
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/stuff.qtpl:58
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:58
|
||||
func PrimitiveSearchHTML(query string, generator func(string) <-chan string) string {
|
||||
//line views/stuff.qtpl:58
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/stuff.qtpl:58
|
||||
WritePrimitiveSearchHTML(qb422016, query, generator)
|
||||
//line views/stuff.qtpl:58
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/stuff.qtpl:58
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/stuff.qtpl:58
|
||||
return qs422016
|
||||
//line views/stuff.qtpl:58
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:60
|
||||
func StreamHelpHTML(qw422016 *qt422016.Writer, content string) {
|
||||
//line views/stuff.qtpl:60
|
||||
qw422016.N().S(`
|
||||
<div class="layout">
|
||||
<main class="main-width help">
|
||||
<article>
|
||||
`)
|
||||
//line views/stuff.qtpl:51
|
||||
//line views/stuff.qtpl:64
|
||||
qw422016.N().S(content)
|
||||
//line views/stuff.qtpl:51
|
||||
//line views/stuff.qtpl:64
|
||||
qw422016.N().S(`
|
||||
</article>
|
||||
</main>
|
||||
`)
|
||||
//line views/stuff.qtpl:54
|
||||
//line views/stuff.qtpl:67
|
||||
qw422016.N().S(helpTopicsHTML())
|
||||
//line views/stuff.qtpl:54
|
||||
//line views/stuff.qtpl:67
|
||||
qw422016.N().S(`
|
||||
</div>
|
||||
`)
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
func WriteHelpHTML(qq422016 qtio422016.Writer, content string) {
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
StreamHelpHTML(qw422016, content)
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
func HelpHTML(content string) string {
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
WriteHelpHTML(qb422016, content)
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
return qs422016
|
||||
//line views/stuff.qtpl:56
|
||||
//line views/stuff.qtpl:69
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:58
|
||||
//line views/stuff.qtpl:71
|
||||
func StreamHelpEmptyErrorHTML(qw422016 *qt422016.Writer) {
|
||||
//line views/stuff.qtpl:58
|
||||
//line views/stuff.qtpl:71
|
||||
qw422016.N().S(`
|
||||
<h1>This entry does not exist!</h1>
|
||||
<p>Try finding a different entry that would help you.</p>
|
||||
<p>If you want to write this entry by yourself, consider <a class="wikilink wikilink_external wikilink_https" href="https://github.com/bouncepaw/mycorrhiza">contributing</a> to Mycorrhiza Wiki directly.</p>
|
||||
`)
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
func WriteHelpEmptyErrorHTML(qq422016 qtio422016.Writer) {
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
StreamHelpEmptyErrorHTML(qw422016)
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
func HelpEmptyErrorHTML() string {
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
WriteHelpEmptyErrorHTML(qb422016)
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
return qs422016
|
||||
//line views/stuff.qtpl:62
|
||||
//line views/stuff.qtpl:75
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:64
|
||||
//line views/stuff.qtpl:77
|
||||
func streamhelpTopicsHTML(qw422016 *qt422016.Writer) {
|
||||
//line views/stuff.qtpl:64
|
||||
//line views/stuff.qtpl:77
|
||||
qw422016.N().S(`
|
||||
<aside class="help-topics layout-card">
|
||||
<h2 class="layout-card__title">Help topics</h2>
|
||||
@ -249,44 +309,44 @@ func streamhelpTopicsHTML(qw422016 *qt422016.Writer) {
|
||||
</ul>
|
||||
</aside>
|
||||
`)
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
func writehelpTopicsHTML(qq422016 qtio422016.Writer) {
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
streamhelpTopicsHTML(qw422016)
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
func helpTopicsHTML() string {
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
writehelpTopicsHTML(qb422016)
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
return qs422016
|
||||
//line views/stuff.qtpl:81
|
||||
//line views/stuff.qtpl:94
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:83
|
||||
//line views/stuff.qtpl:96
|
||||
func StreamUserListHTML(qw422016 *qt422016.Writer) {
|
||||
//line views/stuff.qtpl:83
|
||||
//line views/stuff.qtpl:96
|
||||
qw422016.N().S(`
|
||||
<div class="layout">
|
||||
<main class="main-width user-list">
|
||||
<h1>List of users</h1>
|
||||
`)
|
||||
//line views/stuff.qtpl:88
|
||||
//line views/stuff.qtpl:101
|
||||
var (
|
||||
admins = make([]string, 0)
|
||||
moderators = make([]string, 0)
|
||||
@ -303,345 +363,345 @@ func StreamUserListHTML(qw422016 *qt422016.Writer) {
|
||||
}
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:103
|
||||
//line views/stuff.qtpl:116
|
||||
qw422016.N().S(`
|
||||
<section>
|
||||
<h2>Admins</h2>
|
||||
<ol>`)
|
||||
//line views/stuff.qtpl:106
|
||||
//line views/stuff.qtpl:119
|
||||
for _, name := range admins {
|
||||
//line views/stuff.qtpl:106
|
||||
//line views/stuff.qtpl:119
|
||||
qw422016.N().S(`
|
||||
<li><a href="/hypha/`)
|
||||
//line views/stuff.qtpl:107
|
||||
//line views/stuff.qtpl:120
|
||||
qw422016.E().S(cfg.UserHypha)
|
||||
//line views/stuff.qtpl:107
|
||||
//line views/stuff.qtpl:120
|
||||
qw422016.N().S(`/`)
|
||||
//line views/stuff.qtpl:107
|
||||
//line views/stuff.qtpl:120
|
||||
qw422016.E().S(name)
|
||||
//line views/stuff.qtpl:107
|
||||
//line views/stuff.qtpl:120
|
||||
qw422016.N().S(`">`)
|
||||
//line views/stuff.qtpl:107
|
||||
//line views/stuff.qtpl:120
|
||||
qw422016.E().S(name)
|
||||
//line views/stuff.qtpl:107
|
||||
//line views/stuff.qtpl:120
|
||||
qw422016.N().S(`</a></li>
|
||||
`)
|
||||
//line views/stuff.qtpl:108
|
||||
//line views/stuff.qtpl:121
|
||||
}
|
||||
//line views/stuff.qtpl:108
|
||||
//line views/stuff.qtpl:121
|
||||
qw422016.N().S(`</ol>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Moderators</h2>
|
||||
<ol>`)
|
||||
//line views/stuff.qtpl:112
|
||||
//line views/stuff.qtpl:125
|
||||
for _, name := range moderators {
|
||||
//line views/stuff.qtpl:112
|
||||
//line views/stuff.qtpl:125
|
||||
qw422016.N().S(`
|
||||
<li><a href="/hypha/`)
|
||||
//line views/stuff.qtpl:113
|
||||
//line views/stuff.qtpl:126
|
||||
qw422016.E().S(cfg.UserHypha)
|
||||
//line views/stuff.qtpl:113
|
||||
//line views/stuff.qtpl:126
|
||||
qw422016.N().S(`/`)
|
||||
//line views/stuff.qtpl:113
|
||||
//line views/stuff.qtpl:126
|
||||
qw422016.E().S(name)
|
||||
//line views/stuff.qtpl:113
|
||||
//line views/stuff.qtpl:126
|
||||
qw422016.N().S(`">`)
|
||||
//line views/stuff.qtpl:113
|
||||
//line views/stuff.qtpl:126
|
||||
qw422016.E().S(name)
|
||||
//line views/stuff.qtpl:113
|
||||
//line views/stuff.qtpl:126
|
||||
qw422016.N().S(`</a></li>
|
||||
`)
|
||||
//line views/stuff.qtpl:114
|
||||
//line views/stuff.qtpl:127
|
||||
}
|
||||
//line views/stuff.qtpl:114
|
||||
//line views/stuff.qtpl:127
|
||||
qw422016.N().S(`</ol>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Editors</h2>
|
||||
<ol>`)
|
||||
//line views/stuff.qtpl:118
|
||||
//line views/stuff.qtpl:131
|
||||
for _, name := range editors {
|
||||
//line views/stuff.qtpl:118
|
||||
//line views/stuff.qtpl:131
|
||||
qw422016.N().S(`
|
||||
<li><a href="/hypha/`)
|
||||
//line views/stuff.qtpl:119
|
||||
//line views/stuff.qtpl:132
|
||||
qw422016.E().S(cfg.UserHypha)
|
||||
//line views/stuff.qtpl:119
|
||||
//line views/stuff.qtpl:132
|
||||
qw422016.N().S(`/`)
|
||||
//line views/stuff.qtpl:119
|
||||
//line views/stuff.qtpl:132
|
||||
qw422016.E().S(name)
|
||||
//line views/stuff.qtpl:119
|
||||
//line views/stuff.qtpl:132
|
||||
qw422016.N().S(`">`)
|
||||
//line views/stuff.qtpl:119
|
||||
//line views/stuff.qtpl:132
|
||||
qw422016.E().S(name)
|
||||
//line views/stuff.qtpl:119
|
||||
//line views/stuff.qtpl:132
|
||||
qw422016.N().S(`</a></li>
|
||||
`)
|
||||
//line views/stuff.qtpl:120
|
||||
//line views/stuff.qtpl:133
|
||||
}
|
||||
//line views/stuff.qtpl:120
|
||||
//line views/stuff.qtpl:133
|
||||
qw422016.N().S(`</ol>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
`)
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
func WriteUserListHTML(qq422016 qtio422016.Writer) {
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
StreamUserListHTML(qw422016)
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
func UserListHTML() string {
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
WriteUserListHTML(qb422016)
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
return qs422016
|
||||
//line views/stuff.qtpl:124
|
||||
//line views/stuff.qtpl:137
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:126
|
||||
//line views/stuff.qtpl:139
|
||||
func StreamHyphaListHTML(qw422016 *qt422016.Writer) {
|
||||
//line views/stuff.qtpl:126
|
||||
//line views/stuff.qtpl:139
|
||||
qw422016.N().S(`
|
||||
<div class="layout">
|
||||
<main class="main-width">
|
||||
<h1>List of hyphae</h1>
|
||||
<p>This wiki has `)
|
||||
//line views/stuff.qtpl:130
|
||||
//line views/stuff.qtpl:143
|
||||
qw422016.N().D(hyphae.Count())
|
||||
//line views/stuff.qtpl:130
|
||||
//line views/stuff.qtpl:143
|
||||
qw422016.N().S(` hyphae.</p>
|
||||
<ul class="hypha-list">
|
||||
`)
|
||||
//line views/stuff.qtpl:132
|
||||
//line views/stuff.qtpl:145
|
||||
for h := range hyphae.YieldExistingHyphae() {
|
||||
//line views/stuff.qtpl:132
|
||||
//line views/stuff.qtpl:145
|
||||
qw422016.N().S(`
|
||||
<li class="hypha-list__entry">
|
||||
<a class="hypha-list__link" href="/hypha/`)
|
||||
//line views/stuff.qtpl:134
|
||||
//line views/stuff.qtpl:147
|
||||
qw422016.E().S(h.Name)
|
||||
//line views/stuff.qtpl:134
|
||||
//line views/stuff.qtpl:147
|
||||
qw422016.N().S(`">`)
|
||||
//line views/stuff.qtpl:134
|
||||
//line views/stuff.qtpl:147
|
||||
qw422016.E().S(util.BeautifulName(h.Name))
|
||||
//line views/stuff.qtpl:134
|
||||
//line views/stuff.qtpl:147
|
||||
qw422016.N().S(`</a>
|
||||
`)
|
||||
//line views/stuff.qtpl:135
|
||||
//line views/stuff.qtpl:148
|
||||
if h.BinaryPath != "" {
|
||||
//line views/stuff.qtpl:135
|
||||
//line views/stuff.qtpl:148
|
||||
qw422016.N().S(`
|
||||
<span class="hypha-list__amnt-type">`)
|
||||
//line views/stuff.qtpl:136
|
||||
//line views/stuff.qtpl:149
|
||||
qw422016.E().S(filepath.Ext(h.BinaryPath)[1:])
|
||||
//line views/stuff.qtpl:136
|
||||
//line views/stuff.qtpl:149
|
||||
qw422016.N().S(`</span>
|
||||
`)
|
||||
//line views/stuff.qtpl:137
|
||||
//line views/stuff.qtpl:150
|
||||
}
|
||||
//line views/stuff.qtpl:137
|
||||
//line views/stuff.qtpl:150
|
||||
qw422016.N().S(`
|
||||
</li>
|
||||
`)
|
||||
//line views/stuff.qtpl:139
|
||||
//line views/stuff.qtpl:152
|
||||
}
|
||||
//line views/stuff.qtpl:139
|
||||
//line views/stuff.qtpl:152
|
||||
qw422016.N().S(`
|
||||
</ul>
|
||||
</main>
|
||||
</div>
|
||||
`)
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
func WriteHyphaListHTML(qq422016 qtio422016.Writer) {
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
StreamHyphaListHTML(qw422016)
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
func HyphaListHTML() string {
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
WriteHyphaListHTML(qb422016)
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
return qs422016
|
||||
//line views/stuff.qtpl:143
|
||||
//line views/stuff.qtpl:156
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:145
|
||||
//line views/stuff.qtpl:158
|
||||
func StreamAboutHTML(qw422016 *qt422016.Writer) {
|
||||
//line views/stuff.qtpl:145
|
||||
//line views/stuff.qtpl:158
|
||||
qw422016.N().S(`
|
||||
<div class="layout">
|
||||
<main class="main-width">
|
||||
<section>
|
||||
<h1>About `)
|
||||
//line views/stuff.qtpl:149
|
||||
//line views/stuff.qtpl:162
|
||||
qw422016.E().S(cfg.WikiName)
|
||||
//line views/stuff.qtpl:149
|
||||
//line views/stuff.qtpl:162
|
||||
qw422016.N().S(`</h1>
|
||||
<ul>
|
||||
<li><b><a href="https://mycorrhiza.wiki">Mycorrhiza Wiki</a> version:</b> 1.3.0</li>
|
||||
`)
|
||||
//line views/stuff.qtpl:152
|
||||
//line views/stuff.qtpl:165
|
||||
if cfg.UseAuth {
|
||||
//line views/stuff.qtpl:152
|
||||
//line views/stuff.qtpl:165
|
||||
qw422016.N().S(` <li><b>User count:</b> `)
|
||||
//line views/stuff.qtpl:153
|
||||
//line views/stuff.qtpl:166
|
||||
qw422016.N().DUL(user.Count())
|
||||
//line views/stuff.qtpl:153
|
||||
//line views/stuff.qtpl:166
|
||||
qw422016.N().S(`</li>
|
||||
<li><b>Home page:</b> <a href="/">`)
|
||||
//line views/stuff.qtpl:154
|
||||
//line views/stuff.qtpl:167
|
||||
qw422016.E().S(cfg.HomeHypha)
|
||||
//line views/stuff.qtpl:154
|
||||
//line views/stuff.qtpl:167
|
||||
qw422016.N().S(`</a></li>
|
||||
<li><b>Administrators:</b>`)
|
||||
//line views/stuff.qtpl:155
|
||||
//line views/stuff.qtpl:168
|
||||
for i, username := range user.ListUsersWithGroup("admin") {
|
||||
//line views/stuff.qtpl:156
|
||||
//line views/stuff.qtpl:169
|
||||
if i > 0 {
|
||||
//line views/stuff.qtpl:156
|
||||
//line views/stuff.qtpl:169
|
||||
qw422016.N().S(`<span aria-hidden="true">, </span>
|
||||
`)
|
||||
//line views/stuff.qtpl:157
|
||||
//line views/stuff.qtpl:170
|
||||
}
|
||||
//line views/stuff.qtpl:157
|
||||
//line views/stuff.qtpl:170
|
||||
qw422016.N().S(` <a href="/hypha/`)
|
||||
//line views/stuff.qtpl:158
|
||||
//line views/stuff.qtpl:171
|
||||
qw422016.E().S(cfg.UserHypha)
|
||||
//line views/stuff.qtpl:158
|
||||
//line views/stuff.qtpl:171
|
||||
qw422016.N().S(`/`)
|
||||
//line views/stuff.qtpl:158
|
||||
//line views/stuff.qtpl:171
|
||||
qw422016.E().S(username)
|
||||
//line views/stuff.qtpl:158
|
||||
//line views/stuff.qtpl:171
|
||||
qw422016.N().S(`">`)
|
||||
//line views/stuff.qtpl:158
|
||||
//line views/stuff.qtpl:171
|
||||
qw422016.E().S(username)
|
||||
//line views/stuff.qtpl:158
|
||||
//line views/stuff.qtpl:171
|
||||
qw422016.N().S(`</a>`)
|
||||
//line views/stuff.qtpl:158
|
||||
//line views/stuff.qtpl:171
|
||||
}
|
||||
//line views/stuff.qtpl:158
|
||||
//line views/stuff.qtpl:171
|
||||
qw422016.N().S(`</li>
|
||||
`)
|
||||
//line views/stuff.qtpl:159
|
||||
//line views/stuff.qtpl:172
|
||||
} else {
|
||||
//line views/stuff.qtpl:159
|
||||
//line views/stuff.qtpl:172
|
||||
qw422016.N().S(` <li>This wiki does not use authorization</li>
|
||||
`)
|
||||
//line views/stuff.qtpl:161
|
||||
//line views/stuff.qtpl:174
|
||||
}
|
||||
//line views/stuff.qtpl:161
|
||||
//line views/stuff.qtpl:174
|
||||
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:167
|
||||
//line views/stuff.qtpl:180
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
func WriteAboutHTML(qq422016 qtio422016.Writer) {
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
StreamAboutHTML(qw422016)
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
func AboutHTML() string {
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
WriteAboutHTML(qb422016)
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
return qs422016
|
||||
//line views/stuff.qtpl:167
|
||||
//line views/stuff.qtpl:180
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:169
|
||||
//line views/stuff.qtpl:182
|
||||
func StreamCommonScripts(qw422016 *qt422016.Writer) {
|
||||
//line views/stuff.qtpl:169
|
||||
//line views/stuff.qtpl:182
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
//line views/stuff.qtpl:170
|
||||
//line views/stuff.qtpl:183
|
||||
for _, scriptPath := range cfg.CommonScripts {
|
||||
//line views/stuff.qtpl:170
|
||||
//line views/stuff.qtpl:183
|
||||
qw422016.N().S(`
|
||||
<script src="`)
|
||||
//line views/stuff.qtpl:171
|
||||
//line views/stuff.qtpl:184
|
||||
qw422016.E().S(scriptPath)
|
||||
//line views/stuff.qtpl:171
|
||||
//line views/stuff.qtpl:184
|
||||
qw422016.N().S(`"></script>
|
||||
`)
|
||||
//line views/stuff.qtpl:172
|
||||
//line views/stuff.qtpl:185
|
||||
}
|
||||
//line views/stuff.qtpl:172
|
||||
//line views/stuff.qtpl:185
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
func WriteCommonScripts(qq422016 qtio422016.Writer) {
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
StreamCommonScripts(qw422016)
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
qt422016.ReleaseWriter(qw422016)
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
}
|
||||
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
func CommonScripts() string {
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
WriteCommonScripts(qb422016)
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
qs422016 := string(qb422016.B)
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
qt422016.ReleaseByteBuffer(qb422016)
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
return qs422016
|
||||
//line views/stuff.qtpl:173
|
||||
//line views/stuff.qtpl:186
|
||||
}
|
||||
|
32
web/search.go
Normal file
32
web/search.go
Normal file
@ -0,0 +1,32 @@
|
||||
package web
|
||||
|
||||
import (
|
||||
"github.com/bouncepaw/mycorrhiza/shroom"
|
||||
"github.com/bouncepaw/mycorrhiza/user"
|
||||
"github.com/bouncepaw/mycorrhiza/views"
|
||||
"io"
|
||||
"net/http"
|
||||
|
||||
"github.com/bouncepaw/mycorrhiza/util"
|
||||
)
|
||||
|
||||
func initSearch() {
|
||||
http.HandleFunc("/primitive-search/", handlerPrimitiveSearch)
|
||||
}
|
||||
|
||||
func handlerPrimitiveSearch(w http.ResponseWriter, rq *http.Request) {
|
||||
util.PrepareRq(rq)
|
||||
var (
|
||||
// It just so happened that this function does what we need! Sorry for party rocking.
|
||||
query = util.HyphaNameFromRq(rq, "primitive-search")
|
||||
u = user.FromRequest(rq)
|
||||
)
|
||||
_, _ = io.WriteString(
|
||||
w,
|
||||
views.BaseHTML(
|
||||
"Search: "+query,
|
||||
views.PrimitiveSearchHTML(query, shroom.YieldHyphaNamesContainingString),
|
||||
u,
|
||||
),
|
||||
)
|
||||
}
|
@ -80,6 +80,7 @@ func Init() {
|
||||
initAuth()
|
||||
initHistory()
|
||||
initStuff()
|
||||
initSearch()
|
||||
|
||||
// Miscellaneous
|
||||
http.HandleFunc("/user-list/", handlerUserList)
|
||||
|
Loading…
Reference in New Issue
Block a user