changed
CHANGELOG.md
|
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+ ## [0.3.1] - 2020-02-04
|
9
|
+
|
10
|
+ ### Updated
|
11
|
+
|
12
|
+ - Put plug options in private instead of assigns
|
13
|
+
|
8
14
|
## [0.3.0] - 2020-02-04
|
9
15
|
|
10
16
|
### Added
|
changed
README.md
|
@@ -12,7 +12,7 @@ by adding `adminable` to your list of dependencies in `mix.exs`:
|
12
12
|
```elixir
|
13
13
|
def deps do
|
14
14
|
[
|
15
|
- {:adminable, "~> 0.3.0"}
|
15
|
+ {:adminable, "~> 0.3.1"}
|
16
16
|
]
|
17
17
|
end
|
18
18
|
```
|
changed
hex_metadata.config
|
@@ -62,4 +62,4 @@
|
62
62
|
{<<"optional">>,false},
|
63
63
|
{<<"repository">>,<<"hexpm">>},
|
64
64
|
{<<"requirement">>,<<"~> 1.0">>}]]}.
|
65
|
- {<<"version">>,<<"0.3.0">>}.
|
65
|
+ {<<"version">>,<<"0.3.1">>}.
|
changed
lib/adminable/admin_controller.ex
|
@@ -5,25 +5,25 @@ defmodule Adminable.AdminController do
|
5
5
|
import Plug.Conn
|
6
6
|
|
7
7
|
def dashboard(conn, _params) do
|
8
|
- schemas = Map.keys(conn.assigns.schemas)
|
8
|
+ schemas = Map.keys(conn.private.adminable_schemas)
|
9
9
|
|
10
10
|
opts = [
|
11
11
|
schemas: schemas
|
12
12
|
]
|
13
13
|
|
14
14
|
conn
|
15
|
- |> put_layout(conn.assigns.layout)
|
16
|
- |> put_view(conn.assigns.view_module)
|
15
|
+ |> put_layout(conn.private.adminable_layout)
|
16
|
+ |> put_view(conn.private.adminable_view_module)
|
17
17
|
|> render("dashboard.html", opts)
|
18
18
|
end
|
19
19
|
|
20
20
|
def index(conn, %{"schema" => schema} = params) do
|
21
|
- schema_module = conn.assigns.schemas[schema]
|
21
|
+ schema_module = conn.private.adminable_schemas[schema]
|
22
22
|
|
23
23
|
paginate_config = [
|
24
24
|
page_size: 20,
|
25
25
|
page: Map.get(params, "page", 1),
|
26
|
- module: conn.assigns.repo
|
26
|
+ module: conn.private.adminable_repo
|
27
27
|
]
|
28
28
|
|
29
29
|
page = Scrivener.paginate(schema_module, paginate_config)
|
|
@@ -39,13 +39,13 @@ defmodule Adminable.AdminController do
|
39
39
|
]
|
40
40
|
|
41
41
|
conn
|
42
|
- |> put_layout(conn.assigns.layout)
|
43
|
- |> put_view(conn.assigns.view_module)
|
42
|
+ |> put_layout(conn.private.adminable_layout)
|
43
|
+ |> put_view(conn.private.adminable_view_module)
|
44
44
|
|> render("index.html", opts)
|
45
45
|
end
|
46
46
|
|
47
47
|
def new(conn, %{"schema" => schema}) do
|
48
|
- schema_module = conn.assigns.schemas[schema]
|
48
|
+ schema_module = conn.private.adminable_schemas[schema]
|
49
49
|
|
50
50
|
model = struct(schema_module)
|
51
51
|
|
|
@@ -56,19 +56,19 @@ defmodule Adminable.AdminController do
|
56
56
|
]
|
57
57
|
|
58
58
|
conn
|
59
|
- |> put_layout(conn.assigns.layout)
|
60
|
- |> put_view(conn.assigns.view_module)
|
59
|
+ |> put_layout(conn.private.adminable_layout)
|
60
|
+ |> put_view(conn.private.adminable_view_module)
|
61
61
|
|> render("new.html", opts)
|
62
62
|
end
|
63
63
|
|
64
64
|
def create(conn, %{"schema" => schema, "data" => data}) do
|
65
|
- schema_module = conn.assigns.schemas[schema]
|
65
|
+ schema_module = conn.private.adminable_schemas[schema]
|
66
66
|
|
67
67
|
new_schema = struct(schema_module)
|
68
68
|
|
69
69
|
changeset = schema_module.create_changeset(new_schema, data)
|
70
70
|
|
71
|
- case conn.assigns.repo.insert(changeset) do
|
71
|
+ case conn.private.adminable_repo.insert(changeset) do
|
72
72
|
{:ok, _created} ->
|
73
73
|
conn
|
74
74
|
|> put_flash(:info, "#{String.capitalize(schema)} created!")
|
|
@@ -84,19 +84,19 @@ defmodule Adminable.AdminController do
|
84
84
|
conn
|
85
85
|
|> put_flash(:error, "#{String.capitalize(schema)} failed to create!")
|
86
86
|
|> put_status(:unprocessable_entity)
|
87
|
- |> put_layout(conn.assigns.layout)
|
88
|
- |> put_view(conn.assigns.view_module)
|
87
|
+ |> put_layout(conn.private.adminable_layout)
|
88
|
+ |> put_view(conn.private.adminable_view_module)
|
89
89
|
|> render("new.html", opts)
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
93
|
def edit(conn, %{"schema" => schema, "pk" => pk}) do
|
94
|
- schema_module = conn.assigns.schemas[schema]
|
94
|
+ schema_module = conn.private.adminable_schemas[schema]
|
95
95
|
|
96
96
|
model =
|
97
97
|
schema_module.__schema__(:associations)
|
98
|
- |> Enum.reduce(conn.assigns.repo.get(schema_module, pk), fn a, m ->
|
99
|
- conn.assigns.repo.preload(m, a)
|
98
|
+ |> Enum.reduce(conn.private.adminable_repo.get(schema_module, pk), fn a, m ->
|
99
|
+ conn.private.adminable_repo.preload(m, a)
|
100
100
|
end)
|
101
101
|
|
102
102
|
opts = [
|
|
@@ -107,19 +107,19 @@ defmodule Adminable.AdminController do
|
107
107
|
]
|
108
108
|
|
109
109
|
conn
|
110
|
- |> put_layout(conn.assigns.layout)
|
111
|
- |> put_view(conn.assigns.view_module)
|
110
|
+ |> put_layout(conn.private.adminable_layout)
|
111
|
+ |> put_view(conn.private.adminable_view_module)
|
112
112
|
|> render("edit.html", opts)
|
113
113
|
end
|
114
114
|
|
115
115
|
def update(conn, %{"schema" => schema, "pk" => pk, "data" => data}) do
|
116
|
- schema_module = conn.assigns.schemas[schema]
|
116
|
+ schema_module = conn.private.adminable_schemas[schema]
|
117
117
|
|
118
|
- item = conn.assigns.repo.get!(schema_module, pk)
|
118
|
+ item = conn.private.adminable_repo.get!(schema_module, pk)
|
119
119
|
|
120
120
|
changeset = schema_module.edit_changeset(item, data)
|
121
121
|
|
122
|
- case conn.assigns.repo.update(changeset) do
|
122
|
+ case conn.private.adminable_repo.update(changeset) do
|
123
123
|
{:ok, _updated_model} ->
|
124
124
|
conn
|
125
125
|
|> put_flash(:info, "#{String.capitalize(schema)} ID #{pk} updated!")
|
|
@@ -136,8 +136,8 @@ defmodule Adminable.AdminController do
|
136
136
|
conn
|
137
137
|
|> put_flash(:error, "#{String.capitalize(schema)} ID #{pk} failed to update!")
|
138
138
|
|> put_status(:unprocessable_entity)
|
139
|
- |> put_layout(conn.assigns.layout)
|
140
|
- |> put_view(conn.assigns.view_module)
|
139
|
+ |> put_layout(conn.private.adminable_layout)
|
140
|
+ |> put_view(conn.private.adminable_view_module)
|
141
141
|
|> render("edit.html", opts)
|
142
142
|
end
|
143
143
|
end
|
changed
lib/adminable/plug.ex
|
@@ -47,11 +47,11 @@ defmodule Adminable.Plug do
|
47
47
|
|> Enum.into(%{})
|
48
48
|
|
49
49
|
conn
|
50
|
- |> Plug.Conn.assign(:otp_app, otp_app)
|
51
|
- |> Plug.Conn.assign(:repo, repo)
|
52
|
- |> Plug.Conn.assign(:schemas, schemas)
|
53
|
- |> Plug.Conn.assign(:layout, layout)
|
54
|
- |> Plug.Conn.assign(:view_module, view_module)
|
50
|
+ |> Plug.Conn.put_private(:adminable_otp_app, otp_app)
|
51
|
+ |> Plug.Conn.put_private(:adminable_repo, repo)
|
52
|
+ |> Plug.Conn.put_private(:adminable_schemas, schemas)
|
53
|
+ |> Plug.Conn.put_private(:adminable_layout, layout)
|
54
|
+ |> Plug.Conn.put_private(:adminable_view_module, view_module)
|
55
55
|
|> Adminable.Router.call(opts)
|
56
56
|
end
|
57
57
|
end
|
changed
mix.exs
|
@@ -4,7 +4,7 @@ defmodule Adminable.MixProject do
|
4
4
|
def project do
|
5
5
|
[
|
6
6
|
app: :adminable,
|
7
|
- version: "0.3.0",
|
7
|
+ version: "0.3.1",
|
8
8
|
elixir: "~> 1.8",
|
9
9
|
start_permanent: Mix.env() == :prod,
|
10
10
|
deps: deps(),
|