administrate-base_controller 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +1 -1
- data/README.md +23 -19
- data/lib/administrate/base_controller.rb +33 -10
- data/lib/administrate/base_controller/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3d86a463b8de9a3ac555327f413d273ec996e1f5381c47deb98732166777a29
|
4
|
+
data.tar.gz: 360287eb7fc408e9d7044ac2238997cb4cb647cd8b78486265661213b5bb484e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d52269f57a761867001fc0f550cbee434b70a8ee3eeac9fae9ceea6fb29d0311770192465b352867b818cd99608a27ad3e4e3b566b3edba7bd408693ed2881d2
|
7
|
+
data.tar.gz: c31ae9246857a214d329572ae3d72ec65e0f0f505a108096faaf07159786f9d2180c5b516db2044e519a82bb27ccbb97e19b160ffb76e717bdef7efa27f043ac
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.3.0
|
4
|
+
|
5
|
+
- Add json rendering for index and show paths
|
6
|
+
- Add `render_index_json(resources)` to easily override json responses on the index route
|
7
|
+
- Add `render_index_any(resources, format:)` to easily override non-json responses on the index route
|
8
|
+
- Add `render_show_json(resource)` to easily override json responses on the show route
|
9
|
+
- Add `render_show_any(resource, format:)` to easily override non-json responses on the show route
|
10
|
+
|
3
11
|
## 0.2.0
|
4
12
|
|
5
13
|
Load on after_initialize hook
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -41,6 +41,10 @@ You get the following _protected_ methods for free, which you may override:
|
|
41
41
|
| `authorize_resource` | `show_action?(action_name.to_sym, resource)` | Allows you to change how resources are authorized |
|
42
42
|
| `resource_params` | Calls `read_param(k, v)` for each instead of `transform_values` | Allows you to change how params are read |
|
43
43
|
| `read_param` | Calls `read_param_value` if applicable | Allows you to change how a param is read based on its key |
|
44
|
+
| `render_index_json` | `json: resources.to_json` | Easily override json responses on the index route without changing the resources logic |
|
45
|
+
| `render_index_any` | `locals: resources, page, ...` | Easily override any responses on the index route without changing the resources logic |
|
46
|
+
| `render_show_json` | `json: resource.to_json` | Easily override json responses on the show route without changing the resources logic |
|
47
|
+
| `render_show_any` | `locals: resource, page, ...` | Easily override any responses on the show route without changing the resources logic |
|
44
48
|
|
45
49
|
```ruby
|
46
50
|
module Admin
|
@@ -60,7 +64,7 @@ module Admin
|
|
60
64
|
def current_ability
|
61
65
|
@_current_ability ||= Ability.new(current_admin_user)
|
62
66
|
end
|
63
|
-
|
67
|
+
|
64
68
|
def show_action?(action, resource)
|
65
69
|
current_ability.can?(action.to_sym, resource)
|
66
70
|
end
|
@@ -73,13 +77,13 @@ Additionally you can correctly hide resources the `current_ability` can not `act
|
|
73
77
|
```ruby
|
74
78
|
module Admin
|
75
79
|
class ApplicationController < Administrate::ApplicationController
|
76
|
-
|
80
|
+
|
77
81
|
# ...
|
78
|
-
|
82
|
+
|
79
83
|
def scoped_resource
|
80
84
|
super.accessible_by(current_ability, action_name.to_sym)
|
81
85
|
end
|
82
|
-
end
|
86
|
+
end
|
83
87
|
end
|
84
88
|
```
|
85
89
|
|
@@ -91,8 +95,8 @@ This works without this gem, but this gem allows you to changed `scoped_resource
|
|
91
95
|
module Admin
|
92
96
|
class BookController < ::Admin::ApplicationController
|
93
97
|
def find_resource(param)
|
94
|
-
scoped_resource.friendly.find(param)
|
95
|
-
end
|
98
|
+
scoped_resource.friendly.find(param)
|
99
|
+
end
|
96
100
|
end
|
97
101
|
end
|
98
102
|
```
|
@@ -107,7 +111,7 @@ module Admin
|
|
107
111
|
class BookController < ::Admin::ApplicationController
|
108
112
|
def index_scoped_resource
|
109
113
|
super.where(author: Current.author)
|
110
|
-
end
|
114
|
+
end
|
111
115
|
end
|
112
116
|
end
|
113
117
|
```
|
@@ -124,7 +128,7 @@ module Admin
|
|
124
128
|
class BookController < ::Admin::ApplicationController
|
125
129
|
def new_resource
|
126
130
|
resource_class.new(author: Current.author)
|
127
|
-
end
|
131
|
+
end
|
128
132
|
end
|
129
133
|
end
|
130
134
|
```
|
@@ -138,12 +142,12 @@ field, which contents have been serialized, you can overwrite `read_param`:
|
|
138
142
|
module Admin
|
139
143
|
class BookController < ::Admin::ApplicationController
|
140
144
|
JSON_FIELDS = %w[options content].freeze
|
141
|
-
|
145
|
+
|
142
146
|
def read_param(key, value)
|
143
147
|
return Oj.load(value) if JSON_FIELDS.include?(String(key))
|
144
148
|
super(key, value)
|
145
149
|
end
|
146
|
-
end
|
150
|
+
end
|
147
151
|
end
|
148
152
|
```
|
149
153
|
|
@@ -152,21 +156,21 @@ Alternatively you can use the [`administrate-serialized_fields`](https://github.
|
|
152
156
|
## Related
|
153
157
|
|
154
158
|
- [`Administrate`](https://github.com/thoughtbot/administrate): A Rails engine that helps you put together a super-flexible admin dashboard.
|
155
|
-
<!-- - [`Administrate::BaseController`](https://github.com/XPBytes/administrate-base_controller): A set of application controller improvements. -->
|
156
159
|
|
157
160
|
### Concerns
|
158
161
|
|
159
|
-
- [`Administrate::DefaultOrder`](https://github.com/XPBytes/administrate-default_order): Sets the default order for a resource in a administrate controller.
|
160
|
-
- [`Administrate::SerializedFields`](https://github.com/XPBytes/administrate-serialized_fields): Automatically deserialize administrate fields on form submit.
|
162
|
+
- [`Administrate::DefaultOrder`](https://github.com/XPBytes/administrate-default_order): :1234: Sets the default order for a resource in a administrate controller.
|
163
|
+
- [`Administrate::SerializedFields`](https://github.com/XPBytes/administrate-serialized_fields): :ab: Automatically deserialize administrate fields on form submit.
|
161
164
|
|
162
165
|
### Fields
|
163
166
|
|
164
|
-
- [`Administrate::Field::Code`](https://github.com/XPBytes/administrate-field-code): A `text` field that shows code.
|
165
|
-
- [`Administrate::Field::Hyperlink`](https://github.com/XPBytes/administrate-field-hyperlink): A `string` field that is shows a hyperlink.
|
166
|
-
- [`Adminisrtate::Field::JsonEditor`](https://github.com/XPBytes/administrate-field-json_editor): A `text` field that shows a [JSON editor](https://github.com/josdejong/jsoneditor).
|
167
|
-
- [`Administrate::Field::
|
168
|
-
- [`Administrate::Field::
|
169
|
-
- [`Administrate::Field::
|
167
|
+
- [`Administrate::Field::Code`](https://github.com/XPBytes/administrate-field-code): :pencil: A `text` field that shows code.
|
168
|
+
- [`Administrate::Field::Hyperlink`](https://github.com/XPBytes/administrate-field-hyperlink): :pencil: A `string` field that is shows a hyperlink.
|
169
|
+
- [`Adminisrtate::Field::JsonEditor`](https://github.com/XPBytes/administrate-field-json_editor): :pencil: A `text` field that shows a [JSON editor](https://github.com/josdejong/jsoneditor).
|
170
|
+
- [`Administrate::Field::LazyBelongsTo`](https://github.com/XPBytes/administrate-field-lazy_belongs_to): :pencil: An input field that lazy loads `belongs_to` values.
|
171
|
+
- [`Administrate::Field::ScopedBelongsTo`](https://github.com/XPBytes/administrate-field-scoped_belongs_to): :pencil: A `belongs_to` field that yields itself to the scope `lambda`.
|
172
|
+
- [`Administrate::Field::ScopedHasMany`](https://github.com/XPBytes/administrate-field-scoped_has_many): :pencil: A `has_many` field that yields itself to the scope `lambda`.
|
173
|
+
- [`Administrate::Field::TimeAgo`](https://github.com/XPBytes/administrate-field-time_ago): :pencil: A `date_time` field that shows its data as `time_ago` since.
|
170
174
|
|
171
175
|
## Development
|
172
176
|
|
@@ -10,14 +10,11 @@ module Administrate
|
|
10
10
|
resources = apply_resource_includes(resources)
|
11
11
|
resources = order.apply(resources)
|
12
12
|
resources = resources.page(params[:page]).per(records_per_page)
|
13
|
-
page = index_page
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
show_search_bar: show_search_bar?,
|
20
|
-
}
|
14
|
+
respond_to do |format|
|
15
|
+
format.json { render_index_json(resources) }
|
16
|
+
format.any { render_index_any(resources, format: format) }
|
17
|
+
end
|
21
18
|
end
|
22
19
|
|
23
20
|
def new
|
@@ -31,7 +28,10 @@ module Administrate
|
|
31
28
|
end
|
32
29
|
|
33
30
|
def show
|
34
|
-
|
31
|
+
respond_to do |format|
|
32
|
+
format.json { render_show_json(requested_resource) }
|
33
|
+
format.any { render_show_any(requested_resource, format: format) }
|
34
|
+
end
|
35
35
|
end
|
36
36
|
|
37
37
|
protected
|
@@ -52,8 +52,8 @@ module Administrate
|
|
52
52
|
Administrate::Page::Collection.new(dashboard, order: order)
|
53
53
|
end
|
54
54
|
|
55
|
-
def show_page
|
56
|
-
Administrate::Page::Show.new(dashboard,
|
55
|
+
def show_page(resource = requested_resource)
|
56
|
+
Administrate::Page::Show.new(dashboard, resource)
|
57
57
|
end
|
58
58
|
|
59
59
|
def new_page(resource)
|
@@ -87,6 +87,29 @@ module Administrate
|
|
87
87
|
data
|
88
88
|
end
|
89
89
|
|
90
|
+
def render_index_json(resources)
|
91
|
+
render json: resources
|
92
|
+
end
|
93
|
+
|
94
|
+
def render_index_any(resources, format:)
|
95
|
+
page = index_page
|
96
|
+
|
97
|
+
render locals: {
|
98
|
+
resources: resources,
|
99
|
+
search_term: search_term,
|
100
|
+
page: page,
|
101
|
+
show_search_bar: show_search_bar?,
|
102
|
+
}
|
103
|
+
end
|
104
|
+
|
105
|
+
def render_show_json(resource = requested_resource)
|
106
|
+
render json: resource
|
107
|
+
end
|
108
|
+
|
109
|
+
def render_show_any(resource = requested_resource, format:)
|
110
|
+
render locals: { page: show_page(resource) }
|
111
|
+
end
|
112
|
+
|
90
113
|
private
|
91
114
|
|
92
115
|
attr_writer :search_term
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: administrate-base_controller
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derk-Jan Karrenbeld
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: administrate
|