Add languages to admin settings
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -8,6 +8,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
|
||||
alias Mobilizon.{Actors, Admin, Config, Events}
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Admin.{ActionLog, Setting}
|
||||
alias Mobilizon.Cldr.Language
|
||||
alias Mobilizon.Config
|
||||
alias Mobilizon.Discussions.Comment
|
||||
alias Mobilizon.Events.Event
|
||||
@@ -156,6 +157,19 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
|
||||
end
|
||||
end
|
||||
|
||||
def get_list_of_languages(_parent, _args, _resolution) do
|
||||
locale = Gettext.get_locale()
|
||||
|
||||
case Language.known_languages(locale) do
|
||||
data when is_map(data) ->
|
||||
data = Enum.map(data, fn {code, elem} -> %{code: code, name: elem.standard} end)
|
||||
{:ok, data}
|
||||
|
||||
{:error, err} ->
|
||||
{:error, err}
|
||||
end
|
||||
end
|
||||
|
||||
def get_dashboard(_parent, _args, %{context: %{current_user: %User{role: role}}})
|
||||
when is_admin(role) do
|
||||
last_public_event_published =
|
||||
@@ -202,11 +216,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
|
||||
res <-
|
||||
res
|
||||
|> Enum.map(fn {key, %Setting{value: value}} ->
|
||||
case value do
|
||||
"true" -> {key, true}
|
||||
"false" -> {key, false}
|
||||
value -> {key, value}
|
||||
end
|
||||
{key, Admin.get_setting_value(value)}
|
||||
end)
|
||||
|> Enum.into(%{}),
|
||||
:ok <- eventually_update_instance_actor(res) do
|
||||
|
||||
@@ -75,6 +75,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do
|
||||
demo_mode: Config.instance_demo_mode?(),
|
||||
description: Config.instance_description(),
|
||||
long_description: Config.instance_long_description(),
|
||||
languages: Config.instance_languages(),
|
||||
anonymous: %{
|
||||
participation: %{
|
||||
allowed: Config.anonymous_participation?(),
|
||||
|
||||
@@ -64,6 +64,11 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
|
||||
end)
|
||||
end
|
||||
|
||||
object :language do
|
||||
field(:code, :string, description: "The iso-639-3 language code")
|
||||
field(:name, :string, description: "The language name")
|
||||
end
|
||||
|
||||
object :dashboard do
|
||||
field(:last_public_event_published, :event, description: "Last public event publish")
|
||||
field(:number_of_users, :integer, description: "The number of local users")
|
||||
@@ -85,6 +90,7 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
|
||||
field(:instance_privacy_policy_url, :string)
|
||||
field(:instance_rules, :string)
|
||||
field(:registrations_open, :boolean)
|
||||
field(:instance_languages, list_of(:string))
|
||||
end
|
||||
|
||||
enum :instance_terms_type do
|
||||
@@ -107,6 +113,10 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
|
||||
resolve(&Admin.list_action_logs/3)
|
||||
end
|
||||
|
||||
field :languages, type: list_of(:language) do
|
||||
resolve(&Admin.get_list_of_languages/3)
|
||||
end
|
||||
|
||||
field :dashboard, type: :dashboard do
|
||||
resolve(&Admin.get_dashboard/3)
|
||||
end
|
||||
@@ -172,6 +182,7 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
|
||||
arg(:instance_privacy_policy_url, :string)
|
||||
arg(:instance_rules, :string)
|
||||
arg(:registrations_open, :boolean)
|
||||
arg(:instance_languages, list_of(:string))
|
||||
|
||||
resolve(&Admin.save_settings/3)
|
||||
end
|
||||
|
||||
@@ -14,6 +14,7 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
|
||||
field(:long_description, :string)
|
||||
field(:contact, :string)
|
||||
|
||||
field(:languages, list_of(:string))
|
||||
field(:registrations_open, :boolean)
|
||||
field(:registrations_allowlist, :boolean)
|
||||
field(:demo_mode, :boolean)
|
||||
|
||||
Reference in New Issue
Block a user