`)
-//line hypview/readers.qtpl:154
- streamviewScripts(qw422016)
-//line hypview/readers.qtpl:154
- qw422016.N().S(`
-`)
-//line hypview/readers.qtpl:155
-}
-
-//line hypview/readers.qtpl:155
-func WriteRevision(qq422016 qtio422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents, revHash string) {
-//line hypview/readers.qtpl:155
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line hypview/readers.qtpl:155
- StreamRevision(qw422016, meta, h, contents, revHash)
-//line hypview/readers.qtpl:155
- qt422016.ReleaseWriter(qw422016)
-//line hypview/readers.qtpl:155
-}
-
-//line hypview/readers.qtpl:155
-func Revision(meta viewutil.Meta, h hyphae.Hypha, contents, revHash string) string {
-//line hypview/readers.qtpl:155
- qb422016 := qt422016.AcquireByteBuffer()
-//line hypview/readers.qtpl:155
- WriteRevision(qb422016, meta, h, contents, revHash)
-//line hypview/readers.qtpl:155
- qs422016 := string(qb422016.B)
-//line hypview/readers.qtpl:155
- qt422016.ReleaseByteBuffer(qb422016)
-//line hypview/readers.qtpl:155
- return qs422016
-//line hypview/readers.qtpl:155
-}
-
-//line hypview/readers.qtpl:157
-func streamviewScripts(qw422016 *qt422016.Writer) {
-//line hypview/readers.qtpl:157
- qw422016.N().S(`
-`)
-//line hypview/readers.qtpl:158
+//line hypview/readers.qtpl:91
for _, scriptPath := range cfg.ViewScripts {
-//line hypview/readers.qtpl:158
+//line hypview/readers.qtpl:91
qw422016.N().S(`
`)
-//line hypview/readers.qtpl:160
+//line hypview/readers.qtpl:93
}
-//line hypview/readers.qtpl:160
+//line hypview/readers.qtpl:93
qw422016.N().S(`
`)
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
}
-//line hypview/readers.qtpl:161
-func writeviewScripts(qq422016 qtio422016.Writer) {
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
+func WriteRevision(qq422016 qtio422016.Writer, meta viewutil.Meta, h hyphae.Hypha, contents, revHash string) {
+//line hypview/readers.qtpl:94
qw422016 := qt422016.AcquireWriter(qq422016)
-//line hypview/readers.qtpl:161
- streamviewScripts(qw422016)
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
+ StreamRevision(qw422016, meta, h, contents, revHash)
+//line hypview/readers.qtpl:94
qt422016.ReleaseWriter(qw422016)
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
}
-//line hypview/readers.qtpl:161
-func viewScripts() string {
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
+func Revision(meta viewutil.Meta, h hyphae.Hypha, contents, revHash string) string {
+//line hypview/readers.qtpl:94
qb422016 := qt422016.AcquireByteBuffer()
-//line hypview/readers.qtpl:161
- writeviewScripts(qb422016)
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
+ WriteRevision(qb422016, meta, h, contents, revHash)
+//line hypview/readers.qtpl:94
qs422016 := string(qb422016.B)
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
qt422016.ReleaseByteBuffer(qb422016)
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
return qs422016
-//line hypview/readers.qtpl:161
+//line hypview/readers.qtpl:94
}
diff --git a/internal/shroom/upload.go b/internal/shroom/upload.go
index 8750ca9..a63c1ec 100644
--- a/internal/shroom/upload.go
+++ b/internal/shroom/upload.go
@@ -4,18 +4,19 @@ import (
"bytes"
"errors"
"fmt"
- "github.com/bouncepaw/mycorrhiza/backlinks"
- "github.com/bouncepaw/mycorrhiza/files"
- "github.com/bouncepaw/mycorrhiza/history"
- "github.com/bouncepaw/mycorrhiza/hyphae"
- "github.com/bouncepaw/mycorrhiza/mimetype"
- "github.com/bouncepaw/mycorrhiza/user"
"io"
"log"
"mime/multipart"
"os"
"path/filepath"
"strings"
+
+ "github.com/bouncepaw/mycorrhiza/history"
+ "github.com/bouncepaw/mycorrhiza/internal/backlinks"
+ "github.com/bouncepaw/mycorrhiza/internal/files"
+ "github.com/bouncepaw/mycorrhiza/internal/hyphae"
+ "github.com/bouncepaw/mycorrhiza/internal/mimetype"
+ "github.com/bouncepaw/mycorrhiza/internal/user"
)
func historyMessageForTextUpload(h hyphae.Hypha, userMessage string) string {
diff --git a/internal/tree/tree.go b/internal/tree/tree.go
index 05d9ad8..6dc171e 100644
--- a/internal/tree/tree.go
+++ b/internal/tree/tree.go
@@ -117,7 +117,7 @@ func findOrCreateSubchild(name string, baseChild *child) *child {
return &baseChild.children[len(baseChild.children)-1]
}
-func subhyphaeMatrix(children []child) (html string) {
+func subhyphaeMatrix(children []child) template.HTML {
sort.Slice(children, func(i, j int) bool {
return children[i].name < children[j].name
})
@@ -125,5 +125,5 @@ func subhyphaeMatrix(children []child) (html string) {
for _, child := range children {
childHTML(&child, &buf)
}
- return buf.String()
+ return template.HTML(buf.String())
}
diff --git a/web/newtmpl/newtmpl.go b/web/newtmpl/newtmpl.go
index aeff8e3..ec309c2 100644
--- a/web/newtmpl/newtmpl.go
+++ b/web/newtmpl/newtmpl.go
@@ -20,7 +20,7 @@ type Page struct {
TemplateRussian *template.Template
}
-func NewPage(fs embed.FS, tmpl string, russianTranslation map[string]string) *Page {
+func NewPage(fs embed.FS, russianTranslation map[string]string, tmpls ...string) *Page {
must := template.Must
en := must(must(must(
base.Clone()).
@@ -32,7 +32,7 @@ func NewPage(fs embed.FS, tmpl string, russianTranslation map[string]string) *Pa
{{define "wiki name"}}%s{{end}}
{{define "user hypha"}}%s{{end}}
`, cfg.WikiName, cfg.UserHypha))).
- ParseFS(fs, tmpl))
+ ParseFS(fs, tmpls...))
if cfg.UseAuth {
en = must(en.Parse(`
diff --git a/web/pages.go b/web/pages.go
index 57b1879..ffef453 100644
--- a/web/pages.go
+++ b/web/pages.go
@@ -21,23 +21,43 @@ func initPages() {
editUserChain = viewutil.CopyEnRuWith(fs, "views/admin-edit-user.html", adminTranslationRu)
deleteUserChain = viewutil.CopyEnRuWith(fs, "views/admin-delete-user.html", adminTranslationRu)
- pageOrphans = newtmpl.NewPage(fs, "views/orphans.html", map[string]string{
+ pageOrphans = newtmpl.NewPage(fs, map[string]string{
+ "orphaned hyphae": "Гифы-сироты",
+ "orphan description": "Ниже перечислены гифы без ссылок на них.",
+ }, "views/orphans.html", map[string]string{
"orphaned hyphae": "Гифы-сироты",
"orphan description": "Ниже перечислены гифы без ссылок на них.",
})
- pageBacklinks = newtmpl.NewPage(fs, "views/backlinks.html", map[string]string{
+ pageBacklinks = newtmpl.NewPage(fs, map[string]string{
+ "backlinks to text": `Обратные ссылки на {{.}}`,
+ "backlinks to link": `Обратные ссылки на