2024-06-19 01:08:05 +04:00
package web
import "net/http"
import "strings"
import "time"
import "git.arav.su/Arav/dwelling-home/pkg/mindflow"
import "git.arav.su/Arav/dwelling-home/pkg/util"
templ Mindflow(posts []mindflow.Post, categories []mindflow.Category, r *http.Request) {
2024-06-19 03:08:50 +04:00
@base("Mindflow", "Updates on my infrastructure, my very important opinions and thoughts.", "updates, thoughts, opinions, blog, diary", "/mindflow", mindflowHead()) {
2024-06-19 01:08:05 +04:00
<p class="center">Here I post updates on websites and infrastructure, my very important opinions and thoughts no one asked for. If you'd like to subscribe to this bullshittery then <a href="/rss.xml">RSS feed</a> at your service. :)</p>
2024-06-27 03:02:52 +04:00
<section>
<menu id="filter" class="hidden">
2024-06-19 01:08:05 +04:00
<button name="all">All</button>
for _, category := range categories {
<button name={ strings.ToLower(category.Name) }>{ category.Name }</button>
}
2024-06-27 03:02:52 +04:00
</menu>
2024-06-19 01:08:05 +04:00
for _, post := range posts {
<article id={ post.PostID() }>
<header>
<a href={ templ.SafeURL("#" + post.PostID()) }>
<h3>{ post.Category.Name }: { post.Title }</h3>
</a>
</header>
for _, line := range strings.Split(post.Body, "\n") {
2024-06-21 01:01:48 +04:00
<p
2024-06-19 01:08:05 +04:00
if len(line) > 0 && line[0] == '>' {
2024-06-21 01:01:48 +04:00
class="quote"
}>@templ.Raw(line)</p>
2024-06-19 01:08:05 +04:00
}
<footer>
if post.URL != "" {
<a href={ templ.SafeURL(post.PostURL(r.Host, false)) }>{ post.PostURL(r.Host, false) }</a>
} else {
<span></span>
}
2024-07-02 17:28:38 +04:00
{{ ctz := util.ToClientTimezone(post.Date, r) }}
<time datetime={ ctz.Format(time.RFC3339) }>{ ctz.Format(time.RFC1123) }</time>
2024-06-19 01:08:05 +04:00
</footer>
</article>
}
if len(posts) == 0 {
<p class="center">Nothing? There must be some... Looks like database went down.</p>
}
</section>
}
}
templ mindflowHead() {
<link rel="stylesheet" href="/assets/css/mindflow.css"/>
<script src="/assets/js/mindflow.js" defer></script>
}