activeadmin 2.4.0 → 2.8.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 +148 -30
- data/CONTRIBUTING.md +36 -56
- data/README.md +2 -2
- data/app/assets/javascripts/active_admin/base.js +517 -0
- data/app/assets/stylesheets/active_admin/_base.scss +29 -29
- data/app/assets/stylesheets/active_admin/_header.scss +40 -8
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +0 -0
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +8 -0
- data/app/assets/stylesheets/active_admin/print.scss +2 -2
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/javascript/active_admin/base.js +28 -0
- data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
- data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
- data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +4 -2
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +0 -0
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/{assets/javascripts/active_admin/initializers/tabs.es6 → javascript/active_admin/initializers/tabs.js} +0 -0
- data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +5 -5
- data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +3 -10
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +10 -8
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +5 -3
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
- data/config/locales/ar.yml +6 -6
- data/config/locales/az.yml +138 -0
- data/config/locales/en-CA.yml +3 -3
- data/config/locales/en-GB.yml +3 -3
- data/config/locales/en.yml +3 -3
- data/config/locales/es-MX.yml +2 -1
- data/config/locales/es.yml +5 -5
- data/config/locales/fr.yml +4 -4
- data/config/locales/it.yml +18 -0
- data/config/locales/ja.yml +3 -3
- data/config/locales/lv.yml +2 -2
- data/config/locales/vi.yml +6 -5
- data/docs/0-installation.md +26 -2
- data/docs/1-general-configuration.md +20 -0
- data/docs/11-decorators.md +16 -5
- data/docs/2-resource-customization.md +10 -1
- data/docs/3-index-pages.md +1 -1
- data/docs/9-batch-actions.md +2 -2
- data/docs/Gemfile.lock +119 -109
- data/docs/_includes/top-menu.html +1 -1
- data/docs/documentation.md +1 -1
- data/docs/index.html +6 -6
- data/lib/active_admin.rb +43 -44
- data/lib/active_admin/application.rb +7 -7
- data/lib/active_admin/authorization_adapter.rb +3 -3
- data/lib/active_admin/base_controller/authorization.rb +9 -9
- data/lib/active_admin/batch_actions/controller.rb +3 -3
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -1
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +5 -5
- data/lib/active_admin/collection_decorator.rb +31 -0
- data/lib/active_admin/csv_builder.rb +11 -7
- data/lib/active_admin/dependency.rb +7 -7
- data/lib/active_admin/filters.rb +1 -1
- data/lib/active_admin/filters/active_filter.rb +1 -1
- data/lib/active_admin/filters/forms.rb +3 -3
- data/lib/active_admin/filters/resource_extension.rb +1 -1
- data/lib/active_admin/form_builder.rb +5 -5
- data/lib/active_admin/helpers/optional_display.rb +2 -2
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/inputs/filters/date_range_input.rb +15 -12
- data/lib/active_admin/localizers/resource_localizer.rb +1 -1
- data/lib/active_admin/menu.rb +5 -2
- data/lib/active_admin/menu_item.rb +7 -7
- data/lib/active_admin/namespace.rb +7 -7
- data/lib/active_admin/namespace_settings.rb +3 -0
- data/lib/active_admin/orm/active_record/comments.rb +11 -11
- data/lib/active_admin/orm/active_record/comments/comment.rb +3 -3
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +3 -3
- data/lib/active_admin/pundit_adapter.rb +4 -4
- data/lib/active_admin/resource.rb +1 -1
- data/lib/active_admin/resource/action_items.rb +1 -1
- data/lib/active_admin/resource/menu.rb +4 -4
- data/lib/active_admin/resource/naming.rb +4 -4
- data/lib/active_admin/resource/routes.rb +5 -5
- data/lib/active_admin/resource/scope_to.rb +7 -7
- data/lib/active_admin/resource_controller.rb +4 -3
- data/lib/active_admin/resource_controller/data_access.rb +1 -1
- data/lib/active_admin/resource_controller/decorators.rb +5 -25
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +3 -2
- data/lib/active_admin/resource_dsl.rb +5 -5
- data/lib/active_admin/scope.rb +5 -5
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +16 -16
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +1 -1
- data/lib/active_admin/view_helpers/display_helper.rb +3 -3
- data/lib/active_admin/view_helpers/fields_for.rb +1 -1
- data/lib/active_admin/views/components/attributes_table.rb +2 -2
- data/lib/active_admin/views/components/dropdown_menu.rb +2 -2
- data/lib/active_admin/views/components/index_list.rb +1 -1
- data/lib/active_admin/views/components/menu_item.rb +1 -1
- data/lib/active_admin/views/components/paginated_collection.rb +15 -14
- data/lib/active_admin/views/components/scopes.rb +2 -0
- data/lib/active_admin/views/components/table_for.rb +12 -11
- data/lib/active_admin/views/components/tabs.rb +1 -1
- data/lib/active_admin/views/index_as_table.rb +6 -6
- data/lib/active_admin/views/pages/base.rb +9 -5
- data/lib/active_admin/views/pages/index.rb +9 -8
- data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
- data/lib/generators/active_admin/devise/devise_generator.rb +4 -4
- data/lib/generators/active_admin/install/install_generator.rb +7 -1
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +9 -2
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
- metadata +44 -48
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.es6 +0 -23
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
@@ -8,7 +8,7 @@
|
|
8
8
|
</div>
|
9
9
|
|
10
10
|
<div id="tidelift">
|
11
|
-
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=
|
11
|
+
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
12
12
|
<span class="cta">
|
13
13
|
Active Admin for enterprise available via Tidelift
|
14
14
|
</span>
|
data/docs/documentation.md
CHANGED
data/docs/index.html
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
</h3>
|
51
51
|
|
52
52
|
<p>
|
53
|
-
Each resource that is registered
|
53
|
+
Each resource that is registered with Active Admin becomes available as <span class="caps">JSON</span>, <span class="caps">XML</span> and <span class="caps">CSV</span> download. Customize the output to meet your requirements.
|
54
54
|
</p>
|
55
55
|
</div>
|
56
56
|
|
@@ -133,7 +133,7 @@
|
|
133
133
|
</h2>
|
134
134
|
|
135
135
|
<p>
|
136
|
-
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=
|
136
|
+
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise">
|
137
137
|
Available as part of the Tidelift Subscription
|
138
138
|
</a>
|
139
139
|
</p>
|
@@ -150,11 +150,11 @@
|
|
150
150
|
</p>
|
151
151
|
|
152
152
|
<div class="tidelift-buttons">
|
153
|
-
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral" target="_blank">
|
153
|
+
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
154
154
|
<span>LEARN MORE</span>
|
155
155
|
</a>
|
156
156
|
|
157
|
-
<a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral" target="_blank">
|
157
|
+
<a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
158
158
|
<span>REQUEST A DEMO</span>
|
159
159
|
</a>
|
160
160
|
</div>
|
@@ -202,11 +202,11 @@
|
|
202
202
|
</p>
|
203
203
|
|
204
204
|
<div class="tidelift-buttons">
|
205
|
-
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral" target="_blank">
|
205
|
+
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
206
206
|
<span>LEARN MORE</span>
|
207
207
|
</a>
|
208
208
|
|
209
|
-
<a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral" target="_blank">
|
209
|
+
<a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
210
210
|
<span>REQUEST A DEMO</span>
|
211
211
|
</a>
|
212
212
|
</div>
|
data/lib/active_admin.rb
CHANGED
@@ -10,50 +10,49 @@ require 'inherited_resources'
|
|
10
10
|
require 'jquery-rails'
|
11
11
|
require 'sassc-rails'
|
12
12
|
require 'arbre'
|
13
|
-
require 'sprockets/es6'
|
14
13
|
|
15
14
|
require 'active_admin/helpers/i18n'
|
16
15
|
|
17
16
|
module ActiveAdmin
|
18
17
|
|
19
|
-
autoload :VERSION,
|
20
|
-
autoload :Application,
|
21
|
-
autoload :AssetRegistration,
|
22
|
-
autoload :Authorization,
|
23
|
-
autoload :AuthorizationAdapter,
|
24
|
-
autoload :Callbacks,
|
25
|
-
autoload :Component,
|
26
|
-
autoload :BaseController,
|
27
|
-
autoload :CanCanAdapter,
|
28
|
-
autoload :ControllerAction,
|
29
|
-
autoload :CSVBuilder,
|
30
|
-
autoload :Dependency,
|
31
|
-
autoload :Deprecation,
|
32
|
-
autoload :Devise,
|
33
|
-
autoload :DSL,
|
34
|
-
autoload :FormBuilder,
|
35
|
-
autoload :Inputs,
|
36
|
-
autoload :Localizers,
|
37
|
-
autoload :Menu,
|
38
|
-
autoload :MenuCollection,
|
39
|
-
autoload :MenuItem,
|
40
|
-
autoload :Namespace,
|
41
|
-
autoload :OrderClause,
|
42
|
-
autoload :Page,
|
43
|
-
autoload :PagePresenter,
|
44
|
-
autoload :PageController,
|
45
|
-
autoload :PageDSL,
|
46
|
-
autoload :PunditAdapter,
|
47
|
-
autoload :Resource,
|
48
|
-
autoload :ResourceController,
|
49
|
-
autoload :ResourceDSL,
|
50
|
-
autoload :Scope,
|
51
|
-
autoload :ScopeChain,
|
52
|
-
autoload :SidebarSection,
|
53
|
-
autoload :TableBuilder,
|
54
|
-
autoload :ViewFactory,
|
55
|
-
autoload :ViewHelpers,
|
56
|
-
autoload :Views,
|
18
|
+
autoload :VERSION, 'active_admin/version'
|
19
|
+
autoload :Application, 'active_admin/application'
|
20
|
+
autoload :AssetRegistration, 'active_admin/asset_registration'
|
21
|
+
autoload :Authorization, 'active_admin/authorization_adapter'
|
22
|
+
autoload :AuthorizationAdapter, 'active_admin/authorization_adapter'
|
23
|
+
autoload :Callbacks, 'active_admin/callbacks'
|
24
|
+
autoload :Component, 'active_admin/component'
|
25
|
+
autoload :BaseController, 'active_admin/base_controller'
|
26
|
+
autoload :CanCanAdapter, 'active_admin/cancan_adapter'
|
27
|
+
autoload :ControllerAction, 'active_admin/controller_action'
|
28
|
+
autoload :CSVBuilder, 'active_admin/csv_builder'
|
29
|
+
autoload :Dependency, 'active_admin/dependency'
|
30
|
+
autoload :Deprecation, 'active_admin/deprecation'
|
31
|
+
autoload :Devise, 'active_admin/devise'
|
32
|
+
autoload :DSL, 'active_admin/dsl'
|
33
|
+
autoload :FormBuilder, 'active_admin/form_builder'
|
34
|
+
autoload :Inputs, 'active_admin/inputs'
|
35
|
+
autoload :Localizers, 'active_admin/localizers'
|
36
|
+
autoload :Menu, 'active_admin/menu'
|
37
|
+
autoload :MenuCollection, 'active_admin/menu_collection'
|
38
|
+
autoload :MenuItem, 'active_admin/menu_item'
|
39
|
+
autoload :Namespace, 'active_admin/namespace'
|
40
|
+
autoload :OrderClause, 'active_admin/order_clause'
|
41
|
+
autoload :Page, 'active_admin/page'
|
42
|
+
autoload :PagePresenter, 'active_admin/page_presenter'
|
43
|
+
autoload :PageController, 'active_admin/page_controller'
|
44
|
+
autoload :PageDSL, 'active_admin/page_dsl'
|
45
|
+
autoload :PunditAdapter, 'active_admin/pundit_adapter'
|
46
|
+
autoload :Resource, 'active_admin/resource'
|
47
|
+
autoload :ResourceController, 'active_admin/resource_controller'
|
48
|
+
autoload :ResourceDSL, 'active_admin/resource_dsl'
|
49
|
+
autoload :Scope, 'active_admin/scope'
|
50
|
+
autoload :ScopeChain, 'active_admin/helpers/scope_chain'
|
51
|
+
autoload :SidebarSection, 'active_admin/sidebar_section'
|
52
|
+
autoload :TableBuilder, 'active_admin/table_builder'
|
53
|
+
autoload :ViewFactory, 'active_admin/view_factory'
|
54
|
+
autoload :ViewHelpers, 'active_admin/view_helpers'
|
55
|
+
autoload :Views, 'active_admin/views'
|
57
56
|
|
58
57
|
class << self
|
59
58
|
|
@@ -70,11 +69,11 @@ module ActiveAdmin
|
|
70
69
|
application.prepare!
|
71
70
|
end
|
72
71
|
|
73
|
-
delegate :register,
|
72
|
+
delegate :register, to: :application
|
74
73
|
delegate :register_page, to: :application
|
75
|
-
delegate :unload!,
|
76
|
-
delegate :load!,
|
77
|
-
delegate :routes,
|
74
|
+
delegate :unload!, to: :application
|
75
|
+
delegate :load!, to: :application
|
76
|
+
delegate :routes, to: :application
|
78
77
|
|
79
78
|
# A callback is triggered each time (before) Active Admin loads the configuration files.
|
80
79
|
# In development mode, this will happen whenever the user changes files. In production
|
@@ -131,4 +130,4 @@ require 'active_admin/filters'
|
|
131
130
|
|
132
131
|
# Require ORM-specific plugins
|
133
132
|
require 'active_admin/orm/active_record' if defined? ActiveRecord
|
134
|
-
require 'active_admin/orm/mongoid'
|
133
|
+
require 'active_admin/orm/mongoid' if defined? Mongoid
|
@@ -46,7 +46,7 @@ module ActiveAdmin
|
|
46
46
|
|
47
47
|
# Event that gets triggered on load of Active Admin
|
48
48
|
BeforeLoadEvent = 'active_admin.application.before_load'.freeze
|
49
|
-
AfterLoadEvent
|
49
|
+
AfterLoadEvent = 'active_admin.application.after_load'.freeze
|
50
50
|
|
51
51
|
# Runs before the app's AA initializer
|
52
52
|
def setup!
|
@@ -73,7 +73,7 @@ module ActiveAdmin
|
|
73
73
|
def namespace(name)
|
74
74
|
name ||= :root
|
75
75
|
|
76
|
-
namespace = namespaces[name] ||= begin
|
76
|
+
namespace = namespaces[name.to_sym] ||= begin
|
77
77
|
namespace = Namespace.new(self, name)
|
78
78
|
ActiveSupport::Notifications.publish ActiveAdmin::Namespace::RegisterEvent, namespace
|
79
79
|
namespace
|
@@ -112,9 +112,9 @@ module ActiveAdmin
|
|
112
112
|
def load!
|
113
113
|
unless loaded?
|
114
114
|
ActiveSupport::Notifications.publish BeforeLoadEvent, self # before_load hook
|
115
|
-
files.each { |file| load file }
|
116
|
-
namespace(default_namespace)
|
117
|
-
ActiveSupport::Notifications.publish AfterLoadEvent, self
|
115
|
+
files.each { |file| load file } # load files
|
116
|
+
namespace(default_namespace) # init AA resources
|
117
|
+
ActiveSupport::Notifications.publish AfterLoadEvent, self # after_load hook
|
118
118
|
@@loaded = true
|
119
119
|
end
|
120
120
|
end
|
@@ -125,7 +125,7 @@ module ActiveAdmin
|
|
125
125
|
|
126
126
|
# Returns ALL the files to be loaded
|
127
127
|
def files
|
128
|
-
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
|
128
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }.sort
|
129
129
|
end
|
130
130
|
|
131
131
|
# Creates all the necessary routes for the ActiveAdmin configurations
|
@@ -176,7 +176,7 @@ module ActiveAdmin
|
|
176
176
|
# files from being loaded twice in production.
|
177
177
|
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
178
178
|
ActiveSupport::Dependencies.autoload_paths -= load_paths
|
179
|
-
Rails.application.config.eager_load_paths
|
179
|
+
Rails.application.config.eager_load_paths -= load_paths
|
180
180
|
end
|
181
181
|
|
182
182
|
# Hook into the Rails code reloading mechanism so that things are reloaded
|
@@ -4,12 +4,12 @@ module ActiveAdmin
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
ACTIONS_DICTIONARY = {
|
7
|
-
index:
|
8
|
-
show:
|
9
|
-
new:
|
10
|
-
create:
|
11
|
-
edit:
|
12
|
-
update:
|
7
|
+
index: ActiveAdmin::Authorization::READ,
|
8
|
+
show: ActiveAdmin::Authorization::READ,
|
9
|
+
new: ActiveAdmin::Authorization::CREATE,
|
10
|
+
create: ActiveAdmin::Authorization::CREATE,
|
11
|
+
edit: ActiveAdmin::Authorization::UPDATE,
|
12
|
+
update: ActiveAdmin::Authorization::UPDATE,
|
13
13
|
destroy: ActiveAdmin::Authorization::DESTROY
|
14
14
|
}
|
15
15
|
|
@@ -112,9 +112,9 @@ module ActiveAdmin
|
|
112
112
|
redirect_backwards_or_to_root
|
113
113
|
end
|
114
114
|
|
115
|
-
format.csv
|
116
|
-
format.json { render json: { error: error },
|
117
|
-
format.xml
|
115
|
+
format.csv { render body: error, status: :unauthorized }
|
116
|
+
format.json { render json: { error: error }, status: :unauthorized }
|
117
|
+
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
@@ -5,10 +5,10 @@ module ActiveAdmin
|
|
5
5
|
# Controller action that is called when submitting the batch action form
|
6
6
|
def batch_action
|
7
7
|
if action_present?
|
8
|
-
selection
|
9
|
-
inputs
|
8
|
+
selection = params[:collection_selection] || []
|
9
|
+
inputs = JSON.parse params[:batch_action_inputs] || '{}'
|
10
10
|
valid_keys = MethodOrProcHelper.render_in_context(self, current_batch_action.inputs).try(:keys)
|
11
|
-
inputs
|
11
|
+
inputs = inputs.with_indifferent_access.slice *valid_keys
|
12
12
|
instance_exec selection, inputs, ¤t_batch_action.block
|
13
13
|
else
|
14
14
|
raise "Couldn't find batch action \"#{params[:batch_action]}\""
|
@@ -16,7 +16,7 @@ module ActiveAdmin
|
|
16
16
|
# batch_action => name of the specific action called
|
17
17
|
# batch_action_inputs => a JSON string of any requested confirmation values
|
18
18
|
text_node form_tag active_admin_config.route_batch_action_path(params, url_options), id: options[:id]
|
19
|
-
input name: :batch_action,
|
19
|
+
input name: :batch_action, id: :batch_action, type: :hidden
|
20
20
|
input name: :batch_action_inputs, id: :batch_action_inputs, type: :hidden
|
21
21
|
|
22
22
|
super(options)
|
@@ -31,17 +31,17 @@ module ActiveAdmin
|
|
31
31
|
confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)
|
32
32
|
|
33
33
|
options = {
|
34
|
-
:
|
35
|
-
"data-action"
|
36
|
-
"data-confirm"
|
37
|
-
"data-inputs"
|
34
|
+
class: "batch_action",
|
35
|
+
"data-action": batch_action.sym,
|
36
|
+
"data-confirm": confirmation_text,
|
37
|
+
"data-inputs": render_in_context(self, batch_action.inputs).to_json
|
38
38
|
}
|
39
39
|
|
40
40
|
default_title = render_or_call_method_or_proc_on(self, batch_action.title)
|
41
41
|
title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
|
42
42
|
label = I18n.t("active_admin.batch_actions.action_label", title: title)
|
43
43
|
|
44
|
-
item label, "#", options
|
44
|
+
item label, "#", **options
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
# This class decorates a collection of objects delegating
|
3
|
+
# mehods to behave like an Array. It's used to decouple ActiveAdmin
|
4
|
+
# from Draper and thus being able to use PORO decorators as well.
|
5
|
+
#
|
6
|
+
# It's implementation is heavily based on the Draper::CollectionDecorator
|
7
|
+
# https://github.com/drapergem/draper/blob/aaa06bd2f1e219838b241a5534e7ca513edd1fe2/lib/draper/collection_decorator.rb
|
8
|
+
class CollectionDecorator
|
9
|
+
# @return the collection being decorated.
|
10
|
+
attr_reader :object
|
11
|
+
|
12
|
+
# @return [Class] the decorator class used to decorate each item, as set by {#initialize}.
|
13
|
+
attr_reader :decorator_class
|
14
|
+
|
15
|
+
array_methods = Array.instance_methods - Object.instance_methods
|
16
|
+
delegate :==, :as_json, *array_methods, to: :decorated_collection
|
17
|
+
|
18
|
+
def initialize(object, with:)
|
19
|
+
@object = object
|
20
|
+
@decorator_class = with
|
21
|
+
end
|
22
|
+
|
23
|
+
class << self
|
24
|
+
alias_method :decorate, :new
|
25
|
+
end
|
26
|
+
|
27
|
+
def decorated_collection
|
28
|
+
@decorated_collection ||= object.map { |item| decorator_class.new(item) }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -42,23 +42,23 @@ module ActiveAdmin
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def build(controller, csv)
|
45
|
-
@collection
|
46
|
-
columns
|
47
|
-
bom
|
45
|
+
@collection = controller.send :find_collection, except: :pagination
|
46
|
+
columns = exec_columns controller.view_context
|
47
|
+
bom = options.delete :byte_order_mark
|
48
48
|
column_names = options.delete(:column_names) { true }
|
49
|
-
csv_options
|
49
|
+
csv_options = options.except :encoding_options, :humanize_name
|
50
50
|
|
51
51
|
csv << bom if bom
|
52
52
|
|
53
53
|
if column_names
|
54
|
-
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)
|
55
55
|
end
|
56
56
|
|
57
57
|
ActiveRecord::Base.uncached do
|
58
58
|
(1..paginated_collection.total_pages).each do |page|
|
59
59
|
paginated_collection(page).each do |resource|
|
60
60
|
resource = controller.send :apply_decorator, resource
|
61
|
-
csv << CSV.generate_line(build_row(resource, columns, options), csv_options)
|
61
|
+
csv << CSV.generate_line(build_row(resource, columns, options), **csv_options)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
@@ -81,7 +81,11 @@ module ActiveAdmin
|
|
81
81
|
|
82
82
|
def encode(content, options)
|
83
83
|
if options[:encoding]
|
84
|
-
|
84
|
+
if options[:encoding_options]
|
85
|
+
content.to_s.encode options[:encoding], **options[:encoding_options]
|
86
|
+
else
|
87
|
+
content.to_s.encode options[:encoding]
|
88
|
+
end
|
85
89
|
else
|
86
90
|
content
|
87
91
|
end
|
@@ -6,22 +6,22 @@ module ActiveAdmin
|
|
6
6
|
|
7
7
|
# Provides a clean interface to check for gem dependencies at runtime.
|
8
8
|
#
|
9
|
-
# ActiveAdmin::Dependency.
|
10
|
-
# => #<ActiveAdmin::Dependency::Matcher for
|
9
|
+
# ActiveAdmin::Dependency.rails
|
10
|
+
# => #<ActiveAdmin::Dependency::Matcher for rails 6.0.3.2>
|
11
11
|
#
|
12
|
-
# ActiveAdmin::Dependency.
|
12
|
+
# ActiveAdmin::Dependency.rails?
|
13
13
|
# => true
|
14
14
|
#
|
15
|
-
# ActiveAdmin::Dependency.
|
15
|
+
# ActiveAdmin::Dependency.rails? '>= 6.1'
|
16
16
|
# => false
|
17
17
|
#
|
18
|
-
# ActiveAdmin::Dependency.
|
18
|
+
# ActiveAdmin::Dependency.rails? '= 6.0.3.2'
|
19
19
|
# => true
|
20
20
|
#
|
21
|
-
# ActiveAdmin::Dependency.
|
21
|
+
# ActiveAdmin::Dependency.rails? '~> 6.0.3'
|
22
22
|
# => true
|
23
23
|
#
|
24
|
-
# ActiveAdmin::Dependency.rails? '>=
|
24
|
+
# ActiveAdmin::Dependency.rails? '>= 6.0.3', '<= 6.1.0'
|
25
25
|
# => true
|
26
26
|
#
|
27
27
|
# ActiveAdmin::Dependency.rails! '5'
|
data/lib/active_admin/filters.rb
CHANGED
@@ -7,5 +7,5 @@ require 'active_admin/filters/active_sidebar'
|
|
7
7
|
|
8
8
|
# Add our Extensions
|
9
9
|
ActiveAdmin::ResourceDSL.send :include, ActiveAdmin::Filters::DSL
|
10
|
-
ActiveAdmin::Resource.send
|
10
|
+
ActiveAdmin::Resource.send :include, ActiveAdmin::Filters::ResourceExtension
|
11
11
|
ActiveAdmin::ViewHelpers.send :include, ActiveAdmin::Filters::ViewHelper
|
@@ -51,12 +51,12 @@ module ActiveAdmin
|
|
51
51
|
html: { class: 'filter_form' } }
|
52
52
|
required = { html: { method: :get },
|
53
53
|
as: :q }
|
54
|
-
options
|
54
|
+
options = defaults.deep_merge(options).deep_merge(required)
|
55
55
|
|
56
56
|
form_for search, options do |f|
|
57
57
|
filters.each do |attribute, opts|
|
58
|
-
next if opts.key?(:if)
|
59
|
-
next if opts.key?(:unless) &&
|
58
|
+
next if opts.key?(:if) && !call_method_or_proc_on(self, opts[:if])
|
59
|
+
next if opts.key?(:unless) && call_method_or_proc_on(self, opts[:unless])
|
60
60
|
|
61
61
|
filter_opts = opts.except(:if, :unless)
|
62
62
|
filter_opts[:input_html] = instance_exec(&filter_opts[:input_html]) if filter_opts[:input_html].is_a?(Proc)
|