1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2024-12-16 15:00:26 +00:00
mycorrhiza/views/categories.go

126 lines
3.2 KiB
Go
Raw Normal View History

package views
import (
"github.com/bouncepaw/mycorrhiza/hyphae/categories"
"github.com/bouncepaw/mycorrhiza/util"
"html/template"
2022-03-20 08:21:59 +00:00
"io"
"log"
"strings"
)
const categoriesRu = `
{{define "empty cat"}}Эта категория пуста.{{end}}
{{define "add hypha"}}Добавить в категорию{{end}}
{{define "cat"}}Категория{{end}}
{{define "hypha name"}}Имя гифы{{end}}
{{define "categories"}}Категории{{end}}
2022-03-23 12:46:08 +00:00
{{define "placeholder"}}Имя категории...{{end}}
{{define "remove from category title"}}Убрать гифу из этой категории{{end}}
2022-03-23 12:46:08 +00:00
{{define "add to category title"}}Добавить гифу в эту категорию{{end}}
{{define "category list heading"}}Список категорий{{end}}
{{define "no categories"}}В этой вики нет категорий.{{end}}
{{define "category x"}}Категория {{. | beautifulName}}{{end}}
`
2022-03-20 08:21:59 +00:00
var (
2022-03-23 12:46:08 +00:00
categoryTemplatesEn *template.Template
categoryTemplatesRu *template.Template
2022-03-20 08:21:59 +00:00
)
func init() {
2022-03-23 12:46:08 +00:00
categoryTemplatesEn = template.Must(template.
New("category").
Funcs(
template.FuncMap{
"beautifulName": util.BeautifulName,
}).
2022-03-22 13:40:40 +00:00
ParseFS(fs, "categories.html"))
2022-03-23 12:46:08 +00:00
categoryTemplatesRu = template.Must(template.Must(categoryTemplatesEn.Clone()).Parse(categoriesRu))
}
func localizedCatTemplates(meta Meta) *template.Template {
2022-03-23 12:46:08 +00:00
if meta.Lc.Locale == "ru" {
return categoryTemplatesRu
}
return categoryTemplatesEn
}
func localizedCatTemplateAsString(meta Meta, name string, datum ...interface{}) string {
var buf strings.Builder
2022-03-23 12:46:08 +00:00
var err error
if len(datum) == 1 {
err = localizedCatTemplates(meta).ExecuteTemplate(&buf, name, datum[0])
2022-03-23 12:46:08 +00:00
} else {
err = localizedCatTemplates(meta).ExecuteTemplate(&buf, name, nil)
2022-03-23 12:46:08 +00:00
}
2022-03-22 13:40:40 +00:00
if err != nil {
log.Println(err)
return ""
}
2022-03-23 12:46:08 +00:00
return buf.String()
}
func categoryCard(meta Meta, hyphaName string) string {
var buf strings.Builder
err := localizedCatTemplates(meta).ExecuteTemplate(&buf, "category card", struct {
HyphaName string
Categories []string
GivenPermissionToModify bool
}{
hyphaName,
categories.WithHypha(hyphaName),
meta.U.CanProceed("add-to-category"),
})
if err != nil {
log.Println(err)
}
return buf.String()
}
2022-03-20 08:21:59 +00:00
2022-03-20 21:24:40 +00:00
func CategoryPage(meta Meta, catName string) {
2022-03-20 08:21:59 +00:00
var buf strings.Builder
err := localizedCatTemplates(meta).ExecuteTemplate(&buf, "category page", struct {
CatName string
Hyphae []string
GivenPermissionToModify bool
2022-03-20 08:21:59 +00:00
}{
catName,
categories.Contents(catName),
meta.U.CanProceed("add-to-category"),
2022-03-20 08:21:59 +00:00
})
if err != nil {
log.Println(err)
}
2022-03-20 21:24:40 +00:00
_, err = io.WriteString(meta.W, Base(
localizedCatTemplateAsString(meta, "category x", catName),
2022-03-20 08:21:59 +00:00
buf.String(),
meta.Lc,
meta.U,
2022-03-20 08:21:59 +00:00
))
if err != nil {
log.Println(err)
}
2022-03-20 08:21:59 +00:00
}
2022-03-20 21:24:40 +00:00
func CategoryList(meta Meta) {
var buf strings.Builder
err := localizedCatTemplates(meta).ExecuteTemplate(&buf, "category list", struct {
Categories []string
}{
categories.List(),
})
if err != nil {
log.Println(err)
}
2022-03-20 21:24:40 +00:00
_, err = io.WriteString(meta.W, Base(
localizedCatTemplateAsString(meta, "category list heading"),
buf.String(),
meta.Lc,
meta.U,
))
if err != nil {
log.Println(err)
}
}