summaryrefslogtreecommitdiff
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
-rw-r--r--internal/lightgallery/block.go2
-rw-r--r--internal/lightgallery/html_renderer.go29
-rw-r--r--internal/lightgallery/parser.go18
-rw-r--r--main.go10
-rwxr-xr-xsaya-today-webbin19752119 -> 0 bytes
-rw-r--r--static/input.css14
-rw-r--r--views/pages/blog-catalogue.html2
-rw-r--r--views/pages/blog-page.html10
8 files changed, 30 insertions, 55 deletions
diff --git a/internal/lightgallery/block.go b/internal/lightgallery/block.go
index 8eb7c9e..072aa3c 100644
--- a/internal/lightgallery/block.go
+++ b/internal/lightgallery/block.go
@@ -15,7 +15,7 @@ type LightGalleryBlock struct {
type LightGalleryImage struct {
URL string
- Caption []byte
+ Caption string
}
var KindLightGalleryBlock = ast.NewNodeKind("LightGalleryBlock")
diff --git a/internal/lightgallery/html_renderer.go b/internal/lightgallery/html_renderer.go
index 850cd95..77b9785 100644
--- a/internal/lightgallery/html_renderer.go
+++ b/internal/lightgallery/html_renderer.go
@@ -1,13 +1,11 @@
package lightgallery
import (
- "bytes"
"fmt"
"math/rand"
"strings"
"time"
- "github.com/yuin/goldmark"
"github.com/yuin/goldmark/ast"
"github.com/yuin/goldmark/renderer"
"github.com/yuin/goldmark/renderer/html"
@@ -16,18 +14,11 @@ import (
type LightGalleryHTMLRenderer struct {
html.Config
- md goldmark.Markdown
}
func NewLightGalleryHTMLRenderer(opts ...html.Option) renderer.NodeRenderer {
r := &LightGalleryHTMLRenderer{
Config: html.NewConfig(),
- md: goldmark.New(
- goldmark.WithRendererOptions(
- html.WithHardWraps(),
- html.WithXHTML(),
- ),
- ),
}
for _, opt := range opts {
opt.SetHTMLOption(&r.Config)
@@ -62,15 +53,6 @@ func (r *LightGalleryHTMLRenderer) renderLightGallery(w util.BufWriter, source [
imageUrlWithoutExt := strings.Join(imageUrlSegments[:len(imageUrlSegments)-1], ".")
imageNameParts := strings.Split(imageUrlWithoutExt, "-")
- var captionBuf bytes.Buffer
- captionHTML := img.Caption
- if err := r.md.Convert(img.Caption, &captionBuf); err == nil {
- captionHTML = captionBuf.Bytes()
- captionHTML = bytes.TrimPrefix(captionHTML, []byte("<p>"))
- captionHTML = bytes.TrimSuffix(captionHTML, []byte("</p>\n"))
- captionHTML = bytes.TrimSuffix(captionHTML, []byte("</p>"))
- }
-
dayDate, _ := time.Parse("20060102 150405", imageNameParts[len(imageNameParts)-2]+" "+imageNameParts[len(imageNameParts)-1])
dayDate = dayDate.In(gallery.Location)
dynamicElements = append(dynamicElements, fmt.Sprintf(`{
@@ -89,7 +71,7 @@ func (r *LightGalleryHTMLRenderer) renderLightGallery(w util.BufWriter, source [
<p class="grow !text-[1vmax]/[0.9] text-left font-spectral text-main-dark">%s</p>
<p class="!text-[1vmax]/[0.9] text-right font-spectral text-secondary">%s</p>
</div>`+"`"+`
- }`, img.URL, img.URL, util.EscapeHTML(captionHTML), imageUrlWithoutExt, imageUrlWithoutExt, captionHTML, dayDate.Format("2006-01-02 15:04:05 -07:00")))
+ }`, img.URL, img.URL, escapeHTML(img.Caption), imageUrlWithoutExt, imageUrlWithoutExt, escapeHTML(img.Caption), dayDate.Format("2006-01-02 15:04:05 -07:00")))
}
w.WriteString(fmt.Sprintf(`
@@ -136,6 +118,15 @@ window.addEventListener("resize", () => {
return ast.WalkContinue, nil
}
+func escapeHTML(s string) string {
+ s = strings.ReplaceAll(s, "&", "&amp;")
+ s = strings.ReplaceAll(s, "<", "&lt;")
+ s = strings.ReplaceAll(s, ">", "&gt;")
+ s = strings.ReplaceAll(s, "\"", "&quot;")
+ s = strings.ReplaceAll(s, "'", "&#39;")
+ return s
+}
+
func generateDivId(length int) string {
const charset = "abcdefghijklmnopqrstuvwxyz"
seededRand := rand.New(rand.NewSource(time.Now().UnixNano())) // Seed with current time
diff --git a/internal/lightgallery/parser.go b/internal/lightgallery/parser.go
index daec797..bd7483a 100644
--- a/internal/lightgallery/parser.go
+++ b/internal/lightgallery/parser.go
@@ -4,6 +4,7 @@ import (
"bytes"
"log/slog"
"regexp"
+ "strings"
"time"
"github.com/yuin/goldmark/ast"
@@ -24,7 +25,7 @@ func (p *LightGalleryParser) Trigger() []byte {
func (p *LightGalleryParser) Open(parent ast.Node, reader text.Reader, pc parser.Context) (ast.Node, parser.State) {
line, _ := reader.PeekLine()
- if !bytes.HasPrefix(line, []byte("{Gallery:")) {
+ if !bytes.HasPrefix(line, []byte("{Gallery")) {
return nil, parser.NoChildren
}
@@ -49,27 +50,28 @@ func (p *LightGalleryParser) Open(parent ast.Node, reader text.Reader, pc parser
func (p *LightGalleryParser) Continue(node ast.Node, reader text.Reader, pc parser.Context) parser.State {
line, segment := reader.PeekLine()
if len(line) == 0 || segment.Len() == 0 {
- return parser.Continue | parser.NoChildren
+ return parser.Close
}
trimmed := bytes.TrimSpace(line)
- if bytes.Equal(trimmed, []byte("{Gallery}")) || bytes.Equal(trimmed, []byte("{/Gallery}")) {
+ if bytes.Equal(trimmed, []byte("{Gallery}")) {
reader.AdvanceLine()
return parser.Close
}
gallery := node.(*LightGalleryBlock)
+ lineStr := string(trimmed)
- parts := bytes.SplitN(trimmed, []byte{'|'}, 2)
- url := bytes.TrimSpace(parts[0])
+ parts := strings.SplitN(lineStr, "|", 2)
+ url := strings.TrimSpace(parts[0])
+ caption := ""
- caption := make([]byte, 0)
if len(parts) > 1 {
- caption = bytes.TrimSpace(parts[1])
+ caption = strings.TrimSpace(parts[1])
}
gallery.Images = append(gallery.Images, LightGalleryImage{
- URL: string(url),
+ URL: url,
Caption: caption,
})
diff --git a/main.go b/main.go
index 4dc9619..a53cc8b 100644
--- a/main.go
+++ b/main.go
@@ -265,7 +265,7 @@ func main() {
"Link": page.Link,
"ArticleLink": "/" + lang + "/blog/" + page.FileName,
"Title": page.Metadata.Title,
- "PublishedTime": page.Metadata.PublishedTime.Format("2006-01-02 15:04:05 -07:00"),
+ "PublishedTime": page.Metadata.PublishedTime.Format("2006-01-02 15:04:05 -0700"),
"ActionDate": page.Metadata.ActionDate,
"ShortDescription": page.Metadata.ShortDescription,
"Thumbnail": page.Metadata.Thumbnail,
@@ -287,12 +287,12 @@ func main() {
case "actionDateDesc":
return strings.Compare(b["ActionDate"], a["ActionDate"])
case "publicationDateAsc":
- publishedTimeA, _ := time.Parse("2006-01-02 15:04:05 -07:00", a["PublishedTime"])
- publishedTimeB, _ := time.Parse("2006-01-02 15:04:05 -07:00", b["PublishedTime"])
+ publishedTimeA, _ := time.Parse("2006-01-02 15:04:05 -0700", a["PublishedTime"])
+ publishedTimeB, _ := time.Parse("2006-01-02 15:04:05 -0700", b["PublishedTime"])
return publishedTimeA.Compare(publishedTimeB)
case "publicationDateDesc":
- publishedTimeA, _ := time.Parse("2006-01-02 15:04:05 -07:00", a["PublishedTime"])
- publishedTimeB, _ := time.Parse("2006-01-02 15:04:05 -07:00", b["PublishedTime"])
+ publishedTimeA, _ := time.Parse("2006-01-02 15:04:05 -0700", a["PublishedTime"])
+ publishedTimeB, _ := time.Parse("2006-01-02 15:04:05 -0700", b["PublishedTime"])
return publishedTimeB.Compare(publishedTimeA)
}
return 0
diff --git a/saya-today-web b/saya-today-web
deleted file mode 100755
index b6522e8..0000000
--- a/saya-today-web
+++ /dev/null
Binary files differ
diff --git a/static/input.css b/static/input.css
index cfc7391..aef2d8f 100644
--- a/static/input.css
+++ b/static/input.css
@@ -88,15 +88,6 @@
--squares-and-triangles-background-height-coef: 15;
}
-a {
- color: var(--main-medium-color) !important;
- text-decoration: underline;
-}
-
-a:hover {
- color: var(--main-light-color) !important;
-}
-
.bg-interlocked-hexagons {
background-image: var(--interlocked-hexagons-background);
background-repeat: var(--interlocked-hexagons-background-repeat);
@@ -341,11 +332,6 @@ body:has(.lg-container:not([class~="lg-inline"])) #sidebar {
}
}
-body[data-theme~="night"] .leaflet-tile,
-body[data-theme~="ram"] .leaflet-tile {
- filter: invert(1) hue-rotate(190deg) contrast(1.1) brightness(1.2) !important;
-}
-
@media (min-aspect-ratio: 0.8/1) {
.ar-gt-0\.8\:mr-\[1\.2vmin\] {
margin-right: 1.2vmin;
diff --git a/views/pages/blog-catalogue.html b/views/pages/blog-catalogue.html
index 6c0f629..0da8d26 100644
--- a/views/pages/blog-catalogue.html
+++ b/views/pages/blog-catalogue.html
@@ -91,7 +91,7 @@
checkboxes.forEach(checkbox => {
checkbox.checked = true;
});
- const sortRadio = tagsContainer.querySelector('#sortPublicationDateDesc');
+ const sortRadio = tagsContainer.querySelector('#sortTitleAsc');
sortRadio.checked = true;
});
}
diff --git a/views/pages/blog-page.html b/views/pages/blog-page.html
index 330a1ac..feb63ef 100644
--- a/views/pages/blog-page.html
+++ b/views/pages/blog-page.html
@@ -34,10 +34,10 @@
<script>
function initLocationMap(id, x, y, relativeErrorMeters = 0) {
- var map = L.map(id).setView([x, y], 8);
+ var map = L.map(id).setView([x, y], 13);
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
- maxZoom: 18,
+ maxZoom: 19,
attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
@@ -50,11 +50,7 @@
}).addTo(map);
}
- var marker = L.marker([x, y], {
- title: '{{ .Title }}',
- }).addTo(map)
- .bindPopup('<span><b>{{ .Title }}</b><br><a href="https://www.openstreetmap.org/#map=13/{{ .MapLocationX }}/{{ .MapLocationY }}">{{ .MapLocationX }}, {{ .MapLocationY }}</a></span>')
- .openPopup();
+ var marker = L.marker([x, y]).addTo(map);
}
document.addEventListener('DOMContentLoaded', () => {initLocationMap(