* Exclude not published items in directus client * Add link view to page controller * Add page controller links list view to router * Add links list view CSS * Add permalink view for link * Improve page titles * Let user copy link permalink to clipboard if alt, shift or ctrl are pressed, fallback to default behavior.
54 lines
1.4 KiB
Elixir
54 lines
1.4 KiB
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)
|
|
brutal_legends = Directus.get_albums!(limit: 1)
|
|
|
|
render(conn, :home,
|
|
page_title: "Anders Englöf Ytterström",
|
|
layout: false,
|
|
recent_article: most_recent_article,
|
|
older_article: older_article,
|
|
recent_event: recent_event,
|
|
upcoming: upcoming_events,
|
|
brutal_legends: brutal_legends
|
|
)
|
|
end
|
|
|
|
def articles(conn, _params) do
|
|
articles = Directus.get_articles!(limit: 9999) |> group_annually
|
|
|
|
render(conn, :articles,
|
|
page_title: "Webblogg",
|
|
articles: articles
|
|
)
|
|
end
|
|
|
|
def links(conn, _params) do
|
|
links = Directus.get_links!(limit: 9999) |> group_by_date
|
|
|
|
render(conn, :links,
|
|
page_title: "Delningar",
|
|
links: links
|
|
)
|
|
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
|
|
|
|
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
|
|
end
|