Packages
ckeditor5_phoenix
1.28.2
1.28.2
1.28.1
1.28.0
1.27.2
1.27.1
1.27.0
1.26.0
1.25.1
1.25.0
1.24.2
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.2
1.17.1
1.17.0
1.16.1
1.16.0
1.15.8
1.15.7
1.15.6
1.15.5
1.15.4
1.15.3
1.15.2
1.15.1
1.15.0
1.14.2
1.14.1
1.14.0
1.13.0
1.12.0
1.11.0
1.10.2
1.10.1
1.10.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.1
1.4.0
1.3.0
1.2.1
1.2.0
1.1.0
1.0.8
1.0.7
CKEditor 5 integration for Phoenix Framework
Current section
Files
Jump to
Current section
Files
lib/components/editor/assigns/preset_upload_handler.ex
defmodule CKEditor5.Components.Editor.PresetUploadHandler do
@moduledoc """
Handles upload URL overrides for the Editor preset.
"""
alias CKEditor5.Config
@doc """
Overrides the upload URL if provided in the assigns or config.
"""
def override_upload_url(assigns) do
config = Config.uploads_config()
url = assigns[:upload_url] || config[:api_url] || config[:url]
case url do
"base64" ->
apply_base64_upload_config(assigns)
url when is_binary(url) ->
apply_upload_config(assigns, url)
_ ->
assigns
end
end
defp apply_base64_upload_config(%{preset: preset} = assigns) do
new_config =
preset.config
|> Map.update(:plugins, ["Base64UploadAdapter"], fn plugins ->
plugins
|> Enum.reject(fn plugin -> to_string(plugin) == "SimpleUploadAdapter" end)
|> Enum.concat(["Base64UploadAdapter"])
|> Enum.uniq()
end)
|> Map.delete(:phoenixUpload)
new_preset = %{preset | config: new_config}
Map.put(assigns, :preset, new_preset)
end
defp apply_upload_config(%{preset: preset} = assigns, url) do
plugins_to_remove = ["SimpleUploadAdapter", "Base64UploadAdapter"]
new_config =
preset.config
|> Map.put(:phoenixUpload, %{url: url})
|> Map.update(:plugins, [], fn plugins ->
Enum.reject(plugins, fn plugin -> to_string(plugin) in plugins_to_remove end)
end)
new_preset = %{preset | config: new_config}
Map.put(assigns, :preset, new_preset)
end
end