Add languages to admin settings
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -80,10 +80,31 @@ defmodule Mobilizon.Admin do
|
||||
def get_admin_setting_value(group, name, fallback \\ nil)
|
||||
when is_bitstring(group) and is_bitstring(name) do
|
||||
case Repo.get_by(Setting, group: group, name: name) do
|
||||
nil -> fallback
|
||||
%Setting{value: ""} -> fallback
|
||||
%Setting{value: nil} -> fallback
|
||||
%Setting{value: value} -> value
|
||||
nil ->
|
||||
fallback
|
||||
|
||||
%Setting{value: ""} ->
|
||||
fallback
|
||||
|
||||
%Setting{value: nil} ->
|
||||
fallback
|
||||
|
||||
%Setting{value: value} ->
|
||||
get_setting_value(value)
|
||||
end
|
||||
end
|
||||
|
||||
def get_setting_value(value) do
|
||||
case Jason.decode(value) do
|
||||
{:ok, val} ->
|
||||
val
|
||||
|
||||
{:error, _} ->
|
||||
case value do
|
||||
"true" -> true
|
||||
"false" -> false
|
||||
value -> value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -116,7 +137,7 @@ defmodule Mobilizon.Admin do
|
||||
Setting.changeset(%Setting{}, %{
|
||||
group: group,
|
||||
name: Atom.to_string(key),
|
||||
value: to_string(val)
|
||||
value: convert_to_string(val)
|
||||
}),
|
||||
on_conflict: :replace_all,
|
||||
conflict_target: [:group, :name]
|
||||
@@ -124,4 +145,11 @@ defmodule Mobilizon.Admin do
|
||||
|
||||
do_save_setting(transaction, group, rest)
|
||||
end
|
||||
|
||||
defp convert_to_string(val) do
|
||||
case val do
|
||||
val when is_list(val) -> Jason.encode!(val)
|
||||
val -> to_string(val)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,5 +5,5 @@ defmodule Mobilizon.Cldr do
|
||||
|
||||
use Cldr,
|
||||
locales: ["cs", "de", "en", "es", "fr", "it", "ja", "nl", "pl", "pt", "ru"],
|
||||
providers: [Cldr.Number, Cldr.Calendar, Cldr.DateTime]
|
||||
providers: [Cldr.Number, Cldr.Calendar, Cldr.DateTime, Cldr.Language]
|
||||
end
|
||||
|
||||
@@ -99,6 +99,15 @@ defmodule Mobilizon.Config do
|
||||
)
|
||||
)
|
||||
|
||||
@spec instance_languages :: list(String.t())
|
||||
def instance_languages,
|
||||
do:
|
||||
Mobilizon.Admin.get_admin_setting_value(
|
||||
"instance",
|
||||
"instance_languages",
|
||||
instance_config()[:languages]
|
||||
)
|
||||
|
||||
@spec instance_registrations_allowlist :: list(String.t())
|
||||
def instance_registrations_allowlist, do: instance_config()[:registration_email_allowlist]
|
||||
|
||||
@@ -319,7 +328,8 @@ defmodule Mobilizon.Config do
|
||||
instance_privacy_policy: instance_privacy(),
|
||||
instance_privacy_policy_type: instance_privacy_type(),
|
||||
instance_privacy_policy_url: instance_privacy_url(),
|
||||
instance_rules: instance_rules()
|
||||
instance_rules: instance_rules(),
|
||||
instance_languages: instance_languages()
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user