2024-09-04 10:12:36 +02:00
|
|
|
defmodule Mse25Web.PageController do
|
|
|
|
|
use Mse25Web, :controller
|
|
|
|
|
|
2024-10-01 16:44:34 +02:00
|
|
|
alias Mse25.Directus
|
|
|
|
|
|
2024-09-04 10:12:36 +02:00
|
|
|
def home(conn, _params) do
|
2024-10-01 16:44:34 +02:00
|
|
|
[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)
|
2024-10-03 09:55:44 +02:00
|
|
|
brutal_legends = Directus.get_albums!(limit: 1)
|
2024-10-01 16:44:34 +02:00
|
|
|
|
|
|
|
|
render(conn, :home,
|
2024-10-03 14:38:56 +02:00
|
|
|
page_title: "Anders Englöf Ytterström",
|
2024-10-01 16:44:34 +02:00
|
|
|
layout: false,
|
|
|
|
|
recent_article: most_recent_article,
|
|
|
|
|
older_article: older_article,
|
|
|
|
|
recent_event: recent_event,
|
2024-10-03 09:55:44 +02:00
|
|
|
upcoming: upcoming_events,
|
|
|
|
|
brutal_legends: brutal_legends
|
2024-10-01 16:44:34 +02:00
|
|
|
)
|
2024-09-04 10:12:36 +02:00
|
|
|
end
|
2024-10-03 09:38:07 +02:00
|
|
|
|
|
|
|
|
def articles(conn, _params) do
|
|
|
|
|
articles = Directus.get_articles!(limit: 9999) |> group_annually
|
|
|
|
|
|
|
|
|
|
render(conn, :articles,
|
|
|
|
|
page_title: "Webblogg",
|
|
|
|
|
articles: articles
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2024-10-03 14:38:56 +02:00
|
|
|
def links(conn, _params) do
|
|
|
|
|
links = Directus.get_links!(limit: 9999) |> group_by_date
|
|
|
|
|
|
|
|
|
|
render(conn, :links,
|
|
|
|
|
page_title: "Delningar",
|
|
|
|
|
links: links
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2024-10-03 09:38:07 +02:00
|
|
|
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
|
2024-10-03 14:38:56 +02:00
|
|
|
|
|
|
|
|
defp group_by_date(items) do
|
|
|
|
|
items
|
|
|
|
|
|> Enum.group_by(fn %{"pubDate" => pub_date} -> pub_date end)
|
|
|
|
|
|> Map.to_list()
|
|
|
|
|
|> Enum.sort(fn {a, _a}, {b, _b} -> b < a end)
|
|
|
|
|
end
|
2024-09-04 10:12:36 +02:00
|
|
|
end
|