Packages

phoenix_kit

1.7.81
1.7.208 1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib modules pages web settings.ex
Raw

lib/modules/pages/web/settings.ex

defmodule PhoenixKit.Modules.Pages.Web.Settings do
@moduledoc """
LiveView for configuring public-facing Pages module settings, including the
custom 404 fallback experience.
"""
use PhoenixKitWeb, :live_view
use Gettext, backend: PhoenixKitWeb.Gettext
alias PhoenixKit.Modules.Pages
alias PhoenixKit.Modules.Pages.FileOperations
alias PhoenixKit.Settings
alias PhoenixKit.Utils.Routes
def mount(params, _session, socket) do
locale =
params["locale"] || socket.assigns[:current_locale]
current_path =
Routes.path("/admin/settings/pages", locale: socket.assigns.current_locale_base)
socket =
socket
|> assign(:current_locale, locale)
|> assign(:current_path, current_path)
|> assign(:url_path, current_path)
|> assign(:page_title, "Pages Settings")
|> assign(:project_title, Settings.get_project_title())
|> assign(:pages_enabled, Pages.enabled?())
|> refresh_pages_assigns()
{:ok, socket}
end
def handle_params(_params, _uri, socket), do: {:noreply, socket}
def handle_event("toggle_pages_handle_404", _params, socket) do
if socket.assigns.pages_enabled do
new_state = !socket.assigns.pages_handle_not_found
Pages.update_handle_not_found(new_state)
if new_state do
Pages.ensure_not_found_page_exists()
end
message =
if new_state do
gettext("Pages module will now serve custom 404 pages")
else
gettext("Pages module will defer 404 responses to the parent app")
end
socket =
socket
|> refresh_pages_assigns()
|> put_flash(:info, message)
{:noreply, socket}
else
{:noreply,
put_flash(
socket,
:error,
gettext("Enable the Pages module before configuring 404 handling")
)}
end
end
def handle_event("pages_create_default_404", _params, socket) do
Pages.ensure_not_found_page_exists()
socket =
socket
|> refresh_pages_assigns()
|> put_flash(:info, gettext("Default 404 page created"))
{:noreply, socket}
end
def handle_event("save_pages_not_found", %{"pages_settings" => params}, socket) do
slug = Map.get(params, "not_found_slug", "/404")
normalized = Pages.update_not_found_slug(slug)
Pages.ensure_not_found_page_exists()
socket =
socket
|> refresh_pages_assigns()
|> put_flash(:info, gettext("Updated 404 page to %{slug}.md", slug: normalized))
{:noreply, socket}
end
defp refresh_pages_assigns(socket) do
slug = Pages.not_found_slug()
file_path = Pages.not_found_file_path()
file_exists? = FileOperations.file_exists?(file_path)
form =
%{"not_found_slug" => slug}
|> to_form(as: :pages_settings)
assign(socket,
pages_handle_not_found: Pages.handle_not_found?(),
pages_not_found_slug: slug,
pages_not_found_file_path: file_path,
pages_not_found_file_exists: file_exists?,
pages_form: form
)
end
end