Packages

phoenix_kit

1.7.69
1.7.208 1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib modules entities web entities.ex
Raw

lib/modules/entities/web/entities.ex

defmodule PhoenixKit.Modules.Entities.Web.Entities do
@moduledoc """
LiveView for listing and managing all entities.
Provides interface for viewing, publishing, and deleting entity schemas.
"""
use PhoenixKitWeb, :live_view
on_mount PhoenixKit.Modules.Entities.Web.Hooks
alias PhoenixKit.Modules.Entities
alias PhoenixKit.Settings
def mount(params, _session, socket) do
# Set locale for LiveView process
locale =
params["locale"] || socket.assigns[:current_locale]
project_title = Settings.get_project_title()
socket =
socket
|> assign(:current_locale, locale)
|> assign(:page_title, gettext("Entities"))
|> assign(:project_title, project_title)
|> assign(:view_mode, "table")
|> assign(:entities, Entities.list_entities())
{:ok, socket}
end
def handle_params(params, _url, socket) do
view_mode = Map.get(params, "view", "table")
socket =
socket
|> assign(:view_mode, view_mode)
{:noreply, socket}
end
def handle_event("toggle_view_mode", %{"mode" => mode}, socket) do
base_path = current_base_path(socket)
query = if mode != "table", do: "?view=#{mode}", else: ""
{:noreply, push_patch(socket, to: "#{base_path}#{query}")}
end
def handle_event("archive_entity", %{"uuid" => uuid}, socket) do
entity = Entities.get_entity!(uuid)
case Entities.update_entity(entity, %{status: "archived"}) do
{:ok, _entity} ->
socket =
socket
|> assign(:entities, Entities.list_entities())
|> put_flash(
:info,
gettext("Entity '%{name}' archived successfully", name: entity.display_name)
)
{:noreply, socket}
{:error, _changeset} ->
{:noreply, put_flash(socket, :error, gettext("Failed to archive entity"))}
end
end
def handle_event("restore_entity", %{"uuid" => uuid}, socket) do
entity = Entities.get_entity!(uuid)
case Entities.update_entity(entity, %{status: "published"}) do
{:ok, _entity} ->
socket =
socket
|> assign(:entities, Entities.list_entities())
|> put_flash(
:info,
gettext("Entity '%{name}' restored successfully", name: entity.display_name)
)
{:noreply, socket}
{:error, _changeset} ->
{:noreply, put_flash(socket, :error, gettext("Failed to restore entity"))}
end
end
## Live updates
def handle_info({event, _entity_uuid}, socket)
when event in [:entity_created, :entity_updated, :entity_deleted] do
{:noreply, assign(socket, :entities, Entities.list_entities())}
end
# Helper Functions
# Extracts the base path (without query string) from the current URL,
# which already includes the correct locale and prefix segments.
defp current_base_path(socket) do
(socket.assigns[:url_path] || "") |> URI.parse() |> Map.get(:path) || "/"
end
end