From c2616547dda08511e28c391ddcbb1bfe1d871642 Mon Sep 17 00:00:00 2001 From: javierg Date: Wed, 19 Nov 2025 10:08:22 -0800 Subject: [PATCH 1/2] set query argument as optional assign --- lib/beacon/live_admin/live/media_library_live/index.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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} From 4d2591e1940e09909b0e58aced90625ccc65d556 Mon Sep 17 00:00:00 2001 From: javierg Date: Thu, 5 Mar 2026 11:37:19 -0800 Subject: [PATCH 2/2] render links on welcome page from dyanmic --- lib/beacon/live_admin/live/home_live.ex | 51 +++++++++++-------------- 1 file changed, 23 insertions(+), 28 deletions(-) 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