diff options
| -rw-r--r-- | CHANGELOG.md | 3 | ||||
| -rw-r--r-- | config/config.exs | 3 | ||||
| -rw-r--r-- | config/description.exs | 5 | ||||
| -rw-r--r-- | docs/configuration/cheatsheet.md | 1 | ||||
| -rw-r--r-- | lib/pleroma/web/common_api/utils.ex | 8 | ||||
| -rw-r--r-- | test/web/common_api/common_api_utils_test.exs | 41 | 
6 files changed, 47 insertions, 14 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c672275e..8692dfef2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).  - NodeInfo: `pleroma_emoji_reactions` to the `features` list.  - Configuration: `:restrict_unauthenticated` setting, restrict access for unauthenticated users to timelines (public and federate), user profiles and statuses.  - Configuration: Add `:database_config_whitelist` setting to whitelist settings which can be configured from AdminFE. +- Configuration: `filename_display_max_length` option to set filename truncate limit, if filename display enabled (0 = no limit).  - New HTTP adapter [gun](https://github.com/ninenines/gun). Gun adapter requires minimum OTP version of 22.2 otherwise Pleroma won’t start. For hackney OTP update is not required.  - Mix task to create trusted OAuth App.  - Notifications: Added `follow_request` notification type. @@ -47,7 +48,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).  ### Fixed  - Healthcheck reporting the number of memory currently used, rather than allocated in total -- `InsertSkeletonsForDeletedUsers` failing on some instances  +- `InsertSkeletonsForDeletedUsers` failing on some instances  ## [2.0.3] - 2020-05-02 diff --git a/config/config.exs b/config/config.exs index 1b11b4fa9..7385fb6c3 100644 --- a/config/config.exs +++ b/config/config.exs @@ -71,7 +71,8 @@ config :pleroma, Pleroma.Upload,        follow_redirect: true,        pool: :upload      ] -  ] +  ], +  filename_display_max_length: 30  config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads" diff --git a/config/description.exs b/config/description.exs index cf7cc297a..807c945e0 100644 --- a/config/description.exs +++ b/config/description.exs @@ -119,6 +119,11 @@ config :pleroma, :config_description, [              ]            }          ] +      }, +      %{ +        key: :filename_display_max_length, +        type: :integer, +        description: "Set max length of a filename to display. 0 = no limit. Default: 30"        }      ]    }, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index e8def466e..505acb293 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -498,6 +498,7 @@ the source code is here: https://github.com/koto-bank/kocaptcha. The default end  * `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host.  * `proxy_remote`: If you're using a remote uploader, Pleroma will proxy media requests instead of redirecting to it.  * `proxy_opts`: Proxy options, see `Pleroma.ReverseProxy` documentation. +* `filename_display_max_length`: Set max length of a filename to display. 0 = no limit. Default: 30.  !!! warning      `strip_exif` has been replaced by `Pleroma.Upload.Filter.Mogrify`. diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index b9fa21648..1c0d90a2b 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -396,10 +396,12 @@ defmodule Pleroma.Web.CommonAPI.Utils do    def to_masto_date(_), do: ""    defp shortname(name) do -    if String.length(name) < 30 do -      name +    with max_length when max_length > 0 <- +           Config.get([Pleroma.Upload, :filename_display_max_length], 30), +         true <- String.length(name) > max_length do +      String.slice(name, 0..max_length) <> "…"      else -      String.slice(name, 0..30) <> "…" +      _ -> name      end    end diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index d7d2d10d5..e67c10b93 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -14,18 +14,41 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do    @public_address "https://www.w3.org/ns/activitystreams#Public" -  test "it adds attachment links to a given text and attachment set" do -    name = -      "Sakura%20Mana%20%E2%80%93%20Turned%20on%20by%20a%20Senior%20OL%20with%20a%20Temptating%20Tight%20Skirt-s%20Full%20Hipline%20and%20Panty%20Shot-%20Beautiful%20Thick%20Thighs-%20and%20Erotic%20Ass-%20-2015-%20--%20Oppaitime%208-28-2017%206-50-33%20PM.png" +  describe "add_attachments/2" do +    setup do +      name = +        "Sakura Mana – Turned on by a Senior OL with a Temptating Tight Skirt-s Full Hipline and Panty Shot- Beautiful Thick Thighs- and Erotic Ass- -2015- -- Oppaitime 8-28-2017 6-50-33 PM.png" -    attachment = %{ -      "url" => [%{"href" => name}] -    } +      attachment = %{ +        "url" => [%{"href" => URI.encode(name)}] +      } -    res = Utils.add_attachments("", [attachment]) +      %{name: name, attachment: attachment} +    end + +    test "it adds attachment links to a given text and attachment set", %{ +      name: name, +      attachment: attachment +    } do +      len = 10 +      clear_config([Pleroma.Upload, :filename_display_max_length], len) -    assert res == -             "<br><a href=\"#{name}\" class='attachment'>Sakura Mana – Turned on by a Se…</a>" +      expected = +        "<br><a href=\"#{URI.encode(name)}\" class='attachment'>#{String.slice(name, 0..len)}…</a>" + +      assert Utils.add_attachments("", [attachment]) == expected +    end + +    test "doesn't truncate file name if config for truncate is set to 0", %{ +      name: name, +      attachment: attachment +    } do +      clear_config([Pleroma.Upload, :filename_display_max_length], 0) + +      expected = "<br><a href=\"#{URI.encode(name)}\" class='attachment'>#{name}</a>" + +      assert Utils.add_attachments("", [attachment]) == expected +    end    end    describe "it confirms the password given is the current users password" do  | 
