diff --git a/main.go b/main.go index 7a4e460..1a5726f 100644 --- a/main.go +++ b/main.go @@ -159,6 +159,8 @@ func process(_ context.Context, w gemini.ResponseWriter, r *gemini.Request) { renderAbout(w) case regexp.MustCompile(`^/s/?$`).MatchString(r.URL.Path): renderSearch(w, r, client) + case regexp.MustCompile(`^/t/?$`).MatchString(r.URL.Path): + renderTags(w, client) case regexp.MustCompile(`^/f/?$`).MatchString(r.URL.Path): renderAllFiles(w, client) case regexp.MustCompile(`^/f/([\p{L}\d_+.]+/)+[\d\w]+/index.gmi$`).MatchString(r.URL.Path): @@ -271,6 +273,36 @@ func renderIndex(w gemini.ResponseWriter, client TreeManagerClient) { } } +func renderTags(w gemini.ResponseWriter, client TreeManagerClient) { + path := "" + tr := TreeRequest{Path: &path, Filter: getLangFilters()} + + tree, err := client.GetSummery(context.Background(), &tr) + if err != nil { + w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error") + return + } + + w.SetMediaType("text/gemini") + tpl := pongo2.Must(pongo2.FromFile("templates/tags.gmi")) + page, err := tpl.Execute( + pongo2.Context{ + "tree": tree, + "lang": defaultLang, + }, + ) + if err != nil { + log.Fatalf("template failed: %v", err) + return + } + + _, err = w.Write([]byte(page)) + if err != nil { + w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error") + return + } +} + func renderFeed(w gemini.ResponseWriter, r *gemini.Request, client TreeManagerClient) { path := "" tr := TreeRequest{Path: &path, Filter: getLangFilters()} diff --git a/templates/en/index.gmi b/templates/en/index.gmi index 2add4ed..8212bb2 100644 --- a/templates/en/index.gmi +++ b/templates/en/index.gmi @@ -11,8 +11,7 @@ Welcome to my capsule in Gemini space. {{ logo() }} {% for cat, count in tree.Categories %} {{ category_url(cat, cat, count) }} {% endfor %} -{% for tag, count in tree.Tags %} -{{ tag_url(tag, count) }} {% endfor %} +=> /t 🏷 Tags ({{ tree.Tags|length }}) {% if lastFiles %}### Last texts {% for file in lastFiles %}{{ text_url(file) }}{% endfor %}{% endif %} diff --git a/templates/sgs/index.gmi b/templates/sgs/index.gmi index 7e38552..82d9c4f 100644 --- a/templates/sgs/index.gmi +++ b/templates/sgs/index.gmi @@ -11,8 +11,7 @@ Sveikė atvīkėn i mona kapsolė Gemini ertie. {{ logo() }} {% for cat, count in tree.Categories %} {{ category_url(cat, cat, count) }} {% endfor %} -{% for tag, count in tree.Tags %} -{{ tag_url(tag, count) }} {% endfor %} +=> /t 🏷 Žīmas ({{ tree.Tags|length }}) {% if lastFiles %}### Paskotėnē īrašā diff --git a/templates/tags.gmi b/templates/tags.gmi new file mode 100644 index 0000000..4cb72b4 --- /dev/null +++ b/templates/tags.gmi @@ -0,0 +1,8 @@ +{% import "macros.tpl" tag_url, home %} +# {% if lang == "sgs" %}Žīmas{% else %}Tags{% endif %} + +{% for tag, count in tree.Tags %} +{{ tag_url(tag, count) }} {% endfor %} + + +{{ home(lang) }}