Packages
phoenix_kit
1.7.104
1.7.210
1.7.209
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
Current section
Files
lib/phoenix_kit_web/live/users/media.ex
defmodule PhoenixKitWeb.Live.Users.Media do
@moduledoc """
Media management LiveView — thin wrapper around `MediaBrowser` LiveComponent.
This LiveView owns the page layout and assigns required by
`LayoutWrapper.app_layout`. All media browser state and logic live in
`PhoenixKitWeb.Components.MediaBrowser`.
"""
use PhoenixKitWeb, :live_view
use PhoenixKitWeb.Components.MediaBrowser.Embed
alias PhoenixKit.Settings
alias PhoenixKit.Utils.Routes
alias PhoenixKitWeb.Components.MediaBrowser
def mount(params, _session, socket) do
locale = params["locale"] || socket.assigns[:current_locale]
settings =
Settings.get_settings_cached(
["project_title"],
%{"project_title" => PhoenixKit.Config.get(:project_title, "PhoenixKit")}
)
initial_params = %{
folder: params["folder"],
q: params["q"] || "",
page:
case Integer.parse(params["page"] || "1") do
{n, _} when n > 0 -> n
_ -> 1
end,
filter_orphaned: params["orphaned"] == "1",
view: params["view"]
}
socket =
socket
|> assign(:page_title, "Media")
|> assign(:project_title, settings["project_title"])
|> assign(:current_locale, locale)
|> assign(:url_path, Routes.path("/admin/media"))
|> assign(:initial_params, initial_params)
{:ok, socket}
end
def handle_params(params, _uri, socket) do
if connected?(socket) do
folder = params["folder"]
q = params["q"] || ""
page =
case Integer.parse(params["page"] || "1") do
{n, _} when n > 0 -> n
_ -> 1
end
filter_orphaned = params["orphaned"] == "1"
view = params["view"]
send_update(MediaBrowser,
id: "media-browser",
nav_params: %{
folder: folder,
q: q,
page: page,
filter_orphaned: filter_orphaned,
view: view
}
)
end
{:noreply, socket}
end
# URL-sync for the controlled mode. More generic MediaBrowser messages
# are caught by the fallback clause injected by the Embed macro.
def handle_info(
{MediaBrowser, "media-browser", {:navigate, params}},
socket
) do
folder = params[:folder]
q = params[:q] || ""
page = params[:page] || 1
filter_orphaned = params[:filter_orphaned] || false
view = params[:view]
base = Routes.path("/admin/media")
qs =
%{}
|> then(&if folder, do: Map.put(&1, "folder", folder), else: &1)
|> then(&if q != "", do: Map.put(&1, "q", q), else: &1)
|> then(&if page > 1, do: Map.put(&1, "page", page), else: &1)
|> then(&if filter_orphaned, do: Map.put(&1, "orphaned", "1"), else: &1)
|> then(&if view == "all", do: Map.put(&1, "view", "all"), else: &1)
url = if qs == %{}, do: base, else: base <> "?" <> URI.encode_query(qs)
{:noreply, push_patch(socket, to: url)}
end
end