mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2025-01-08 02:40:26 +00:00
Categories, views: Refactor the list view
This commit is contained in:
parent
3dad3a3a4f
commit
c3fafb735f
@ -1,4 +1,5 @@
|
|||||||
{{define "category x"}}Category {{. | beautifulName}}{{end}}
|
{{define "category x"}}Category {{. | beautifulName}}{{end}}
|
||||||
|
{{define "category list heading"}}Category list{{end}}
|
||||||
|
|
||||||
{{define "category card"}}
|
{{define "category card"}}
|
||||||
{{$hyphaName := .HyphaName}}
|
{{$hyphaName := .HyphaName}}
|
||||||
@ -63,20 +64,3 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</main>
|
</main>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{define "category list"}}
|
|
||||||
<main class="main-width category-list">
|
|
||||||
<h1>{{block `category list heading` .}}Category list{{end}}</h1>
|
|
||||||
{{if len .Categories}}
|
|
||||||
<ul class="category-list__entries">
|
|
||||||
{{range .Categories}}
|
|
||||||
<li class="category-list__entry">
|
|
||||||
<a class="category-list__link" href="/category/{{.}}">{{beautifulName .}}</a>
|
|
||||||
</li>
|
|
||||||
{{end}}
|
|
||||||
</ul>
|
|
||||||
{{else}}
|
|
||||||
<p>{{block `no categories` .}}This wiki has no categories.{{end}}</p>
|
|
||||||
{{end}}
|
|
||||||
</main>
|
|
||||||
{{end}}
|
|
@ -1,10 +1,8 @@
|
|||||||
package web
|
package categories
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/bouncepaw/mycorrhiza/categories"
|
|
||||||
"github.com/bouncepaw/mycorrhiza/user"
|
"github.com/bouncepaw/mycorrhiza/user"
|
||||||
"github.com/bouncepaw/mycorrhiza/util"
|
"github.com/bouncepaw/mycorrhiza/util"
|
||||||
"github.com/bouncepaw/mycorrhiza/views"
|
|
||||||
"github.com/bouncepaw/mycorrhiza/viewutil"
|
"github.com/bouncepaw/mycorrhiza/viewutil"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"io"
|
"io"
|
||||||
@ -13,16 +11,17 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func initCategories(r *mux.Router) {
|
func InitCategoriesHandlers(r *mux.Router) {
|
||||||
r.PathPrefix("/add-to-category").HandlerFunc(handlerAddToCategory).Methods("POST")
|
r.PathPrefix("/add-to-category").HandlerFunc(handlerAddToCategory).Methods("POST")
|
||||||
r.PathPrefix("/remove-from-category").HandlerFunc(handlerRemoveFromCategory).Methods("POST")
|
r.PathPrefix("/remove-from-category").HandlerFunc(handlerRemoveFromCategory).Methods("POST")
|
||||||
r.PathPrefix("/category/").HandlerFunc(handlerCategory).Methods("GET")
|
r.PathPrefix("/category/").HandlerFunc(handlerCategory).Methods("GET")
|
||||||
r.PathPrefix("/category").HandlerFunc(handlerListCategory).Methods("GET")
|
r.PathPrefix("/category").HandlerFunc(handlerListCategory).Methods("GET")
|
||||||
|
prepareViews()
|
||||||
}
|
}
|
||||||
|
|
||||||
func handlerListCategory(w http.ResponseWriter, rq *http.Request) {
|
func handlerListCategory(w http.ResponseWriter, rq *http.Request) {
|
||||||
log.Println("Viewing list of categories")
|
log.Println("Viewing list of categories")
|
||||||
views.CategoryList(viewutil.MetaFrom(w, rq))
|
categoryList(viewutil.MetaFrom(w, rq))
|
||||||
}
|
}
|
||||||
|
|
||||||
func handlerCategory(w http.ResponseWriter, rq *http.Request) {
|
func handlerCategory(w http.ResponseWriter, rq *http.Request) {
|
||||||
@ -33,7 +32,7 @@ func handlerCategory(w http.ResponseWriter, rq *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Println("Viewing category", catName)
|
log.Println("Viewing category", catName)
|
||||||
views.CategoryPage(viewutil.MetaFrom(w, rq), catName)
|
categoryPage(viewutil.MetaFrom(w, rq), catName)
|
||||||
}
|
}
|
||||||
|
|
||||||
func handlerRemoveFromCategory(w http.ResponseWriter, rq *http.Request) {
|
func handlerRemoveFromCategory(w http.ResponseWriter, rq *http.Request) {
|
||||||
@ -52,7 +51,7 @@ func handlerRemoveFromCategory(w http.ResponseWriter, rq *http.Request) {
|
|||||||
http.Redirect(w, rq, redirectTo, http.StatusSeeOther)
|
http.Redirect(w, rq, redirectTo, http.StatusSeeOther)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
categories.RemoveHyphaFromCategory(hyphaName, catName)
|
RemoveHyphaFromCategory(hyphaName, catName)
|
||||||
http.Redirect(w, rq, redirectTo, http.StatusSeeOther)
|
http.Redirect(w, rq, redirectTo, http.StatusSeeOther)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,6 +71,6 @@ func handlerAddToCategory(w http.ResponseWriter, rq *http.Request) {
|
|||||||
http.Redirect(w, rq, redirectTo, http.StatusSeeOther)
|
http.Redirect(w, rq, redirectTo, http.StatusSeeOther)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
categories.AddHyphaToCategory(hyphaName, catName)
|
AddHyphaToCategory(hyphaName, catName)
|
||||||
http.Redirect(w, rq, redirectTo, http.StatusSeeOther)
|
http.Redirect(w, rq, redirectTo, http.StatusSeeOther)
|
||||||
}
|
}
|
16
categories/view_list.html
Normal file
16
categories/view_list.html
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{{define "body"}}
|
||||||
|
<main class="main-width category-list">
|
||||||
|
<h1>{{block `category list heading` .}}Category list{{end}}</h1>
|
||||||
|
{{if len .Categories}}
|
||||||
|
<ul class="category-list__entries">
|
||||||
|
{{range .Categories}}
|
||||||
|
<li class="category-list__entry">
|
||||||
|
<a class="category-list__link" href="/category/{{.}}">{{beautifulName .}}</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
|
{{else}}
|
||||||
|
<p>{{block `no categories` .}}This wiki has no categories.{{end}}</p>
|
||||||
|
{{end}}
|
||||||
|
</main>
|
||||||
|
{{end}}
|
@ -1,13 +1,14 @@
|
|||||||
package views
|
package categories
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/bouncepaw/mycorrhiza/categories"
|
"embed"
|
||||||
|
"github.com/bouncepaw/mycorrhiza/cfg"
|
||||||
"github.com/bouncepaw/mycorrhiza/util"
|
"github.com/bouncepaw/mycorrhiza/util"
|
||||||
"github.com/bouncepaw/mycorrhiza/viewutil"
|
"github.com/bouncepaw/mycorrhiza/viewutil"
|
||||||
"html/template"
|
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
"strings"
|
||||||
|
"text/template" // TODO: Fight
|
||||||
)
|
)
|
||||||
|
|
||||||
const categoriesRu = `
|
const categoriesRu = `
|
||||||
@ -25,11 +26,15 @@ const categoriesRu = `
|
|||||||
`
|
`
|
||||||
|
|
||||||
var (
|
var (
|
||||||
categoryTemplatesEn *template.Template
|
//go:embed *.html
|
||||||
categoryTemplatesRu *template.Template
|
fs embed.FS
|
||||||
|
m = template.Must
|
||||||
|
baseEn, baseRu, listEn, listRu *template.Template
|
||||||
|
categoryTemplatesEn *template.Template
|
||||||
|
categoryTemplatesRu *template.Template
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func prepareViews() {
|
||||||
categoryTemplatesEn = template.Must(template.
|
categoryTemplatesEn = template.Must(template.
|
||||||
New("category").
|
New("category").
|
||||||
Funcs(
|
Funcs(
|
||||||
@ -38,6 +43,11 @@ func init() {
|
|||||||
}).
|
}).
|
||||||
ParseFS(fs, "categories.html"))
|
ParseFS(fs, "categories.html"))
|
||||||
categoryTemplatesRu = template.Must(template.Must(categoryTemplatesEn.Clone()).Parse(categoriesRu))
|
categoryTemplatesRu = template.Must(template.Must(categoryTemplatesEn.Clone()).Parse(categoriesRu))
|
||||||
|
|
||||||
|
baseEn = m(viewutil.BaseEn.Clone())
|
||||||
|
baseRu = m(viewutil.BaseEn.Clone())
|
||||||
|
listEn = m(m(baseEn.Clone()).ParseFS(fs, "view_list.html"))
|
||||||
|
listRu = m(m(m(baseRu.Clone()).ParseFS(fs, "view_list.html")).Parse(categoriesRu))
|
||||||
}
|
}
|
||||||
|
|
||||||
func localizedCatTemplates(meta viewutil.Meta) *template.Template {
|
func localizedCatTemplates(meta viewutil.Meta) *template.Template {
|
||||||
@ -62,7 +72,7 @@ func localizedCatTemplateAsString(meta viewutil.Meta, name string, datum ...inte
|
|||||||
return buf.String()
|
return buf.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func categoryCard(meta viewutil.Meta, hyphaName string) string {
|
func CategoryCard(meta viewutil.Meta, hyphaName string) string {
|
||||||
var buf strings.Builder
|
var buf strings.Builder
|
||||||
err := localizedCatTemplates(meta).ExecuteTemplate(&buf, "category card", struct {
|
err := localizedCatTemplates(meta).ExecuteTemplate(&buf, "category card", struct {
|
||||||
HyphaName string
|
HyphaName string
|
||||||
@ -70,7 +80,7 @@ func categoryCard(meta viewutil.Meta, hyphaName string) string {
|
|||||||
GivenPermissionToModify bool
|
GivenPermissionToModify bool
|
||||||
}{
|
}{
|
||||||
hyphaName,
|
hyphaName,
|
||||||
categories.WithHypha(hyphaName),
|
WithHypha(hyphaName),
|
||||||
meta.U.CanProceed("add-to-category"),
|
meta.U.CanProceed("add-to-category"),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -79,7 +89,7 @@ func categoryCard(meta viewutil.Meta, hyphaName string) string {
|
|||||||
return buf.String()
|
return buf.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func CategoryPage(meta viewutil.Meta, catName string) {
|
func categoryPage(meta viewutil.Meta, catName string) {
|
||||||
var buf strings.Builder
|
var buf strings.Builder
|
||||||
err := localizedCatTemplates(meta).ExecuteTemplate(&buf, "category page", struct {
|
err := localizedCatTemplates(meta).ExecuteTemplate(&buf, "category page", struct {
|
||||||
CatName string
|
CatName string
|
||||||
@ -87,13 +97,13 @@ func CategoryPage(meta viewutil.Meta, catName string) {
|
|||||||
GivenPermissionToModify bool
|
GivenPermissionToModify bool
|
||||||
}{
|
}{
|
||||||
catName,
|
catName,
|
||||||
categories.Contents(catName),
|
Contents(catName),
|
||||||
meta.U.CanProceed("add-to-category"),
|
meta.U.CanProceed("add-to-category"),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
_, err = io.WriteString(meta.W, Base(
|
_, err = io.WriteString(meta.W, viewutil.Base(
|
||||||
meta,
|
meta,
|
||||||
localizedCatTemplateAsString(meta, "category x", catName),
|
localizedCatTemplateAsString(meta, "category x", catName),
|
||||||
buf.String(),
|
buf.String(),
|
||||||
@ -103,22 +113,31 @@ func CategoryPage(meta viewutil.Meta, catName string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func CategoryList(meta viewutil.Meta) {
|
func loctmp(meta viewutil.Meta, en *template.Template, ru *template.Template) *template.Template {
|
||||||
var buf strings.Builder
|
switch meta.Locale() {
|
||||||
err := localizedCatTemplates(meta).ExecuteTemplate(&buf, "category list", struct {
|
case "en":
|
||||||
Categories []string
|
return en
|
||||||
}{
|
case "ru":
|
||||||
categories.List(),
|
return ru
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
}
|
||||||
_, err = io.WriteString(meta.W, Base(
|
panic("aaa")
|
||||||
meta,
|
}
|
||||||
localizedCatTemplateAsString(meta, "category list heading"),
|
|
||||||
buf.String(),
|
type listData struct {
|
||||||
))
|
viewutil.BaseData
|
||||||
if err != nil {
|
Categories []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func categoryList(meta viewutil.Meta) {
|
||||||
|
if err := loctmp(meta, listEn, listRu).ExecuteTemplate(meta.W, "page", listData{
|
||||||
|
BaseData: viewutil.BaseData{
|
||||||
|
Meta: meta,
|
||||||
|
Title: localizedCatTemplateAsString(meta, "category list heading"),
|
||||||
|
HeaderLinks: cfg.HeaderLinks,
|
||||||
|
CommonScripts: cfg.CommonScripts,
|
||||||
|
},
|
||||||
|
Categories: List(),
|
||||||
|
}); err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
|
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
|
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
|
||||||
|
{% import "github.com/bouncepaw/mycorrhiza/categories" %}
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/l18n" %}
|
{% import "github.com/bouncepaw/mycorrhiza/l18n" %}
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/mimetype" %}
|
{% import "github.com/bouncepaw/mycorrhiza/mimetype" %}
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/tree" %}
|
{% import "github.com/bouncepaw/mycorrhiza/tree" %}
|
||||||
@ -132,7 +133,7 @@ If you rename .prevnext, change the docs too.
|
|||||||
{%= hyphaInfo(meta, h) %}
|
{%= hyphaInfo(meta, h) %}
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
{%s= categoryCard(meta, h.CanonicalName()) %}
|
{%s= categories.CategoryCard(meta, h.CanonicalName()) %}
|
||||||
{%= siblingHyphae(siblings, meta.Lc) %}
|
{%= siblingHyphae(siblings, meta.Lc) %}
|
||||||
</div>
|
</div>
|
||||||
{%= viewScripts() %}
|
{%= viewScripts() %}
|
||||||
|
@ -23,616 +23,619 @@ import "github.com/bouncepaw/mycorrhiza/cfg"
|
|||||||
import "github.com/bouncepaw/mycorrhiza/hyphae"
|
import "github.com/bouncepaw/mycorrhiza/hyphae"
|
||||||
|
|
||||||
//line views/readers.qtpl:8
|
//line views/readers.qtpl:8
|
||||||
import "github.com/bouncepaw/mycorrhiza/l18n"
|
import "github.com/bouncepaw/mycorrhiza/categories"
|
||||||
|
|
||||||
//line views/readers.qtpl:9
|
//line views/readers.qtpl:9
|
||||||
import "github.com/bouncepaw/mycorrhiza/mimetype"
|
import "github.com/bouncepaw/mycorrhiza/l18n"
|
||||||
|
|
||||||
//line views/readers.qtpl:10
|
//line views/readers.qtpl:10
|
||||||
import "github.com/bouncepaw/mycorrhiza/tree"
|
import "github.com/bouncepaw/mycorrhiza/mimetype"
|
||||||
|
|
||||||
//line views/readers.qtpl:11
|
//line views/readers.qtpl:11
|
||||||
import "github.com/bouncepaw/mycorrhiza/user"
|
import "github.com/bouncepaw/mycorrhiza/tree"
|
||||||
|
|
||||||
//line views/readers.qtpl:12
|
//line views/readers.qtpl:12
|
||||||
import "github.com/bouncepaw/mycorrhiza/util"
|
import "github.com/bouncepaw/mycorrhiza/user"
|
||||||
|
|
||||||
//line views/readers.qtpl:13
|
//line views/readers.qtpl:13
|
||||||
|
import "github.com/bouncepaw/mycorrhiza/util"
|
||||||
|
|
||||||
|
//line views/readers.qtpl:14
|
||||||
import "github.com/bouncepaw/mycorrhiza/viewutil"
|
import "github.com/bouncepaw/mycorrhiza/viewutil"
|
||||||
|
|
||||||
//line views/readers.qtpl:15
|
//line views/readers.qtpl:16
|
||||||
import (
|
import (
|
||||||
qtio422016 "io"
|
qtio422016 "io"
|
||||||
|
|
||||||
qt422016 "github.com/valyala/quicktemplate"
|
qt422016 "github.com/valyala/quicktemplate"
|
||||||
)
|
)
|
||||||
|
|
||||||
//line views/readers.qtpl:15
|
//line views/readers.qtpl:16
|
||||||
var (
|
var (
|
||||||
_ = qtio422016.Copy
|
_ = qtio422016.Copy
|
||||||
_ = qt422016.AcquireByteBuffer
|
_ = qt422016.AcquireByteBuffer
|
||||||
)
|
)
|
||||||
|
|
||||||
//line views/readers.qtpl:15
|
//line views/readers.qtpl:16
|
||||||
func StreamMediaMenu(qw422016 *qt422016.Writer, rq *http.Request, h hyphae.Hypha, u *user.User) {
|
func StreamMediaMenu(qw422016 *qt422016.Writer, rq *http.Request, h hyphae.Hypha, u *user.User) {
|
||||||
//line views/readers.qtpl:15
|
//line views/readers.qtpl:16
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:17
|
//line views/readers.qtpl:18
|
||||||
lc := l18n.FromRequest(rq)
|
lc := l18n.FromRequest(rq)
|
||||||
|
|
||||||
//line views/readers.qtpl:18
|
//line views/readers.qtpl:19
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width media-tab">
|
<main class="main-width media-tab">
|
||||||
<h1>`)
|
<h1>`)
|
||||||
//line views/readers.qtpl:21
|
//line views/readers.qtpl:22
|
||||||
qw422016.N().S(lc.Get("ui.media_title", &l18n.Replacements{"name": beautifulLink(h.CanonicalName())}))
|
qw422016.N().S(lc.Get("ui.media_title", &l18n.Replacements{"name": beautifulLink(h.CanonicalName())}))
|
||||||
//line views/readers.qtpl:21
|
//line views/readers.qtpl:22
|
||||||
qw422016.N().S(`</h1>
|
qw422016.N().S(`</h1>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:22
|
//line views/readers.qtpl:23
|
||||||
switch h.(type) {
|
switch h.(type) {
|
||||||
//line views/readers.qtpl:23
|
//line views/readers.qtpl:24
|
||||||
case *hyphae.MediaHypha:
|
case *hyphae.MediaHypha:
|
||||||
//line views/readers.qtpl:23
|
//line views/readers.qtpl:24
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<p class="explanation">`)
|
<p class="explanation">`)
|
||||||
//line views/readers.qtpl:24
|
//line views/readers.qtpl:25
|
||||||
qw422016.E().S(lc.Get("ui.media_tip"))
|
qw422016.E().S(lc.Get("ui.media_tip"))
|
||||||
//line views/readers.qtpl:24
|
//line views/readers.qtpl:25
|
||||||
qw422016.N().S(` <a href="/help/en/media" class="shy-link">`)
|
qw422016.N().S(` <a href="/help/en/media" class="shy-link">`)
|
||||||
//line views/readers.qtpl:24
|
//line views/readers.qtpl:25
|
||||||
qw422016.E().S(lc.Get("ui.media_what_is"))
|
qw422016.E().S(lc.Get("ui.media_what_is"))
|
||||||
//line views/readers.qtpl:24
|
//line views/readers.qtpl:25
|
||||||
qw422016.N().S(`</a></p>
|
qw422016.N().S(`</a></p>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:25
|
//line views/readers.qtpl:26
|
||||||
default:
|
default:
|
||||||
//line views/readers.qtpl:25
|
//line views/readers.qtpl:26
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<p class="explanation">`)
|
<p class="explanation">`)
|
||||||
//line views/readers.qtpl:26
|
//line views/readers.qtpl:27
|
||||||
qw422016.E().S(lc.Get("ui.media_empty"))
|
qw422016.E().S(lc.Get("ui.media_empty"))
|
||||||
//line views/readers.qtpl:26
|
//line views/readers.qtpl:27
|
||||||
qw422016.N().S(` <a href="/help/en/media" class="shy-link">`)
|
qw422016.N().S(` <a href="/help/en/media" class="shy-link">`)
|
||||||
//line views/readers.qtpl:26
|
//line views/readers.qtpl:27
|
||||||
qw422016.E().S(lc.Get("ui.media_what_is"))
|
qw422016.E().S(lc.Get("ui.media_what_is"))
|
||||||
//line views/readers.qtpl:26
|
//line views/readers.qtpl:27
|
||||||
qw422016.N().S(`</a></p>
|
qw422016.N().S(`</a></p>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:27
|
//line views/readers.qtpl:28
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:27
|
//line views/readers.qtpl:28
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
|
|
||||||
<section class="amnt-grid">
|
<section class="amnt-grid">
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:30
|
//line views/readers.qtpl:31
|
||||||
switch h := h.(type) {
|
switch h := h.(type) {
|
||||||
//line views/readers.qtpl:31
|
//line views/readers.qtpl:32
|
||||||
case *hyphae.MediaHypha:
|
case *hyphae.MediaHypha:
|
||||||
//line views/readers.qtpl:31
|
//line views/readers.qtpl:32
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:33
|
//line views/readers.qtpl:34
|
||||||
mime := mimetype.FromExtension(path.Ext(h.MediaFilePath()))
|
mime := mimetype.FromExtension(path.Ext(h.MediaFilePath()))
|
||||||
fileinfo, err := os.Stat(h.MediaFilePath())
|
fileinfo, err := os.Stat(h.MediaFilePath())
|
||||||
|
|
||||||
//line views/readers.qtpl:34
|
//line views/readers.qtpl:35
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:35
|
//line views/readers.qtpl:36
|
||||||
if err == nil {
|
if err == nil {
|
||||||
//line views/readers.qtpl:35
|
//line views/readers.qtpl:36
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<fieldset class="amnt-menu-block">
|
<fieldset class="amnt-menu-block">
|
||||||
<legend class="modal__title modal__title_small">`)
|
<legend class="modal__title modal__title_small">`)
|
||||||
//line views/readers.qtpl:37
|
//line views/readers.qtpl:38
|
||||||
qw422016.E().S(lc.Get("ui.media_stat"))
|
qw422016.E().S(lc.Get("ui.media_stat"))
|
||||||
//line views/readers.qtpl:37
|
//line views/readers.qtpl:38
|
||||||
qw422016.N().S(`</legend>
|
qw422016.N().S(`</legend>
|
||||||
<p class="modal__confirmation-msg"><b>`)
|
<p class="modal__confirmation-msg"><b>`)
|
||||||
//line views/readers.qtpl:38
|
//line views/readers.qtpl:39
|
||||||
qw422016.E().S(lc.Get("ui.media_stat_size"))
|
qw422016.E().S(lc.Get("ui.media_stat_size"))
|
||||||
//line views/readers.qtpl:38
|
//line views/readers.qtpl:39
|
||||||
qw422016.N().S(`</b> `)
|
qw422016.N().S(`</b> `)
|
||||||
//line views/readers.qtpl:38
|
//line views/readers.qtpl:39
|
||||||
qw422016.E().S(lc.GetPlural64("ui.media_size_value", fileinfo.Size()))
|
qw422016.E().S(lc.GetPlural64("ui.media_size_value", fileinfo.Size()))
|
||||||
//line views/readers.qtpl:38
|
//line views/readers.qtpl:39
|
||||||
qw422016.N().S(`</p>
|
qw422016.N().S(`</p>
|
||||||
<p><b>`)
|
<p><b>`)
|
||||||
//line views/readers.qtpl:39
|
//line views/readers.qtpl:40
|
||||||
qw422016.E().S(lc.Get("ui.media_stat_mime"))
|
qw422016.E().S(lc.Get("ui.media_stat_mime"))
|
||||||
//line views/readers.qtpl:39
|
//line views/readers.qtpl:40
|
||||||
qw422016.N().S(`</b> `)
|
qw422016.N().S(`</b> `)
|
||||||
//line views/readers.qtpl:39
|
//line views/readers.qtpl:40
|
||||||
qw422016.E().S(mime)
|
qw422016.E().S(mime)
|
||||||
//line views/readers.qtpl:39
|
//line views/readers.qtpl:40
|
||||||
qw422016.N().S(`</p>
|
qw422016.N().S(`</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:41
|
//line views/readers.qtpl:42
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:41
|
//line views/readers.qtpl:42
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
|
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:43
|
//line views/readers.qtpl:44
|
||||||
if strings.HasPrefix(mime, "image/") {
|
if strings.HasPrefix(mime, "image/") {
|
||||||
//line views/readers.qtpl:43
|
//line views/readers.qtpl:44
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<fieldset class="amnt-menu-block">
|
<fieldset class="amnt-menu-block">
|
||||||
<legend class="modal__title modal__title_small">`)
|
<legend class="modal__title modal__title_small">`)
|
||||||
//line views/readers.qtpl:45
|
//line views/readers.qtpl:46
|
||||||
qw422016.E().S(lc.Get("ui.media_include"))
|
qw422016.E().S(lc.Get("ui.media_include"))
|
||||||
//line views/readers.qtpl:45
|
//line views/readers.qtpl:46
|
||||||
qw422016.N().S(`</legend>
|
qw422016.N().S(`</legend>
|
||||||
<p class="modal__confirmation-msg">`)
|
<p class="modal__confirmation-msg">`)
|
||||||
//line views/readers.qtpl:46
|
//line views/readers.qtpl:47
|
||||||
qw422016.E().S(lc.Get("ui.media_include_tip"))
|
qw422016.E().S(lc.Get("ui.media_include_tip"))
|
||||||
//line views/readers.qtpl:46
|
//line views/readers.qtpl:47
|
||||||
qw422016.N().S(`</p>
|
qw422016.N().S(`</p>
|
||||||
<pre class="codeblock"><code>img { `)
|
<pre class="codeblock"><code>img { `)
|
||||||
//line views/readers.qtpl:47
|
//line views/readers.qtpl:48
|
||||||
qw422016.E().S(h.CanonicalName())
|
qw422016.E().S(h.CanonicalName())
|
||||||
//line views/readers.qtpl:47
|
//line views/readers.qtpl:48
|
||||||
qw422016.N().S(` }</code></pre>
|
qw422016.N().S(` }</code></pre>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:49
|
//line views/readers.qtpl:50
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:49
|
//line views/readers.qtpl:50
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:50
|
//line views/readers.qtpl:51
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:50
|
//line views/readers.qtpl:51
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
|
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:52
|
//line views/readers.qtpl:53
|
||||||
if u.CanProceed("upload-binary") {
|
if u.CanProceed("upload-binary") {
|
||||||
//line views/readers.qtpl:52
|
//line views/readers.qtpl:53
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<form action="/upload-binary/`)
|
<form action="/upload-binary/`)
|
||||||
//line views/readers.qtpl:53
|
//line views/readers.qtpl:54
|
||||||
qw422016.E().S(h.CanonicalName())
|
qw422016.E().S(h.CanonicalName())
|
||||||
//line views/readers.qtpl:53
|
//line views/readers.qtpl:54
|
||||||
qw422016.N().S(`"
|
qw422016.N().S(`"
|
||||||
method="post" enctype="multipart/form-data"
|
method="post" enctype="multipart/form-data"
|
||||||
class="upload-binary modal amnt-menu-block">
|
class="upload-binary modal amnt-menu-block">
|
||||||
<fieldset class="modal__fieldset">
|
<fieldset class="modal__fieldset">
|
||||||
<legend class="modal__title modal__title_small">`)
|
<legend class="modal__title modal__title_small">`)
|
||||||
//line views/readers.qtpl:57
|
//line views/readers.qtpl:58
|
||||||
qw422016.E().S(lc.Get("ui.media_new"))
|
qw422016.E().S(lc.Get("ui.media_new"))
|
||||||
//line views/readers.qtpl:57
|
//line views/readers.qtpl:58
|
||||||
qw422016.N().S(`</legend>
|
qw422016.N().S(`</legend>
|
||||||
<p class="modal__confirmation-msg">`)
|
<p class="modal__confirmation-msg">`)
|
||||||
//line views/readers.qtpl:58
|
//line views/readers.qtpl:59
|
||||||
qw422016.E().S(lc.Get("ui.media_new_tip"))
|
qw422016.E().S(lc.Get("ui.media_new_tip"))
|
||||||
//line views/readers.qtpl:58
|
//line views/readers.qtpl:59
|
||||||
qw422016.N().S(`</p>
|
qw422016.N().S(`</p>
|
||||||
<label for="upload-binary__input"></label>
|
<label for="upload-binary__input"></label>
|
||||||
<input type="file" id="upload-binary__input" name="binary">
|
<input type="file" id="upload-binary__input" name="binary">
|
||||||
|
|
||||||
<button type="submit" class="btn stick-to-bottom" value="Upload">`)
|
<button type="submit" class="btn stick-to-bottom" value="Upload">`)
|
||||||
//line views/readers.qtpl:62
|
//line views/readers.qtpl:63
|
||||||
qw422016.E().S(lc.Get("ui.media_upload"))
|
qw422016.E().S(lc.Get("ui.media_upload"))
|
||||||
//line views/readers.qtpl:62
|
//line views/readers.qtpl:63
|
||||||
qw422016.N().S(`</button>
|
qw422016.N().S(`</button>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:65
|
//line views/readers.qtpl:66
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:65
|
//line views/readers.qtpl:66
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
|
|
||||||
|
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:68
|
//line views/readers.qtpl:69
|
||||||
switch h := h.(type) {
|
switch h := h.(type) {
|
||||||
//line views/readers.qtpl:69
|
//line views/readers.qtpl:70
|
||||||
case *hyphae.MediaHypha:
|
case *hyphae.MediaHypha:
|
||||||
//line views/readers.qtpl:69
|
//line views/readers.qtpl:70
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:70
|
//line views/readers.qtpl:71
|
||||||
if u.CanProceed("remove-media") {
|
if u.CanProceed("remove-media") {
|
||||||
//line views/readers.qtpl:70
|
//line views/readers.qtpl:71
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<form action="/remove-media/`)
|
<form action="/remove-media/`)
|
||||||
//line views/readers.qtpl:71
|
//line views/readers.qtpl:72
|
||||||
qw422016.E().S(h.CanonicalName())
|
qw422016.E().S(h.CanonicalName())
|
||||||
//line views/readers.qtpl:71
|
//line views/readers.qtpl:72
|
||||||
qw422016.N().S(`" method="post" class="modal amnt-menu-block" method="POST">
|
qw422016.N().S(`" method="post" class="modal amnt-menu-block" method="POST">
|
||||||
<fieldset class="modal__fieldset">
|
<fieldset class="modal__fieldset">
|
||||||
<legend class="modal__title modal__title_small">`)
|
<legend class="modal__title modal__title_small">`)
|
||||||
//line views/readers.qtpl:73
|
//line views/readers.qtpl:74
|
||||||
qw422016.E().S(lc.Get("ui.media_remove"))
|
qw422016.E().S(lc.Get("ui.media_remove"))
|
||||||
//line views/readers.qtpl:73
|
//line views/readers.qtpl:74
|
||||||
qw422016.N().S(`</legend>
|
qw422016.N().S(`</legend>
|
||||||
<p class="modal__confirmation-msg">`)
|
<p class="modal__confirmation-msg">`)
|
||||||
//line views/readers.qtpl:74
|
//line views/readers.qtpl:75
|
||||||
qw422016.E().S(lc.Get("ui.media_remove_tip"))
|
qw422016.E().S(lc.Get("ui.media_remove_tip"))
|
||||||
//line views/readers.qtpl:74
|
//line views/readers.qtpl:75
|
||||||
qw422016.N().S(`</p>
|
qw422016.N().S(`</p>
|
||||||
<button type="submit" class="btn" value="Remove media">`)
|
<button type="submit" class="btn" value="Remove media">`)
|
||||||
//line views/readers.qtpl:75
|
//line views/readers.qtpl:76
|
||||||
qw422016.E().S(lc.Get("ui.media_remove_button"))
|
qw422016.E().S(lc.Get("ui.media_remove_button"))
|
||||||
//line views/readers.qtpl:75
|
//line views/readers.qtpl:76
|
||||||
qw422016.N().S(`</button>
|
qw422016.N().S(`</button>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:78
|
//line views/readers.qtpl:79
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:78
|
//line views/readers.qtpl:79
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:79
|
//line views/readers.qtpl:80
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:79
|
//line views/readers.qtpl:80
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
func WriteMediaMenu(qq422016 qtio422016.Writer, rq *http.Request, h hyphae.Hypha, u *user.User) {
|
func WriteMediaMenu(qq422016 qtio422016.Writer, rq *http.Request, h hyphae.Hypha, u *user.User) {
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
StreamMediaMenu(qw422016, rq, h, u)
|
StreamMediaMenu(qw422016, rq, h, u)
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
qt422016.ReleaseWriter(qw422016)
|
qt422016.ReleaseWriter(qw422016)
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
func MediaMenu(rq *http.Request, h hyphae.Hypha, u *user.User) string {
|
func MediaMenu(rq *http.Request, h hyphae.Hypha, u *user.User) string {
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
WriteMediaMenu(qb422016, rq, h, u)
|
WriteMediaMenu(qb422016, rq, h, u)
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
qs422016 := string(qb422016.B)
|
qs422016 := string(qb422016.B)
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
return qs422016
|
return qs422016
|
||||||
//line views/readers.qtpl:84
|
//line views/readers.qtpl:85
|
||||||
}
|
}
|
||||||
|
|
||||||
// If `contents` == "", a helpful message is shown instead.
|
// If `contents` == "", a helpful message is shown instead.
|
||||||
//
|
//
|
||||||
// If you rename .prevnext, change the docs too.
|
// If you rename .prevnext, change the docs too.
|
||||||
|
|
||||||
//line views/readers.qtpl:89
|
//line views/readers.qtpl:90
|
||||||
func StreamHypha(qw422016 *qt422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents string) {
|
func StreamHypha(qw422016 *qt422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents string) {
|
||||||
//line views/readers.qtpl:89
|
//line views/readers.qtpl:90
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:91
|
//line views/readers.qtpl:92
|
||||||
siblings, subhyphae, prevHyphaName, nextHyphaName := tree.Tree(h.CanonicalName())
|
siblings, subhyphae, prevHyphaName, nextHyphaName := tree.Tree(h.CanonicalName())
|
||||||
lc := meta.Lc
|
lc := meta.Lc
|
||||||
|
|
||||||
//line views/readers.qtpl:93
|
//line views/readers.qtpl:94
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width">
|
<main class="main-width">
|
||||||
<section id="hypha">
|
<section id="hypha">
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:97
|
//line views/readers.qtpl:98
|
||||||
if meta.U.CanProceed("edit") {
|
if meta.U.CanProceed("edit") {
|
||||||
//line views/readers.qtpl:97
|
//line views/readers.qtpl:98
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="btn btn_navititle">
|
<div class="btn btn_navititle">
|
||||||
<a class="btn__link_navititle" href="/edit/`)
|
<a class="btn__link_navititle" href="/edit/`)
|
||||||
//line views/readers.qtpl:99
|
//line views/readers.qtpl:100
|
||||||
qw422016.E().S(h.CanonicalName())
|
qw422016.E().S(h.CanonicalName())
|
||||||
//line views/readers.qtpl:99
|
//line views/readers.qtpl:100
|
||||||
qw422016.N().S(`">`)
|
qw422016.N().S(`">`)
|
||||||
//line views/readers.qtpl:99
|
//line views/readers.qtpl:100
|
||||||
qw422016.E().S(lc.Get("ui.edit_link"))
|
qw422016.E().S(lc.Get("ui.edit_link"))
|
||||||
//line views/readers.qtpl:99
|
//line views/readers.qtpl:100
|
||||||
qw422016.N().S(`</a>
|
qw422016.N().S(`</a>
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:101
|
//line views/readers.qtpl:102
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:101
|
//line views/readers.qtpl:102
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
|
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:103
|
//line views/readers.qtpl:104
|
||||||
if cfg.UseAuth && util.IsProfileName(h.CanonicalName()) && meta.U.Name == strings.TrimPrefix(h.CanonicalName(), cfg.UserHypha+"/") {
|
if cfg.UseAuth && util.IsProfileName(h.CanonicalName()) && meta.U.Name == strings.TrimPrefix(h.CanonicalName(), cfg.UserHypha+"/") {
|
||||||
//line views/readers.qtpl:103
|
//line views/readers.qtpl:104
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="btn btn_navititle">
|
<div class="btn btn_navititle">
|
||||||
<a class="btn__link_navititle" href="/logout">`)
|
<a class="btn__link_navititle" href="/logout">`)
|
||||||
//line views/readers.qtpl:105
|
//line views/readers.qtpl:106
|
||||||
qw422016.E().S(lc.Get("ui.logout_link"))
|
qw422016.E().S(lc.Get("ui.logout_link"))
|
||||||
//line views/readers.qtpl:105
|
//line views/readers.qtpl:106
|
||||||
qw422016.N().S(`</a>
|
qw422016.N().S(`</a>
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:107
|
//line views/readers.qtpl:108
|
||||||
if meta.U.Group == "admin" {
|
if meta.U.Group == "admin" {
|
||||||
//line views/readers.qtpl:107
|
//line views/readers.qtpl:108
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="btn btn_navititle">
|
<div class="btn btn_navititle">
|
||||||
<a class="btn__link_navititle" href="/admin">`)
|
<a class="btn__link_navititle" href="/admin">`)
|
||||||
//line views/readers.qtpl:109
|
//line views/readers.qtpl:110
|
||||||
qw422016.E().S(lc.Get("ui.admin_panel"))
|
qw422016.E().S(lc.Get("ui.admin_panel"))
|
||||||
//line views/readers.qtpl:109
|
//line views/readers.qtpl:110
|
||||||
qw422016.N().S(`<a>
|
qw422016.N().S(`<a>
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:111
|
//line views/readers.qtpl:112
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:111
|
//line views/readers.qtpl:112
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:112
|
//line views/readers.qtpl:113
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:112
|
//line views/readers.qtpl:113
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
|
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:114
|
//line views/readers.qtpl:115
|
||||||
qw422016.N().S(NaviTitle(h))
|
qw422016.N().S(NaviTitle(h))
|
||||||
//line views/readers.qtpl:114
|
//line views/readers.qtpl:115
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:115
|
//line views/readers.qtpl:116
|
||||||
switch h.(type) {
|
switch h.(type) {
|
||||||
//line views/readers.qtpl:116
|
//line views/readers.qtpl:117
|
||||||
case *hyphae.EmptyHypha:
|
case *hyphae.EmptyHypha:
|
||||||
//line views/readers.qtpl:116
|
//line views/readers.qtpl:117
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:117
|
//line views/readers.qtpl:118
|
||||||
streamnonExistentHyphaNotice(qw422016, h, meta.U, meta.Lc)
|
streamnonExistentHyphaNotice(qw422016, h, meta.U, meta.Lc)
|
||||||
//line views/readers.qtpl:117
|
//line views/readers.qtpl:118
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:118
|
//line views/readers.qtpl:119
|
||||||
default:
|
default:
|
||||||
//line views/readers.qtpl:118
|
//line views/readers.qtpl:119
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:119
|
//line views/readers.qtpl:120
|
||||||
qw422016.N().S(contents)
|
qw422016.N().S(contents)
|
||||||
//line views/readers.qtpl:119
|
//line views/readers.qtpl:120
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:120
|
//line views/readers.qtpl:121
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:120
|
//line views/readers.qtpl:121
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</section>
|
</section>
|
||||||
<section class="prevnext">
|
<section class="prevnext">
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:123
|
//line views/readers.qtpl:124
|
||||||
if prevHyphaName != "" {
|
if prevHyphaName != "" {
|
||||||
//line views/readers.qtpl:123
|
//line views/readers.qtpl:124
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<a class="prevnext__el prevnext__prev" href="/hypha/`)
|
<a class="prevnext__el prevnext__prev" href="/hypha/`)
|
||||||
//line views/readers.qtpl:124
|
//line views/readers.qtpl:125
|
||||||
qw422016.E().S(prevHyphaName)
|
qw422016.E().S(prevHyphaName)
|
||||||
//line views/readers.qtpl:124
|
//line views/readers.qtpl:125
|
||||||
qw422016.N().S(`" rel="prev">← `)
|
qw422016.N().S(`" rel="prev">← `)
|
||||||
//line views/readers.qtpl:124
|
//line views/readers.qtpl:125
|
||||||
qw422016.E().S(util.BeautifulName(path.Base(prevHyphaName)))
|
qw422016.E().S(util.BeautifulName(path.Base(prevHyphaName)))
|
||||||
//line views/readers.qtpl:124
|
//line views/readers.qtpl:125
|
||||||
qw422016.N().S(`</a>
|
qw422016.N().S(`</a>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:125
|
//line views/readers.qtpl:126
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:125
|
//line views/readers.qtpl:126
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:126
|
//line views/readers.qtpl:127
|
||||||
if nextHyphaName != "" {
|
if nextHyphaName != "" {
|
||||||
//line views/readers.qtpl:126
|
//line views/readers.qtpl:127
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<a class="prevnext__el prevnext__next" href="/hypha/`)
|
<a class="prevnext__el prevnext__next" href="/hypha/`)
|
||||||
//line views/readers.qtpl:127
|
//line views/readers.qtpl:128
|
||||||
qw422016.E().S(nextHyphaName)
|
qw422016.E().S(nextHyphaName)
|
||||||
//line views/readers.qtpl:127
|
//line views/readers.qtpl:128
|
||||||
qw422016.N().S(`" rel="next">`)
|
qw422016.N().S(`" rel="next">`)
|
||||||
//line views/readers.qtpl:127
|
//line views/readers.qtpl:128
|
||||||
qw422016.E().S(util.BeautifulName(path.Base(nextHyphaName)))
|
qw422016.E().S(util.BeautifulName(path.Base(nextHyphaName)))
|
||||||
//line views/readers.qtpl:127
|
//line views/readers.qtpl:128
|
||||||
qw422016.N().S(` →</a>
|
qw422016.N().S(` →</a>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:128
|
//line views/readers.qtpl:129
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:128
|
//line views/readers.qtpl:129
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</section>
|
</section>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:130
|
//line views/readers.qtpl:131
|
||||||
StreamSubhyphae(qw422016, subhyphae, meta.Lc)
|
StreamSubhyphae(qw422016, subhyphae, meta.Lc)
|
||||||
//line views/readers.qtpl:130
|
//line views/readers.qtpl:131
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<section id="hypha-bottom">
|
<section id="hypha-bottom">
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:132
|
//line views/readers.qtpl:133
|
||||||
streamhyphaInfo(qw422016, meta, h)
|
streamhyphaInfo(qw422016, meta, h)
|
||||||
//line views/readers.qtpl:132
|
//line views/readers.qtpl:133
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:135
|
//line views/readers.qtpl:136
|
||||||
qw422016.N().S(categoryCard(meta, h.CanonicalName()))
|
qw422016.N().S(categories.CategoryCard(meta, h.CanonicalName()))
|
||||||
//line views/readers.qtpl:135
|
//line views/readers.qtpl:136
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:136
|
//line views/readers.qtpl:137
|
||||||
streamsiblingHyphae(qw422016, siblings, meta.Lc)
|
streamsiblingHyphae(qw422016, siblings, meta.Lc)
|
||||||
//line views/readers.qtpl:136
|
//line views/readers.qtpl:137
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:138
|
//line views/readers.qtpl:139
|
||||||
streamviewScripts(qw422016)
|
streamviewScripts(qw422016)
|
||||||
//line views/readers.qtpl:138
|
//line views/readers.qtpl:139
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
func WriteHypha(qq422016 qtio422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents string) {
|
func WriteHypha(qq422016 qtio422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents string) {
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
StreamHypha(qw422016, meta, h, contents)
|
StreamHypha(qw422016, meta, h, contents)
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
qt422016.ReleaseWriter(qw422016)
|
qt422016.ReleaseWriter(qw422016)
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
func Hypha(meta viewutil.Meta, h hyphae.Hypha, contents string) string {
|
func Hypha(meta viewutil.Meta, h hyphae.Hypha, contents string) string {
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
WriteHypha(qb422016, meta, h, contents)
|
WriteHypha(qb422016, meta, h, contents)
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
qs422016 := string(qb422016.B)
|
qs422016 := string(qb422016.B)
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
return qs422016
|
return qs422016
|
||||||
//line views/readers.qtpl:139
|
//line views/readers.qtpl:140
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:141
|
//line views/readers.qtpl:142
|
||||||
func StreamRevision(qw422016 *qt422016.Writer, rq *http.Request, lc *l18n.Localizer, h hyphae.Hypha, contents, revHash string) {
|
func StreamRevision(qw422016 *qt422016.Writer, rq *http.Request, lc *l18n.Localizer, h hyphae.Hypha, contents, revHash string) {
|
||||||
//line views/readers.qtpl:141
|
//line views/readers.qtpl:142
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width">
|
<main class="main-width">
|
||||||
<section>
|
<section>
|
||||||
<p>`)
|
<p>`)
|
||||||
//line views/readers.qtpl:145
|
//line views/readers.qtpl:146
|
||||||
qw422016.E().S(lc.Get("ui.revision_warning"))
|
qw422016.E().S(lc.Get("ui.revision_warning"))
|
||||||
//line views/readers.qtpl:145
|
//line views/readers.qtpl:146
|
||||||
qw422016.N().S(` <a href="/rev-text/`)
|
qw422016.N().S(` <a href="/rev-text/`)
|
||||||
//line views/readers.qtpl:145
|
//line views/readers.qtpl:146
|
||||||
qw422016.E().S(revHash)
|
qw422016.E().S(revHash)
|
||||||
//line views/readers.qtpl:145
|
//line views/readers.qtpl:146
|
||||||
qw422016.N().S(`/`)
|
qw422016.N().S(`/`)
|
||||||
//line views/readers.qtpl:145
|
//line views/readers.qtpl:146
|
||||||
qw422016.E().S(h.CanonicalName())
|
qw422016.E().S(h.CanonicalName())
|
||||||
//line views/readers.qtpl:145
|
//line views/readers.qtpl:146
|
||||||
qw422016.N().S(`">`)
|
qw422016.N().S(`">`)
|
||||||
//line views/readers.qtpl:145
|
//line views/readers.qtpl:146
|
||||||
qw422016.E().S(lc.Get("ui.revision_link"))
|
qw422016.E().S(lc.Get("ui.revision_link"))
|
||||||
//line views/readers.qtpl:145
|
//line views/readers.qtpl:146
|
||||||
qw422016.N().S(`</a></p>
|
qw422016.N().S(`</a></p>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:146
|
//line views/readers.qtpl:147
|
||||||
qw422016.N().S(NaviTitle(h))
|
qw422016.N().S(NaviTitle(h))
|
||||||
//line views/readers.qtpl:146
|
//line views/readers.qtpl:147
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:147
|
//line views/readers.qtpl:148
|
||||||
qw422016.N().S(contents)
|
qw422016.N().S(contents)
|
||||||
//line views/readers.qtpl:147
|
//line views/readers.qtpl:148
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:151
|
//line views/readers.qtpl:152
|
||||||
streamviewScripts(qw422016)
|
streamviewScripts(qw422016)
|
||||||
//line views/readers.qtpl:151
|
//line views/readers.qtpl:152
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
func WriteRevision(qq422016 qtio422016.Writer, rq *http.Request, lc *l18n.Localizer, h hyphae.Hypha, contents, revHash string) {
|
func WriteRevision(qq422016 qtio422016.Writer, rq *http.Request, lc *l18n.Localizer, h hyphae.Hypha, contents, revHash string) {
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
StreamRevision(qw422016, rq, lc, h, contents, revHash)
|
StreamRevision(qw422016, rq, lc, h, contents, revHash)
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
qt422016.ReleaseWriter(qw422016)
|
qt422016.ReleaseWriter(qw422016)
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
func Revision(rq *http.Request, lc *l18n.Localizer, h hyphae.Hypha, contents, revHash string) string {
|
func Revision(rq *http.Request, lc *l18n.Localizer, h hyphae.Hypha, contents, revHash string) string {
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
WriteRevision(qb422016, rq, lc, h, contents, revHash)
|
WriteRevision(qb422016, rq, lc, h, contents, revHash)
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
qs422016 := string(qb422016.B)
|
qs422016 := string(qb422016.B)
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
return qs422016
|
return qs422016
|
||||||
//line views/readers.qtpl:152
|
//line views/readers.qtpl:153
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:154
|
//line views/readers.qtpl:155
|
||||||
func streamviewScripts(qw422016 *qt422016.Writer) {
|
func streamviewScripts(qw422016 *qt422016.Writer) {
|
||||||
//line views/readers.qtpl:154
|
//line views/readers.qtpl:155
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:155
|
//line views/readers.qtpl:156
|
||||||
for _, scriptPath := range cfg.ViewScripts {
|
for _, scriptPath := range cfg.ViewScripts {
|
||||||
//line views/readers.qtpl:155
|
//line views/readers.qtpl:156
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<script src="`)
|
<script src="`)
|
||||||
//line views/readers.qtpl:156
|
//line views/readers.qtpl:157
|
||||||
qw422016.E().S(scriptPath)
|
qw422016.E().S(scriptPath)
|
||||||
//line views/readers.qtpl:156
|
//line views/readers.qtpl:157
|
||||||
qw422016.N().S(`"></script>
|
qw422016.N().S(`"></script>
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:157
|
//line views/readers.qtpl:158
|
||||||
}
|
}
|
||||||
//line views/readers.qtpl:157
|
//line views/readers.qtpl:158
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
func writeviewScripts(qq422016 qtio422016.Writer) {
|
func writeviewScripts(qq422016 qtio422016.Writer) {
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
streamviewScripts(qw422016)
|
streamviewScripts(qw422016)
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
qt422016.ReleaseWriter(qw422016)
|
qt422016.ReleaseWriter(qw422016)
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
}
|
}
|
||||||
|
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
func viewScripts() string {
|
func viewScripts() string {
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
writeviewScripts(qb422016)
|
writeviewScripts(qb422016)
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
qs422016 := string(qb422016.B)
|
qs422016 := string(qb422016.B)
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
return qs422016
|
return qs422016
|
||||||
//line views/readers.qtpl:158
|
//line views/readers.qtpl:159
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{define "base"}}
|
{{define "page"}}
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="{{.Meta.Locale}}">
|
<html lang="{{.Meta.Locale}}">
|
||||||
<head>
|
<head>
|
||||||
@ -79,5 +79,4 @@
|
|||||||
<script src="/static/view.js"></script>
|
<script src="/static/view.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
</html>
|
|
||||||
{{end}}
|
{{end}}
|
@ -55,7 +55,7 @@ func localizedBaseWithWeirdBody(meta Meta) *template.Template {
|
|||||||
return m(m(t.Clone()).Parse(`{{define "body"}}{{.Body}}{{end}}`))
|
return m(m(t.Clone()).Parse(`{{define "body"}}{{.Body}}{{end}}`))
|
||||||
}
|
}
|
||||||
|
|
||||||
type baseData struct {
|
type BaseData struct {
|
||||||
Meta Meta
|
Meta Meta
|
||||||
Title string
|
Title string
|
||||||
HeadElements []string
|
HeadElements []string
|
||||||
@ -69,7 +69,7 @@ func Base(meta Meta, title, body string, headElements ...string) string {
|
|||||||
var w strings.Builder
|
var w strings.Builder
|
||||||
meta.W = &w
|
meta.W = &w
|
||||||
t := localizedBaseWithWeirdBody(meta)
|
t := localizedBaseWithWeirdBody(meta)
|
||||||
err := t.ExecuteTemplate(&w, "base", baseData{
|
err := t.ExecuteTemplate(&w, "page", BaseData{
|
||||||
Meta: meta,
|
Meta: meta,
|
||||||
Title: title,
|
Title: title,
|
||||||
HeadElements: headElements,
|
HeadElements: headElements,
|
||||||
|
@ -3,6 +3,7 @@ package web
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/bouncepaw/mycorrhiza/categories"
|
||||||
"github.com/bouncepaw/mycorrhiza/viewutil"
|
"github.com/bouncepaw/mycorrhiza/viewutil"
|
||||||
"io"
|
"io"
|
||||||
"mime"
|
"mime"
|
||||||
@ -109,7 +110,7 @@ func Handler() http.Handler {
|
|||||||
initStuff(wikiRouter)
|
initStuff(wikiRouter)
|
||||||
initSearch(wikiRouter)
|
initSearch(wikiRouter)
|
||||||
initBacklinks(wikiRouter)
|
initBacklinks(wikiRouter)
|
||||||
initCategories(wikiRouter)
|
categories.InitCategoriesHandlers(wikiRouter)
|
||||||
|
|
||||||
// Admin routes.
|
// Admin routes.
|
||||||
if cfg.UseAuth {
|
if cfg.UseAuth {
|
||||||
|
Loading…
Reference in New Issue
Block a user