25/lib/mse25_web/controllers/page_controller.ex

37 lines
974 B
Elixir
Raw Normal View History

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