From 432d05c51ce74d590d0a182d998c9c5e620fefc4 Mon Sep 17 00:00:00 2001 From: gotti <18141824+gotti@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:40:09 +0900 Subject: [PATCH] implement request changes button Signed-off-by: gotti <18141824+gotti@users.noreply.github.com> --- pages/link.md | 2 ++ pages/main.css | 31 +++++++++++++++++++++- pkg/framework/framework.go | 26 +++++++++--------- pkg/generator/blog.go | 9 ++++--- pkg/generator/page.go | 2 +- pkg/generator/static/_layout.html | 1 + pkg/generator/static/_request_changes.html | 5 ++++ 7 files changed, 59 insertions(+), 17 deletions(-) create mode 100644 pkg/generator/static/_request_changes.html diff --git a/pages/link.md b/pages/link.md index 90fbc67a..78cb93e4 100644 --- a/pages/link.md +++ b/pages/link.md @@ -12,3 +12,5 @@ - [アイスの棒](https://azukibar.dev) - [捻れたパピルス](https://www.hutinoatari.dev/) - [つまみネット](https://trpfrog.net/) +- [ゆいのページ](https://yuino.dev/) + diff --git a/pages/main.css b/pages/main.css index b9ce7101..dc34d488 100644 --- a/pages/main.css +++ b/pages/main.css @@ -1,6 +1,35 @@ img { width: 800px; - @media (max-width: 600px) { +} + +@media (max-width: 600px) { + img { width: 100%; } } + +#menu { + display: flex; + align-items: center; + gap: 16px; + flex-wrap: wrap; +} + +#menu ul { + list-style: none; + display: flex; + gap: 12px; + margin: 0; + padding: 0; +} + +#menu li { + margin: 0; +} + +.request-changes { + display: flex; + margin-left: auto; + justify-content: flex-end; + align-items: center; +} diff --git a/pkg/framework/framework.go b/pkg/framework/framework.go index c5b49be8..b35ff65c 100644 --- a/pkg/framework/framework.go +++ b/pkg/framework/framework.go @@ -90,37 +90,38 @@ func (p *Pages) AddPage(path string, page *Page) { } type Page struct { - Contents *mdparser.Root - Filename string - Path string + Contents *mdparser.Root + Filename string + Path string + OriginalPath string } func LoadLocalPages() (Pages, error) { parser := mdparser.NewLineParser(nil) pages := NewPages() - filepath.WalkDir("pages", func(path string, d os.DirEntry, err error) error { + filepath.WalkDir("pages", func(origPath string, d os.DirEntry, err error) error { if err != nil { return fmt.Errorf("error walking directory: %w", err) } if d.IsDir() { return err } - if filepath.Ext(path) != ".md" { + if filepath.Ext(origPath) != ".md" { return nil } - lines, err := os.ReadFile(path) + lines, err := os.ReadFile(origPath) if err != nil { - fmt.Printf("error reading file, file=%v; %v\n", path, err) + fmt.Printf("error reading file, file=%v; %v\n", origPath, err) return nil } md, err := parser.Parse(string(lines)) if err != nil { - fmt.Printf("error parsing markdown, file=%v: %v\n", path, err) + fmt.Printf("error parsing markdown, file=%v: %v\n", origPath, err) return nil } //remove pages/ from path - path = path[len("pages/"):] + path := origPath[len("pages/"):] //remove the extension from the path path = path[:len(path)-len(filepath.Ext(path))] @@ -141,9 +142,10 @@ func LoadLocalPages() (Pages, error) { } p := &Page{ - Contents: md, - Filename: filename, - Path: path, + Contents: md, + Filename: filename, + Path: path, + OriginalPath: origPath, } pages.AddPage(path, p) diff --git a/pkg/generator/blog.go b/pkg/generator/blog.go index 77bb74e0..de2b917c 100644 --- a/pkg/generator/blog.go +++ b/pkg/generator/blog.go @@ -50,9 +50,12 @@ func (g *generator) generatePage() template.HTML { return withDiv("content", template.HTML(buf.String())) } -func (g *generator) generateMenu() template.HTML { +func (g *generator) generateMenu(page *framework.Page) template.HTML { buf := new(bytes.Buffer) g.templates.ExecuteTemplate(buf, "menu", g.config.Menu) + if page != nil { + g.templates.ExecuteTemplate(buf, "request_changes", fmt.Sprintf("https://github.com/gotti/gotti.dev/blob/main/%s", page.OriginalPath)) + } return withDiv("menu", template.HTML(buf.String())) } @@ -71,7 +74,7 @@ func (g *generator) generateLayout(md *mdparser.Root) template.HTML { Body template.HTML }{ Head: g.generateHeader(g.config.DefaultMetaData.WithDefault(title, md.MetaData.Thumbnail)), - Body: g.generateMenu() + g.generatePost(md.MetaData.Title, template.HTML(md.Objects.ToHTML())), + Body: g.generateMenu(nil) + g.generatePost(md.MetaData.Title, template.HTML(md.Objects.ToHTML())), }) return template.HTML(buf.String()) } @@ -87,7 +90,7 @@ func (t *postTemplateAddon) GeneratePage(page *framework.Page, pagehtml template Body template.HTML }{ Head: t.generateHeader(t.config.DefaultMetaData.WithDefault(meta.Title, meta.Thumbnail)), - Body: t.generateMenu() + t.generatePost(meta.Title, template.HTML(pagehtml)), + Body: t.generateMenu(page) + t.generatePost(meta.Title, template.HTML(pagehtml)), }) return template.HTML(buf.String()), nil } diff --git a/pkg/generator/page.go b/pkg/generator/page.go index ac973452..876e6620 100644 --- a/pkg/generator/page.go +++ b/pkg/generator/page.go @@ -23,7 +23,7 @@ func (t *standalonePageAddon) GeneratePage(page *framework.Page, pagehtml templa Body template.HTML }{ Head: t.generateHeader(t.config.DefaultMetaData.WithDefault(meta.Title, meta.Thumbnail)), - Body: t.generateMenu() + t.generatePost(meta.Title, template.HTML(pagehtml)), + Body: t.generateMenu(page) + t.generatePost(meta.Title, template.HTML(pagehtml)), }) return template.HTML(buf.String()), nil } diff --git a/pkg/generator/static/_layout.html b/pkg/generator/static/_layout.html index 0f52336d..1d3aed45 100644 --- a/pkg/generator/static/_layout.html +++ b/pkg/generator/static/_layout.html @@ -3,6 +3,7 @@ + {{.Head}} diff --git a/pkg/generator/static/_request_changes.html b/pkg/generator/static/_request_changes.html new file mode 100644 index 00000000..b7a81589 --- /dev/null +++ b/pkg/generator/static/_request_changes.html @@ -0,0 +1,5 @@ +{{define "request_changes"}} +
+ Request Changes(GitHub) +
+{{end}}