activeadmin-reform 0.3.0 → 0.4.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/.travis.yml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +3 -2
- data/activeadmin-reform.gemspec +1 -1
- data/lib/active_admin/reform.rb +1 -1
- data/lib/active_admin/reform/active_record.rb +6 -0
- data/lib/active_admin/reform/engine.rb +0 -2
- data/lib/active_admin/reform/reflection.rb +39 -0
- metadata +4 -4
- data/lib/active_admin/reform/form_builder.rb +0 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b2545bc177dc4826dabe211d5576f05e73d01f2
|
4
|
+
data.tar.gz: 2c5617517929323af7f300e7530b9e42fb6cf932
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0eb184257154729d4de672a81cb0c24fffba0baff550ae49719f7edb67bbe04f74a6481ffe991c18aecc6611b8295bbe1c16883488462a7554bfc893bc94dc14
|
7
|
+
data.tar.gz: 344759c4d353e38ad8e687bc7b852ef7d1862567fc60ad151bd5dc9cbdc5cd34d2a847dd3df9646d72c856f45d22c9ff00d951f43a08ce8f72ba882309457e3a
|
data/.travis.yml
CHANGED
@@ -4,12 +4,12 @@ rvm:
|
|
4
4
|
- ruby-head
|
5
5
|
env:
|
6
6
|
matrix:
|
7
|
-
- RAILS_VERSION=3.2
|
8
|
-
- RAILS_VERSION=4.2.4
|
9
|
-
- RAILS_VERSION=master
|
7
|
+
- RAILS_VERSION=3.2 ACTIVEADMIN_VERSION=1.0.0.pre3
|
8
|
+
- RAILS_VERSION=4.2.4 ACTIVEADMIN_VERSION=1.2.0
|
9
|
+
- RAILS_VERSION=master ACTIVEADMIN_VERSION=1.2.0
|
10
10
|
matrix:
|
11
11
|
allow_failures:
|
12
|
-
- env: RAILS_VERSION=master
|
12
|
+
- env: RAILS_VERSION=master ACTIVEADMIN_VERSION=1.2.0
|
13
13
|
- rvm: ruby-head
|
14
14
|
before_install: gem install bundler -v 1.10.6
|
15
15
|
install:
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -5,9 +5,10 @@ require File.expand_path 'spec/support/detect_rails_version', File.dirname(__FIL
|
|
5
5
|
gemspec
|
6
6
|
group :test do
|
7
7
|
gem 'rails', detect_rails_version
|
8
|
-
gem 'activeadmin',
|
8
|
+
gem 'activeadmin', ENV['ACTIVEADMIN_VERSION']
|
9
|
+
gem 'jquery-ui-rails', '5.0.5'
|
9
10
|
gem 'sqlite3', '~> 1.3.11'
|
10
|
-
gem 'rspec-rails'
|
11
|
+
gem 'rspec-rails'
|
11
12
|
gem 'test-unit', '~> 3.0' # Rails 3.2 support
|
12
13
|
|
13
14
|
gem 'launchy', '~> 2.4.3'
|
data/activeadmin-reform.gemspec
CHANGED
data/lib/active_admin/reform.rb
CHANGED
@@ -27,6 +27,12 @@ module ActiveAdmin
|
|
27
27
|
included do
|
28
28
|
include ::Reform::Form::ModelReflections
|
29
29
|
include ::Reform::Form::ActiveRecord
|
30
|
+
|
31
|
+
def self.reflect_on_association(name)
|
32
|
+
reflection = model_class.reflect_on_association(name) || return
|
33
|
+
property = definitions[name.to_s]
|
34
|
+
(@reflections ||= {})[name] ||= Reflection.new(reflection, (property[:nested] if property))
|
35
|
+
end
|
30
36
|
end
|
31
37
|
|
32
38
|
# Those methods are being used by activeadmin and are proxied to an inferred from name model
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Reform
|
3
|
+
# Decorates `ActiveRecord::Reflection` instances.
|
4
|
+
# `ActiveAdmin::FormBuilder#has_many(name)` uses `object.class.reflect_on_association(name).klass.new`
|
5
|
+
# to build nested records.
|
6
|
+
class Reflection < SimpleDelegator
|
7
|
+
# @param reflection [ActiveRecord::Reflection]
|
8
|
+
# @param form_class [Class<ActiveAdmin::Reform::ActiveRecord>, nil]
|
9
|
+
def initialize(reflection, form_class)
|
10
|
+
super(reflection)
|
11
|
+
@form_class = form_class
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [Klass]
|
15
|
+
def klass
|
16
|
+
Klass.new(super, @form_class)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Decorates `ActiveRecord::Base` subclasses.
|
20
|
+
class Klass < SimpleDelegator
|
21
|
+
# @param klass [Class<ActiveRecord::Base>]
|
22
|
+
# @param form_class [Class<ActiveAdmin::Reform::ActiveRecord>, nil]
|
23
|
+
def initialize(klass, form_class)
|
24
|
+
super(klass)
|
25
|
+
@form_klass = form_class
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [ActiveAdmin::Reform::ActiveRecord]
|
29
|
+
def new(*)
|
30
|
+
if @form_klass
|
31
|
+
@form_klass.new(super).tap(&:prepopulate!)
|
32
|
+
else
|
33
|
+
super
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
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.4.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:
|
11
|
+
date: 2017-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -150,8 +150,8 @@ files:
|
|
150
150
|
- lib/active_admin/reform/active_record.rb
|
151
151
|
- lib/active_admin/reform/dsl.rb
|
152
152
|
- lib/active_admin/reform/engine.rb
|
153
|
-
- lib/active_admin/reform/form_builder.rb
|
154
153
|
- lib/active_admin/reform/forms.rb
|
154
|
+
- lib/active_admin/reform/reflection.rb
|
155
155
|
- lib/active_admin/reform/resource.rb
|
156
156
|
- lib/active_admin/reform/resource_controller/data_access.rb
|
157
157
|
- lib/activeadmin-reform.rb
|
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
175
|
version: '0'
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
|
-
rubygems_version: 2.5.1
|
178
|
+
rubygems_version: 2.5.2.1
|
179
179
|
signing_key:
|
180
180
|
specification_version: 4
|
181
181
|
summary: Integrates ActiveAdmin with Reform
|
@@ -1,47 +0,0 @@
|
|
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
|