administrate-field-nested_has_many 0.0.2 → 1.0.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 +5 -5
- data/.gitignore +1 -0
- data/CHANGELOG.md +35 -0
- data/Gemfile +3 -0
- data/README.md +2 -17
- data/Rakefile +20 -0
- data/administrate-field-nested_has_many.gemspec +10 -9
- data/app/assets/stylesheets/administrate-field-nested_has_many/application.css +3 -0
- data/app/assets/stylesheets/administrate-field-nested_has_many/base.scss +14 -0
- data/app/views/fields/nested_has_many/_fields.html.erb +3 -5
- data/app/views/fields/nested_has_many/_form.html.erb +12 -12
- data/app/views/fields/nested_has_many/_show.html.erb +3 -2
- data/config/locales/administrate-field-nested_has_many.en.yml +7 -0
- data/lib/administrate/field/nested_has_many.rb +25 -5
- metadata +49 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dd88637ffa9a205a64a76b0c72b2af2a9aea05331094d563ad055f0347dcb49c
|
4
|
+
data.tar.gz: '021851337256c69a63d69045caf809bad66f998949d6cf50433961290db4c726'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d6c8787987ca3ebe4c5e4cd93fd8008b71107759612816e7f31eb0adc752b8cd9d174c42052ebcec9bded051447a40a2226723e4628134a95dbfeccd9b31e95
|
7
|
+
data.tar.gz: 24417b0d9eb65d813f9b898ee3cd776ee22129bb37f865bd20eb0e0ec20b853112308af7931789b601c52486b1fce69aca8d3aa5c46adf427cce80b71e02eb08
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Gemfile.lock
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# CHANGELOG
|
2
|
+
|
3
|
+
## 1.0.0
|
4
|
+
|
5
|
+
* Add `rake` for testing and release tools ([#16][]).
|
6
|
+
* Fixes for `administrate` 0.9.0 ([#11][]).
|
7
|
+
* Ensure current data is injected into nested fields ([#10][]).
|
8
|
+
* Remove direct dependency on Rails ([#10][]).
|
9
|
+
* Add i18n support ([#10][]).
|
10
|
+
* Make styling more consistent with `has_one` form ([#10][]).
|
11
|
+
* Add missing Gemfile and missing dependency on RSpec ([#15][]).
|
12
|
+
* Update gem location and authors ([#14][]).
|
13
|
+
* Avoid circular dependencies by not including the full library in the Gemspec
|
14
|
+
([#13][]).
|
15
|
+
|
16
|
+
[#16]: https://github.com/nickcharlton/administrate-field-nested_has_many/pull/16
|
17
|
+
[#15]: https://github.com/nickcharlton/administrate-field-nested_has_many/pull/15
|
18
|
+
[#14]: https://github.com/nickcharlton/administrate-field-nested_has_many/pull/14
|
19
|
+
[#13]: https://github.com/nickcharlton/administrate-field-nested_has_many/pull/13
|
20
|
+
[#11]: https://github.com/nickcharlton/administrate-field-nested_has_many/pull/11
|
21
|
+
[#10]: https://github.com/nickcharlton/administrate-field-nested_has_many/pull/10
|
22
|
+
|
23
|
+
## 0.1.0
|
24
|
+
|
25
|
+
* Updates for changes in `administrate` 0.2.1.
|
26
|
+
* Import JavaScript automatically.
|
27
|
+
|
28
|
+
## 0.0.2
|
29
|
+
|
30
|
+
* Add missing import for `cocoon`.
|
31
|
+
* Note stop gap fix for missing JavaScript imports.
|
32
|
+
|
33
|
+
## 0.0.1
|
34
|
+
|
35
|
+
* Initial Release.
|
data/Gemfile
ADDED
data/README.md
CHANGED
@@ -7,7 +7,7 @@ A plugin for nested has_many forms in [Administrate].
|
|
7
7
|
Add to your `Gemfile`:
|
8
8
|
|
9
9
|
```ruby
|
10
|
-
gem "administrate-field-nested_has_many"
|
10
|
+
gem "administrate-field-nested_has_many"
|
11
11
|
```
|
12
12
|
|
13
13
|
Run:
|
@@ -17,6 +17,7 @@ $ bundle install
|
|
17
17
|
```
|
18
18
|
|
19
19
|
Add to your `FooDashboard`:
|
20
|
+
|
20
21
|
```ruby
|
21
22
|
ATTRIBUTE_TYPES = [
|
22
23
|
bars: Field::NestedHasMany.with_options(skip: :foo),
|
@@ -34,20 +35,4 @@ Otherwise, Administrate will try to render a field
|
|
34
35
|
for the order's `:customer` attribute,
|
35
36
|
which breaks the nested form logic.
|
36
37
|
|
37
|
-
## Stopgap fix for javascript
|
38
|
-
|
39
|
-
At the moment, Administrate doesn't automatically load javascripts from plugins.
|
40
|
-
To fix this, you need to generate the Administrate javascript file:
|
41
|
-
|
42
|
-
```bash
|
43
|
-
$ rails g administrate:views:layout
|
44
|
-
```
|
45
|
-
|
46
|
-
And then add a line to `app/views/admin/application/_javascript.html.erb`
|
47
|
-
to input the javascript for this gem:
|
48
|
-
|
49
|
-
```
|
50
|
-
<%= javascript_include_tag "administrate-field-nested_has_many/application" %>
|
51
|
-
```
|
52
|
-
|
53
38
|
[Administrate]: https://github.com/thoughtbot/administrate
|
data/Rakefile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
begin
|
2
|
+
require "bundler/setup"
|
3
|
+
rescue LoadError
|
4
|
+
puts "You must `gem install bundler` and `bundle install` to run rake tasks"
|
5
|
+
end
|
6
|
+
|
7
|
+
require "bundler/gem_tasks"
|
8
|
+
|
9
|
+
##
|
10
|
+
# Configure the test suite.
|
11
|
+
##
|
12
|
+
require "rspec/core"
|
13
|
+
require "rspec/core/rake_task"
|
14
|
+
|
15
|
+
RSpec::Core::RakeTask.new
|
16
|
+
|
17
|
+
##
|
18
|
+
# By default, just run the tests.
|
19
|
+
##
|
20
|
+
task default: :spec
|
@@ -1,13 +1,12 @@
|
|
1
1
|
$:.push File.expand_path("../lib", __FILE__)
|
2
2
|
|
3
|
-
require "administrate/field/nested_has_many"
|
4
|
-
|
5
3
|
Gem::Specification.new do |gem|
|
6
4
|
gem.name = "administrate-field-nested_has_many"
|
7
|
-
gem.version =
|
8
|
-
gem.authors = ["Grayson Wright"]
|
9
|
-
gem.email = ["wright.grayson@gmail.com"]
|
10
|
-
gem.homepage = "https://github.com/
|
5
|
+
gem.version = "1.0.0"
|
6
|
+
gem.authors = ["Nick Charlton", "Grayson Wright"]
|
7
|
+
gem.email = ["nick@nickcharlton.net", "wright.grayson@gmail.com"]
|
8
|
+
gem.homepage = "https://github.com/nickcharlton/" \
|
9
|
+
"administrate-field-nested_has_many"
|
11
10
|
gem.summary = "Plugin for nested has_many forms in Administrate"
|
12
11
|
gem.description = gem.summary
|
13
12
|
gem.license = "MIT"
|
@@ -16,7 +15,9 @@ Gem::Specification.new do |gem|
|
|
16
15
|
gem.files = `git ls-files`.split("\n")
|
17
16
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
17
|
|
19
|
-
gem.add_dependency "administrate", "
|
20
|
-
gem.add_dependency "cocoon", "~> 1.2"
|
21
|
-
|
18
|
+
gem.add_dependency "administrate", "> 0.8", "< 1"
|
19
|
+
gem.add_dependency "cocoon", "~> 1.2", ">= 1.2.11"
|
20
|
+
|
21
|
+
gem.add_development_dependency "rake"
|
22
|
+
gem.add_development_dependency "rspec"
|
22
23
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
@import 'administrate/library/variables';
|
2
|
+
@import 'administrate/library/clearfix';
|
3
|
+
|
4
|
+
.field-unit--nested-has-many {
|
5
|
+
.nested-fields {
|
6
|
+
@include administrate-clearfix;
|
7
|
+
margin-bottom: $base-spacing;
|
8
|
+
padding-bottom: $base-spacing;
|
9
|
+
}
|
10
|
+
|
11
|
+
.remove_fields, .add_fields {
|
12
|
+
float: right;
|
13
|
+
}
|
14
|
+
}
|
@@ -1,11 +1,9 @@
|
|
1
|
-
<div class="nested-fields"
|
2
|
-
|
3
|
-
<% field.nested_fields.each do |attribute| -%>
|
1
|
+
<div class="nested-fields">
|
2
|
+
<% field.nested_fields_for_builder(f).each do |attribute| -%>
|
4
3
|
<div class="field-unit field-unit--<%= attribute.html_class %>">
|
5
4
|
<%= render_field attribute, f: f %>
|
6
5
|
</div>
|
7
6
|
<% end -%>
|
8
7
|
|
9
|
-
|
10
|
-
<%= link_to_remove_association "Remove #{field.associated_class_name.titleize}", f %>
|
8
|
+
<%= link_to_remove_association I18n.t("administrate.fields.nested_has_many.remove", resource: field.associated_class_name.titleize), f %>
|
11
9
|
</div>
|
@@ -1,23 +1,23 @@
|
|
1
|
-
<
|
2
|
-
|
1
|
+
<fieldset class="field-unit--nested">
|
2
|
+
<legend><%= f.label field.attribute %></legend>
|
3
3
|
<%= f.fields_for field.association_name do |nested_form| %>
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
<%= render(
|
5
|
+
partial: "fields/nested_has_many/fields",
|
6
|
+
locals: {
|
7
|
+
f: nested_form,
|
8
|
+
field: field,
|
9
|
+
},
|
10
|
+
) %>
|
11
11
|
<% end %>
|
12
12
|
|
13
13
|
<div>
|
14
14
|
<%= link_to_add_association(
|
15
|
-
|
16
|
-
"Add #{field.associated_class_name.titleize}",
|
15
|
+
I18n.t("administrate.fields.nested_has_many.add", resource: field.associated_class_name.titleize),
|
17
16
|
f,
|
18
17
|
field.association_name,
|
18
|
+
class: 'button',
|
19
19
|
partial: "fields/nested_has_many/fields",
|
20
20
|
render_options: { locals: { field: field } },
|
21
21
|
) %>
|
22
22
|
</div>
|
23
|
-
</
|
23
|
+
</fieldset>
|
@@ -22,7 +22,8 @@ from the associated resource class's dashboard.
|
|
22
22
|
<%= render(
|
23
23
|
"collection",
|
24
24
|
collection_presenter: field.associated_collection,
|
25
|
-
resources: field.resources
|
25
|
+
resources: field.resources,
|
26
|
+
table_title: field.name
|
26
27
|
) %>
|
27
28
|
|
28
29
|
<% if field.more_than_limit? %>
|
@@ -36,5 +37,5 @@ from the associated resource class's dashboard.
|
|
36
37
|
<% end %>
|
37
38
|
|
38
39
|
<% else %>
|
39
|
-
<%= t("administrate.fields.has_many.none") %>
|
40
|
+
<%= t("administrate.fields.has_many.none", default: "–") %>
|
40
41
|
<% end %>
|
@@ -1,17 +1,22 @@
|
|
1
1
|
require "administrate/field/has_many"
|
2
2
|
require "administrate/page/form"
|
3
3
|
require "rails"
|
4
|
+
require "administrate/engine"
|
4
5
|
require "cocoon"
|
5
6
|
|
6
7
|
module Administrate
|
7
8
|
module Field
|
8
9
|
class NestedHasMany < Administrate::Field::HasMany
|
9
|
-
VERSION = "0.0.2"
|
10
|
-
|
11
10
|
class Engine < ::Rails::Engine
|
11
|
+
Administrate::Engine.add_javascript(
|
12
|
+
"administrate-field-nested_has_many/application",
|
13
|
+
)
|
14
|
+
Administrate::Engine.add_stylesheet(
|
15
|
+
"administrate-field-nested_has_many/application",
|
16
|
+
)
|
12
17
|
end
|
13
18
|
|
14
|
-
DEFAULT_ATTRIBUTES =
|
19
|
+
DEFAULT_ATTRIBUTES = %i(id _destroy).freeze
|
15
20
|
|
16
21
|
def nested_fields
|
17
22
|
associated_form.attributes.reject do |nested_field|
|
@@ -19,6 +24,21 @@ module Administrate
|
|
19
24
|
end
|
20
25
|
end
|
21
26
|
|
27
|
+
def nested_fields_for_builder(form_builder)
|
28
|
+
return nested_fields unless form_builder.index.is_a? Integer
|
29
|
+
|
30
|
+
nested_fields.each do |nested_field|
|
31
|
+
next if nested_field.resource.blank?
|
32
|
+
|
33
|
+
# inject current data into field
|
34
|
+
resource = nested_field.resource[form_builder.index]
|
35
|
+
nested_field.instance_variable_set(
|
36
|
+
"@data",
|
37
|
+
resource.send(nested_field.attribute),
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
22
42
|
def to_s
|
23
43
|
data
|
24
44
|
end
|
@@ -32,7 +52,7 @@ module Administrate
|
|
32
52
|
dashboard_for_resource(associated_resource).new.permitted_attributes
|
33
53
|
end
|
34
54
|
|
35
|
-
def self.permitted_attribute(associated_resource)
|
55
|
+
def self.permitted_attribute(associated_resource, _options = nil)
|
36
56
|
{
|
37
57
|
"#{associated_resource}_attributes".to_sym =>
|
38
58
|
associated_attributes(associated_resource),
|
@@ -48,7 +68,7 @@ module Administrate
|
|
48
68
|
end
|
49
69
|
|
50
70
|
def associated_form
|
51
|
-
Administrate::Page::Form.new(associated_dashboard,
|
71
|
+
Administrate::Page::Form.new(associated_dashboard, data)
|
52
72
|
end
|
53
73
|
|
54
74
|
private
|
metadata
CHANGED
@@ -1,29 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: administrate-field-nested_has_many
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Nick Charlton
|
7
8
|
- Grayson Wright
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2018-03-10 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: administrate
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- - "
|
18
|
+
- - ">"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0.8'
|
21
|
+
- - "<"
|
18
22
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
23
|
+
version: '1'
|
20
24
|
type: :runtime
|
21
25
|
prerelease: false
|
22
26
|
version_requirements: !ruby/object:Gem::Requirement
|
23
27
|
requirements:
|
24
|
-
- - "
|
28
|
+
- - ">"
|
25
29
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
30
|
+
version: '0.8'
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1'
|
27
34
|
- !ruby/object:Gem::Dependency
|
28
35
|
name: cocoon
|
29
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -31,6 +38,9 @@ dependencies:
|
|
31
38
|
- - "~>"
|
32
39
|
- !ruby/object:Gem::Version
|
33
40
|
version: '1.2'
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.2.11
|
34
44
|
type: :runtime
|
35
45
|
prerelease: false
|
36
46
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -38,37 +48,62 @@ dependencies:
|
|
38
48
|
- - "~>"
|
39
49
|
- !ruby/object:Gem::Version
|
40
50
|
version: '1.2'
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.2.11
|
41
54
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
55
|
+
name: rake
|
43
56
|
requirement: !ruby/object:Gem::Requirement
|
44
57
|
requirements:
|
45
|
-
- - "
|
58
|
+
- - ">="
|
46
59
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
type: :
|
60
|
+
version: '0'
|
61
|
+
type: :development
|
49
62
|
prerelease: false
|
50
63
|
version_requirements: !ruby/object:Gem::Requirement
|
51
64
|
requirements:
|
52
|
-
- - "
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: rspec
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
type: :development
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
53
80
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
81
|
+
version: '0'
|
55
82
|
description: Plugin for nested has_many forms in Administrate
|
56
83
|
email:
|
84
|
+
- nick@nickcharlton.net
|
57
85
|
- wright.grayson@gmail.com
|
58
86
|
executables: []
|
59
87
|
extensions: []
|
60
88
|
extra_rdoc_files: []
|
61
89
|
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- CHANGELOG.md
|
92
|
+
- Gemfile
|
62
93
|
- README.md
|
94
|
+
- Rakefile
|
63
95
|
- administrate-field-nested_has_many.gemspec
|
64
96
|
- app/assets/javascripts/administrate-field-nested_has_many/application.js
|
97
|
+
- app/assets/stylesheets/administrate-field-nested_has_many/application.css
|
98
|
+
- app/assets/stylesheets/administrate-field-nested_has_many/base.scss
|
65
99
|
- app/views/fields/nested_has_many/_fields.html.erb
|
66
100
|
- app/views/fields/nested_has_many/_form.html.erb
|
67
101
|
- app/views/fields/nested_has_many/_index.html.erb
|
68
102
|
- app/views/fields/nested_has_many/_show.html.erb
|
103
|
+
- config/locales/administrate-field-nested_has_many.en.yml
|
69
104
|
- lib/administrate/field/nested_has_many.rb
|
70
105
|
- spec/lib/administrate/field/nested_has_many_spec.rb
|
71
|
-
homepage: https://github.com/
|
106
|
+
homepage: https://github.com/nickcharlton/administrate-field-nested_has_many
|
72
107
|
licenses:
|
73
108
|
- MIT
|
74
109
|
metadata: {}
|
@@ -88,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
123
|
version: '0'
|
89
124
|
requirements: []
|
90
125
|
rubyforge_project:
|
91
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.7.3
|
92
127
|
signing_key:
|
93
128
|
specification_version: 4
|
94
129
|
summary: Plugin for nested has_many forms in Administrate
|