summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content/updates/_index.md5
-rw-r--r--hugo.toml1
-rw-r--r--layouts/partials/recent.html15
-rw-r--r--layouts/partials/updated-items.html16
-rw-r--r--layouts/updates/list.html20
-rwxr-xr-xscripts/publish-raw4
-rw-r--r--static/style.css4
7 files changed, 52 insertions, 13 deletions
diff --git a/content/updates/_index.md b/content/updates/_index.md
new file mode 100644
index 0000000..0ae5b3d
--- /dev/null
+++ b/content/updates/_index.md
@@ -0,0 +1,5 @@
+---
+title: "UPDATES"
+lang: en
+description: "Journal entries and notes ordered by their latest substantive update."
+---
diff --git a/hugo.toml b/hugo.toml
index ed3e4d7..83d8efd 100644
--- a/hugo.toml
+++ b/hugo.toml
@@ -16,6 +16,7 @@ enableRobotsTXT = false
sourceURL = "https://codeberg.org/Richard-Qin/rhomepage"
gitBase = "https://codeberg.org/Richard-Qin/rhomepage/src/branch/main"
contentLicense = "CC BY-SA 4.0"
+ recentLimit = 20
[frontmatter]
date = ["created"]
diff --git a/layouts/partials/recent.html b/layouts/partials/recent.html
index 47c8332..cbe91af 100644
--- a/layouts/partials/recent.html
+++ b/layouts/partials/recent.html
@@ -1,18 +1,8 @@
-{{- $items := slice -}}
-{{- range where site.RegularPages "Section" "journal" -}}
- {{- $items = $items | append (dict "page" . "kind" "journal" "sortDate" (.Date.Format "2006-01-02")) -}}
-{{- end -}}
-{{- range where site.RegularPages "Section" "notes" -}}
- {{- $page := . -}}
- {{- with $page.Params.recent -}}
- {{- $items = $items | append (dict "page" $page "kind" "note" "sortDate" (time.Format "2006-01-02" .)) -}}
- {{- end -}}
-{{- end -}}
-{{- $items = sort $items "sortDate" "desc" -}}
+{{- $items := partial "updated-items.html" . -}}
<section class="recent" aria-labelledby="recent-title">
<h2 id="recent-title">RECENT</h2>
<ol class="document-list">
- {{- range $items }}
+ {{- range first site.Params.recentLimit $items }}
<li>
<time datetime="{{ .sortDate }}">{{ .sortDate }}</time>
<span class="document-kind">[{{ .kind }}]</span>
@@ -20,4 +10,5 @@
</li>
{{- end }}
</ol>
+ <p class="recent-more"><a href="{{ "updates/" | relURL }}">Read more</a></p>
</section>
diff --git a/layouts/partials/updated-items.html b/layouts/partials/updated-items.html
new file mode 100644
index 0000000..5f738a8
--- /dev/null
+++ b/layouts/partials/updated-items.html
@@ -0,0 +1,16 @@
+{{- $items := slice -}}
+{{- range $section := slice "journal" "notes" -}}
+ {{- $kind := cond (eq $section "notes") "note" "journal" -}}
+ {{- range where site.RegularPages "Section" $section -}}
+ {{- if not .Params.created -}}
+ {{- errorf "Missing required created date in %s" .File.Path -}}
+ {{- end -}}
+ {{- if not .Params.updated -}}
+ {{- errorf "Missing required updated date in %s" .File.Path -}}
+ {{- end -}}
+ {{- $sortDate := time.Format "2006-01-02" .Params.updated -}}
+ {{- $sortKey := printf "%s|%s" $sortDate .RelPermalink -}}
+ {{- $items = $items | append (dict "page" . "kind" $kind "sortDate" $sortDate "sortKey" $sortKey) -}}
+ {{- end -}}
+{{- end -}}
+{{- return (sort $items "sortKey" "desc") -}}
diff --git a/layouts/updates/list.html b/layouts/updates/list.html
new file mode 100644
index 0000000..125ba79
--- /dev/null
+++ b/layouts/updates/list.html
@@ -0,0 +1,20 @@
+{{ define "main" }}
+ <article lang="{{ default "en" .Params.lang }}">
+ <header class="document-header">
+ <h1>{{ .Title }}</h1>
+ </header>
+ {{ .Content }}
+ {{- $items := partial "updated-items.html" . -}}
+ <section class="updates-list" aria-label="All updates">
+ <ol class="document-list">
+ {{- range $items }}
+ <li>
+ <time datetime="{{ .sortDate }}">{{ .sortDate }}</time>
+ <span class="document-kind">[{{ .kind }}]</span>
+ <a href="{{ .page.RelPermalink }}" lang="{{ .page.Params.lang }}">{{ .page.LinkTitle }}</a>
+ </li>
+ {{- end }}
+ </ol>
+ </section>
+ </article>
+{{ end }}
diff --git a/scripts/publish-raw b/scripts/publish-raw
index 09048f3..cc9b02b 100755
--- a/scripts/publish-raw
+++ b/scripts/publish-raw
@@ -13,6 +13,10 @@ do
relative=${source#"$content_dir"/}
case "$relative" in
+ updates/_index.md)
+ # Updates is an aggregate index, not a published Markdown document.
+ continue
+ ;;
journal/_index.md)
target=$public_dir/journal/_index.md
;;
diff --git a/static/style.css b/static/style.css
index a799090..cf033de 100644
--- a/static/style.css
+++ b/static/style.css
@@ -249,7 +249,8 @@ a:focus-visible {
margin-bottom: 0.7rem;
}
-.recent .document-list li {
+.recent .document-list li,
+.updates-list .document-list li {
display: grid;
grid-template-columns: max-content max-content minmax(0, 1fr);
gap: 0.25rem 0.8rem;
@@ -495,6 +496,7 @@ img {
}
.recent .document-list li,
+ .updates-list .document-list li,
.journal-list li {
display: block;
}