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