diff --git a/content/en/news/_index.md b/content/en/news/_index.md index e37c33a3c..bb2531dd6 100644 --- a/content/en/news/_index.md +++ b/content/en/news/_index.md @@ -1,4 +1,4 @@ --- -title: Hugo News +title: News aliases: [/release-notes/] --- diff --git a/layouts/news/list.html b/layouts/news/list.html new file mode 100644 index 000000000..a41e45a2c --- /dev/null +++ b/layouts/news/list.html @@ -0,0 +1,57 @@ +{{ define "main" }} +
+ +
+

+ {{ .Title }} +

+
+ {{ .Content }} +
+
+ +
+ {{ $interior_classes := $.Site.Params.flex_box_interior_classes }} +
+ + {{ $news_items := slice }} + + {{/* Get releases from GitHub. */}} + {{ $u := "https://api.github.com/repos/gohugoio/hugo/releases" }} + {{ $releases := partial "utilities/get-remote-data.html" $u }} + {{ $releases = where $releases "draft" false }} + {{ $releases = where $releases "prerelease" false }} + {{ range $releases | first 20 }} + {{ $ctx := dict + "Date" (.published_at | time.AsTime) + "Title" (printf "Release %s" .name) + "Permalink" .html_url + "Section" "news" + "Summary" "" + }} + {{ $news_items = $news_items | append $ctx }} + {{ end }} + + {{/* Get content pages from news section. */}} + {{ range .Pages }} + {{ $ctx := dict + "Date" .Date + "Title" .Title + "RelPermalink" .RelPermalink + "Section" "news" + "Summary" .Summary + "Params" (dict "description" .Description) + }} + {{ $news_items = $news_items | append $ctx }} + {{ end }} + + {{/* Sort by date (descending) and render. */}} + {{ range sort $news_items "Date" "desc" }} + {{ partial "boxes-section-summaries.html" (dict "context" . "classes" $interior_classes "fullcontent" false) }} + {{ end }} + +
+
+ +
+{{ end }} diff --git a/layouts/news/list.xml b/layouts/news/list.xml new file mode 100644 index 000000000..948d405d4 --- /dev/null +++ b/layouts/news/list.xml @@ -0,0 +1,74 @@ + + +{{- printf "" | safeHTML }} + + + {{- $title := printf "%s on %s" .Title site.Title }} + {{- $description := printf "Recent content in %s on %s" .Title site.Title }} + {{- if .IsHome }} + {{- $title = site.Title }} + {{- $description := printf "Recent content on %s" site.Title }} + {{- end }} + {{ $title }} + {{ $description }} + {{ .Permalink }} + Hugo {{ hugo.Version }} + {{ or site.Language.LanguageCode site.Language.Lang }} + {{- with site.Copyright }} + {{ . }} + {{- end }} + {{- with .OutputFormats.Get "RSS" }} + {{ printf "" .Permalink .MediaType | safeHTML }} + {{- end }} + + {{- $news_items := slice }} + + {{- /* Get releases from GitHub. */}} + {{- $u := "https://api.github.com/repos/gohugoio/hugo/releases" }} + {{- $releases := partial "utilities/get-remote-data.html" $u }} + {{- $releases = where $releases "draft" false }} + {{- $releases = where $releases "prerelease" false }} + {{- range $releases | first 20 }} + {{- $summary := printf + "Hugo %s was released on %s. See [release notes](%s) for details." + .tag_name + (.published_at | time.AsTime | time.Format "2 Jan 2006") + .html_url + }} + {{- $ctx := dict + "PublishDate" (.published_at | time.AsTime) + "Title" (printf "Release %s" .name) + "Permalink" .html_url + "Section" "news" + "Summary" ($summary | $.Page.RenderString) + }} + {{- $news_items = $news_items | append $ctx }} + {{- end }} + + {{- /* Get content pages from news section. */}} + {{- range .Pages }} + {{- $ctx := dict + "PublishDate" .PublishDate + "Title" .Title + "RelPermalink" .RelPermalink + "Section" "news" + "Summary" .Summary + "Params" (dict "description" .Description) + }} + {{- $news_items = $news_items | append $ctx }} + {{- end }} + + {{- /* Sort by PublishDate (descending) and render. */}} + {{- $limit := cond (gt site.Config.Services.RSS.Limit 1) site.Config.Services.RSS.Limit 999 }} + {{- range sort $news_items "PublishDate" "desc" | first $limit }} + + {{ .Title }} + {{ .Permalink }} + {{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} + {{ .Permalink }} + {{ .Summary | transform.XMLEscape | safeHTML }} + + {{- end }} + {{ (index (sort $news_items "PublishDate" "desc") 0).PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} + + diff --git a/layouts/partials/utilities/get-remote-data.html b/layouts/partials/utilities/get-remote-data.html new file mode 100644 index 000000000..69ac41da4 --- /dev/null +++ b/layouts/partials/utilities/get-remote-data.html @@ -0,0 +1,23 @@ +{{/* +Parses the serialized data from the given URL and returns a map or an array. + +Supports CSV, JSON, TOML, YAML, and XML. + +@param {string} . The URL from which to retrieve the serialized data. +@returns {any} + +@example {{ partial "get-remote-data.html" "https://example.org/foo.json" }} +*/}} + +{{ $url := . }} +{{ $data := dict }} +{{ with resources.GetRemote $url }} + {{ with .Err }} + {{ errorf "%s" . }} + {{ else }} + {{ $data = .Content | transform.Unmarshal }} + {{ end }} +{{ else }} + {{ errorf "Unable to get remote resource %q" $url }} +{{ end }} +{{ return $data }}