55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/maxence-charriere/go-app/v9/pkg/app"
|
|
)
|
|
|
|
type BlogPage struct {
|
|
app.Compo
|
|
|
|
display bool
|
|
currentPostPath string
|
|
}
|
|
|
|
// TODO: write the backend API for this
|
|
// TODO: Find a proper way of rendering blog posts in markdown
|
|
// Backend ideas: In the DB, create an entry for each post and a link to where the html file is located!
|
|
// That way, I don't have to parse and render markdown!!
|
|
|
|
// Layout, the leftbar contains the blogpost links and the mainbar contains the post itself!
|
|
// Function: After pressing a link for a blog post, that blog post ID gets put in the state instead of the URL
|
|
|
|
func NewBlogPage() *BlogPage {
|
|
return &BlogPage{}
|
|
}
|
|
|
|
func (b *BlogPage) OnMount(ctx app.Context) {
|
|
ctx.Handle("update-blogpost", b.onUpdateBlogPost)
|
|
b.display = false
|
|
}
|
|
|
|
func (b *BlogPage) Render() app.UI {
|
|
return newPage().
|
|
Title("Blog").
|
|
LeftBar(
|
|
&blogLinks{},
|
|
).
|
|
Main(
|
|
app.If(b.display,
|
|
newHTMLBlock().
|
|
Class("right").
|
|
Class("contentblock").
|
|
Src(b.currentPostPath),
|
|
),
|
|
)
|
|
}
|
|
|
|
func (b *BlogPage) onUpdateBlogPost(ctx app.Context, a app.Action) {
|
|
fmt.Printf("Called the update-blogpost ActionHandler\n")
|
|
blogpost := a.Tags.Get("blogpost")
|
|
b.currentPostPath = blogpost
|
|
b.display = true
|
|
}
|