New frontend configuration mechanism.
This commit is contained in:
		
							parent
							
								
									b624b7a150
								
							
						
					
					
						commit
						e221c681dc
					
				
					 5 changed files with 68 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -154,6 +154,7 @@
 | 
			
		|||
    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 @@
 | 
			
		|||
  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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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``
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -216,6 +216,14 @@ def config(conn, _params) 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()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,4 +32,27 @@ test "it returns HTTP 200", %{conn: conn} 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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue