activeadmin 1.4.2 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +306 -144
- data/CONTRIBUTING.md +21 -16
- data/README.md +44 -11
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +2 -14
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
- data/app/views/active_admin/devise/registrations/new.html.erb +1 -2
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
- data/config/locales/ar.yml +3 -2
- data/config/locales/bg.yml +1 -1
- data/config/locales/bs.yml +1 -0
- data/config/locales/ca.yml +1 -1
- data/config/locales/cs.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de-CH.yml +1 -0
- data/config/locales/de.yml +1 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en-CA.yml +1 -0
- data/config/locales/en-GB.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/fr.yml +2 -1
- data/config/locales/he.yml +1 -1
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +5 -0
- data/config/locales/id.yml +1 -0
- data/config/locales/it.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +3 -2
- data/config/locales/lv.yml +1 -0
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +1 -0
- data/config/locales/nl.yml +1 -0
- data/config/locales/pl.yml +1 -0
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/pt-PT.yml +1 -0
- data/config/locales/ro.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/config/locales/sk.yml +1 -0
- data/config/locales/sv-SE.yml +1 -0
- data/config/locales/tr.yml +1 -0
- data/config/locales/uk.yml +3 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +1 -0
- data/config/locales/zh-TW.yml +1 -0
- data/docs/0-installation.md +2 -2
- data/docs/12-arbre-components.md +13 -0
- data/docs/13-authorization-adapter.md +6 -6
- data/docs/2-resource-customization.md +1 -1
- data/docs/3-index-pages/index-as-table.md +7 -0
- data/docs/CNAME +1 -1
- data/docs/Gemfile +0 -1
- data/docs/Gemfile.lock +3 -4
- data/docs/_config.yml +2 -0
- data/docs/_includes/top-menu.html +2 -2
- data/docs/index.html +109 -8
- data/docs/stylesheets/main.css +29 -0
- data/lib/active_admin.rb +10 -4
- data/lib/active_admin/application.rb +11 -18
- data/lib/active_admin/application_settings.rb +3 -0
- data/lib/active_admin/asset_registration.rb +0 -8
- data/lib/active_admin/base_controller.rb +6 -6
- data/lib/active_admin/base_controller/authorization.rb +3 -4
- data/lib/active_admin/batch_actions/controller.rb +2 -2
- data/lib/active_admin/batch_actions/resource_extension.rb +9 -5
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +4 -3
- data/lib/active_admin/dependency.rb +3 -75
- data/lib/active_admin/dsl.rb +1 -8
- data/lib/active_admin/error.rb +4 -2
- data/lib/active_admin/filters/active_filter.rb +5 -4
- data/lib/active_admin/filters/active_sidebar.rb +5 -1
- data/lib/active_admin/filters/forms.rb +2 -2
- data/lib/active_admin/filters/formtastic_addons.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +3 -3
- data/lib/active_admin/form_builder.rb +3 -3
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +1 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/menu_item.rb +1 -1
- data/lib/active_admin/namespace.rb +2 -2
- data/lib/active_admin/namespace_settings.rb +7 -4
- data/lib/active_admin/orm/active_record/comments.rb +4 -4
- data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/page_presenter.rb +2 -1
- data/lib/active_admin/pundit_adapter.rb +18 -5
- data/lib/active_admin/resource.rb +17 -3
- data/lib/active_admin/resource/action_items.rb +1 -1
- data/lib/active_admin/resource/attributes.rb +7 -4
- data/lib/active_admin/resource/belongs_to.rb +6 -1
- data/lib/active_admin/resource/menu.rb +3 -3
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/routes.rb +20 -7
- data/lib/active_admin/resource/scopes.rb +3 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource_collection.rb +2 -2
- data/lib/active_admin/resource_controller.rb +2 -0
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_dsl.rb +6 -4
- data/lib/active_admin/router.rb +3 -2
- data/lib/active_admin/scope.rb +11 -7
- data/lib/active_admin/settings_node.rb +1 -1
- data/lib/active_admin/sidebar_section.rb +3 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +13 -4
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +7 -1
- data/lib/active_admin/views/components/attributes_table.rb +3 -3
- data/lib/active_admin/views/components/paginated_collection.rb +2 -2
- data/lib/active_admin/views/components/sidebar_section.rb +0 -3
- data/lib/active_admin/views/components/status_tag.rb +6 -19
- data/lib/active_admin/views/components/table_for.rb +2 -2
- data/lib/active_admin/views/components/tabs.rb +11 -2
- data/lib/active_admin/views/footer.rb +1 -1
- data/lib/active_admin/views/index_as_table.rb +12 -4
- data/lib/active_admin/views/pages/base.rb +3 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/install/install_generator.rb +6 -2
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +24 -2
- data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
- data/lib/generators/active_admin/page/page_generator.rb +1 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- data/lib/ransack_ext.rb +3 -3
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
- metadata +113 -100
- data/.circleci/config.yml +0 -467
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -46
- data/.mdlrc +0 -1
- data/.rspec +0 -1
- data/.rspec_parallel +0 -2
- data/.rubocop.yml +0 -94
- data/.simplecov +0 -11
- data/.yardopts +0 -7
- data/Gemfile +0 -10
- data/Gemfile.common +0 -53
- data/Gemfile.lock +0 -431
- data/Rakefile +0 -23
- data/activeadmin.gemspec +0 -32
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
- data/bin/install_chromedriver.sh +0 -17
- data/codecov.yml +0 -25
- data/config/i18n-tasks.yml +0 -26
- data/config/mdl_style.rb +0 -11
- data/cucumber.yml +0 -7
- data/gemfiles/rails_42.gemfile +0 -10
- data/gemfiles/rails_42.gemfile.lock +0 -410
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_50.gemfile.lock +0 -424
- data/gemfiles/rails_51.gemfile +0 -10
- data/gemfiles/rails_51.gemfile.lock +0 -423
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/active_admin_master.rb +0 -111
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/tasks/application_generator.rb +0 -48
- data/tasks/docs.rake +0 -64
- data/tasks/gemfiles.rake +0 -8
- data/tasks/lint.rake +0 -110
- data/tasks/local.rake +0 -27
- data/tasks/test.rake +0 -43
data/docs/stylesheets/main.css
CHANGED
@@ -615,6 +615,35 @@ body #tidelift a .cta {
|
|
615
615
|
padding-left: 30px;
|
616
616
|
}
|
617
617
|
|
618
|
+
body .tidelift-buttons a {
|
619
|
+
display: table;
|
620
|
+
width: 200px;
|
621
|
+
border: 2px solid #407985;
|
622
|
+
border-radius: 4px;
|
623
|
+
text-decoration: none;
|
624
|
+
font-family: 'Yanone Kaffeesatz', 'Helvetica Neue', Arial, Helvetica, sans-serif;
|
625
|
+
font-size: 18px;
|
626
|
+
letter-spacing: 1px;
|
627
|
+
margin: 0 10px;
|
628
|
+
}
|
629
|
+
|
630
|
+
body .tidelift-buttons a:first-child {
|
631
|
+
float: left;
|
632
|
+
color: #407985;
|
633
|
+
background: #FFF;
|
634
|
+
}
|
635
|
+
|
636
|
+
body .tidelift-buttons a:last-child {
|
637
|
+
color: #FFF;
|
638
|
+
background: #407985;
|
639
|
+
}
|
640
|
+
|
641
|
+
body .tidelift-buttons a span {
|
642
|
+
display: table-cell;
|
643
|
+
vertical-align: middle;
|
644
|
+
text-align: center;
|
645
|
+
}
|
646
|
+
|
618
647
|
body .clear {
|
619
648
|
clear: both;
|
620
649
|
}
|
data/lib/active_admin.rb
CHANGED
@@ -8,8 +8,9 @@ require 'formtastic'
|
|
8
8
|
require 'formtastic_i18n'
|
9
9
|
require 'inherited_resources'
|
10
10
|
require 'jquery-rails'
|
11
|
-
require '
|
11
|
+
require 'sassc-rails'
|
12
12
|
require 'arbre'
|
13
|
+
require 'sprockets/es6'
|
13
14
|
|
14
15
|
require 'active_admin/helpers/i18n'
|
15
16
|
|
@@ -30,7 +31,6 @@ module ActiveAdmin
|
|
30
31
|
autoload :Deprecation, 'active_admin/deprecation'
|
31
32
|
autoload :Devise, 'active_admin/devise'
|
32
33
|
autoload :DSL, 'active_admin/dsl'
|
33
|
-
autoload :Event, 'active_admin/event'
|
34
34
|
autoload :FormBuilder, 'active_admin/form_builder'
|
35
35
|
autoload :Inputs, 'active_admin/inputs'
|
36
36
|
autoload :Localizers, 'active_admin/localizers'
|
@@ -90,7 +90,7 @@ module ActiveAdmin
|
|
90
90
|
#
|
91
91
|
# @param [Block] block A block to call each time (before) AA loads resources
|
92
92
|
def before_load(&block)
|
93
|
-
ActiveSupport::Notifications.subscribe ActiveAdmin::Application::BeforeLoadEvent, &
|
93
|
+
ActiveSupport::Notifications.subscribe ActiveAdmin::Application::BeforeLoadEvent, &wrap_block_for_active_support_notifications(block)
|
94
94
|
end
|
95
95
|
|
96
96
|
# A callback is triggered each time (after) Active Admin loads the configuration files. This
|
@@ -108,7 +108,13 @@ module ActiveAdmin
|
|
108
108
|
#
|
109
109
|
# @param [Block] block A block to call each time (after) AA loads resources
|
110
110
|
def after_load(&block)
|
111
|
-
ActiveSupport::Notifications.subscribe ActiveAdmin::Application::AfterLoadEvent, &
|
111
|
+
ActiveSupport::Notifications.subscribe ActiveAdmin::Application::AfterLoadEvent, &wrap_block_for_active_support_notifications(block)
|
112
|
+
end
|
113
|
+
|
114
|
+
private
|
115
|
+
|
116
|
+
def wrap_block_for_active_support_notifications block
|
117
|
+
proc { |event, *args| block.call *args }
|
112
118
|
end
|
113
119
|
|
114
120
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'active_admin/router'
|
2
|
-
require 'active_admin/reloader'
|
3
2
|
require 'active_admin/application_settings'
|
4
3
|
require 'active_admin/namespace_settings'
|
5
4
|
|
@@ -43,12 +42,6 @@ module ActiveAdmin
|
|
43
42
|
@namespaces = Namespace::Store.new
|
44
43
|
end
|
45
44
|
|
46
|
-
# == Deprecated Settings
|
47
|
-
|
48
|
-
def allow_comments=(*)
|
49
|
-
raise "`config.allow_comments` is no longer provided in ActiveAdmin 1.x. Use `config.comments` instead."
|
50
|
-
end
|
51
|
-
|
52
45
|
include AssetRegistration
|
53
46
|
|
54
47
|
# Event that gets triggered on load of Active Admin
|
@@ -68,7 +61,7 @@ module ActiveAdmin
|
|
68
61
|
|
69
62
|
# Registers a brand new configuration for the given resource.
|
70
63
|
def register(resource, options = {}, &block)
|
71
|
-
ns = options.fetch(:namespace){ default_namespace }
|
64
|
+
ns = options.fetch(:namespace) { default_namespace }
|
72
65
|
namespace(ns).register resource, options, &block
|
73
66
|
end
|
74
67
|
|
@@ -98,7 +91,7 @@ module ActiveAdmin
|
|
98
91
|
# @&block The registration block.
|
99
92
|
#
|
100
93
|
def register_page(name, options = {}, &block)
|
101
|
-
ns = options.fetch(:namespace){ default_namespace }
|
94
|
+
ns = options.fetch(:namespace) { default_namespace }
|
102
95
|
namespace(ns).register_page name, options, &block
|
103
96
|
end
|
104
97
|
|
@@ -119,7 +112,7 @@ module ActiveAdmin
|
|
119
112
|
def load!
|
120
113
|
unless loaded?
|
121
114
|
ActiveSupport::Notifications.publish BeforeLoadEvent, self # before_load hook
|
122
|
-
files.each{ |file| load file }
|
115
|
+
files.each { |file| load file } # load files
|
123
116
|
namespace(default_namespace) # init AA resources
|
124
117
|
ActiveSupport::Notifications.publish AfterLoadEvent, self # after_load hook
|
125
118
|
@@loaded = true
|
@@ -127,12 +120,12 @@ module ActiveAdmin
|
|
127
120
|
end
|
128
121
|
|
129
122
|
def load(file)
|
130
|
-
DatabaseHitDuringLoad.capture{ super }
|
123
|
+
DatabaseHitDuringLoad.capture { super }
|
131
124
|
end
|
132
125
|
|
133
126
|
# Returns ALL the files to be loaded
|
134
127
|
def files
|
135
|
-
load_paths.flatten.compact.uniq.flat_map{ |path| Dir["#{path}/**/*.rb"] }
|
128
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
|
136
129
|
end
|
137
130
|
|
138
131
|
# Creates all the necessary routes for the ActiveAdmin configurations
|
@@ -171,9 +164,9 @@ module ActiveAdmin
|
|
171
164
|
private
|
172
165
|
|
173
166
|
def register_default_assets
|
174
|
-
|
175
|
-
|
176
|
-
|
167
|
+
register_stylesheet 'active_admin.css', media: 'screen'
|
168
|
+
register_stylesheet 'active_admin/print.css', media: 'print'
|
169
|
+
register_javascript 'active_admin.js'
|
177
170
|
end
|
178
171
|
|
179
172
|
# Since app/admin is alphabetically before app/models, we have to remove it
|
@@ -200,11 +193,11 @@ module ActiveAdmin
|
|
200
193
|
# Rails is about to unload all the app files (e.g. models), so we
|
201
194
|
# should first unload the classes generated by Active Admin, otherwise
|
202
195
|
# they will contain references to the stale (unloaded) classes.
|
203
|
-
Reloader.to_prepare(prepend: true, &unload_active_admin)
|
196
|
+
ActiveSupport::Reloader.to_prepare(prepend: true, &unload_active_admin)
|
204
197
|
else
|
205
198
|
# If the user has configured the app to always reload app files after
|
206
199
|
# each request, so we should unload the generated classes too.
|
207
|
-
Reloader.to_complete(&unload_active_admin)
|
200
|
+
ActiveSupport::Reloader.to_complete(&unload_active_admin)
|
208
201
|
end
|
209
202
|
|
210
203
|
admin_dirs = {}
|
@@ -219,7 +212,7 @@ module ActiveAdmin
|
|
219
212
|
|
220
213
|
app.reloaders << routes_reloader
|
221
214
|
|
222
|
-
Reloader.to_prepare do
|
215
|
+
ActiveSupport::Reloader.to_prepare do
|
223
216
|
# Rails might have reloaded the routes for other reasons (e.g.
|
224
217
|
# routes.rb has changed), in which case Active Admin would have been
|
225
218
|
# loaded via the `ActiveAdmin.routes` call in `routes.rb`.
|
@@ -35,5 +35,8 @@ module ActiveAdmin
|
|
35
35
|
|
36
36
|
# To make debugging easier, by default don't stream in development
|
37
37
|
register :disable_streaming_in, ['development']
|
38
|
+
|
39
|
+
# Remove sensitive attributes from being displayed, made editable, or exported by default
|
40
|
+
register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
|
38
41
|
end
|
39
42
|
end
|
@@ -2,10 +2,6 @@ module ActiveAdmin
|
|
2
2
|
module AssetRegistration
|
3
3
|
|
4
4
|
def register_stylesheet(path, options = {})
|
5
|
-
Deprecation.warn <<-MSG.strip_heredoc
|
6
|
-
The `register_stylesheet` config is deprecated and will be removed
|
7
|
-
in v2. Import your "#{path}" stylesheet in the active_admin.scss.
|
8
|
-
MSG
|
9
5
|
stylesheets[path] = options
|
10
6
|
end
|
11
7
|
|
@@ -18,10 +14,6 @@ module ActiveAdmin
|
|
18
14
|
end
|
19
15
|
|
20
16
|
def register_javascript(name)
|
21
|
-
Deprecation.warn <<-MSG.strip_heredoc
|
22
|
-
The `register_javascript` config is deprecated and will be removed
|
23
|
-
in v2. Import your "#{name}" javascript in the active_admin.js.
|
24
|
-
MSG
|
25
17
|
javascripts.add name
|
26
18
|
end
|
27
19
|
|
@@ -22,6 +22,11 @@ module ActiveAdmin
|
|
22
22
|
attr_accessor :active_admin_config
|
23
23
|
end
|
24
24
|
|
25
|
+
include Authorization
|
26
|
+
include Menu
|
27
|
+
|
28
|
+
private
|
29
|
+
|
25
30
|
# By default Rails will render un-implemented actions when the view exists. Because Active
|
26
31
|
# Admin allows you to not render any of the actions by using the #actions method, we need
|
27
32
|
# to check if they are implemented.
|
@@ -29,11 +34,6 @@ module ActiveAdmin
|
|
29
34
|
raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
|
30
35
|
end
|
31
36
|
|
32
|
-
include Authorization
|
33
|
-
include Menu
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
37
|
# Calls the authentication method as defined in ActiveAdmin.authentication_method
|
38
38
|
def authenticate_active_admin_user
|
39
39
|
send(active_admin_namespace.authentication_method) if active_admin_namespace.authentication_method
|
@@ -74,7 +74,7 @@ module ActiveAdmin
|
|
74
74
|
|
75
75
|
def active_admin_root
|
76
76
|
controller, action = active_admin_namespace.root_to.split '#'
|
77
|
-
{controller: controller, action: action}
|
77
|
+
{ controller: controller, action: action }
|
78
78
|
end
|
79
79
|
|
80
80
|
end
|
@@ -18,6 +18,7 @@ module ActiveAdmin
|
|
18
18
|
|
19
19
|
helper_method :authorized?
|
20
20
|
helper_method :authorize!
|
21
|
+
helper_method :active_admin_authorization
|
21
22
|
end
|
22
23
|
|
23
24
|
protected
|
@@ -111,16 +112,14 @@ module ActiveAdmin
|
|
111
112
|
redirect_backwards_or_to_root
|
112
113
|
end
|
113
114
|
|
114
|
-
body
|
115
|
-
|
116
|
-
format.csv { render body => error, status: :unauthorized }
|
115
|
+
format.csv { render body: error, status: :unauthorized }
|
117
116
|
format.json { render json: { error: error }, status: :unauthorized }
|
118
117
|
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
119
118
|
end
|
120
119
|
end
|
121
120
|
|
122
121
|
def redirect_backwards_or_to_root
|
123
|
-
|
122
|
+
redirect_back fallback_location: active_admin_root
|
124
123
|
end
|
125
124
|
|
126
125
|
end
|
@@ -7,7 +7,7 @@ module ActiveAdmin
|
|
7
7
|
if action_present?
|
8
8
|
selection = params[:collection_selection] || []
|
9
9
|
inputs = JSON.parse params[:batch_action_inputs] || '{}'
|
10
|
-
valid_keys =
|
10
|
+
valid_keys = MethodOrProcHelper.render_in_context(self, current_batch_action.inputs).try(:keys)
|
11
11
|
inputs = inputs.with_indifferent_access.slice *valid_keys
|
12
12
|
instance_exec selection, inputs, ¤t_batch_action.block
|
13
13
|
else
|
@@ -22,7 +22,7 @@ module ActiveAdmin
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def current_batch_action
|
25
|
-
active_admin_config.batch_actions.detect{ |action| action.sym.to_s == params[:batch_action] }
|
25
|
+
active_admin_config.batch_actions.detect { |action| action.sym.to_s == params[:batch_action] }
|
26
26
|
end
|
27
27
|
|
28
28
|
COLLECTION_APPLIES = [
|
@@ -57,8 +57,8 @@ module ActiveAdmin
|
|
57
57
|
def add_default_batch_action
|
58
58
|
destroy_options = {
|
59
59
|
priority: 100,
|
60
|
-
confirm: proc{ I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
|
61
|
-
if: proc{ controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
|
60
|
+
confirm: proc { I18n.t('active_admin.batch_actions.delete_confirmation', plural_model: active_admin_config.plural_resource_label.downcase) },
|
61
|
+
if: proc { controller.action_methods.include?('destroy') && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
|
62
62
|
}
|
63
63
|
|
64
64
|
add_batch_action :destroy, proc { I18n.t('active_admin.delete') }, destroy_options do |selected_ids|
|
@@ -84,7 +84,7 @@ module ActiveAdmin
|
|
84
84
|
|
85
85
|
attr_reader :block, :title, :sym
|
86
86
|
|
87
|
-
DEFAULT_CONFIRM_MESSAGE = proc{ I18n.t 'active_admin.batch_actions.default_confirmation' }
|
87
|
+
DEFAULT_CONFIRM_MESSAGE = proc { I18n.t 'active_admin.batch_actions.default_confirmation' }
|
88
88
|
|
89
89
|
# Create a Batch Action
|
90
90
|
#
|
@@ -112,7 +112,11 @@ module ActiveAdmin
|
|
112
112
|
# => You can pass a hash of options to `:form` that will be rendered as form input fields for the user to fill out.
|
113
113
|
#
|
114
114
|
def initialize(sym, title, options = {}, &block)
|
115
|
-
@sym
|
115
|
+
@sym = sym
|
116
|
+
@title = title
|
117
|
+
@options = options
|
118
|
+
@block = block
|
119
|
+
@confirm = options[:confirm]
|
116
120
|
@block ||= proc {}
|
117
121
|
end
|
118
122
|
|
@@ -133,7 +137,7 @@ module ActiveAdmin
|
|
133
137
|
# Returns the display if block. If the block was not explicitly defined
|
134
138
|
# a default block always returning true will be returned.
|
135
139
|
def display_if_block
|
136
|
-
@options[:if] || proc{ true }
|
140
|
+
@options[:if] || proc { true }
|
137
141
|
end
|
138
142
|
|
139
143
|
# Used for sorting
|
@@ -75,7 +75,7 @@ module ActiveAdmin
|
|
75
75
|
|
76
76
|
# def run_create_callbacks
|
77
77
|
define_method "run_#{name}_callbacks" do |*args, &block|
|
78
|
-
self.class.send("before_#{name}_callbacks").each{ |cbk| run_callback(cbk, *args) }
|
78
|
+
self.class.send("before_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
|
79
79
|
value = block.try :call
|
80
80
|
self.class.send("after_#{name}_callbacks").each { |cbk| run_callback(cbk, *args) }
|
81
81
|
return value
|
@@ -32,7 +32,9 @@ module ActiveAdmin
|
|
32
32
|
|
33
33
|
def initialize(options = {}, &block)
|
34
34
|
@resource = options.delete(:resource)
|
35
|
-
@columns
|
35
|
+
@columns = []
|
36
|
+
@options = ActiveAdmin.application.csv_options.merge options
|
37
|
+
@block = block
|
36
38
|
end
|
37
39
|
|
38
40
|
def column(name, options = {}, &block)
|
@@ -42,7 +44,6 @@ module ActiveAdmin
|
|
42
44
|
def build(controller, csv)
|
43
45
|
@collection = controller.send :find_collection, except: :pagination
|
44
46
|
columns = exec_columns controller.view_context
|
45
|
-
options = ActiveAdmin.application.csv_options.merge self.options
|
46
47
|
bom = options.delete :byte_order_mark
|
47
48
|
column_names = options.delete(:column_names) { true }
|
48
49
|
csv_options = options.except :encoding_options, :humanize_name
|
@@ -50,7 +51,7 @@ module ActiveAdmin
|
|
50
51
|
csv << bom if bom
|
51
52
|
|
52
53
|
if column_names
|
53
|
-
csv << CSV.generate_line(columns.map{ |c| encode c.name, options }, csv_options)
|
54
|
+
csv << CSV.generate_line(columns.map { |c| encode c.name, options }, csv_options)
|
54
55
|
end
|
55
56
|
|
56
57
|
ActiveRecord::Base.uncached do
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ActiveAdmin
|
2
2
|
module Dependency
|
3
3
|
module Requirements
|
4
|
-
DEVISE = '>=
|
4
|
+
DEVISE = '>= 4.0', '< 5'
|
5
5
|
end
|
6
6
|
|
7
7
|
# Provides a clean interface to check for gem dependencies at runtime.
|
@@ -55,8 +55,8 @@ module ActiveAdmin
|
|
55
55
|
Matcher.new name.to_s
|
56
56
|
end
|
57
57
|
|
58
|
-
def self.
|
59
|
-
rails >=
|
58
|
+
def self.supports_zeitwerk?
|
59
|
+
rails >= "6.0.0.beta3" && RUBY_ENGINE != "jruby"
|
60
60
|
end
|
61
61
|
|
62
62
|
class Matcher
|
@@ -94,78 +94,6 @@ module ActiveAdmin
|
|
94
94
|
info = spec ? "#{spec.name} #{spec.version}" : '(missing)'
|
95
95
|
"<ActiveAdmin::Dependency::Matcher for #{info}>"
|
96
96
|
end
|
97
|
-
|
98
|
-
def adapter
|
99
|
-
@adapter ||= Adapter.const_get(@name.camelize).new self
|
100
|
-
end
|
101
|
-
|
102
|
-
def method_missing(method, *args, &block)
|
103
|
-
if respond_to_missing?(method)
|
104
|
-
adapter.send method, *args, &block
|
105
|
-
else
|
106
|
-
super
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def respond_to_missing?(method, include_private = false)
|
111
|
-
adapter.respond_to?(method) || super
|
112
|
-
rescue NameError
|
113
|
-
# 🐾
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
# Dependency adapters provide an easy way to wrap the conditional logic
|
118
|
-
# necessary to support multiple versions of a gem.
|
119
|
-
#
|
120
|
-
# ActiveAdmin::Dependency.rails.adapter.parameterize 'a b'
|
121
|
-
# => 'a_b'
|
122
|
-
#
|
123
|
-
# ActiveAdmin::Dependency.rails.parameterize 'a b'
|
124
|
-
# => 'a_b'
|
125
|
-
#
|
126
|
-
# ActiveAdmin::Dependency.devise.adapter
|
127
|
-
# -> NameError: uninitialized constant ActiveAdmin::Dependency::Adapter::Devise
|
128
|
-
#
|
129
|
-
module Adapter
|
130
|
-
class Base
|
131
|
-
def initialize(version)
|
132
|
-
@version = version
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
class Rails < Base
|
137
|
-
def optional_belongs_to_flag
|
138
|
-
if Dependency.rails5?
|
139
|
-
{ optional: true }
|
140
|
-
else
|
141
|
-
{ required: false }
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
def parameterize(string)
|
146
|
-
if Dependency.rails5?
|
147
|
-
string.parameterize separator: '_'
|
148
|
-
else
|
149
|
-
string.parameterize '_'
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
def redirect_back(controller, fallback_location)
|
154
|
-
controller.instance_exec do
|
155
|
-
if Dependency.rails5?
|
156
|
-
redirect_back fallback_location: fallback_location
|
157
|
-
elsif controller.request.headers.key? 'HTTP_REFERER'
|
158
|
-
redirect_to :back
|
159
|
-
else
|
160
|
-
redirect_to fallback_location
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
def render_key
|
166
|
-
Dependency.rails5? ? :body : :text
|
167
|
-
end
|
168
|
-
end
|
169
97
|
end
|
170
98
|
|
171
99
|
end
|