Skip to content

Commit f45042a

Browse files
author
Anatoly Shirykalov
committed
active_admin 1.3 support
2 parents 0a37baf + 6f4e772 commit f45042a

File tree

15 files changed

+152
-41
lines changed

15 files changed

+152
-41
lines changed

Gemfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ source 'https://rubygems.org'
55
# development dependencies will be added by default to the :development group.
66
gemspec
77

8-
gem 'ransack', github: 'activerecord-hackery/ransack', ref: 'c869fc210500'
8+
gem 'ransack', github: 'activerecord-hackery/ransack'
9+
gem 'ransack-mongoid', github: 'activerecord-hackery/ransack-mongoid'
910

1011
# Test app stuff
1112

activeadmin-mongoid.gemspec

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@ Gem::Specification.new do |gem|
1919
gem.license = 'MIT'
2020

2121
gem.add_runtime_dependency 'mongoid', ['~> 6.0']
22-
gem.add_runtime_dependency 'activeadmin', ['<= 1.1.0']
22+
gem.add_runtime_dependency 'activeadmin', '~> 1.3.0'
2323
gem.add_runtime_dependency 'jquery-rails'
24-
gem.add_runtime_dependency 'sass-rails', ['>= 3.1.4', '<= 5.0.6']
24+
gem.add_runtime_dependency 'sass-rails', ['>= 3.1.4']
2525

2626
gem.add_development_dependency 'rspec-rails', '~> 3.6'
27-
gem.add_development_dependency 'simplecov'
2827
end

lib/active_admin-mongoid.rb

Lines changed: 0 additions & 1 deletion
This file was deleted.

lib/active_admin/mongoid.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,17 @@
1414
require 'active_admin/mongoid/document'
1515
require 'active_admin/mongoid/helpers/collection'
1616
require 'active_admin/mongoid/criteria'
17-
1817
require 'active_admin/mongoid/order_clause'
1918

19+
require 'active_admin/mongoid/inputs/filters/check_boxes_input'
20+
require 'active_admin/mongoid/inputs/filters/select_input'
21+
require 'active_admin/mongoid/filters/active_filter'
22+
require 'active_admin/mongoid/filters/resource_extension'
23+
require 'active_admin/mongoid/controllers/resource_controller'
24+
require 'active_admin/mongoid/resource/attributes'
25+
26+
#ActiveAdmin::ResourceController.prepend(ActiveAdmin::Mongoid::ResourceController)
27+
2028
module ActiveAdmin
2129
module Mongoid
2230
class Railtie < ::Rails::Railtie
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require 'active_admin/engine'
2+
3+
ActiveAdmin::Engine.module_eval do
4+
5+
initializer 'active_admin.mongoid.resource_controller' do
6+
class ActiveAdmin::ResourceController
7+
def build_new_resource
8+
scoped_collection.send(
9+
method_for_build,
10+
*resource_params
11+
)
12+
end
13+
end
14+
end
15+
end

lib/active_admin/mongoid/filter_form_builder.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ class ActiveAdmin::Filters::FormBuilder
22

33
def filter(method, options = {})
44
if method.present? && options[:as] ||= default_input_type(method)
5-
template.concat input(method, options)
5+
6+
if @object.is_a?(Ransack::Search) && @object.respond_to?(:klass)
7+
template.concat input(method, options)
8+
else
9+
template.concat input(method, options)
10+
end
611
end
712
end
813

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require 'active_admin/filters/active_filter'
2+
module ActiveAdmin
3+
module Filters
4+
5+
class ActiveFilter
6+
def related_primary_key
7+
if predicate_association
8+
predicate_association.key
9+
elsif related_class
10+
related_class.key
11+
end
12+
end
13+
end
14+
end
15+
end
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
require 'active_admin/filters/resource_extension'
2+
3+
module ActiveAdmin::Filters::ResourceExtension
4+
def default_association_filters
5+
if resource_class.respond_to?(:reflect_on_all_associations)
6+
poly, not_poly = resource_class.reflect_on_all_associations.partition{ |r| r.macro == :belongs_to && r.options[:polymorphic] }
7+
8+
# remove deeply nested associations
9+
#not_poly.reject!{ |r| r.chain.length > 2 }
10+
11+
filters = poly.map(&:foreign_type) + not_poly.map(&:name)
12+
filters.map &:to_sym
13+
else
14+
[]
15+
end
16+
end
17+
end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
require 'active_admin/inputs/filters/check_boxes_input'
2+
3+
class ActiveAdmin::Inputs::Filters::CheckBoxesInput
4+
def searchable_method_name
5+
if searchable_has_many_through?
6+
"#{reflection.through_reflection.name}_#{reflection.foreign_key}"
7+
else
8+
reflection.key || method
9+
end
10+
end
11+
end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
require 'active_admin/inputs/filters/select_input'
2+
3+
class ActiveAdmin::Inputs::Filters::SelectInput
4+
def searchable_method_name
5+
name = if searchable_has_many_through?
6+
"#{reflection.through_reflection.name}_#{reflection.foreign_key}"
7+
else
8+
reflection.key if reflection_searchable?
9+
end
10+
(name == '_id') ? 'id' : name
11+
end
12+
end

