Packages

phoenix_kit

1.7.43
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 comments web settings.ex
Raw

lib/modules/comments/web/settings.ex

defmodule PhoenixKit.Modules.Comments.Web.Settings do
@moduledoc """
LiveView for Comments module settings management.
Manages:
- `comments_enabled` toggle
- `comments_moderation` toggle
- `comments_max_depth` input
- `comments_max_length` input
## Route
Mounted at `{prefix}/admin/settings/comments`.
"""
use PhoenixKitWeb, :live_view
alias PhoenixKit.Settings
@impl true
def mount(_params, _session, socket) do
project_title = Settings.get_project_title()
socket =
socket
|> assign(:page_title, "Comments Settings")
|> assign(:project_title, project_title)
|> assign(:saving, false)
|> load_settings()
{:ok, socket}
end
@impl true
def handle_event("save", params, socket) do
socket = assign(socket, :saving, true)
settings = Map.get(params, "settings", %{})
results =
Enum.map(settings, fn {key, value} ->
Settings.update_setting(key, value)
end)
socket =
if Enum.all?(results, fn
{:ok, _} -> true
_ -> false
end) do
socket
|> put_flash(:info, "Settings saved successfully")
|> load_settings()
else
put_flash(socket, :error, "Failed to save some settings")
end
{:noreply, assign(socket, :saving, false)}
end
@impl true
def handle_event("reset_defaults", _params, socket) do
defaults = %{
"comments_enabled" => "false",
"comments_moderation" => "false",
"comments_max_depth" => "10",
"comments_max_length" => "10000"
}
Enum.each(defaults, fn {key, value} ->
Settings.update_setting(key, value)
end)
{:noreply,
socket
|> put_flash(:info, "Settings reset to defaults")
|> load_settings()}
end
defp load_settings(socket) do
socket
|> assign(:comments_enabled, Settings.get_setting("comments_enabled", "false"))
|> assign(:comments_moderation, Settings.get_setting("comments_moderation", "false"))
|> assign(:comments_max_depth, Settings.get_setting("comments_max_depth", "10"))
|> assign(:comments_max_length, Settings.get_setting("comments_max_length", "10000"))
end
end