diff --git a/lib/beacon/live_admin/live/home_live.ex b/lib/beacon/live_admin/live/home_live.ex
index 7b72a77e..0fafc63f 100644
--- a/lib/beacon/live_admin/live/home_live.ex
+++ b/lib/beacon/live_admin/live/home_live.ex
@@ -7,11 +7,13 @@ defmodule Beacon.LiveAdmin.HomeLive do
alias Beacon.LiveAdmin.Router
@impl true
- def mount(_params, _session, socket) do
+ def mount(_params, %{"pages" => pages}, socket) do
if connected?(socket) do
PubSub.subscribe()
end
+ socket = assign(socket, :pages, pages)
+
{:ok, assign(socket, :running_sites, Cluster.running_sites())}
end
@@ -33,33 +35,11 @@ defmodule Beacon.LiveAdmin.HomeLive do
<%= site %>
- <.link href={Router.beacon_live_admin_path(@socket, site, "/media_library")} class={nav_class()}>
- Media Library
-
- <.link href={Router.beacon_live_admin_path(@socket, site, "/components")} class={nav_class()}>
- Components
-
- <.link href={Router.beacon_live_admin_path(@socket, site, "/layouts")} class={nav_class()}>
- Layouts
-
- <.link href={Router.beacon_live_admin_path(@socket, site, "/pages")} class={nav_class()}>
- Pages
-
- <.link href={Router.beacon_live_admin_path(@socket, site, "/live_data")} class={nav_class()}>
- Live Data
-
- <.link href={Router.beacon_live_admin_path(@socket, site, "/events")} class={nav_class()}>
- Event Handlers
-
- <.link href={Router.beacon_live_admin_path(@socket, site, "/info_handlers")} class={nav_class()}>
- Info Handlers
-
- <.link href={Router.beacon_live_admin_path(@socket, site, "/error_pages")} class={nav_class()}>
- Error Pages
-
- <.link href={Router.beacon_live_admin_path(@socket, site, "/hooks")} class={nav_class()}>
- JS Hooks
-
+ <%= for {path, _, _, _} <- all_pages(@pages) do %>
+ <.link href={Router.beacon_live_admin_path(@socket, site, path)} class={nav_class()}>
+ <%= path_to_title(path) %>
+
+ <% end %>
<% end %>
@@ -78,4 +58,19 @@ defmodule Beacon.LiveAdmin.HomeLive do
def handle_info({Cluster, :sites_changed}, socket) do
{:noreply, assign(socket, :running_sites, Beacon.LiveAdmin.Cluster.running_sites())}
end
+
+ defp all_pages(pages) do
+ Enum.filter(pages, fn {path, _, _, _} ->
+ path =~ ~r{^/[^/]+$}
+ end)
+ end
+
+ defp path_to_title(path) do
+ path
+ |> String.replace(~w[/ _ -], " ")
+ |> String.trim()
+ |> String.capitalize()
+ end
+
+
end
diff --git a/lib/beacon/live_admin/live/media_library_live/index.ex b/lib/beacon/live_admin/live/media_library_live/index.ex
index 74d993f0..2e7a6c41 100644
--- a/lib/beacon/live_admin/live/media_library_live/index.ex
+++ b/lib/beacon/live_admin/live/media_library_live/index.ex
@@ -79,7 +79,8 @@ defmodule Beacon.LiveAdmin.MediaLibraryLive.Index do
asset = MediaLibrary.get_asset_by(site, id: id)
{:ok, _} = MediaLibrary.soft_delete(site, asset)
- path = beacon_live_admin_path(socket, site, "/media_library", query: socket.assigns.query)
+ query = Map.get(socket.assigns, :query)
+ path = beacon_live_admin_path(socket, site, "/media_library", query: query)
socket = push_patch(socket, to: path)
{:noreply, socket}