lib/active_admin/mongoid/order_clause.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,9 @@ def to_sql
88
def to_mongo_options
99
{ @column => @order.downcase.to_sym }
1010
end
11+
12+
def apply(chain)
13+
chain.reorder(sql)
14+
end
1115
end
1216
end
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
require 'active_admin/resource/attributes'
2+
3+
module ActiveAdmin
4+
5+
class Resource
6+
module Attributes
7+
def foreign_methods
8+
@foreign_methods ||= resource_class.reflect_on_all_associations.
9+
select{ |r| r.macro == :belongs_to }.
10+
#reject{ |r| r.chain.length > 2 && !r.options[:polymorphic] }.
11+
index_by{ |r| r.foreign_key.to_sym }
12+
end
13+
14+
def primary_col?(c)
15+
c.name == '_id'
16+
end
17+
18+
def sti_col?(c)
19+
false
20+
end
21+
end
22+
end
23+
end
24+

test_app/Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
source 'https://rubygems.org'
22

33
gem 'activeadmin-mongoid', path: '../'
4-
gem 'activeadmin', '<= 1.1.0'
4+
gem 'activeadmin', '~> 1.3.0'
55

66
# Test app stuff
77

@@ -14,7 +14,7 @@ gem 'devise'
1414
gem 'mongoid', '~> 6.0.3', require: true
1515
gem 'kaminari', '~> 1.0'
1616
gem 'kaminari-mongoid'
17-
gem 'ransack'
17+
gem 'ransack', '< 1.8.7'
1818

1919
# Gems used only for assets and not required
2020
# in production environments by default.

