summaryrefslogtreecommitdiff
path: root/internal
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/frontmatter/parser.go19
-rw-r--r--internal/glightbox/block.go5
-rw-r--r--internal/glightbox/html_renderer.go47
-rw-r--r--internal/glightbox/parser.go9
-rw-r--r--internal/router/basic-handler.go6
-rw-r--r--internal/router/handlers/lang-blog-title.go14
-rw-r--r--internal/router/handlers/lang-map.go8
-rw-r--r--internal/router/handlers/lang-user.go7
-rw-r--r--internal/router/handlers/lang.go8
-rw-r--r--internal/router/handlers/root.go7
-rw-r--r--internal/router/router.go12
-rw-r--r--internal/templatemanager/templatemanager.go3
12 files changed, 39 insertions, 106 deletions
diff --git a/internal/frontmatter/parser.go b/internal/frontmatter/parser.go
index 6062113..83312dc 100644
--- a/internal/frontmatter/parser.go
+++ b/internal/frontmatter/parser.go
@@ -9,16 +9,15 @@ import (
)
type Metadata struct {
- Title string `yaml:"title"`
- ShortDescription string `yaml:"shortDescription"`
- ActionDate string `yaml:"actionDate"`
- PublishedTime time.Time `yaml:"publishedTime"`
- Thumbnail string `yaml:"thumbnail"`
- Tags []string `yaml:"tags"`
- Geolocation string `yaml:"geolocation"`
- Medley string `yaml:"medley"`
- MedleyPart int `yaml:"medleyPart"`
- ContentSettings map[string]string `yaml:"contentSettings"`
+ Title string `yaml:"title"`
+ ShortDescription string `yaml:"shortDescription"`
+ ActionDate string `yaml:"actionDate"`
+ PublishedTime time.Time `yaml:"publishedTime"`
+ Thumbnail string `yaml:"thumbnail"`
+ Tags []string `yaml:"tags"`
+ Geolocation string `yaml:"geolocation"`
+ Medley string `yaml:"medley"`
+ MedleyPart int `yaml:"medleyPart"`
}
func ParseFrontmatter(content []byte) (metadata *Metadata, markdown []byte, err error) {
diff --git a/internal/glightbox/block.go b/internal/glightbox/block.go
index 30cda1c..e53e67b 100644
--- a/internal/glightbox/block.go
+++ b/internal/glightbox/block.go
@@ -9,9 +9,8 @@ import (
// GLightboxBlock represents a light gallery block in the AST
type GLightboxBlock struct {
ast.BaseBlock
- Images []GLightboxImage
- Location *time.Location
- Namespace string
+ Images []GLightboxImage
+ Location *time.Location
}
type GLightboxImage struct {
diff --git a/internal/glightbox/html_renderer.go b/internal/glightbox/html_renderer.go
index ac34880..b7b256a 100644
--- a/internal/glightbox/html_renderer.go
+++ b/internal/glightbox/html_renderer.go
@@ -68,8 +68,7 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte,
var elements []string
for i, img := range gallery.Images {
- fullImageUrl := gallery.Namespace + img.URL
- imageUrlSegments := strings.Split(fullImageUrl, ".")
+ imageUrlSegments := strings.Split(img.URL, ".")
imageUrlWithoutExt := strings.Join(imageUrlSegments[:len(imageUrlSegments)-1], ".")
imageUrlParts := strings.Split(imageUrlWithoutExt, "/")
imageNameParts := strings.Split(imageUrlParts[len(imageUrlParts)-1], "-")
@@ -123,7 +122,7 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte,
</picture>
<span class="grid-tooltip-text"><p>%s</p></span>
<span class="grid-item-index">%d</span>
- </a>`, fullImageUrl, strings.Join(tagClassList, " "), galleryID, dayDate.Format("2006-01-02 15:04:05 -07:00"), dataDescriptionAttribute, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, anchorlessCaptionHTML, i+1))
+ </a>`, img.URL, strings.Join(tagClassList, " "), galleryID, dayDate.Format("2006-01-02 15:04:05 -07:00"), dataDescriptionAttribute, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, anchorlessCaptionHTML, i+1))
if glightboxDescId != "" {
elements = append(elements, fmt.Sprintf(`
@@ -133,43 +132,43 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte,
}
}
- w.WriteString(strings.ReplaceAll(`
+ w.WriteString(fmt.Sprintf(`
<div class="items-center flex flex-col">
<hr class="border-t-3 border-dotted border-main-hard mt-1 mb-2 w-[80%%] ml-auto mr-auto">
- <div class="grid masonry-grid-{id}">
- <div class="grid-sizer grid-sizer-{id}"></div>
- `+strings.Join(elements, "\n")+`
+ <div class="grid masonry-grid-%s">
+ <div class="grid-sizer grid-sizer-%s"></div>
+ %s
</div>
<hr class="border-t-3 border-dotted border-main-hard mt-1 mb-2 w-[80%%] ml-auto mr-auto">
-</div>
+</div>`, galleryID, galleryID, strings.Join(elements, "\n")))
+ w.WriteString(fmt.Sprintf(`
<script>
- var pckry_{id} = new Packery('.masonry-grid-{id}', {
- itemSelector: '.grid-item-{id}',
- columnWidth: '.grid-sizer-{id}',
+ var pckry_%s = new Packery('.masonry-grid-%s', {
+ itemSelector: '.grid-item-%s',
+ columnWidth: '.grid-sizer-%s',
percentPosition: false
});
- var imgLoad_{id}_timer;
- var imgLoad_{id} = imagesLoaded('.masonry-grid-{id}');
+ var imgLoad_%s_timer;
+ var imgLoad_%s = imagesLoaded('.masonry-grid-%s');
- function initMasonryLayout_{id}(tm) {
- clearTimeout(imgLoad_{id}_timer);
- imgLoad_{id}_timer = setTimeout(() => pckry_{id}.layout(), 100);
+ function initMasonryLayout_%s(tm) {
+ clearTimeout(imgLoad_%s_timer);
+ imgLoad_%s_timer = setTimeout(() => pckry_%s.layout(), 100);
}
- imgLoad_{id}.on('progress', initMasonryLayout_{id});
+ imgLoad_%s.on('progress', initMasonryLayout_%s);
- window.addEventListener('resize', initMasonryLayout_{id});
+ window.addEventListener('resize', initMasonryLayout_%s);
document.addEventListener('popout', (e) => {
- window.removeEventListener('resize', initMasonryLayout_{id});
- imgLoad_{id}.off('progress', initMasonryLayout_{id});
- initMasonryLayout_{id} = null;
- imgLoad_{id} = null;
+ window.removeEventListener('resize', initMasonryLayout_%s);
+ imgLoad_%s.off('progress', initMasonryLayout_%s);
+ initMasonryLayout_%s = null;
+ imgLoad_%s = null;
}, {once: true});
-</script>
-`, "{id}", galleryID))
+</script>`, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID))
}
return ast.WalkContinue, nil
diff --git a/internal/glightbox/parser.go b/internal/glightbox/parser.go
index b376034..6780090 100644
--- a/internal/glightbox/parser.go
+++ b/internal/glightbox/parser.go
@@ -29,7 +29,7 @@ func (p *GLightboxParser) Open(parent ast.Node, reader text.Reader, pc parser.Co
return nil, parser.NoChildren
}
- r := regexp.MustCompile(`^\{Gallery:([A-Za-z0-9\+\-/]+)(:([A-Za-z0-9\+\-/]+))?\}$`)
+ r := regexp.MustCompile(`^\{Gallery:([A-Za-z0-9\+\-/]+)\}$`)
trimmed := bytes.TrimSpace(line)
parts := r.FindSubmatch(trimmed)
@@ -44,12 +44,7 @@ func (p *GLightboxParser) Open(parent ast.Node, reader text.Reader, pc parser.Co
return nil, parser.NoChildren
}
- ns := ""
- if len(parts) >= 4 {
- ns = string(parts[3])
- }
-
- return &GLightboxBlock{Location: loc, Namespace: ns}, parser.NoChildren
+ return &GLightboxBlock{Location: loc}, parser.NoChildren
}
func (p *GLightboxParser) Continue(node ast.Node, reader text.Reader, pc parser.Context) parser.State {
diff --git a/internal/router/basic-handler.go b/internal/router/basic-handler.go
index 4a94a48..a859d10 100644
--- a/internal/router/basic-handler.go
+++ b/internal/router/basic-handler.go
@@ -41,12 +41,6 @@ func (r *BasicHandler) Render(c *fiber.Ctx, supplements *Supplements, lang strin
return fiber.StatusNoContent, nil
}
-func (r *BasicHandler) AddMeta(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
- return map[string]string{
- "robots": "noindex,nofollow",
- }, nil
-}
-
func (r *BasicHandler) RenderHeader(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
return fiber.StatusNoContent, nil
}
diff --git a/internal/router/handlers/lang-blog-title.go b/internal/router/handlers/lang-blog-title.go
index 97de089..0f4f564 100644
--- a/internal/router/handlers/lang-blog-title.go
+++ b/internal/router/handlers/lang-blog-title.go
@@ -46,20 +46,6 @@ func (r *BlogPageHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *BlogPageHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
- metadata, _, err := supplements.B2Client.ReadFrontmatter(lang + "/" + c.Params("title") + ".md")
- if err != nil {
- return nil, fmt.Errorf("failed to read frontmatter of the desired blog post: %w", err)
- }
-
- return map[string]string{
- "og:title": metadata.Title,
- "og:description": fmt.Sprintf("%s [%s]", metadata.ShortDescription, metadata.ActionDate),
- "og:image": fmt.Sprintf("https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp", metadata.Thumbnail),
- "twitter:card": "summary_large_image",
- }, nil
-}
-
func (r *BlogPageHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
_, pathParts, _, err := router.GetPathFromReferer(c)
if err != nil {
diff --git a/internal/router/handlers/lang-map.go b/internal/router/handlers/lang-map.go
index 7df6104..dbf1437 100644
--- a/internal/router/handlers/lang-map.go
+++ b/internal/router/handlers/lang-map.go
@@ -3,7 +3,6 @@ package handlers
import (
"fmt"
"log/slog"
- "slices"
"strconv"
"strings"
@@ -42,9 +41,6 @@ func (r *MapHandler) ToValidateLang() router.LangSetting {
func (r *MapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
pages, err := supplements.B2Client.Scan(lang + "/")
- slices.SortFunc(pages, func(a *b2.BlogPage, b *b2.BlogPage) int {
- return a.Metadata.PublishedTime.Compare(b.Metadata.PublishedTime)
- })
status := fiber.StatusOK
if err != nil {
slog.Error("received an error while scanning b2 pages",
@@ -56,7 +52,6 @@ func (r *MapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang
}
type MapMarker struct {
- Index int `json:"Index"`
Title string `json:"Title"`
PageLink string `json:"PageLink"`
Lat float64 `json:"Lat"`
@@ -66,7 +61,7 @@ func (r *MapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang
}
mapMarkers := make([]*MapMarker, 0, len(pages))
- for i, page := range pages {
+ for _, page := range pages {
geolocationParts := strings.Split(page.Metadata.Geolocation, " ")
if len(geolocationParts) < 2 {
continue
@@ -83,7 +78,6 @@ func (r *MapHandler) Render(c *fiber.Ctx, supplements *router.Supplements, lang
}
mapMarkers = append(mapMarkers, &MapMarker{
- Index: i,
Title: page.Metadata.Title,
PageLink: fmt.Sprintf("/%s/blog/%s", lang, page.FileName),
Lat: x,
diff --git a/internal/router/handlers/lang-user.go b/internal/router/handlers/lang-user.go
index c22bcac..db566fe 100644
--- a/internal/router/handlers/lang-user.go
+++ b/internal/router/handlers/lang-user.go
@@ -37,13 +37,6 @@ func (r *UserHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *UserHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
- return map[string]string{
- "og:title": supplements.Localization[lang].BlogSearch.Header,
- "og:description": supplements.Localization[lang].BlogSearch.Description,
- }, nil
-}
-
func (r *UserHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
templateMap["Title"] = supplements.Localization[lang].UserProfile.Header
diff --git a/internal/router/handlers/lang.go b/internal/router/handlers/lang.go
index 74166ae..fc4deb6 100644
--- a/internal/router/handlers/lang.go
+++ b/internal/router/handlers/lang.go
@@ -41,14 +41,6 @@ func (r *HomeHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *HomeHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
- return map[string]string{
- "og:title": supplements.Localization[lang].HomePage.Header,
- "og:description": supplements.Localization[lang].HomePage.HomePageDescription,
- "og:image": "https://f003.backblazeb2.com/file/sayana-static/home-page-gifs/" + fmt.Sprintf("otter-%d.gif", rand.Int()%3+1),
- }, nil
-}
-
func (r *HomeHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) {
templateMap["Title"] = supplements.Localization[lang].HomePage.Header
templateMap["FilledHeartCount"] = uint(40)
diff --git a/internal/router/handlers/root.go b/internal/router/handlers/root.go
index 9f15782..c8c4cd4 100644
--- a/internal/router/handlers/root.go
+++ b/internal/router/handlers/root.go
@@ -35,13 +35,6 @@ func (r *RootHandler) CacheDuration() time.Duration {
return 24 * time.Hour
}
-func (r *RootHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
- return map[string]string{
- "og:title": "Saya Blog",
- "og:description": "The blog of a 25 years old, travelling God knows where, proud to be not mainstream // Личный блог 25-летки, странствующего по ебеням, зато не мейнстрим",
- }, nil
-}
-
func (r *RootHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, _ string, templateMap fiber.Map) (statusCode int, err error) {
templateMap["Title"] = "Choose Your Language"
templateMap["AvailableLanguages"] = supplements.AvailableLanguages
diff --git a/internal/router/router.go b/internal/router/router.go
index f28add2..c0556f0 100644
--- a/internal/router/router.go
+++ b/internal/router/router.go
@@ -60,7 +60,6 @@ type Route interface {
ToValidateLang() LangSetting
TemplatesToInject() []string
Render(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
- AddMeta(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error)
RenderHeader(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
RenderBody(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
RenderFooter(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
@@ -383,18 +382,11 @@ func (r *Router) generalPage(c *fiber.Ctx, route Route, lang string) error {
return c.Status(fiber.StatusOK).Type("html").Send(val)
}
- valueMap := fiber.Map{
+ content, err := r.supplements.TemplateManager.Render("general-page", fiber.Map{
"L": r.supplements.Localization[lang],
"Lang": lang,
"QueryString": queryString,
- }
-
- var err error
- if valueMap["Meta"], err = route.AddMeta(c, r.supplements, lang, valueMap); err != nil {
- slog.Warn("failed to receive meta", slog.String("path", path), slog.String("error", err.Error()))
- }
-
- content, err := r.supplements.TemplateManager.Render("general-page", valueMap)
+ })
if err != nil {
slog.Warn("failed to generate div", slog.String("path", path), slog.String("error", err.Error()))
return c.Status(fiber.ErrInternalServerError.Code).SendString("failed to generate div")
diff --git a/internal/templatemanager/templatemanager.go b/internal/templatemanager/templatemanager.go
index b23e2e8..75309e4 100644
--- a/internal/templatemanager/templatemanager.go
+++ b/internal/templatemanager/templatemanager.go
@@ -32,9 +32,6 @@ var templateFuncMap = template.FuncMap{
return items
},
"replace": strings.ReplaceAll,
- "fdiv": func(a, b int) float64 {
- return float64(a) / float64(b)
- },
}
func NewTemplateManager(templates ...TemplateManagerTemplates) (*TemplateManager, error) {