Packages

phoenix_kit

1.7.205
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 storage web dimensions.ex
Raw

lib/modules/storage/web/dimensions.ex

defmodule PhoenixKitWeb.Live.Modules.Storage.Dimensions do
@moduledoc """
Storage dimensions management LiveView.
Provides interface for managing dimension presets for automatic variant generation.
"""
use PhoenixKitWeb, :live_view
use Gettext, backend: PhoenixKitWeb.Gettext
alias PhoenixKit.Modules.Storage
alias PhoenixKit.Settings
alias PhoenixKit.Utils.Routes
require Logger
def mount(params, _session, socket) do
# Set locale for LiveView process
locale =
params["locale"] || socket.assigns[:current_locale]
# Get project title from settings
project_title = Settings.get_project_title()
# Load all dimensions
dimensions = Storage.list_dimensions()
socket =
socket
|> assign(:current_path, Routes.path("/admin/settings/media/dimensions"))
|> assign(:page_title, gettext("Instance Dimensions"))
|> assign(:project_title, project_title)
|> assign(:dimensions, dimensions)
|> assign(:current_locale, locale)
{:ok, socket}
end
def handle_event("delete_dimension", %{"id" => id}, socket) do
Logger.info("Dimensions: delete_dimension event triggered for id=#{id}")
dimension = Storage.get_dimension(id)
case Storage.delete_dimension(dimension) do
{:ok, _} ->
# Reload dimensions
dimensions = Storage.list_dimensions()
socket =
socket
|> assign(:dimensions, dimensions)
|> put_flash(:info, gettext("Dimension deleted successfully"))
{:noreply, socket}
{:error, _changeset} ->
socket = put_flash(socket, :error, gettext("Failed to delete dimension"))
{:noreply, socket}
end
end
def handle_event("toggle_dimension", %{"id" => id}, socket) do
Logger.info("Dimensions: toggle_dimension event triggered for id=#{id}")
dimension = Storage.get_dimension(id)
case Storage.update_dimension(dimension, %{enabled: !dimension.enabled}) do
{:ok, _dimension} ->
# Reload dimensions
dimensions = Storage.list_dimensions()
socket =
socket
|> assign(:dimensions, dimensions)
|> put_flash(:info, gettext("Dimension status updated"))
{:noreply, socket}
{:error, _changeset} ->
socket = put_flash(socket, :error, gettext("Failed to update dimension"))
{:noreply, socket}
end
end
def handle_event("reset_dimensions_to_defaults", _params, socket) do
case Storage.reset_dimensions_to_defaults() do
{:ok, _} ->
# Reload dimensions
dimensions = Storage.list_dimensions()
socket =
socket
|> assign(:dimensions, dimensions)
|> put_flash(:info, gettext("Dimensions reset to defaults successfully"))
{:noreply, socket}
{:error, reason} ->
socket =
put_flash(
socket,
:error,
gettext("Failed to reset dimensions: %{reason}", reason: inspect(reason))
)
{:noreply, socket}
end
end
defp format_dimension_size(width, height) when is_integer(width) and is_integer(height) do
"#{width}×#{height}"
end
defp format_dimension_size(width, nil) when is_integer(width) do
"#{width}px wide"
end
defp format_dimension_size(nil, height) when is_integer(height) do
"#{height}px tall"
end
defp format_dimension_size(_, _), do: "Auto"
end