Packages
literature
0.2.2
0.5.1
0.5.0
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
retired
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.32
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A simple CMS / Blog
Current section
Files
Jump to
Current section
Files
lib/literature/web.ex
defmodule Literature.Web do
@moduledoc false
@doc false
def model do
quote do
@moduledoc false
use Ecto.Schema
use Waffle.Ecto.Schema
import Ecto.Changeset
import Slugy
alias Literature.Author
alias Literature.Post
alias Literature.Publication
alias Literature.Redirect
alias Literature.Tag
alias Literature.TagPost
alias Literature.Uploaders
@primary_key {:id, :binary_id, autogenerate: false}
@foreign_key_type :binary_id
def maybe_generate_id(%{id: nil} = schema),
do: change(schema, id: Ecto.UUID.generate())
def maybe_generate_id(schema), do: schema
end
end
@doc false
def controller do
quote do
@moduledoc false
use Phoenix.Controller, namespace: Literature
import Plug.Conn
unquote(view_helpers())
end
end
@doc false
def view do
quote do
@moduledoc false
use Phoenix.View,
namespace: Literature,
root: "lib/literature/templates"
# Import convenience functions from controllers
import Phoenix.Controller,
only: [current_url: 1, current_url: 2, get_flash: 2]
unquote(view_helpers())
end
end
@doc false
def live_view do
quote do
@moduledoc false
use Phoenix.LiveView, layout: {Literature.LayoutView, :live_dashboard}
import Literature.CardComponent
import Literature.FormComponent
import Literature.LayoutComponent
import Literature.SidebarComponent
unquote(view_helpers())
end
end
@doc false
def live_component do
quote do
@moduledoc false
use Phoenix.LiveComponent
unquote(view_helpers())
end
end
defp view_helpers do
quote do
use Phoenix.HTML
import Phoenix.LiveView.Helpers
import Literature.Helpers
import Literature.QueryHelpers
import Literature.ReadingTimeHelpers
end
end
@doc false
defmacro __using__(which) when is_atom(which) do
apply(__MODULE__, which, [])
end
end
defimpl Plug.Exception, for: Literature.PageNotFound do
def status(_exception), do: 404
def actions(_exception), do: []
end