activeadmin-reform 0.1.4 → 0.2.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/.rubocop.yml +4 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +1 -0
- data/activeadmin-reform.gemspec +4 -3
- data/lib/active_admin/reform/active_record.rb +29 -0
- data/lib/active_admin/reform/engine.rb +2 -0
- data/lib/active_admin/reform/form_builder.rb +47 -0
- data/lib/active_admin/reform.rb +5 -0
- metadata +24 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b57cf76087dee6fbc7ec42507e0b62f28205a1a
|
4
|
+
data.tar.gz: 30b6c7abf2867fa0e0159bdc8c33e71d02e647c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b50e20d28f8a443e83796f0ec92f8586105d1d1faee899a31b2f40976655c4058d197fdecfad25fdd1d63107ef4e61e8464469299d9d569e1e670b921fb37a0
|
7
|
+
data.tar.gz: f39944434946235702a6d7da515c860051aa5c7a3b4335230e85b9b5dad54b4929c3335febc3c5452c97e681c8c8600bd1b65e79b5efc12543636407426c8820
|
data/.rubocop.yml
CHANGED
@@ -6,9 +6,13 @@
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
+
inherit_gem:
|
10
|
+
spbtv_code_style: .rubocop.yml
|
11
|
+
|
9
12
|
AllCops:
|
10
13
|
Exclude:
|
11
14
|
- spec/dummy/**/*
|
15
|
+
- spec/templates/*
|
12
16
|
|
13
17
|
# Configuration parameters: AllowURI, URISchemes.
|
14
18
|
Metrics/LineLength:
|
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
data/activeadmin-reform.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'activeadmin-reform'
|
7
|
-
spec.version = '0.
|
7
|
+
spec.version = '0.2.0'
|
8
8
|
spec.authors = ['Artyom Bolshakov']
|
9
9
|
spec.email = ['abolshakov@spbtv.com']
|
10
10
|
|
@@ -20,9 +20,10 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency 'rails', '>= 3.2'
|
22
22
|
spec.add_dependency 'disposable', '>= 0.2.0'
|
23
|
-
spec.add_dependency 'reform', '
|
23
|
+
spec.add_dependency 'reform', '~> 2.2.1'
|
24
|
+
spec.add_dependency 'reform-rails'
|
24
25
|
spec.add_development_dependency 'bundler', '~> 1.10'
|
25
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
26
27
|
spec.add_development_dependency 'rspec', '~> 3.4'
|
27
|
-
spec.add_development_dependency '
|
28
|
+
spec.add_development_dependency 'spbtv_code_style', '~> 1.4.1'
|
28
29
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'reform'
|
2
|
+
require 'reform/form/active_record'
|
3
|
+
require 'reform/form/active_model/model_reflections'
|
4
|
+
|
5
|
+
module ActiveAdmin
|
6
|
+
module Reform
|
7
|
+
# Module that prepares the Reform::Form for use in activeadmin
|
8
|
+
module ActiveRecord
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
delegate :new_record?, to: :model
|
12
|
+
|
13
|
+
included do
|
14
|
+
include ::Reform::Form::ModelReflections
|
15
|
+
include ::Reform::Form::ActiveRecord
|
16
|
+
end
|
17
|
+
|
18
|
+
# Those methods are being used by activeadmin and are proxied to an inferred from name model
|
19
|
+
module ClassMethods
|
20
|
+
delegate :human_attribute_name, to: :model_class
|
21
|
+
delegate :lookup_ancestors, to: :model_class
|
22
|
+
|
23
|
+
def model_class
|
24
|
+
@model_class ||= model_name.to_s.constantize
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'reform/form/active_model/model_reflections'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
module Reform
|
5
|
+
# Patching ActiveAdmin::FormBuilder#js_for_has_many to provide nested forms support
|
6
|
+
# https://github.com/activeadmin/activeadmin/blob/539fa4b/lib/active_admin/form_builder.rb#L123
|
7
|
+
module FormBuilder
|
8
|
+
private
|
9
|
+
|
10
|
+
# Capture the ADD JS
|
11
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
12
|
+
def js_for_has_many(assoc, form_block, template, new_record, class_string)
|
13
|
+
assoc_reflection = object.class.reflect_on_association assoc
|
14
|
+
assoc_name = assoc_reflection.klass.model_name
|
15
|
+
placeholder = "NEW_#{assoc_name.to_s.underscore.upcase.gsub(%r{/}, '_')}_RECORD"
|
16
|
+
opts = {
|
17
|
+
for: [assoc, nested_object(assoc)],
|
18
|
+
class: class_string,
|
19
|
+
for_options: { child_index: placeholder },
|
20
|
+
}
|
21
|
+
html = template.capture { inputs_for_nested_attributes opts, &form_block }
|
22
|
+
text = new_record.is_a?(String) ? new_record : I18n.t('active_admin.has_many_new', model: assoc_name.human)
|
23
|
+
|
24
|
+
template.link_to text, '#', class: 'button has_many_add', data: {
|
25
|
+
html: CGI.escapeHTML(html).html_safe, placeholder: placeholder
|
26
|
+
}
|
27
|
+
end
|
28
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
29
|
+
|
30
|
+
def nested_form_class(assoc)
|
31
|
+
if object.is_a?(::Reform::Form) && (property = object.class.definitions[assoc.to_s]) &&
|
32
|
+
(nested_form = property[:nested]) < ::Reform::Form
|
33
|
+
nested_form
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def nested_object(assoc)
|
38
|
+
assoc_reflection = object.class.reflect_on_association assoc
|
39
|
+
if (nested_form = nested_form_class(assoc))
|
40
|
+
nested_form.new(assoc_reflection.klass.new).tap(&:prepopulate!)
|
41
|
+
else
|
42
|
+
assoc_reflection.klass.new
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/active_admin/reform.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeadmin-reform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artyom Bolshakov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -40,18 +40,32 @@ dependencies:
|
|
40
40
|
version: 0.2.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: reform
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.2.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.2.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: reform-rails
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '0'
|
48
62
|
type: :runtime
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,19 +109,19 @@ dependencies:
|
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '3.4'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
112
|
+
name: spbtv_code_style
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
117
|
+
version: 1.4.1
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
124
|
+
version: 1.4.1
|
111
125
|
description: Provides ability to use form object in your ActiveAdmin application
|
112
126
|
email:
|
113
127
|
- abolshakov@spbtv.com
|
@@ -120,6 +134,7 @@ files:
|
|
120
134
|
- ".rspec"
|
121
135
|
- ".rubocop.yml"
|
122
136
|
- ".travis.yml"
|
137
|
+
- CHANGELOG.md
|
123
138
|
- CODE_OF_CONDUCT.md
|
124
139
|
- CONTRIBUTING.md
|
125
140
|
- Gemfile
|
@@ -130,8 +145,10 @@ files:
|
|
130
145
|
- bin/console
|
131
146
|
- bin/setup
|
132
147
|
- lib/active_admin/reform.rb
|
148
|
+
- lib/active_admin/reform/active_record.rb
|
133
149
|
- lib/active_admin/reform/dsl.rb
|
134
150
|
- lib/active_admin/reform/engine.rb
|
151
|
+
- lib/active_admin/reform/form_builder.rb
|
135
152
|
- lib/active_admin/reform/forms.rb
|
136
153
|
- lib/active_admin/reform/resource.rb
|
137
154
|
- lib/active_admin/reform/resource_controller/data_access.rb
|