New frontend configuration mechanism.
authorlain <lain@soykaf.club>
Wed, 23 Jan 2019 11:40:57 +0000 (12:40 +0100)
committerlain <lain@soykaf.club>
Wed, 23 Jan 2019 11:40:57 +0000 (12:40 +0100)
config/config.exs
docs/config.md
lib/pleroma/web/router.ex
lib/pleroma/web/twitter_api/controllers/util_controller.ex
test/web/twitter_api/util_controller_test.exs

index d30b0aad003232e021f67c513bf8fcb6ac45af19..7f63a0a3966770971ed02e5b49e142b82755848f 100644 (file)
@@ -154,6 +154,7 @@ config :pleroma, :markup,
     Pleroma.HTML.Scrubber.Default
   ]
 
+# Deprecated, will be gone in 1.0
 config :pleroma, :fe,
   theme: "pleroma-dark",
   logo: "/static/logo.png",
@@ -172,6 +173,24 @@ config :pleroma, :fe,
   subject_line_behavior: "email",
   always_show_subject_input: true
 
+config :pleroma, :frontend_configurations,
+  pleroma_fe: %{
+    theme: "pleroma-dark",
+    logo: "/static/logo.png",
+    background: "/static/aurora_borealis.jpg",
+    redirectRootNoLogin: "/main/all",
+    redirectRootLogin: "/main/friends",
+    showInstanceSpecificPanel: true,
+    scopeOptionsEnabled: false,
+    formattingOptionsEnabled: false,
+    collapseMessageWithSubject: false,
+    hidePostStats: false,
+    hideUserStats: false,
+    scopeCopy: true,
+    subjectLineBehavior: "email",
+    alwaysShowSubjectInput: true
+  }
+
 config :pleroma, :activitypub,
   accept_blocks: true,
   unfollow_blocked: true,
index 6bf7b9ea7da76e9b568f84dd9bcf7a8e88c7a73d..ff4a1012cc86d39f470dcdb4d0b397c8fa382763 100644 (file)
@@ -101,7 +101,24 @@ config :pleroma, Pleroma.Mailer,
 * `backends`: `:console` is used to send logs to stdout, `{ExSyslogger, :ex_syslogger}` to log to syslog
 See: [logger’s documentation](https://hexdocs.pm/logger/Logger.html) and [ex_syslogger’s documentation](https://hexdocs.pm/ex_syslogger/)
 
+
+## :frontend_configurations
+
+This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` are configured.
+
+Frontends can access these settings at `/api/pleroma/frontend_configurations`
+
+To add your own configuration for PleromaFE, use it like this:
+
+`config :pleroma, :frontend_configurations, :pleroma_fe, %{theme: "my-theme", ...}`
+
+These settings need to be complete, they will overide the defaults.
+
 ## :fe
+__THIS IS DEPRACTED__
+
+If you are using this method, please change it to the `frontend_configurations` method.
+
 This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:instance`` is set to false.
 
 * `theme`: Which theme to use, they are defined in ``styles.json``
index 69ab58c6addd44036c1f131e3f0352dcd8198808..8ddc642eab092fcb262989208db75e450f8685be 100644 (file)
@@ -284,6 +284,7 @@ defmodule Pleroma.Web.Router do
     post("/help/test", TwitterAPI.UtilController, :help_test)
     get("/statusnet/config", TwitterAPI.UtilController, :config)
     get("/statusnet/version", TwitterAPI.UtilController, :version)
+    get("/pleroma/frontend_configurations", TwitterAPI.UtilController, :frontend_configurations)
   end
 
   scope "/api", Pleroma.Web do
index a79072f3d21bd786c9bda8e5c5441359fb11c4fc..0856428765372e010fc2547395a98229d1cb9819 100644 (file)
@@ -216,6 +216,14 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
     end
   end
 
+  def frontend_configurations(conn, _params) do
+    config =
+      Pleroma.Config.get(:frontend_configurations, %{})
+      |> Enum.into(%{})
+
+    json(conn, config)
+  end
+
   def version(conn, _params) do
     version = Pleroma.Application.named_version()
 
index 73aa70bd5ecf0868e429b9122c330526148e5dff..c099db00381acc2505dfcda138df631627fb34a8 100644 (file)
@@ -32,4 +32,27 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do
       assert response == "job started"
     end
   end
+
+  describe "GET /api/pleroma/frontent_configurations" do
+    test "returns everything in :pleroma, :frontend_configurations", %{conn: conn} do
+      config = [
+        frontend_a: %{
+          x: 1,
+          y: 2
+        },
+        frontend_b: %{
+          z: 3
+        }
+      ]
+
+      Pleroma.Config.put(:frontend_configurations, config)
+
+      response =
+        conn
+        |> get("/api/pleroma/frontend_configurations")
+        |> json_response(:ok)
+
+      assert response == Jason.encode!(config |> Enum.into(%{})) |> Jason.decode!()
+    end
+  end
 end