mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-12-05 00:57:59 +01:00
43 lines
1.2 KiB
Elixir
43 lines
1.2 KiB
Elixir
defmodule PhilomenaWeb.ErrorView do
|
|
use PhilomenaWeb, :view
|
|
|
|
import PhilomenaWeb.LayoutView,
|
|
only: [
|
|
stylesheet_path: 1,
|
|
dark_stylesheet_path: 0,
|
|
viewport_meta_tag: 1
|
|
]
|
|
|
|
@codes %{
|
|
400 => {"Bad Request", "Couldn't process your request!"},
|
|
403 => {"Forbidden", "Not allowed to access this page (are your cookies enabled?)"},
|
|
404 => {"Not Found", "Couldn't find what you were looking for!"},
|
|
500 => {"Internal Error", "Couldn't process your request!"}
|
|
}
|
|
|
|
# By default, Phoenix returns the status message from
|
|
# the template name. For example, "404.html" becomes
|
|
# "Not Found".
|
|
def template_not_found(template, _assigns) do
|
|
Phoenix.Controller.status_message_from_template(template)
|
|
end
|
|
|
|
def render(template, assigns) when template != "show.html" do
|
|
{short_msg, long_msg} = @codes[assigns.status] || @codes[500]
|
|
|
|
case Phoenix.Controller.get_format(assigns.conn) do
|
|
"json" ->
|
|
%{"error" => short_msg}
|
|
|
|
_ ->
|
|
render(
|
|
PhilomenaWeb.ErrorView,
|
|
"show.html",
|
|
conn: assigns.conn,
|
|
status: assigns.status,
|
|
short_msg: short_msg,
|
|
long_msg: long_msg
|
|
)
|
|
end
|
|
end
|
|
end
|