test_app/Gemfile.lock

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
PATH
22
remote: ..
33
specs:
4-
activeadmin-mongoid (0.4.0)
5-
activeadmin (<= 1.1.0)
4+
activeadmin-mongoid (0.5.0)
5+
activeadmin (~> 1.2.0)
66
jquery-rails
77
mongoid (~> 6.0.3)
88
sass-rails (>= 3.1.4, <= 5.0.6)
@@ -33,13 +33,13 @@ GEM
3333
erubi (~> 1.4)
3434
rails-dom-testing (~> 2.0)
3535
rails-html-sanitizer (~> 1.0, >= 1.0.3)
36-
activeadmin (1.1.0)
36+
activeadmin (1.2.1)
3737
arbre (>= 1.1.1)
3838
coffee-rails
3939
formtastic (~> 3.1)
4040
formtastic_i18n
4141
inherited_resources (~> 1.7)
42-
jquery-rails
42+
jquery-rails (>= 4.2.0)
4343
kaminari (>= 0.15, < 2.0)
4444
railties (>= 4.2, < 5.2)
4545
ransack (~> 1.3)
@@ -65,7 +65,7 @@ GEM
6565
activesupport (>= 3.0.0)
6666
arel (8.0.0)
6767
bcrypt (3.1.11)
68-
bson (4.2.2)
68+
bson (4.3.0)
6969
builder (3.2.3)
7070
capybara (2.15.1)
7171
addressable
@@ -94,23 +94,23 @@ GEM
9494
docile (1.1.5)
9595
erubi (1.7.1)
9696
execjs (2.7.0)
97-
ffi (1.9.18)
97+
ffi (1.9.23)
9898
formtastic (3.1.5)
9999
actionpack (>= 3.2.13)
100100
formtastic_i18n (0.6.0)
101101
globalid (0.4.1)
102102
activesupport (>= 4.2.0)
103-
has_scope (0.7.1)
104-
actionpack (>= 4.1, < 5.2)
105-
activesupport (>= 4.1, < 5.2)
106-
i18n (1.0.0)
103+
has_scope (0.7.2)
104+
actionpack (>= 4.1)
105+
activesupport (>= 4.1)
106+
i18n (1.0.1)
107107
concurrent-ruby (~> 1.0)
108-
inherited_resources (1.7.2)
109-
actionpack (>= 3.2, < 5.2.x)
108+
inherited_resources (1.8.0)
109+
actionpack (>= 4.2, <= 5.2)
110110
has_scope (~> 0.6)
111-
railties (>= 3.2, < 5.2.x)
111+
railties (>= 4.2, <= 5.2)
112112
responders
113-
jquery-rails (4.3.1)
113+
jquery-rails (4.3.3)
114114
rails-dom-testing (>= 1, < 3)
115115
railties (>= 4.2.0)
116116
thor (>= 0.14, < 2.0)
@@ -119,18 +119,18 @@ GEM
119119
jslint (1.2.0)
120120
json
121121
json (2.1.0)
122-
kaminari (1.0.1)
122+
kaminari (1.1.1)
123123
activesupport (>= 4.1.0)
124-
kaminari-actionview (= 1.0.1)
125-
kaminari-activerecord (= 1.0.1)
126-
kaminari-core (= 1.0.1)
127-
kaminari-actionview (1.0.1)
124+
kaminari-actionview (= 1.1.1)
125+
kaminari-activerecord (= 1.1.1)
126+
kaminari-core (= 1.1.1)
127+
kaminari-actionview (1.1.1)
128128
actionview
129-
kaminari-core (= 1.0.1)
130-
kaminari-activerecord (1.0.1)
129+
kaminari-core (= 1.1.1)
130+
kaminari-activerecord (1.1.1)
131131
activerecord
132-
kaminari-core (= 1.0.1)
133-
kaminari-core (1.0.1)
132+
kaminari-core (= 1.1.1)
133+
kaminari-core (1.1.1)
134134
kaminari-mongoid (1.0.1)
135135
kaminari-core (~> 1.0)
136136
mongoid
@@ -145,8 +145,8 @@ GEM
145145
mini_mime (0.1.4)
146146
mini_portile2 (2.3.0)
147147
minitest (5.11.3)
148-
mongo (2.4.3)
149-
bson (>= 4.2.1, < 5.0.0)
148+
mongo (2.5.1)
149+
bson (>= 4.3.0, < 5.0.0)
150150
mongoid (6.0.3)
151151
activemodel (~> 5.0)
152152
mongo (~> 2.3)
@@ -158,7 +158,7 @@ GEM
158158
capybara (~> 2.1)
159159
cliver (~> 0.3.1)
160160
websocket-driver (>= 0.2.0)
161-
polyamorous (1.3.1)
161+
polyamorous (1.3.3)
162162
activerecord (>= 3.0)
163163
pry (0.10.4)
164164
coderay (~> 1.1.0)
@@ -192,19 +192,19 @@ GEM
192192
rake (>= 0.8.7)
193193
thor (>= 0.18.1, < 2.0)
194194
rake (12.3.1)
195-
ransack (1.8.3)
195+
ransack (1.8.6)
196196
actionpack (>= 3.0)
197197
activerecord (>= 3.0)
198198
activesupport (>= 3.0)
199199
i18n
200-
polyamorous (~> 1.3)
201-
rb-fsevent (0.10.2)
200+
polyamorous (~> 1.3.2)
201+
rb-fsevent (0.10.3)
202202
rb-inotify (0.9.10)
203203
ffi (>= 0.5.0, < 2)
204204
responders (2.4.0)
205205
actionpack (>= 4.2.0, < 5.3)
206206
railties (>= 4.2.0, < 5.3)
207-
sass (3.5.1)
207+
sass (3.5.6)
208208
sass-listen (~> 4.0.0)
209209
sass-listen (4.0.0)
210210
rb-fsevent (~> 0.9, >= 0.9.4)
@@ -247,7 +247,7 @@ PLATFORMS
247247
ruby
248248

249249
DEPENDENCIES
250-
activeadmin (<= 1.1.0)
250+
activeadmin (~> 1.2.0)
251251
activeadmin-mongoid!
252252
capybara
253253
coffee-rails
@@ -262,7 +262,7 @@ DEPENDENCIES
262262
poltergeist
263263
pry
264264
rails (~> 5.1.6)
265-
ransack
265+
ransack (< 1.8.7)
266266
sass-rails
267267
simplecov
268268
uglifier

test_app/config/initializers/active_admin.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,4 @@
211211

212212

213213
end
214+

0 commit comments

Comments
 (0)