Move orphans to the new system and fix a bug in it
This commit is contained in:
parent
04d59927ab
commit
1ac1ee0789
@ -3,6 +3,7 @@ package backlinks
|
|||||||
import (
|
import (
|
||||||
"embed"
|
"embed"
|
||||||
"github.com/bouncepaw/mycorrhiza/hyphae"
|
"github.com/bouncepaw/mycorrhiza/hyphae"
|
||||||
|
"github.com/bouncepaw/mycorrhiza/newtmpl"
|
||||||
"github.com/bouncepaw/mycorrhiza/util"
|
"github.com/bouncepaw/mycorrhiza/util"
|
||||||
"github.com/bouncepaw/mycorrhiza/viewutil"
|
"github.com/bouncepaw/mycorrhiza/viewutil"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
@ -14,7 +15,10 @@ func InitHandlers(rtr *mux.Router) {
|
|||||||
rtr.PathPrefix("/backlinks/").HandlerFunc(handlerBacklinks)
|
rtr.PathPrefix("/backlinks/").HandlerFunc(handlerBacklinks)
|
||||||
rtr.PathPrefix("/orphans").HandlerFunc(handlerOrphans)
|
rtr.PathPrefix("/orphans").HandlerFunc(handlerOrphans)
|
||||||
chainBacklinks = viewutil.CopyEnRuWith(fs, "view_backlinks.html", ruTranslation)
|
chainBacklinks = viewutil.CopyEnRuWith(fs, "view_backlinks.html", ruTranslation)
|
||||||
chainOrphans = viewutil.CopyEnRuWith(fs, "view_orphans.html", ruTranslation)
|
pageOrphans = newtmpl.NewPage(fs, "view_orphans.html", map[string]string{
|
||||||
|
"orphaned hyphae": "Гифы-сироты",
|
||||||
|
"orphan description": "Ниже перечислены гифы без ссылок на них.",
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// handlerBacklinks lists all backlinks to a hypha.
|
// handlerBacklinks lists all backlinks to a hypha.
|
||||||
@ -37,7 +41,12 @@ func handlerOrphans(w http.ResponseWriter, rq *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sort.Strings(orphans)
|
sort.Strings(orphans)
|
||||||
viewOrphans(viewutil.MetaFrom(w, rq), orphans)
|
|
||||||
|
_ = pageOrphans.RenderTo(viewutil.MetaFrom(w, rq),
|
||||||
|
map[string]any{
|
||||||
|
"Addr": "/orphans",
|
||||||
|
"Orphans": orphans,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -47,11 +56,10 @@ var (
|
|||||||
{{define "backlinks to text"}}Обратные ссылки на {{.}}{{end}}
|
{{define "backlinks to text"}}Обратные ссылки на {{.}}{{end}}
|
||||||
{{define "backlinks to link"}}Обратные ссылки на <a href="/hypha/{{.}}">{{beautifulName .}}</a>{{end}}
|
{{define "backlinks to link"}}Обратные ссылки на <a href="/hypha/{{.}}">{{beautifulName .}}</a>{{end}}
|
||||||
{{define "description"}}Ниже перечислены гифы, на которых есть ссылка на эту гифу, трансклюзия этой гифы или эта гифа вставлена как изображение.{{end}}
|
{{define "description"}}Ниже перечислены гифы, на которых есть ссылка на эту гифу, трансклюзия этой гифы или эта гифа вставлена как изображение.{{end}}
|
||||||
{{define "orphaned hyphae"}}Гифы-сироты{{end}}
|
|
||||||
{{define "orphan description"}}Ниже перечислены гифы без ссылок на них.{{end}}
|
|
||||||
`
|
`
|
||||||
chainBacklinks viewutil.Chain
|
chainBacklinks viewutil.Chain
|
||||||
chainOrphans viewutil.Chain
|
|
||||||
|
pageOrphans *newtmpl.Page
|
||||||
)
|
)
|
||||||
|
|
||||||
type backlinksData struct {
|
type backlinksData struct {
|
||||||
@ -69,17 +77,3 @@ func viewBacklinks(meta viewutil.Meta, hyphaName string, backlinks []string) {
|
|||||||
Backlinks: backlinks,
|
Backlinks: backlinks,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
type orphansData struct {
|
|
||||||
*viewutil.BaseData
|
|
||||||
Orphans []string
|
|
||||||
}
|
|
||||||
|
|
||||||
func viewOrphans(meta viewutil.Meta, orphans []string) {
|
|
||||||
viewutil.ExecutePage(meta, chainOrphans, orphansData{
|
|
||||||
BaseData: &viewutil.BaseData{
|
|
||||||
Addr: "/orphans",
|
|
||||||
},
|
|
||||||
Orphans: orphans,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import (
|
|||||||
"embed"
|
"embed"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/bouncepaw/mycorrhiza/cfg"
|
"github.com/bouncepaw/mycorrhiza/cfg"
|
||||||
|
"github.com/bouncepaw/mycorrhiza/util"
|
||||||
"html/template"
|
"html/template"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -13,17 +14,64 @@ import (
|
|||||||
//go:embed *.html
|
//go:embed *.html
|
||||||
var fs embed.FS
|
var fs embed.FS
|
||||||
|
|
||||||
|
var base = template.Must(template.ParseFS(fs, "base.html"))
|
||||||
|
|
||||||
type Page struct {
|
type Page struct {
|
||||||
TemplateEnglish *template.Template
|
TemplateEnglish *template.Template
|
||||||
TemplateRussian *template.Template
|
TemplateRussian *template.Template
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPage(tmpl string, russianTranslation map[string]string) *Page {
|
func NewPage(fs embed.FS, tmpl string, russianTranslation map[string]string) *Page {
|
||||||
must := template.Must
|
must := template.Must
|
||||||
|
en := must(must(must(
|
||||||
|
base.Clone()).
|
||||||
|
Funcs(template.FuncMap{
|
||||||
|
"beautifulName": util.BeautifulName,
|
||||||
|
"inc": func(i int) int { return i + 1 },
|
||||||
|
}).
|
||||||
|
Parse(fmt.Sprintf(`
|
||||||
|
{{define "wiki name"}}%s{{end}}
|
||||||
|
{{define "user hypha"}}%s{{end}}
|
||||||
|
`, cfg.WikiName, cfg.UserHypha))).
|
||||||
|
ParseFS(fs, tmpl))
|
||||||
|
|
||||||
|
if cfg.UseAuth {
|
||||||
|
en = must(en.Parse(`
|
||||||
|
{{define "auth"}}
|
||||||
|
<ul class="top-bar__auth auth-links">
|
||||||
|
<li class="auth-links__box auth-links__user-box">
|
||||||
|
{{if .Meta.U.Group | eq "anon" }}
|
||||||
|
<a href="/login" class="auth-links__link auth-links__login-link">
|
||||||
|
{{block "login" .}}Login{{end}}
|
||||||
|
</a>
|
||||||
|
{{else}}
|
||||||
|
<a href="/hypha/{{block "user hypha" .}}{{end}}/{{.Meta.U.Name}}" class="auth-links__link auth-links__user-link">
|
||||||
|
{{beautifulName .Meta.U.Name}}
|
||||||
|
</a>
|
||||||
|
{{end}}
|
||||||
|
</li>
|
||||||
|
{{block "registration" .}}{{end}}
|
||||||
|
</ul>
|
||||||
|
{{end}}
|
||||||
|
`))
|
||||||
|
}
|
||||||
|
if cfg.AllowRegistration {
|
||||||
|
must(en.Parse(`{{define "registration"}}
|
||||||
|
{{if .Meta.U.Group | eq "anon"}}
|
||||||
|
<li class="auth-links__box auth-links__register-box">
|
||||||
|
<a href="/register" class="auth-links__link auth-links__register-link">
|
||||||
|
{{block "register" .}}Register{{end}}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
{{end}}`))
|
||||||
|
}
|
||||||
|
|
||||||
|
russianTranslation["search by title"] = "Поиск по названию"
|
||||||
|
|
||||||
return &Page{
|
return &Page{
|
||||||
TemplateEnglish: must(template.ParseFS(fs, "base.html")),
|
TemplateEnglish: en,
|
||||||
TemplateRussian: must(must(template.ParseFS(fs, "base.html")).
|
TemplateRussian: must(must(en.Clone()).
|
||||||
Parse(translationsIntoTemplates(russianTranslation))),
|
Parse(translationsIntoTemplates(russianTranslation))),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user