25/lib/mse25_web/controllers/page_controller.ex
Anders Englöf Ytterström 84f4b8007a
Article list view (#12)
* Add article list view

* Add article view CSS

* Cleanup scaffold app layout

Most importantly, fix issue with page title.

* Add article view to Page controller

* Add article list view to router
2024-10-03 09:38:07 +02:00

36 lines
974 B
Elixir

defmodule Mse25Web.PageController do
use Mse25Web, :controller
alias Mse25.Directus
def home(conn, _params) do
[most_recent_article, older_article] = Directus.get_articles!(limit: 2)
recent_event = Directus.get_events!(limit: 1)
upcoming_events = Directus.get_events!(limit: 1, upcoming: true)
render(conn, :home,
page_title: "Anders Englöf Ytterström @ madr.se",
layout: false,
recent_article: most_recent_article,
older_article: older_article,
recent_event: recent_event,
upcoming: upcoming_events
)
end
def articles(conn, _params) do
articles = Directus.get_articles!(limit: 9999) |> group_annually
render(conn, :articles,
page_title: "Webblogg",
articles: articles
)
end
defp group_annually(items) do
items
|> Enum.group_by(fn %{"slug" => slug} -> String.slice(slug, 0..3) end)
|> Map.to_list()
|> Enum.sort(fn {a, _a}, {b, _b} -> b < a end)
end
end