Packages
phoenix_kit
1.7.77
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/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", %{})
try do
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)}
rescue
e ->
require Logger
Logger.error("Comment settings save failed: #{Exception.message(e)}")
{:noreply,
assign(socket, :saving, false)
|> put_flash(:error, "Something went wrong. Please try again.")}
end
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