administrate-field-nested_has_many 0.0.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|