mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2025-01-07 02:10:26 +00:00
Move navititle, attachment block, backlinks sidebar to the new views module
This commit is contained in:
parent
0467f3a773
commit
bcaa1de6b7
@ -13,11 +13,11 @@ import (
|
|||||||
"github.com/bouncepaw/mycorrhiza/hyphae"
|
"github.com/bouncepaw/mycorrhiza/hyphae"
|
||||||
"github.com/bouncepaw/mycorrhiza/markup"
|
"github.com/bouncepaw/mycorrhiza/markup"
|
||||||
"github.com/bouncepaw/mycorrhiza/mimetype"
|
"github.com/bouncepaw/mycorrhiza/mimetype"
|
||||||
"github.com/bouncepaw/mycorrhiza/shroom"
|
|
||||||
"github.com/bouncepaw/mycorrhiza/templates"
|
"github.com/bouncepaw/mycorrhiza/templates"
|
||||||
"github.com/bouncepaw/mycorrhiza/tree"
|
"github.com/bouncepaw/mycorrhiza/tree"
|
||||||
"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"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -36,9 +36,9 @@ func handlerRevision(w http.ResponseWriter, rq *http.Request) {
|
|||||||
firstSlashIndex = strings.IndexRune(shorterUrl, '/')
|
firstSlashIndex = strings.IndexRune(shorterUrl, '/')
|
||||||
revHash = shorterUrl[:firstSlashIndex]
|
revHash = shorterUrl[:firstSlashIndex]
|
||||||
hyphaName = util.CanonicalName(shorterUrl[firstSlashIndex+1:])
|
hyphaName = util.CanonicalName(shorterUrl[firstSlashIndex+1:])
|
||||||
|
h = hyphae.ByName(hyphaName)
|
||||||
contents = fmt.Sprintf(`<p>This hypha had no text at this revision.</p>`)
|
contents = fmt.Sprintf(`<p>This hypha had no text at this revision.</p>`)
|
||||||
TextPath = hyphaName + ".myco"
|
textContents, err = history.FileAtRevision(h.TextPath, revHash)
|
||||||
textContents, err = history.FileAtRevision(TextPath, revHash)
|
|
||||||
u = user.FromRequest(rq)
|
u = user.FromRequest(rq)
|
||||||
)
|
)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@ -47,8 +47,7 @@ func handlerRevision(w http.ResponseWriter, rq *http.Request) {
|
|||||||
treeHTML, subhyphae, _, _ := tree.Tree(hyphaName)
|
treeHTML, subhyphae, _, _ := tree.Tree(hyphaName)
|
||||||
page := templates.RevisionHTML(
|
page := templates.RevisionHTML(
|
||||||
rq,
|
rq,
|
||||||
hyphaName,
|
h,
|
||||||
naviTitle(hyphaName),
|
|
||||||
contents,
|
contents,
|
||||||
treeHTML,
|
treeHTML,
|
||||||
subhyphae,
|
subhyphae,
|
||||||
@ -87,7 +86,6 @@ func handlerHypha(w http.ResponseWriter, rq *http.Request) {
|
|||||||
var (
|
var (
|
||||||
hyphaName = HyphaNameFromRq(rq, "page", "hypha")
|
hyphaName = HyphaNameFromRq(rq, "page", "hypha")
|
||||||
h = hyphae.ByName(hyphaName)
|
h = hyphae.ByName(hyphaName)
|
||||||
hasAmnt = h.Exists && h.BinaryPath != ""
|
|
||||||
contents string
|
contents string
|
||||||
openGraph string
|
openGraph string
|
||||||
u = user.FromRequest(rq)
|
u = user.FromRequest(rq)
|
||||||
@ -101,21 +99,19 @@ func handlerHypha(w http.ResponseWriter, rq *http.Request) {
|
|||||||
openGraph = md.OpenGraphHTML()
|
openGraph = md.OpenGraphHTML()
|
||||||
}
|
}
|
||||||
if !os.IsNotExist(errB) {
|
if !os.IsNotExist(errB) {
|
||||||
contents = shroom.BinaryHtmlBlock(h) + contents
|
contents = views.AttachmentHTML(h) + contents
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
treeHTML, subhyphaeHTML, prevHypha, nextHypha := tree.Tree(hyphaName)
|
treeHTML, subhyphaeHTML, prevHypha, nextHypha := tree.Tree(hyphaName)
|
||||||
util.HTTP200Page(w,
|
util.HTTP200Page(w,
|
||||||
templates.BaseHTML(
|
templates.BaseHTML(
|
||||||
util.BeautifulName(hyphaName),
|
util.BeautifulName(hyphaName),
|
||||||
templates.PageHTML(rq, hyphaName,
|
templates.PageHTML(rq, h,
|
||||||
naviTitle(hyphaName),
|
|
||||||
contents,
|
contents,
|
||||||
treeHTML,
|
treeHTML,
|
||||||
subhyphaeHTML,
|
subhyphaeHTML,
|
||||||
shroom.BackLinkEntriesHTML(h),
|
|
||||||
prevHypha, nextHypha,
|
prevHypha, nextHypha,
|
||||||
hasAmnt),
|
),
|
||||||
u,
|
u,
|
||||||
openGraph))
|
openGraph))
|
||||||
}
|
}
|
||||||
|
1
main.go
1
main.go
@ -1,5 +1,6 @@
|
|||||||
//go:generate go get -u github.com/valyala/quicktemplate/qtc
|
//go:generate go get -u github.com/valyala/quicktemplate/qtc
|
||||||
//go:generate qtc -dir=templates
|
//go:generate qtc -dir=templates
|
||||||
|
//go:generate qtc -dir=views
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
29
name.go
29
name.go
@ -1,7 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
@ -11,34 +10,6 @@ import (
|
|||||||
"github.com/bouncepaw/mycorrhiza/util"
|
"github.com/bouncepaw/mycorrhiza/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// naviTitle turns `canonicalName` into html string with each hypha path parts higlighted as links.
|
|
||||||
// TODO: rework as a template
|
|
||||||
func naviTitle(canonicalName string) string {
|
|
||||||
var (
|
|
||||||
html = fmt.Sprintf(`<h1 class="navi-title" id="navi-title">
|
|
||||||
<a href="/hypha/%s">%s</a><span aria-hidden="true" class="navi-title__colon">:</span>`, util.HomePage, util.SiteNavIcon)
|
|
||||||
prevAcc = `/hypha/`
|
|
||||||
parts = strings.Split(canonicalName, "/")
|
|
||||||
rel = "up"
|
|
||||||
)
|
|
||||||
for i, part := range parts {
|
|
||||||
if i > 0 {
|
|
||||||
html += `<span aria-hidden="true" class="navi-title__separator">/</span>`
|
|
||||||
}
|
|
||||||
if i == len(parts)-1 {
|
|
||||||
rel = "bookmark"
|
|
||||||
}
|
|
||||||
html += fmt.Sprintf(
|
|
||||||
`<a href="%s" rel="%s">%s</a>`,
|
|
||||||
prevAcc+part,
|
|
||||||
rel,
|
|
||||||
util.BeautifulName(part),
|
|
||||||
)
|
|
||||||
prevAcc += part + "/"
|
|
||||||
}
|
|
||||||
return html + "</h1>"
|
|
||||||
}
|
|
||||||
|
|
||||||
// HyphaNameFromRq extracts hypha name from http request. You have to also pass the action which is embedded in the url or several actions. For url /hypha/hypha, the action would be "hypha".
|
// HyphaNameFromRq extracts hypha name from http request. You have to also pass the action which is embedded in the url or several actions. For url /hypha/hypha, the action would be "hypha".
|
||||||
func HyphaNameFromRq(rq *http.Request, actions ...string) string {
|
func HyphaNameFromRq(rq *http.Request, actions ...string) string {
|
||||||
p := rq.URL.Path
|
p := rq.URL.Path
|
||||||
|
@ -1,26 +1,14 @@
|
|||||||
package shroom
|
package shroom
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/bouncepaw/mycorrhiza/hyphae"
|
"github.com/bouncepaw/mycorrhiza/hyphae"
|
||||||
"github.com/bouncepaw/mycorrhiza/link"
|
|
||||||
"github.com/bouncepaw/mycorrhiza/markup"
|
"github.com/bouncepaw/mycorrhiza/markup"
|
||||||
"github.com/bouncepaw/mycorrhiza/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func BackLinkEntriesHTML(h *hyphae.Hypha) (html string) {
|
|
||||||
for _, backlinkHypha := range h.BackLinks {
|
|
||||||
_ = link.Link{}
|
|
||||||
html += fmt.Sprintf(`<li class="backlinks__entry">
|
|
||||||
<a class="backlinks__link" href="/hypha/%s">%s</a>`, backlinkHypha.Name, util.BeautifulName(backlinkHypha.Name))
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// FindAllBacklinks iterates over all hyphae that have text parts, sets their outlinks and then sets backlinks.
|
// FindAllBacklinks iterates over all hyphae that have text parts, sets their outlinks and then sets backlinks.
|
||||||
func FindAllBacklinks() {
|
func FindAllBacklinks() {
|
||||||
for h := range hyphae.FilterTextHyphae(hyphae.YieldExistingHyphae()) {
|
for h := range hyphae.FilterTextHyphae(hyphae.YieldExistingHyphae()) {
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/bouncepaw/mycorrhiza/hyphae"
|
"github.com/bouncepaw/mycorrhiza/hyphae"
|
||||||
"github.com/bouncepaw/mycorrhiza/markup"
|
"github.com/bouncepaw/mycorrhiza/markup"
|
||||||
"github.com/bouncepaw/mycorrhiza/util"
|
"github.com/bouncepaw/mycorrhiza/util"
|
||||||
|
"github.com/bouncepaw/mycorrhiza/views"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -16,7 +17,7 @@ func init() {
|
|||||||
if h := hyphae.ByName(hyphaName); h.Exists {
|
if h := hyphae.ByName(hyphaName); h.Exists {
|
||||||
rawText, err = FetchTextPart(h)
|
rawText, err = FetchTextPart(h)
|
||||||
if h.BinaryPath != "" {
|
if h.BinaryPath != "" {
|
||||||
binaryBlock = BinaryHtmlBlock(h)
|
binaryBlock = views.AttachmentHTML(h)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err = errors.New("Hypha " + hyphaName + " does not exist")
|
err = errors.New("Hypha " + hyphaName + " does not exist")
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package shroom
|
package shroom
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
|
||||||
|
|
||||||
"github.com/bouncepaw/mycorrhiza/hyphae"
|
"github.com/bouncepaw/mycorrhiza/hyphae"
|
||||||
"github.com/bouncepaw/mycorrhiza/markup"
|
"github.com/bouncepaw/mycorrhiza/markup"
|
||||||
@ -25,39 +23,6 @@ func FetchTextPart(h *hyphae.Hypha) (string, error) {
|
|||||||
return string(text), nil
|
return string(text), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// binaryHtmlBlock creates an html block for binary part of the hypha.
|
|
||||||
func BinaryHtmlBlock(h *hyphae.Hypha) string {
|
|
||||||
switch filepath.Ext(h.BinaryPath) {
|
|
||||||
case ".jpg", ".gif", ".png", ".webp", ".svg", ".ico":
|
|
||||||
return fmt.Sprintf(`
|
|
||||||
<div class="binary-container binary-container_with-img">
|
|
||||||
<a href="/binary/%[1]s"><img src="/binary/%[1]s"/></a>
|
|
||||||
</div>`, h.Name)
|
|
||||||
case ".ogg", ".webm", ".mp4":
|
|
||||||
return fmt.Sprintf(`
|
|
||||||
<div class="binary-container binary-container_with-video">
|
|
||||||
<video controls>
|
|
||||||
<source src="/binary/%[1]s"/>
|
|
||||||
<p>Your browser does not support video. <a href="/binary/%[1]s">Download video</a></p>
|
|
||||||
</video>
|
|
||||||
`, h.Name)
|
|
||||||
case ".mp3":
|
|
||||||
return fmt.Sprintf(`
|
|
||||||
<div class="binary-container binary-container_with-audio">
|
|
||||||
<audio controls>
|
|
||||||
<source src="/binary/%[1]s"/>
|
|
||||||
<p>Your browser does not support audio. <a href="/binary/%[1]s">Download audio</a></p>
|
|
||||||
</audio>
|
|
||||||
`, h.Name)
|
|
||||||
default:
|
|
||||||
return fmt.Sprintf(`
|
|
||||||
<div class="binary-container binary-container_with-nothing">
|
|
||||||
<p><a href="/binary/%s">Download media</a></p>
|
|
||||||
</div>
|
|
||||||
`, h.Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func SetHeaderLinks() {
|
func SetHeaderLinks() {
|
||||||
if userLinksHypha := hyphae.ByName(util.HeaderLinksHypha); !userLinksHypha.Exists {
|
if userLinksHypha := hyphae.ByName(util.HeaderLinksHypha); !userLinksHypha.Exists {
|
||||||
util.SetDefaultHeaderLinks()
|
util.SetDefaultHeaderLinks()
|
||||||
|
@ -64,17 +64,6 @@ var navEntries = []navEntry{
|
|||||||
</aside>
|
</aside>
|
||||||
{% endfunc %}
|
{% endfunc %}
|
||||||
|
|
||||||
{% func backlinks(backlinkEntries string) %}
|
|
||||||
<aside class="backlinks layout-card">
|
|
||||||
<h2 class="backlinks__title layout-card__title">Backlinks</h2>
|
|
||||||
<nav class="backlinks__nav">
|
|
||||||
<ul class="backlinks__list">
|
|
||||||
{%s= backlinkEntries %}
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</aside>
|
|
||||||
{% endfunc %}
|
|
||||||
|
|
||||||
{% func subhyphaeMatrix(subhyphae string) %}
|
{% func subhyphaeMatrix(subhyphae string) %}
|
||||||
{% if strings.TrimSpace(subhyphae) != "" %}
|
{% if strings.TrimSpace(subhyphae) != "" %}
|
||||||
<section class="subhyphae">
|
<section class="subhyphae">
|
||||||
|
@ -258,103 +258,57 @@ func relativeHyphae(relatives string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//line templates/common.qtpl:67
|
//line templates/common.qtpl:67
|
||||||
func streambacklinks(qw422016 *qt422016.Writer, backlinkEntries string) {
|
func streamsubhyphaeMatrix(qw422016 *qt422016.Writer, subhyphae string) {
|
||||||
//line templates/common.qtpl:67
|
//line templates/common.qtpl:67
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<aside class="backlinks layout-card">
|
|
||||||
<h2 class="backlinks__title layout-card__title">Backlinks</h2>
|
|
||||||
<nav class="backlinks__nav">
|
|
||||||
<ul class="backlinks__list">
|
|
||||||
`)
|
|
||||||
//line templates/common.qtpl:72
|
|
||||||
qw422016.N().S(backlinkEntries)
|
|
||||||
//line templates/common.qtpl:72
|
|
||||||
qw422016.N().S(`
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</aside>
|
|
||||||
`)
|
`)
|
||||||
//line templates/common.qtpl:76
|
//line templates/common.qtpl:68
|
||||||
}
|
|
||||||
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
func writebacklinks(qq422016 qtio422016.Writer, backlinkEntries string) {
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
streambacklinks(qw422016, backlinkEntries)
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
qt422016.ReleaseWriter(qw422016)
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
}
|
|
||||||
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
func backlinks(backlinkEntries string) string {
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
writebacklinks(qb422016, backlinkEntries)
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
qs422016 := string(qb422016.B)
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
return qs422016
|
|
||||||
//line templates/common.qtpl:76
|
|
||||||
}
|
|
||||||
|
|
||||||
//line templates/common.qtpl:78
|
|
||||||
func streamsubhyphaeMatrix(qw422016 *qt422016.Writer, subhyphae string) {
|
|
||||||
//line templates/common.qtpl:78
|
|
||||||
qw422016.N().S(`
|
|
||||||
`)
|
|
||||||
//line templates/common.qtpl:79
|
|
||||||
if strings.TrimSpace(subhyphae) != "" {
|
if strings.TrimSpace(subhyphae) != "" {
|
||||||
//line templates/common.qtpl:79
|
//line templates/common.qtpl:68
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<section class="subhyphae">
|
<section class="subhyphae">
|
||||||
<h2 class="subhyphae__title">Subhyphae</h2>
|
<h2 class="subhyphae__title">Subhyphae</h2>
|
||||||
<nav class="subhyphae__nav">
|
<nav class="subhyphae__nav">
|
||||||
<ul class="subhyphae__list">
|
<ul class="subhyphae__list">
|
||||||
`)
|
`)
|
||||||
//line templates/common.qtpl:84
|
//line templates/common.qtpl:73
|
||||||
qw422016.N().S(subhyphae)
|
qw422016.N().S(subhyphae)
|
||||||
//line templates/common.qtpl:84
|
//line templates/common.qtpl:73
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</section>
|
</section>
|
||||||
`)
|
`)
|
||||||
//line templates/common.qtpl:88
|
//line templates/common.qtpl:77
|
||||||
}
|
}
|
||||||
//line templates/common.qtpl:88
|
//line templates/common.qtpl:77
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
func writesubhyphaeMatrix(qq422016 qtio422016.Writer, subhyphae string) {
|
func writesubhyphaeMatrix(qq422016 qtio422016.Writer, subhyphae string) {
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
streamsubhyphaeMatrix(qw422016, subhyphae)
|
streamsubhyphaeMatrix(qw422016, subhyphae)
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
qt422016.ReleaseWriter(qw422016)
|
qt422016.ReleaseWriter(qw422016)
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
func subhyphaeMatrix(subhyphae string) string {
|
func subhyphaeMatrix(subhyphae string) string {
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
writesubhyphaeMatrix(qb422016, subhyphae)
|
writesubhyphaeMatrix(qb422016, subhyphae)
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
qs422016 := string(qb422016.B)
|
qs422016 := string(qb422016.B)
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
return qs422016
|
return qs422016
|
||||||
//line templates/common.qtpl:89
|
//line templates/common.qtpl:78
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
{% import "net/http" %}
|
{% import "net/http" %}
|
||||||
{% import "path" %}
|
{% import "path" %}
|
||||||
|
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/user" %}
|
{% import "github.com/bouncepaw/mycorrhiza/user" %}
|
||||||
{% import "github.com/bouncepaw/mycorrhiza/util" %}
|
{% import "github.com/bouncepaw/mycorrhiza/util" %}
|
||||||
|
{% import "github.com/bouncepaw/mycorrhiza/views" %}
|
||||||
|
|
||||||
{% func HistoryHTML(rq *http.Request, hyphaName, list string) %}
|
{% func HistoryHTML(rq *http.Request, hyphaName, list string) %}
|
||||||
{%= navHTML(rq, hyphaName, "history") %}
|
{%= navHTML(rq, hyphaName, "history") %}
|
||||||
@ -15,13 +17,13 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endfunc %}
|
{% endfunc %}
|
||||||
|
|
||||||
{% func RevisionHTML(rq *http.Request, hyphaName, naviTitle, contents, relatives, subhyphae, revHash string) %}
|
{% func RevisionHTML(rq *http.Request, h *hyphae.Hypha, contents, relatives, subhyphae, revHash string) %}
|
||||||
{%= navHTML(rq, hyphaName, "revision", revHash) %}
|
{%= navHTML(rq, h.Name, "revision", revHash) %}
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width">
|
<main class="main-width">
|
||||||
<article>
|
<article>
|
||||||
<p>Please note that viewing binary parts of hyphae is not supported in history for now.</p>
|
<p>Please note that viewing binary parts of hyphae is not supported in history for now.</p>
|
||||||
{%s= naviTitle %}
|
{%s= views.NaviTitleHTML(h) %}
|
||||||
{%s= contents %}
|
{%s= contents %}
|
||||||
</article>
|
</article>
|
||||||
{%= subhyphaeMatrix(subhyphae) %}
|
{%= subhyphaeMatrix(subhyphae) %}
|
||||||
@ -31,14 +33,14 @@
|
|||||||
{% endfunc %}
|
{% endfunc %}
|
||||||
|
|
||||||
If `contents` == "", a helpful message is shown instead.
|
If `contents` == "", a helpful message is shown instead.
|
||||||
{% func PageHTML(rq *http.Request, hyphaName, naviTitle, contents, relatives, subhyphae, backlinkEntries, prevHyphaName, nextHyphaName string, hasAmnt bool) %}
|
{% func PageHTML(rq *http.Request, h *hyphae.Hypha, contents, relatives, subhyphae, prevHyphaName, nextHyphaName string) %}
|
||||||
{%= navHTML(rq, hyphaName, "page") %}
|
{%= navHTML(rq, h.Name, "page") %}
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width">
|
<main class="main-width">
|
||||||
<article>
|
<article>
|
||||||
{%s= naviTitle %}
|
{%s= views.NaviTitleHTML(h) %}
|
||||||
{% if contents == "" %}
|
{% if contents == "" %}
|
||||||
<p>This hypha has no text. Why not <a href="/edit/{%s hyphaName %}">create it</a>?</p>
|
<p>This hypha has no text. Why not <a href="/edit/{%s h.Name %}">create it</a>?</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
{%s= contents %}
|
{%s= contents %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -52,11 +54,11 @@ If `contents` == "", a helpful message is shown instead.
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</section>
|
</section>
|
||||||
{% if u := user.FromRequest(rq); !user.AuthUsed || u.Group != "anon" %}
|
{% if u := user.FromRequest(rq); !user.AuthUsed || u.Group != "anon" %}
|
||||||
<form action="/upload-binary/{%s hyphaName %}"
|
<form action="/upload-binary/{%s h.Name %}"
|
||||||
method="post" enctype="multipart/form-data"
|
method="post" enctype="multipart/form-data"
|
||||||
class="upload-amnt">
|
class="upload-amnt">
|
||||||
{% if hasAmnt %}
|
{% if h.Exists && h.BinaryPath != "" %}
|
||||||
<a class="upload-amnt__unattach" href="/unattach-ask/{%s hyphaName %}">Unattach current attachment?</a>
|
<a class="upload-amnt__unattach" href="/unattach-ask/{%s h.Name %}">Unattach current attachment?</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<label for="upload-binary__input">Upload a new attachment</label>
|
<label for="upload-binary__input">Upload a new attachment</label>
|
||||||
<br>
|
<br>
|
||||||
@ -67,6 +69,6 @@ If `contents` == "", a helpful message is shown instead.
|
|||||||
{%= subhyphaeMatrix(subhyphae) %}
|
{%= subhyphaeMatrix(subhyphae) %}
|
||||||
</main>
|
</main>
|
||||||
{%= relativeHyphae(relatives) %}
|
{%= relativeHyphae(relatives) %}
|
||||||
{%= backlinks(backlinkEntries) %}
|
{%= views.BackLinksHTML(h) %}
|
||||||
</div>
|
</div>
|
||||||
{% endfunc %}
|
{% endfunc %}
|
||||||
|
@ -11,256 +11,262 @@ import "net/http"
|
|||||||
import "path"
|
import "path"
|
||||||
|
|
||||||
//line templates/readers.qtpl:3
|
//line templates/readers.qtpl:3
|
||||||
import "github.com/bouncepaw/mycorrhiza/user"
|
import "github.com/bouncepaw/mycorrhiza/hyphae"
|
||||||
|
|
||||||
//line templates/readers.qtpl:4
|
//line templates/readers.qtpl:4
|
||||||
|
import "github.com/bouncepaw/mycorrhiza/user"
|
||||||
|
|
||||||
|
//line templates/readers.qtpl:5
|
||||||
import "github.com/bouncepaw/mycorrhiza/util"
|
import "github.com/bouncepaw/mycorrhiza/util"
|
||||||
|
|
||||||
//line templates/readers.qtpl:6
|
//line templates/readers.qtpl:6
|
||||||
|
import "github.com/bouncepaw/mycorrhiza/views"
|
||||||
|
|
||||||
|
//line templates/readers.qtpl:8
|
||||||
import (
|
import (
|
||||||
qtio422016 "io"
|
qtio422016 "io"
|
||||||
|
|
||||||
qt422016 "github.com/valyala/quicktemplate"
|
qt422016 "github.com/valyala/quicktemplate"
|
||||||
)
|
)
|
||||||
|
|
||||||
//line templates/readers.qtpl:6
|
//line templates/readers.qtpl:8
|
||||||
var (
|
var (
|
||||||
_ = qtio422016.Copy
|
_ = qtio422016.Copy
|
||||||
_ = qt422016.AcquireByteBuffer
|
_ = qt422016.AcquireByteBuffer
|
||||||
)
|
)
|
||||||
|
|
||||||
//line templates/readers.qtpl:6
|
//line templates/readers.qtpl:8
|
||||||
func StreamHistoryHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, list string) {
|
func StreamHistoryHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, list string) {
|
||||||
//line templates/readers.qtpl:6
|
//line templates/readers.qtpl:8
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:7
|
//line templates/readers.qtpl:9
|
||||||
streamnavHTML(qw422016, rq, hyphaName, "history")
|
streamnavHTML(qw422016, rq, hyphaName, "history")
|
||||||
//line templates/readers.qtpl:7
|
//line templates/readers.qtpl:9
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width">
|
<main class="main-width">
|
||||||
<article class="history">
|
<article class="history">
|
||||||
<h1>History of `)
|
<h1>History of `)
|
||||||
//line templates/readers.qtpl:11
|
//line templates/readers.qtpl:13
|
||||||
qw422016.E().S(hyphaName)
|
qw422016.E().S(hyphaName)
|
||||||
//line templates/readers.qtpl:11
|
//line templates/readers.qtpl:13
|
||||||
qw422016.N().S(`</h1>
|
qw422016.N().S(`</h1>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:12
|
//line templates/readers.qtpl:14
|
||||||
qw422016.N().S(list)
|
qw422016.N().S(list)
|
||||||
//line templates/readers.qtpl:12
|
//line templates/readers.qtpl:14
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</article>
|
</article>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
func WriteHistoryHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, list string) {
|
func WriteHistoryHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, list string) {
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
StreamHistoryHTML(qw422016, rq, hyphaName, list)
|
StreamHistoryHTML(qw422016, rq, hyphaName, list)
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
qt422016.ReleaseWriter(qw422016)
|
qt422016.ReleaseWriter(qw422016)
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
func HistoryHTML(rq *http.Request, hyphaName, list string) string {
|
func HistoryHTML(rq *http.Request, hyphaName, list string) string {
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
WriteHistoryHTML(qb422016, rq, hyphaName, list)
|
WriteHistoryHTML(qb422016, rq, hyphaName, list)
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
qs422016 := string(qb422016.B)
|
qs422016 := string(qb422016.B)
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
return qs422016
|
return qs422016
|
||||||
//line templates/readers.qtpl:16
|
//line templates/readers.qtpl:18
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/readers.qtpl:18
|
//line templates/readers.qtpl:20
|
||||||
func StreamRevisionHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, naviTitle, contents, relatives, subhyphae, revHash string) {
|
func StreamRevisionHTML(qw422016 *qt422016.Writer, rq *http.Request, h *hyphae.Hypha, contents, relatives, subhyphae, revHash string) {
|
||||||
//line templates/readers.qtpl:18
|
//line templates/readers.qtpl:20
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:19
|
//line templates/readers.qtpl:21
|
||||||
streamnavHTML(qw422016, rq, hyphaName, "revision", revHash)
|
streamnavHTML(qw422016, rq, h.Name, "revision", revHash)
|
||||||
//line templates/readers.qtpl:19
|
//line templates/readers.qtpl:21
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width">
|
<main class="main-width">
|
||||||
<article>
|
<article>
|
||||||
<p>Please note that viewing binary parts of hyphae is not supported in history for now.</p>
|
<p>Please note that viewing binary parts of hyphae is not supported in history for now.</p>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:24
|
//line templates/readers.qtpl:26
|
||||||
qw422016.N().S(naviTitle)
|
qw422016.N().S(views.NaviTitleHTML(h))
|
||||||
//line templates/readers.qtpl:24
|
//line templates/readers.qtpl:26
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:25
|
//line templates/readers.qtpl:27
|
||||||
qw422016.N().S(contents)
|
qw422016.N().S(contents)
|
||||||
//line templates/readers.qtpl:25
|
//line templates/readers.qtpl:27
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</article>
|
</article>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:27
|
//line templates/readers.qtpl:29
|
||||||
streamsubhyphaeMatrix(qw422016, subhyphae)
|
streamsubhyphaeMatrix(qw422016, subhyphae)
|
||||||
//line templates/readers.qtpl:27
|
//line templates/readers.qtpl:29
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</main>
|
</main>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:29
|
//line templates/readers.qtpl:31
|
||||||
streamrelativeHyphae(qw422016, relatives)
|
streamrelativeHyphae(qw422016, relatives)
|
||||||
//line templates/readers.qtpl:29
|
//line templates/readers.qtpl:31
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
func WriteRevisionHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, naviTitle, contents, relatives, subhyphae, revHash string) {
|
func WriteRevisionHTML(qq422016 qtio422016.Writer, rq *http.Request, h *hyphae.Hypha, contents, relatives, subhyphae, revHash string) {
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
StreamRevisionHTML(qw422016, rq, hyphaName, naviTitle, contents, relatives, subhyphae, revHash)
|
StreamRevisionHTML(qw422016, rq, h, contents, relatives, subhyphae, revHash)
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
qt422016.ReleaseWriter(qw422016)
|
qt422016.ReleaseWriter(qw422016)
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
func RevisionHTML(rq *http.Request, hyphaName, naviTitle, contents, relatives, subhyphae, revHash string) string {
|
func RevisionHTML(rq *http.Request, h *hyphae.Hypha, contents, relatives, subhyphae, revHash string) string {
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
WriteRevisionHTML(qb422016, rq, hyphaName, naviTitle, contents, relatives, subhyphae, revHash)
|
WriteRevisionHTML(qb422016, rq, h, contents, relatives, subhyphae, revHash)
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
qs422016 := string(qb422016.B)
|
qs422016 := string(qb422016.B)
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
return qs422016
|
return qs422016
|
||||||
//line templates/readers.qtpl:31
|
//line templates/readers.qtpl:33
|
||||||
}
|
}
|
||||||
|
|
||||||
// If `contents` == "", a helpful message is shown instead.
|
// If `contents` == "", a helpful message is shown instead.
|
||||||
|
|
||||||
//line templates/readers.qtpl:34
|
//line templates/readers.qtpl:36
|
||||||
func StreamPageHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, naviTitle, contents, relatives, subhyphae, backlinkEntries, prevHyphaName, nextHyphaName string, hasAmnt bool) {
|
func StreamPageHTML(qw422016 *qt422016.Writer, rq *http.Request, h *hyphae.Hypha, contents, relatives, subhyphae, prevHyphaName, nextHyphaName string) {
|
||||||
//line templates/readers.qtpl:34
|
//line templates/readers.qtpl:36
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:35
|
//line templates/readers.qtpl:37
|
||||||
streamnavHTML(qw422016, rq, hyphaName, "page")
|
streamnavHTML(qw422016, rq, h.Name, "page")
|
||||||
//line templates/readers.qtpl:35
|
//line templates/readers.qtpl:37
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<main class="main-width">
|
<main class="main-width">
|
||||||
<article>
|
<article>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:39
|
//line templates/readers.qtpl:41
|
||||||
qw422016.N().S(naviTitle)
|
qw422016.N().S(views.NaviTitleHTML(h))
|
||||||
//line templates/readers.qtpl:39
|
//line templates/readers.qtpl:41
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:40
|
//line templates/readers.qtpl:42
|
||||||
if contents == "" {
|
if contents == "" {
|
||||||
//line templates/readers.qtpl:40
|
//line templates/readers.qtpl:42
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<p>This hypha has no text. Why not <a href="/edit/`)
|
<p>This hypha has no text. Why not <a href="/edit/`)
|
||||||
//line templates/readers.qtpl:41
|
//line templates/readers.qtpl:43
|
||||||
qw422016.E().S(hyphaName)
|
qw422016.E().S(h.Name)
|
||||||
//line templates/readers.qtpl:41
|
//line templates/readers.qtpl:43
|
||||||
qw422016.N().S(`">create it</a>?</p>
|
qw422016.N().S(`">create it</a>?</p>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:42
|
//line templates/readers.qtpl:44
|
||||||
} else {
|
} else {
|
||||||
//line templates/readers.qtpl:42
|
//line templates/readers.qtpl:44
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:43
|
//line templates/readers.qtpl:45
|
||||||
qw422016.N().S(contents)
|
qw422016.N().S(contents)
|
||||||
//line templates/readers.qtpl:43
|
//line templates/readers.qtpl:45
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:44
|
//line templates/readers.qtpl:46
|
||||||
}
|
}
|
||||||
//line templates/readers.qtpl:44
|
//line templates/readers.qtpl:46
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</article>
|
</article>
|
||||||
<section class="prevnext">
|
<section class="prevnext">
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:47
|
//line templates/readers.qtpl:49
|
||||||
if prevHyphaName != "" {
|
if prevHyphaName != "" {
|
||||||
//line templates/readers.qtpl:47
|
//line templates/readers.qtpl:49
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<a class="prevnext__el prevnext__prev" href="/hypha/`)
|
<a class="prevnext__el prevnext__prev" href="/hypha/`)
|
||||||
//line templates/readers.qtpl:48
|
//line templates/readers.qtpl:50
|
||||||
qw422016.E().S(prevHyphaName)
|
qw422016.E().S(prevHyphaName)
|
||||||
//line templates/readers.qtpl:48
|
//line templates/readers.qtpl:50
|
||||||
qw422016.N().S(`" rel="prev">← `)
|
qw422016.N().S(`" rel="prev">← `)
|
||||||
//line templates/readers.qtpl:48
|
//line templates/readers.qtpl:50
|
||||||
qw422016.E().S(util.BeautifulName(path.Base(prevHyphaName)))
|
qw422016.E().S(util.BeautifulName(path.Base(prevHyphaName)))
|
||||||
//line templates/readers.qtpl:48
|
//line templates/readers.qtpl:50
|
||||||
qw422016.N().S(`</a>
|
qw422016.N().S(`</a>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:49
|
//line templates/readers.qtpl:51
|
||||||
}
|
}
|
||||||
//line templates/readers.qtpl:49
|
//line templates/readers.qtpl:51
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:50
|
//line templates/readers.qtpl:52
|
||||||
if nextHyphaName != "" {
|
if nextHyphaName != "" {
|
||||||
//line templates/readers.qtpl:50
|
//line templates/readers.qtpl:52
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<a class="prevnext__el prevnext__next" href="/hypha/`)
|
<a class="prevnext__el prevnext__next" href="/hypha/`)
|
||||||
//line templates/readers.qtpl:51
|
//line templates/readers.qtpl:53
|
||||||
qw422016.E().S(nextHyphaName)
|
qw422016.E().S(nextHyphaName)
|
||||||
//line templates/readers.qtpl:51
|
//line templates/readers.qtpl:53
|
||||||
qw422016.N().S(`" rel="next">`)
|
qw422016.N().S(`" rel="next">`)
|
||||||
//line templates/readers.qtpl:51
|
//line templates/readers.qtpl:53
|
||||||
qw422016.E().S(util.BeautifulName(path.Base(nextHyphaName)))
|
qw422016.E().S(util.BeautifulName(path.Base(nextHyphaName)))
|
||||||
//line templates/readers.qtpl:51
|
//line templates/readers.qtpl:53
|
||||||
qw422016.N().S(` →</a>
|
qw422016.N().S(` →</a>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:52
|
//line templates/readers.qtpl:54
|
||||||
}
|
}
|
||||||
//line templates/readers.qtpl:52
|
//line templates/readers.qtpl:54
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</section>
|
</section>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:54
|
//line templates/readers.qtpl:56
|
||||||
if u := user.FromRequest(rq); !user.AuthUsed || u.Group != "anon" {
|
if u := user.FromRequest(rq); !user.AuthUsed || u.Group != "anon" {
|
||||||
//line templates/readers.qtpl:54
|
//line templates/readers.qtpl:56
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<form action="/upload-binary/`)
|
<form action="/upload-binary/`)
|
||||||
//line templates/readers.qtpl:55
|
//line templates/readers.qtpl:57
|
||||||
qw422016.E().S(hyphaName)
|
qw422016.E().S(h.Name)
|
||||||
//line templates/readers.qtpl:55
|
//line templates/readers.qtpl:57
|
||||||
qw422016.N().S(`"
|
qw422016.N().S(`"
|
||||||
method="post" enctype="multipart/form-data"
|
method="post" enctype="multipart/form-data"
|
||||||
class="upload-amnt">
|
class="upload-amnt">
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:58
|
//line templates/readers.qtpl:60
|
||||||
if hasAmnt {
|
if h.Exists && h.BinaryPath != "" {
|
||||||
//line templates/readers.qtpl:58
|
//line templates/readers.qtpl:60
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<a class="upload-amnt__unattach" href="/unattach-ask/`)
|
<a class="upload-amnt__unattach" href="/unattach-ask/`)
|
||||||
//line templates/readers.qtpl:59
|
//line templates/readers.qtpl:61
|
||||||
qw422016.E().S(hyphaName)
|
qw422016.E().S(h.Name)
|
||||||
//line templates/readers.qtpl:59
|
//line templates/readers.qtpl:61
|
||||||
qw422016.N().S(`">Unattach current attachment?</a>
|
qw422016.N().S(`">Unattach current attachment?</a>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:60
|
//line templates/readers.qtpl:62
|
||||||
}
|
}
|
||||||
//line templates/readers.qtpl:60
|
//line templates/readers.qtpl:62
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
<label for="upload-binary__input">Upload a new attachment</label>
|
<label for="upload-binary__input">Upload a new attachment</label>
|
||||||
<br>
|
<br>
|
||||||
@ -268,53 +274,53 @@ func StreamPageHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, navi
|
|||||||
<input type="submit"/>
|
<input type="submit"/>
|
||||||
</form>
|
</form>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:66
|
//line templates/readers.qtpl:68
|
||||||
}
|
}
|
||||||
//line templates/readers.qtpl:66
|
//line templates/readers.qtpl:68
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:67
|
//line templates/readers.qtpl:69
|
||||||
streamsubhyphaeMatrix(qw422016, subhyphae)
|
streamsubhyphaeMatrix(qw422016, subhyphae)
|
||||||
//line templates/readers.qtpl:67
|
//line templates/readers.qtpl:69
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</main>
|
</main>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:69
|
//line templates/readers.qtpl:71
|
||||||
streamrelativeHyphae(qw422016, relatives)
|
streamrelativeHyphae(qw422016, relatives)
|
||||||
//line templates/readers.qtpl:69
|
//line templates/readers.qtpl:71
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:70
|
//line templates/readers.qtpl:72
|
||||||
streambacklinks(qw422016, backlinkEntries)
|
views.StreamBackLinksHTML(qw422016, h)
|
||||||
//line templates/readers.qtpl:70
|
//line templates/readers.qtpl:72
|
||||||
qw422016.N().S(`
|
qw422016.N().S(`
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
func WritePageHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, naviTitle, contents, relatives, subhyphae, backlinkEntries, prevHyphaName, nextHyphaName string, hasAmnt bool) {
|
func WritePageHTML(qq422016 qtio422016.Writer, rq *http.Request, h *hyphae.Hypha, contents, relatives, subhyphae, prevHyphaName, nextHyphaName string) {
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
StreamPageHTML(qw422016, rq, hyphaName, naviTitle, contents, relatives, subhyphae, backlinkEntries, prevHyphaName, nextHyphaName, hasAmnt)
|
StreamPageHTML(qw422016, rq, h, contents, relatives, subhyphae, prevHyphaName, nextHyphaName)
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
qt422016.ReleaseWriter(qw422016)
|
qt422016.ReleaseWriter(qw422016)
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
}
|
}
|
||||||
|
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
func PageHTML(rq *http.Request, hyphaName, naviTitle, contents, relatives, subhyphae, backlinkEntries, prevHyphaName, nextHyphaName string, hasAmnt bool) string {
|
func PageHTML(rq *http.Request, h *hyphae.Hypha, contents, relatives, subhyphae, prevHyphaName, nextHyphaName string) string {
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
qb422016 := qt422016.AcquireByteBuffer()
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
WritePageHTML(qb422016, rq, hyphaName, naviTitle, contents, relatives, subhyphae, backlinkEntries, prevHyphaName, nextHyphaName, hasAmnt)
|
WritePageHTML(qb422016, rq, h, contents, relatives, subhyphae, prevHyphaName, nextHyphaName)
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
qs422016 := string(qb422016.B)
|
qs422016 := string(qb422016.B)
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
qt422016.ReleaseByteBuffer(qb422016)
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
return qs422016
|
return qs422016
|
||||||
//line templates/readers.qtpl:72
|
//line templates/readers.qtpl:74
|
||||||
}
|
}
|
||||||
|
81
views/hypha.qtpl
Normal file
81
views/hypha.qtpl
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
{% import "path/filepath" %}
|
||||||
|
{% import "strings" %}
|
||||||
|
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
|
||||||
|
{% import "github.com/bouncepaw/mycorrhiza/util" %}
|
||||||
|
|
||||||
|
{% func NaviTitleHTML(h *hyphae.Hypha) %}
|
||||||
|
{% code
|
||||||
|
var (
|
||||||
|
prevAcc = "/hypha/"
|
||||||
|
parts = strings.Split(h.Name, "/")
|
||||||
|
)
|
||||||
|
%}
|
||||||
|
<h1 class="navi-title">
|
||||||
|
{% stripspace %}
|
||||||
|
<a href="/hypha/{%s util.HomePage %}">
|
||||||
|
{%-s= util.SiteNavIcon -%}
|
||||||
|
<span aria-hidden="true" class="navi-title__colon">:</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
{% for i, part := range parts %}
|
||||||
|
{% if i > 0 %}
|
||||||
|
<span aria-hidden="true" class="navi-title__separator">/</span>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<a href="{%s prevAcc + part %}"
|
||||||
|
rel="{% if i == len(parts) - 1 %}bookmark{% else %}up{% endif %}">
|
||||||
|
{%s= util.BeautifulName(part) %}
|
||||||
|
</a>
|
||||||
|
{% code prevAcc += part + "/" %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endstripspace %}
|
||||||
|
</h1>
|
||||||
|
{% endfunc %}
|
||||||
|
|
||||||
|
{% func BackLinksHTML(h *hyphae.Hypha) %}
|
||||||
|
<aside class="backlinks layout-card">
|
||||||
|
<h2 class="backlinks__title layout-card__title">Backlinks</h2>
|
||||||
|
<nav class="backlinks__nav">
|
||||||
|
<ul class="backlinks__list">
|
||||||
|
{% for _, backlink := range h.BackLinks %}
|
||||||
|
<li class="backlinks__entry">
|
||||||
|
<a class="backlinks__link" href="/hypha/{%s backlink.Name %}">
|
||||||
|
{%s util.BeautifulName(filepath.Base(backlink.Name)) %}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</aside>
|
||||||
|
{% endfunc %}
|
||||||
|
|
||||||
|
{% func AttachmentHTML(h *hyphae.Hypha) %}
|
||||||
|
{% switch filepath.Ext(h.BinaryPath) %}
|
||||||
|
|
||||||
|
{% case ".jpg", ".gif", ".png", ".webp", ".svg", ".ico" %}
|
||||||
|
<div class="binary-container binary-container_with-img">
|
||||||
|
<a href="/binary/{%s= h.Name %}"><img src="/binary/{%s= h.Name %}"/></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% case ".ogg", ".webm", ".mp4" %}
|
||||||
|
<div class="binary-container binary-container_with-video">
|
||||||
|
<video controls>
|
||||||
|
<source src="/binary/{%s= h.Name %}"/>
|
||||||
|
<p>Your browser does not support video. <a href="/binary/{%s= h.Name %}">Download video</a></p>
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% case ".mp3" %}
|
||||||
|
<div class="binary-container binary-container_with-audio">
|
||||||
|
<audio controls>
|
||||||
|
<source src="/binary/{%s= h.Name %}"/>
|
||||||
|
<p>Your browser does not support audio. <a href="/binary/{%s= h.Name %}">Download audio</a></p>
|
||||||
|
</audio>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% default %}
|
||||||
|
<div class="binary-container binary-container_with-nothing">
|
||||||
|
<p><a href="/binary/{%s= h.Name %}">Download media</a></p>
|
||||||
|
</div>
|
||||||
|
{% endswitch %}
|
||||||
|
{% endfunc %}
|
297
views/hypha.qtpl.go
Normal file
297
views/hypha.qtpl.go
Normal file
@ -0,0 +1,297 @@
|
|||||||
|
// Code generated by qtc from "hypha.qtpl". DO NOT EDIT.
|
||||||
|
// See https://github.com/valyala/quicktemplate for details.
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:1
|
||||||
|
package views
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:1
|
||||||
|
import "path/filepath"
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:2
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:3
|
||||||
|
import "github.com/bouncepaw/mycorrhiza/hyphae"
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:4
|
||||||
|
import "github.com/bouncepaw/mycorrhiza/util"
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:6
|
||||||
|
import (
|
||||||
|
qtio422016 "io"
|
||||||
|
|
||||||
|
qt422016 "github.com/valyala/quicktemplate"
|
||||||
|
)
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:6
|
||||||
|
var (
|
||||||
|
_ = qtio422016.Copy
|
||||||
|
_ = qt422016.AcquireByteBuffer
|
||||||
|
)
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:6
|
||||||
|
func StreamNaviTitleHTML(qw422016 *qt422016.Writer, h *hyphae.Hypha) {
|
||||||
|
//line views/hypha.qtpl:6
|
||||||
|
qw422016.N().S(`
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:8
|
||||||
|
var (
|
||||||
|
prevAcc = "/hypha/"
|
||||||
|
parts = strings.Split(h.Name, "/")
|
||||||
|
)
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:12
|
||||||
|
qw422016.N().S(`
|
||||||
|
<h1 class="navi-title">
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:14
|
||||||
|
qw422016.N().S(`<a href="/hypha/`)
|
||||||
|
//line views/hypha.qtpl:15
|
||||||
|
qw422016.E().S(util.HomePage)
|
||||||
|
//line views/hypha.qtpl:15
|
||||||
|
qw422016.N().S(`">`)
|
||||||
|
//line views/hypha.qtpl:16
|
||||||
|
qw422016.N().S(util.SiteNavIcon)
|
||||||
|
//line views/hypha.qtpl:16
|
||||||
|
qw422016.N().S(`<span aria-hidden="true" class="navi-title__colon">:</span></a>`)
|
||||||
|
//line views/hypha.qtpl:20
|
||||||
|
for i, part := range parts {
|
||||||
|
//line views/hypha.qtpl:21
|
||||||
|
if i > 0 {
|
||||||
|
//line views/hypha.qtpl:21
|
||||||
|
qw422016.N().S(`<span aria-hidden="true" class="navi-title__separator">/</span>`)
|
||||||
|
//line views/hypha.qtpl:23
|
||||||
|
}
|
||||||
|
//line views/hypha.qtpl:23
|
||||||
|
qw422016.N().S(`<a href="`)
|
||||||
|
//line views/hypha.qtpl:25
|
||||||
|
qw422016.E().S(prevAcc + part)
|
||||||
|
//line views/hypha.qtpl:25
|
||||||
|
qw422016.N().S(`"rel="`)
|
||||||
|
//line views/hypha.qtpl:26
|
||||||
|
if i == len(parts)-1 {
|
||||||
|
//line views/hypha.qtpl:26
|
||||||
|
qw422016.N().S(`bookmark`)
|
||||||
|
//line views/hypha.qtpl:26
|
||||||
|
} else {
|
||||||
|
//line views/hypha.qtpl:26
|
||||||
|
qw422016.N().S(`up`)
|
||||||
|
//line views/hypha.qtpl:26
|
||||||
|
}
|
||||||
|
//line views/hypha.qtpl:26
|
||||||
|
qw422016.N().S(`">`)
|
||||||
|
//line views/hypha.qtpl:27
|
||||||
|
qw422016.N().S(util.BeautifulName(part))
|
||||||
|
//line views/hypha.qtpl:27
|
||||||
|
qw422016.N().S(`</a>`)
|
||||||
|
//line views/hypha.qtpl:29
|
||||||
|
prevAcc += part + "/"
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:30
|
||||||
|
}
|
||||||
|
//line views/hypha.qtpl:31
|
||||||
|
qw422016.N().S(`
|
||||||
|
</h1>
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
func WriteNaviTitleHTML(qq422016 qtio422016.Writer, h *hyphae.Hypha) {
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
StreamNaviTitleHTML(qw422016, h)
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
qt422016.ReleaseWriter(qw422016)
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
func NaviTitleHTML(h *hyphae.Hypha) string {
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
WriteNaviTitleHTML(qb422016, h)
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
qs422016 := string(qb422016.B)
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
return qs422016
|
||||||
|
//line views/hypha.qtpl:33
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:35
|
||||||
|
func StreamBackLinksHTML(qw422016 *qt422016.Writer, h *hyphae.Hypha) {
|
||||||
|
//line views/hypha.qtpl:35
|
||||||
|
qw422016.N().S(`
|
||||||
|
<aside class="backlinks layout-card">
|
||||||
|
<h2 class="backlinks__title layout-card__title">Backlinks</h2>
|
||||||
|
<nav class="backlinks__nav">
|
||||||
|
<ul class="backlinks__list">
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:40
|
||||||
|
for _, backlink := range h.BackLinks {
|
||||||
|
//line views/hypha.qtpl:40
|
||||||
|
qw422016.N().S(`
|
||||||
|
<li class="backlinks__entry">
|
||||||
|
<a class="backlinks__link" href="/hypha/`)
|
||||||
|
//line views/hypha.qtpl:42
|
||||||
|
qw422016.E().S(backlink.Name)
|
||||||
|
//line views/hypha.qtpl:42
|
||||||
|
qw422016.N().S(`">
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:43
|
||||||
|
qw422016.E().S(util.BeautifulName(filepath.Base(backlink.Name)))
|
||||||
|
//line views/hypha.qtpl:43
|
||||||
|
qw422016.N().S(`
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:46
|
||||||
|
}
|
||||||
|
//line views/hypha.qtpl:46
|
||||||
|
qw422016.N().S(`
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</aside>
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
func WriteBackLinksHTML(qq422016 qtio422016.Writer, h *hyphae.Hypha) {
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
StreamBackLinksHTML(qw422016, h)
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
qt422016.ReleaseWriter(qw422016)
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
func BackLinksHTML(h *hyphae.Hypha) string {
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
WriteBackLinksHTML(qb422016, h)
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
qs422016 := string(qb422016.B)
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
return qs422016
|
||||||
|
//line views/hypha.qtpl:50
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:52
|
||||||
|
func StreamAttachmentHTML(qw422016 *qt422016.Writer, h *hyphae.Hypha) {
|
||||||
|
//line views/hypha.qtpl:52
|
||||||
|
qw422016.N().S(`
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:53
|
||||||
|
switch filepath.Ext(h.BinaryPath) {
|
||||||
|
//line views/hypha.qtpl:55
|
||||||
|
case ".jpg", ".gif", ".png", ".webp", ".svg", ".ico":
|
||||||
|
//line views/hypha.qtpl:55
|
||||||
|
qw422016.N().S(`
|
||||||
|
<div class="binary-container binary-container_with-img">
|
||||||
|
<a href="/binary/`)
|
||||||
|
//line views/hypha.qtpl:57
|
||||||
|
qw422016.N().S(h.Name)
|
||||||
|
//line views/hypha.qtpl:57
|
||||||
|
qw422016.N().S(`"><img src="/binary/`)
|
||||||
|
//line views/hypha.qtpl:57
|
||||||
|
qw422016.N().S(h.Name)
|
||||||
|
//line views/hypha.qtpl:57
|
||||||
|
qw422016.N().S(`"/></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:60
|
||||||
|
case ".ogg", ".webm", ".mp4":
|
||||||
|
//line views/hypha.qtpl:60
|
||||||
|
qw422016.N().S(`
|
||||||
|
<div class="binary-container binary-container_with-video">
|
||||||
|
<video controls>
|
||||||
|
<source src="/binary/`)
|
||||||
|
//line views/hypha.qtpl:63
|
||||||
|
qw422016.N().S(h.Name)
|
||||||
|
//line views/hypha.qtpl:63
|
||||||
|
qw422016.N().S(`"/>
|
||||||
|
<p>Your browser does not support video. <a href="/binary/`)
|
||||||
|
//line views/hypha.qtpl:64
|
||||||
|
qw422016.N().S(h.Name)
|
||||||
|
//line views/hypha.qtpl:64
|
||||||
|
qw422016.N().S(`">Download video</a></p>
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:68
|
||||||
|
case ".mp3":
|
||||||
|
//line views/hypha.qtpl:68
|
||||||
|
qw422016.N().S(`
|
||||||
|
<div class="binary-container binary-container_with-audio">
|
||||||
|
<audio controls>
|
||||||
|
<source src="/binary/`)
|
||||||
|
//line views/hypha.qtpl:71
|
||||||
|
qw422016.N().S(h.Name)
|
||||||
|
//line views/hypha.qtpl:71
|
||||||
|
qw422016.N().S(`"/>
|
||||||
|
<p>Your browser does not support audio. <a href="/binary/`)
|
||||||
|
//line views/hypha.qtpl:72
|
||||||
|
qw422016.N().S(h.Name)
|
||||||
|
//line views/hypha.qtpl:72
|
||||||
|
qw422016.N().S(`">Download audio</a></p>
|
||||||
|
</audio>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:76
|
||||||
|
default:
|
||||||
|
//line views/hypha.qtpl:76
|
||||||
|
qw422016.N().S(`
|
||||||
|
<div class="binary-container binary-container_with-nothing">
|
||||||
|
<p><a href="/binary/`)
|
||||||
|
//line views/hypha.qtpl:78
|
||||||
|
qw422016.N().S(h.Name)
|
||||||
|
//line views/hypha.qtpl:78
|
||||||
|
qw422016.N().S(`">Download media</a></p>
|
||||||
|
</div>
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:80
|
||||||
|
}
|
||||||
|
//line views/hypha.qtpl:80
|
||||||
|
qw422016.N().S(`
|
||||||
|
`)
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
func WriteAttachmentHTML(qq422016 qtio422016.Writer, h *hyphae.Hypha) {
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
StreamAttachmentHTML(qw422016, h)
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
qt422016.ReleaseWriter(qw422016)
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
}
|
||||||
|
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
func AttachmentHTML(h *hyphae.Hypha) string {
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
qb422016 := qt422016.AcquireByteBuffer()
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
WriteAttachmentHTML(qb422016, h)
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
qs422016 := string(qb422016.B)
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
qt422016.ReleaseByteBuffer(qb422016)
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
return qs422016
|
||||||
|
//line views/hypha.qtpl:81
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user