Improve page titles
- When showing a single record, use record details - Split title into logical breadcrumbs
This commit is contained in:
@@ -6,14 +6,18 @@ defmodule MusicLibraryWeb.SessionController do
|
||||
def new(conn, _params) do
|
||||
conn
|
||||
|> delete_session(:logged_in)
|
||||
|> render(:new, form: @empty_form, layout: {MusicLibraryWeb.Layouts, "unauthenticated"})
|
||||
|> render(:new,
|
||||
page_title: gettext("Login"),
|
||||
form: @empty_form,
|
||||
layout: {MusicLibraryWeb.Layouts, "unauthenticated"}
|
||||
)
|
||||
end
|
||||
|
||||
def create(conn, %{"password" => request_password}) do
|
||||
if Plug.Crypto.secure_compare(password(), request_password) do
|
||||
conn
|
||||
|> put_session(:logged_in, true)
|
||||
|> redirect(to: "/")
|
||||
|> redirect(to: ~p"/")
|
||||
else
|
||||
conn
|
||||
|> put_flash(:error, gettext("Invalid password"))
|
||||
|
||||
@@ -4,6 +4,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
||||
|
||||
alias MusicLibrary.Records
|
||||
alias MusicLibrary.Collection
|
||||
alias MusicLibraryWeb.CollectionLive.Show
|
||||
|
||||
@default_records_list_params %{
|
||||
query: "",
|
||||
@@ -38,7 +39,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
||||
end
|
||||
|
||||
socket
|
||||
|> assign(:page_title, gettext("Import from MusicBrainz"))
|
||||
|> assign(:page_title, gettext("Import from MusicBrainz · Collection"))
|
||||
|> assign(:record, nil)
|
||||
end
|
||||
|
||||
@@ -51,9 +52,11 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
||||
socket
|
||||
end
|
||||
|
||||
record = Records.get_record!(id)
|
||||
|
||||
socket
|
||||
|> assign(:page_title, gettext("Edit"))
|
||||
|> assign(:record, Records.get_record!(id))
|
||||
|> assign(:page_title, Show.page_title(socket.assigns.live_action, record))
|
||||
|> assign(:record, record)
|
||||
end
|
||||
|
||||
defp apply_action(socket, :index, params) do
|
||||
|
||||
@@ -31,7 +31,7 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
{:noreply,
|
||||
socket
|
||||
|> assign(:nav_section, :records)
|
||||
|> assign(:page_title, page_title(socket.assigns.live_action))
|
||||
|> assign(:page_title, page_title(socket.assigns.live_action, record))
|
||||
|> assign(:record, record)}
|
||||
end
|
||||
|
||||
@@ -88,8 +88,42 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
{:noreply, assign(socket, :record, record)}
|
||||
end
|
||||
|
||||
defp page_title(:show), do: gettext("Show")
|
||||
defp page_title(:edit), do: gettext("Edit")
|
||||
def page_title(:show, record) do
|
||||
artist_names = Enum.map(record.artists, & &1.name)
|
||||
|
||||
Enum.join(
|
||||
[
|
||||
Enum.join(artist_names, ", "),
|
||||
"-",
|
||||
record.title,
|
||||
"·",
|
||||
gettext("Details"),
|
||||
"·",
|
||||
gettext("Collection")
|
||||
],
|
||||
" "
|
||||
)
|
||||
end
|
||||
|
||||
def page_title(action, record) do
|
||||
artist_names = Enum.map(record.artists, & &1.name)
|
||||
|
||||
Enum.join(
|
||||
[
|
||||
Enum.join(artist_names, ", "),
|
||||
"-",
|
||||
record.title,
|
||||
"·",
|
||||
title_segment(action),
|
||||
"·",
|
||||
gettext("Collection")
|
||||
],
|
||||
" "
|
||||
)
|
||||
end
|
||||
|
||||
defp title_segment(:show), do: gettext("Show")
|
||||
defp title_segment(:edit), do: gettext("Edit")
|
||||
|
||||
defp musicbrainz_url(record) do
|
||||
"https://musicbrainz.org/release-group/#{record.musicbrainz_id}"
|
||||
|
||||
@@ -4,6 +4,7 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
||||
|
||||
alias MusicLibrary.Wishlist
|
||||
alias MusicLibrary.Records
|
||||
alias MusicLibraryWeb.WishlistLive.Show
|
||||
|
||||
@default_records_list_params %{
|
||||
query: "",
|
||||
@@ -38,7 +39,7 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
||||
end
|
||||
|
||||
socket
|
||||
|> assign(:page_title, gettext("Import from MusicBrainz"))
|
||||
|> assign(:page_title, gettext("Import from MusicBrainz · Wishlist"))
|
||||
|> assign(:record, nil)
|
||||
end
|
||||
|
||||
@@ -51,9 +52,11 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
||||
socket
|
||||
end
|
||||
|
||||
record = Records.get_record!(id)
|
||||
|
||||
socket
|
||||
|> assign(:page_title, gettext("Edit"))
|
||||
|> assign(:record, Records.get_record!(id))
|
||||
|> assign(:page_title, Show.page_title(socket.assigns.live_action, record))
|
||||
|> assign(:record, record)
|
||||
end
|
||||
|
||||
defp apply_action(socket, :index, params) do
|
||||
|
||||
@@ -26,11 +26,13 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
||||
|
||||
@impl true
|
||||
def handle_params(%{"id" => id}, _, socket) do
|
||||
record = Records.get_record!(id)
|
||||
|
||||
{:noreply,
|
||||
socket
|
||||
|> assign(:nav_section, :wishlist)
|
||||
|> assign(:page_title, page_title(socket.assigns.live_action))
|
||||
|> assign(:record, Records.get_record!(id))}
|
||||
|> assign(:page_title, page_title(socket.assigns.live_action, record))
|
||||
|> assign(:record, record)}
|
||||
end
|
||||
|
||||
@impl true
|
||||
@@ -86,8 +88,25 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
||||
{:noreply, assign(socket, :record, record)}
|
||||
end
|
||||
|
||||
defp page_title(:show), do: gettext("Show")
|
||||
defp page_title(:edit), do: gettext("Edit")
|
||||
def page_title(action, record) do
|
||||
artist_names = Enum.map(record.artists, & &1.name)
|
||||
|
||||
Enum.join(
|
||||
[
|
||||
Enum.join(artist_names, ", "),
|
||||
"-",
|
||||
record.title,
|
||||
"·",
|
||||
title_segment(action),
|
||||
"·",
|
||||
gettext("Wishlist")
|
||||
],
|
||||
" "
|
||||
)
|
||||
end
|
||||
|
||||
defp title_segment(:show), do: gettext("Show")
|
||||
defp title_segment(:edit), do: gettext("Edit")
|
||||
|
||||
defp musicbrainz_url(record) do
|
||||
"https://musicbrainz.org/release-group/#{record.musicbrainz_id}"
|
||||
|
||||
Reference in New Issue
Block a user