From 71a23faa9059c5318173932758523530169b36a7 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 28 Aug 2021 11:58:22 -0400 Subject: [PATCH] Add page titles --- lib/frenzy_web/live/edit_pipeline_live.ex | 4 +++ lib/frenzy_web/templates/layout/root.html.eex | 2 +- lib/frenzy_web/views/account_view.ex | 4 +++ lib/frenzy_web/views/feed_view.ex | 8 ++++++ lib/frenzy_web/views/group_view.ex | 16 ++++++++++++ lib/frenzy_web/views/item_view.ex | 6 ++++- lib/frenzy_web/views/layout_view.ex | 26 +++++++++++++++++++ lib/frenzy_web/views/login_view.ex | 4 +++ lib/frenzy_web/views/pipeline_view.ex | 16 ++++++++++++ 9 files changed, 84 insertions(+), 2 deletions(-) diff --git a/lib/frenzy_web/live/edit_pipeline_live.ex b/lib/frenzy_web/live/edit_pipeline_live.ex index 3dd973a..758dba6 100644 --- a/lib/frenzy_web/live/edit_pipeline_live.ex +++ b/lib/frenzy_web/live/edit_pipeline_live.ex @@ -3,6 +3,10 @@ defmodule FrenzyWeb.EditPipelineLive do use Phoenix.HTML alias Frenzy.{Repo, Pipeline} + def title(%{pipeline: %Pipeline{name: name}}) do + "Edit #{name}" + end + @stages [ {"Filter Stage", "Frenzy.Pipeline.FilterStage"}, {"Scrape Stage", "Frenzy.Pipeline.ScrapeStage"}, diff --git a/lib/frenzy_web/templates/layout/root.html.eex b/lib/frenzy_web/templates/layout/root.html.eex index 441bbe9..5ffcee3 100644 --- a/lib/frenzy_web/templates/layout/root.html.eex +++ b/lib/frenzy_web/templates/layout/root.html.eex @@ -5,7 +5,7 @@ - Frenzy + <%= title(assigns) %> <%= csrf_meta_tag() %> diff --git a/lib/frenzy_web/views/account_view.ex b/lib/frenzy_web/views/account_view.ex index 76c1c75..938ed02 100644 --- a/lib/frenzy_web/views/account_view.ex +++ b/lib/frenzy_web/views/account_view.ex @@ -1,3 +1,7 @@ defmodule FrenzyWeb.AccountView do use FrenzyWeb, :view + + def title(:show, _) do + "Account Settings" + end end diff --git a/lib/frenzy_web/views/feed_view.ex b/lib/frenzy_web/views/feed_view.ex index 4ad655d..71e6dbe 100644 --- a/lib/frenzy_web/views/feed_view.ex +++ b/lib/frenzy_web/views/feed_view.ex @@ -10,4 +10,12 @@ defmodule FrenzyWeb.FeedView do def feed_site_url(%Feed{feed_url: feed_url}) do URI.merge(feed_url, "/") |> to_string() end + + def title(:show, %{feed: %Feed{title: title}}) do + title + end + + def title(:edit, %{feed: %Feed{title: title}}) do + "Edit #{title}" + end end diff --git a/lib/frenzy_web/views/group_view.ex b/lib/frenzy_web/views/group_view.ex index 11d455f..539cc26 100644 --- a/lib/frenzy_web/views/group_view.ex +++ b/lib/frenzy_web/views/group_view.ex @@ -1,3 +1,19 @@ defmodule FrenzyWeb.GroupView do use FrenzyWeb, :view + + def title(:index, _) do + "Groups" + end + + def title(:show, %{group: %Frenzy.Group{title: title}}) do + title + end + + def title(:edit, %{group: %Frenzy.Group{title: title}}) do + "Edit #{title}" + end + + def title(:read, %{group: %Frenzy.Group{title: title}}) do + "Read #{title}" + end end diff --git a/lib/frenzy_web/views/item_view.ex b/lib/frenzy_web/views/item_view.ex index 88461ef..da2dc03 100644 --- a/lib/frenzy_web/views/item_view.ex +++ b/lib/frenzy_web/views/item_view.ex @@ -1,3 +1,7 @@ defmodule FrenzyWeb.ItemView do use FrenzyWeb, :view -end \ No newline at end of file + + def title(:show, %{item: %Frenzy.Item{title: title}, feed: %Frenzy.Feed{title: feed}}) do + "#{title} | #{feed}" + end +end diff --git a/lib/frenzy_web/views/layout_view.ex b/lib/frenzy_web/views/layout_view.ex index edb1e41..3ff12e2 100644 --- a/lib/frenzy_web/views/layout_view.ex +++ b/lib/frenzy_web/views/layout_view.ex @@ -6,4 +6,30 @@ defmodule FrenzyWeb.LayoutView do def user_groups(user) do Repo.all(from g in Group, where: g.user_id == ^user.id, preload: [:feeds]) end + + def title(%{live_module: module} = assigns) do + try do + "#{module.title(assigns)} | Frenzy" + rescue + _ -> + "Frenzy" + end + end + + def title(assigns) do + vm = Phoenix.Controller.view_module(assigns[:conn]) + + if function_exported?(vm, :title, 2) do + action = Phoenix.Controller.action_name(assigns[:conn]) + + try do + "#{vm.title(action, assigns)} | Frenzy" + rescue + _ -> + "Frenzy" + end + else + "Frenzy" + end + end end diff --git a/lib/frenzy_web/views/login_view.ex b/lib/frenzy_web/views/login_view.ex index 0cd4d3f..ce47421 100644 --- a/lib/frenzy_web/views/login_view.ex +++ b/lib/frenzy_web/views/login_view.ex @@ -1,3 +1,7 @@ defmodule FrenzyWeb.LoginView do use FrenzyWeb, :view + + def title(_, _) do + "Login" + end end diff --git a/lib/frenzy_web/views/pipeline_view.ex b/lib/frenzy_web/views/pipeline_view.ex index 0b41d33..90db43f 100644 --- a/lib/frenzy_web/views/pipeline_view.ex +++ b/lib/frenzy_web/views/pipeline_view.ex @@ -1,3 +1,19 @@ defmodule FrenzyWeb.PipelineView do use FrenzyWeb, :view + + def title(:index, _) do + "Pipelines" + end + + def title(:new, _) do + "Add Pipeline" + end + + def title(:show, %{pipeline: %Frenzy.Pipeline{name: name}}) do + name + end + + def title(:edit, %{pipeline: %Frenzy.Pipeline{name: name}}) do + "Edit #{name}" + end end