summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreugenijm <eugenijm@protonmail.com>2020-04-12 22:54:43 +0300
committereugenijm <eugenijm@protonmail.com>2020-05-21 04:41:42 +0300
commitb7fc61e17b995e3aa4e52f85b91d320a1cd1e106 (patch)
tree2b361619e710819c511b986804e6e92ac8664c15
parent42b06d78dfc9cec2a31bcb4676cc0135863ca97d (diff)
Added the ability to upload background, logo, default user avatar, instance thumbnail, and the NSFW hiding image via AdminFE
-rw-r--r--config/description.exs17
-rw-r--r--lib/pleroma/emails/new_users_digest_email.ex6
-rw-r--r--lib/pleroma/helpers/uri_helper.ex3
-rw-r--r--lib/pleroma/user.ex9
-rw-r--r--lib/pleroma/web/mastodon_api/views/instance_view.ex7
-rw-r--r--test/user_test.exs12
-rw-r--r--test/workers/cron/new_users_digest_worker_test.exs1
7 files changed, 48 insertions, 7 deletions
diff --git a/config/description.exs b/config/description.exs
index 716bcf4ff..cf7cc297a 100644
--- a/config/description.exs
+++ b/config/description.exs
@@ -969,6 +969,13 @@ config :pleroma, :config_description, [
]
}
]
+ },
+ %{
+ key: :instance_thumbnail,
+ type: :string,
+ description:
+ "The instance thumbnail image. It will appear in [Pleroma Instances](http://distsn.org/pleroma-instances.html)",
+ suggestions: ["/instance/thumbnail.jpeg"]
}
]
},
@@ -1112,7 +1119,7 @@ config :pleroma, :config_description, [
logoMask: true,
minimalScopesMode: false,
noAttachmentLinks: false,
- nsfwCensorImage: "",
+ nsfwCensorImage: "/static/img/nsfw.74818f9.png",
postContentType: "text/plain",
redirectRootLogin: "/main/friends",
redirectRootNoLogin: "/main/all",
@@ -1226,7 +1233,7 @@ config :pleroma, :config_description, [
type: :string,
description:
"URL of the image to use for hiding NSFW media attachments in the timeline.",
- suggestions: ["/static/img/nsfw.png"]
+ suggestions: ["/static/img/nsfw.74818f9.png"]
},
%{
key: :postContentType,
@@ -1346,6 +1353,12 @@ config :pleroma, :config_description, [
suggestions: [
:pleroma_fox_tan
]
+ },
+ %{
+ key: :default_user_avatar,
+ type: :string,
+ description: "URL of the default user avatar.",
+ suggestions: ["/images/avi.png"]
}
]
},
diff --git a/lib/pleroma/emails/new_users_digest_email.ex b/lib/pleroma/emails/new_users_digest_email.ex
index 7d16b807f..348cbac9c 100644
--- a/lib/pleroma/emails/new_users_digest_email.ex
+++ b/lib/pleroma/emails/new_users_digest_email.ex
@@ -14,8 +14,10 @@ defmodule Pleroma.Emails.NewUsersDigestEmail do
styling = Pleroma.Config.get([Pleroma.Emails.UserEmail, :styling])
logo_url =
- Pleroma.Web.Endpoint.url() <>
- Pleroma.Config.get([:frontend_configurations, :pleroma_fe, :logo])
+ Pleroma.Helpers.UriHelper.maybe_add_base(
+ Pleroma.Config.get([:frontend_configurations, :pleroma_fe, :logo]),
+ Pleroma.Web.Endpoint.url()
+ )
new()
|> to({to.name, to.email})
diff --git a/lib/pleroma/helpers/uri_helper.ex b/lib/pleroma/helpers/uri_helper.ex
index 256252ddb..69d8c8fe0 100644
--- a/lib/pleroma/helpers/uri_helper.ex
+++ b/lib/pleroma/helpers/uri_helper.ex
@@ -24,4 +24,7 @@ defmodule Pleroma.Helpers.UriHelper do
params
end
end
+
+ def maybe_add_base("/" <> uri, base), do: Path.join([base, uri])
+ def maybe_add_base(uri, _base), do: uri
end
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index e8013bf40..eb9533d78 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -305,8 +305,13 @@ defmodule Pleroma.User do
def avatar_url(user, options \\ []) do
case user.avatar do
- %{"url" => [%{"href" => href} | _]} -> href
- _ -> !options[:no_default] && "#{Web.base_url()}/images/avi.png"
+ %{"url" => [%{"href" => href} | _]} ->
+ href
+
+ _ ->
+ unless options[:no_default] do
+ Config.get([:assets, :default_user_avatar], "#{Web.base_url()}/images/avi.png")
+ end
end
end
diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex
index 8088306c3..6a630eafa 100644
--- a/lib/pleroma/web/mastodon_api/views/instance_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/instance_view.ex
@@ -23,7 +23,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
streaming_api: Pleroma.Web.Endpoint.websocket_url()
},
stats: Pleroma.Stats.get_stats(),
- thumbnail: Pleroma.Web.base_url() <> "/instance/thumbnail.jpeg",
+ thumbnail: instance_thumbnail(),
languages: ["en"],
registrations: Keyword.get(instance, :registrations_open),
# Extra (not present in Mastodon):
@@ -87,4 +87,9 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
end
|> Map.put(:enabled, Config.get([:instance, :federating]))
end
+
+ defp instance_thumbnail do
+ Pleroma.Config.get([:instance, :instance_thumbnail]) ||
+ "#{Pleroma.Web.base_url()}/instance/thumbnail.jpeg"
+ end
end
diff --git a/test/user_test.exs b/test/user_test.exs
index 863e0106c..ea192ad10 100644
--- a/test/user_test.exs
+++ b/test/user_test.exs
@@ -1777,4 +1777,16 @@ defmodule Pleroma.UserTest do
assert result.email_notifications["digest"] == false
end
end
+
+ test "avatar fallback" do
+ user = insert(:user)
+ assert User.avatar_url(user) =~ "/images/avi.png"
+
+ Pleroma.Config.put([:assets, :default_user_avatar], "avatar.png")
+
+ user = User.get_cached_by_nickname_or_id(user.nickname)
+ assert User.avatar_url(user) =~ "avatar.png"
+
+ assert User.avatar_url(user, no_default: true) == nil
+ end
end
diff --git a/test/workers/cron/new_users_digest_worker_test.exs b/test/workers/cron/new_users_digest_worker_test.exs
index 54cf0ca46..ee589bb55 100644
--- a/test/workers/cron/new_users_digest_worker_test.exs
+++ b/test/workers/cron/new_users_digest_worker_test.exs
@@ -28,6 +28,7 @@ defmodule Pleroma.Workers.Cron.NewUsersDigestWorkerTest do
assert email.html_body =~ user.nickname
assert email.html_body =~ user2.nickname
assert email.html_body =~ "cofe"
+ assert email.html_body =~ "#{Pleroma.Web.Endpoint.url()}/static/logo.png"
end
test "it doesn't fail when admin has no email" do