activeadmin 1.3.1 → 1.4.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/.circleci/config.yml +467 -0
- data/.gitignore +2 -5
- data/.rspec +1 -0
- data/.rspec_parallel +2 -0
- data/.rubocop.yml +25 -7
- data/.simplecov +4 -6
- data/CHANGELOG.md +175 -83
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +77 -40
- data/Gemfile +7 -55
- data/Gemfile.common +53 -0
- data/Gemfile.lock +431 -0
- data/README.md +39 -18
- data/Rakefile +1 -32
- data/app/assets/stylesheets/active_admin/_forms.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- 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 -1
- data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
- data/bin/install_chromedriver.sh +17 -0
- data/config/locales/de.yml +10 -0
- data/config/locales/en.yml +19 -1
- data/config/locales/es.yml +20 -1
- data/config/locales/fi.yml +1 -1
- data/config/locales/it.yml +4 -0
- data/config/locales/nb.yml +15 -5
- data/config/locales/nl.yml +11 -0
- data/config/locales/pl.yml +71 -3
- data/config/locales/ru.yml +2 -0
- data/config/locales/tr.yml +9 -0
- data/config/locales/zh-CN.yml +33 -5
- data/config/mdl_style.rb +2 -0
- data/cucumber.yml +7 -3
- data/docs/.gitignore +1 -0
- data/docs/1-general-configuration.md +16 -1
- data/docs/10-custom-pages.md +14 -0
- data/docs/12-arbre-components.md +28 -1
- data/docs/13-authorization-adapter.md +36 -17
- data/docs/2-resource-customization.md +8 -3
- data/docs/3-index-pages.md +17 -0
- data/docs/3-index-pages/custom-index.md +1 -1
- data/docs/3-index-pages/index-as-blog.md +1 -1
- data/docs/3-index-pages/index-as-table.md +5 -5
- data/docs/5-forms.md +16 -2
- data/docs/8-custom-actions.md +11 -0
- data/docs/Gemfile +2 -0
- data/docs/Gemfile.lock +249 -0
- data/docs/_config.yml +1 -1
- data/docs/_includes/toc.html +1 -1
- data/docs/_includes/top-menu.html +9 -1
- data/docs/documentation.md +1 -1
- data/docs/images/tidelift.svg +14 -0
- data/docs/stylesheets/main.css +26 -2
- data/gemfiles/rails_42.gemfile +2 -2
- data/gemfiles/rails_42.gemfile.lock +410 -0
- data/gemfiles/rails_50.gemfile +2 -2
- data/gemfiles/rails_50.gemfile.lock +424 -0
- data/gemfiles/rails_51.gemfile +2 -2
- data/gemfiles/rails_51.gemfile.lock +423 -0
- data/lib/active_admin/abstract_view_factory.rb +13 -51
- data/lib/active_admin/application.rb +42 -142
- data/lib/active_admin/application_settings.rb +39 -0
- data/lib/active_admin/base_controller/authorization.rb +1 -2
- data/lib/active_admin/batch_actions/controller.rb +1 -1
- data/lib/active_admin/dependency.rb +8 -0
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/dynamic_setting.rb +38 -0
- data/lib/active_admin/dynamic_settings_node.rb +28 -0
- data/lib/active_admin/engine.rb +5 -0
- data/lib/active_admin/filters/active_filter.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +1 -1
- data/lib/active_admin/form_builder.rb +95 -60
- data/lib/active_admin/inputs/datepicker_input.rb +7 -0
- data/lib/active_admin/menu.rb +2 -8
- data/lib/active_admin/menu_item.rb +3 -31
- data/lib/active_admin/namespace.rb +18 -6
- data/lib/active_admin/namespace_settings.rb +107 -0
- data/lib/active_admin/orm/active_record/comments.rb +11 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +1 -1
- data/lib/active_admin/resource/action_items.rb +6 -1
- data/lib/active_admin/resource_controller/decorators.rb +3 -3
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/router.rb +89 -84
- data/lib/active_admin/scope.rb +5 -1
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +2 -3
- data/lib/active_admin/views/components/menu.rb +32 -0
- data/lib/active_admin/views/components/menu_item.rb +58 -0
- data/lib/active_admin/views/components/scopes.rb +11 -4
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/site_title.rb +5 -6
- data/lib/active_admin/views/components/table_for.rb +1 -10
- data/lib/active_admin/views/components/tabs.rb +4 -1
- data/lib/active_admin/views/footer.rb +2 -6
- data/lib/active_admin/views/header.rb +3 -15
- data/lib/active_admin/views/index_as_blog.rb +1 -1
- data/lib/active_admin/views/index_as_grid.rb +25 -25
- data/lib/active_admin/views/index_as_table.rb +6 -6
- data/lib/active_admin/views/pages/base.rb +27 -53
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/bug_report_templates/active_admin_master.rb +2 -3
- data/tasks/application_generator.rb +48 -0
- data/tasks/gemfiles.rake +8 -0
- data/tasks/lint.rake +96 -7
- data/tasks/local.rake +10 -8
- data/tasks/test.rake +30 -16
- metadata +26 -440
- data/.travis.yml +0 -51
- data/features/action_item.feature +0 -73
- data/features/authorization.feature +0 -64
- data/features/authorization_cancan.feature +0 -52
- data/features/authorization_pundit.feature +0 -37
- data/features/belongs_to.feature +0 -124
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -178
- data/features/comments/viewing_index.feature +0 -19
- data/features/create_another.feature +0 -55
- data/features/dashboard.feature +0 -16
- data/features/decorators.feature +0 -43
- data/features/development_reloading.feature +0 -28
- data/features/edit_page.feature +0 -116
- data/features/favicon.feature +0 -20
- data/features/first_boot.feature +0 -16
- data/features/footer.feature +0 -28
- data/features/global_navigation.feature +0 -29
- data/features/i18n.feature +0 -55
- data/features/index/batch_actions.feature +0 -218
- data/features/index/filters.feature +0 -250
- data/features/index/format_as_csv.feature +0 -220
- data/features/index/formats.feature +0 -88
- data/features/index/index_as_block.feature +0 -15
- data/features/index/index_as_blog.feature +0 -69
- data/features/index/index_as_grid.feature +0 -45
- data/features/index/index_as_table.feature +0 -291
- data/features/index/index_blank_slate.feature +0 -83
- data/features/index/index_parameters.feature +0 -75
- data/features/index/index_scope_to.feature +0 -56
- data/features/index/index_scopes.feature +0 -285
- data/features/index/page_title.feature +0 -41
- data/features/index/pagination.feature +0 -63
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -72
- data/features/meta_tags.feature +0 -21
- data/features/new_page.feature +0 -136
- data/features/registering_assets.feature +0 -38
- data/features/registering_pages.feature +0 -237
- data/features/registering_resources.feature +0 -33
- data/features/renamed_resource.feature +0 -30
- data/features/root_to.feature +0 -17
- data/features/show/attributes_table_title.feature +0 -54
- data/features/show/columns.feature +0 -40
- data/features/show/default_content.feature +0 -44
- data/features/show/page_title.feature +0 -58
- data/features/show/tabs.feature +0 -33
- data/features/sidebar_sections.feature +0 -210
- data/features/site_title.feature +0 -47
- data/features/specifying_actions.feature +0 -118
- data/features/step_definitions/action_item_steps.rb +0 -7
- data/features/step_definitions/action_link_steps.rb +0 -19
- data/features/step_definitions/additional_web_steps.rb +0 -81
- data/features/step_definitions/asset_steps.rb +0 -15
- data/features/step_definitions/attribute_steps.rb +0 -18
- data/features/step_definitions/attributes_table_title_steps.rb +0 -11
- data/features/step_definitions/batch_action_steps.rb +0 -81
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- data/features/step_definitions/column_steps.rb +0 -8
- data/features/step_definitions/comment_steps.rb +0 -32
- data/features/step_definitions/configuration_steps.rb +0 -100
- data/features/step_definitions/dashboard_steps.rb +0 -15
- data/features/step_definitions/factory_steps.rb +0 -35
- data/features/step_definitions/filter_steps.rb +0 -47
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/footer_steps.rb +0 -11
- data/features/step_definitions/format_steps.rb +0 -56
- data/features/step_definitions/i18n_steps.rb +0 -11
- data/features/step_definitions/index_scope_steps.rb +0 -29
- data/features/step_definitions/index_views_steps.rb +0 -3
- data/features/step_definitions/layout_steps.rb +0 -3
- data/features/step_definitions/member_link_steps.rb +0 -7
- data/features/step_definitions/menu_steps.rb +0 -11
- data/features/step_definitions/meta_tag_steps.rb +0 -3
- data/features/step_definitions/pagination_steps.rb +0 -15
- data/features/step_definitions/sidebar_steps.rb +0 -11
- data/features/step_definitions/site_title_steps.rb +0 -17
- data/features/step_definitions/tab_steps.rb +0 -8
- data/features/step_definitions/table_steps.rb +0 -116
- data/features/step_definitions/user_steps.rb +0 -52
- data/features/step_definitions/web_steps.rb +0 -86
- data/features/sti_resource.feature +0 -65
- data/features/strong_parameters.feature +0 -69
- data/features/support/env.rb +0 -122
- data/features/support/paths.rb +0 -73
- data/features/support/regular_env.rb +0 -7
- data/features/support/reload_env.rb +0 -7
- data/features/support/selectors.rb +0 -45
- data/features/users/logging_in.feature +0 -36
- data/features/users/logging_out.feature +0 -13
- data/features/users/resetting_password.feature +0 -34
- data/gemfiles/rails_52.gemfile +0 -11
- data/lib/active_admin/helpers/settings.rb +0 -114
- data/spec/bug_report_templates_spec.rb +0 -26
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
- data/spec/javascripts/fixtures/checkboxes.html +0 -9
- data/spec/javascripts/fixtures/flashes.html +0 -2
- data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
- data/spec/javascripts/helpers/SpecHelper.js +0 -3
- data/spec/javascripts/support/jasmine.yml +0 -74
- data/spec/javascripts/support/jasmine_runner.rb +0 -19
- data/spec/rails_helper.rb +0 -59
- data/spec/requests/default_namespace_spec.rb +0 -81
- data/spec/requests/memory_spec.rb +0 -25
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -1
- data/spec/support/active_admin_integration_spec_helper.rb +0 -73
- data/spec/support/active_admin_request_helpers.rb +0 -39
- data/spec/support/rails_template.rb +0 -153
- data/spec/support/rails_template_with_data.rb +0 -327
- data/spec/support/templates/admin/stores.rb +0 -7
- data/spec/support/templates/en.yml +0 -8
- data/spec/support/templates/manifest.js +0 -3
- data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
- data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
- data/spec/support/templates/policies/admin_user_policy.rb +0 -11
- data/spec/support/templates/policies/application_policy.rb +0 -44
- data/spec/support/templates/policies/category_policy.rb +0 -7
- data/spec/support/templates/policies/post_policy.rb +0 -15
- data/spec/support/templates/policies/store_policy.rb +0 -11
- data/spec/support/templates/policies/user_policy.rb +0 -11
- data/spec/support/templates/post_decorator.rb +0 -24
- data/spec/unit/abstract_view_factory_spec.rb +0 -78
- data/spec/unit/action_builder_spec.rb +0 -158
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -184
- data/spec/unit/asset_registration_spec.rb +0 -81
- data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
- data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
- data/spec/unit/authorization/index_overriding_spec.rb +0 -23
- data/spec/unit/auto_link_spec.rb +0 -93
- data/spec/unit/batch_actions/resource_spec.rb +0 -84
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -76
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -176
- data/spec/unit/component_spec.rb +0 -18
- data/spec/unit/config_shared_examples.rb +0 -59
- data/spec/unit/controller_filters_spec.rb +0 -41
- data/spec/unit/csv_builder_spec.rb +0 -313
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -110
- data/spec/unit/dsl_spec.rb +0 -120
- data/spec/unit/filters/active_filter_spec.rb +0 -189
- data/spec/unit/filters/active_spec.rb +0 -24
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
- data/spec/unit/filters/resource_spec.rb +0 -128
- data/spec/unit/form_builder_spec.rb +0 -990
- data/spec/unit/generators/install_spec.rb +0 -31
- data/spec/unit/helpers/collection_spec.rb +0 -68
- data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
- data/spec/unit/helpers/scope_chain_spec.rb +0 -35
- data/spec/unit/helpers/settings_spec.rb +0 -30
- data/spec/unit/i18n_spec.rb +0 -29
- data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
- data/spec/unit/menu_collection_spec.rb +0 -62
- data/spec/unit/menu_item_spec.rb +0 -141
- data/spec/unit/menu_spec.rb +0 -71
- data/spec/unit/namespace/authorization_spec.rb +0 -27
- data/spec/unit/namespace/register_page_spec.rb +0 -99
- data/spec/unit/namespace/register_resource_spec.rb +0 -162
- data/spec/unit/namespace_spec.rb +0 -124
- data/spec/unit/order_clause_spec.rb +0 -81
- data/spec/unit/page_controller_spec.rb +0 -5
- data/spec/unit/page_spec.rb +0 -128
- data/spec/unit/pretty_format_spec.rb +0 -82
- data/spec/unit/pundit_adapter_spec.rb +0 -98
- data/spec/unit/resource/action_items_spec.rb +0 -69
- data/spec/unit/resource/attributes_spec.rb +0 -49
- data/spec/unit/resource/includes_spec.rb +0 -21
- data/spec/unit/resource/menu_spec.rb +0 -18
- data/spec/unit/resource/naming_spec.rb +0 -122
- data/spec/unit/resource/ordering_spec.rb +0 -35
- data/spec/unit/resource/page_presenters_spec.rb +0 -44
- data/spec/unit/resource/pagination_spec.rb +0 -38
- data/spec/unit/resource/routes_spec.rb +0 -125
- data/spec/unit/resource/scopes_spec.rb +0 -50
- data/spec/unit/resource/sidebars_spec.rb +0 -43
- data/spec/unit/resource_collection_spec.rb +0 -175
- data/spec/unit/resource_controller/data_access_spec.rb +0 -234
- data/spec/unit/resource_controller/decorators_spec.rb +0 -94
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
- data/spec/unit/resource_controller_spec.rb +0 -273
- data/spec/unit/resource_registration_spec.rb +0 -61
- data/spec/unit/resource_spec.rb +0 -320
- data/spec/unit/routing_spec.rb +0 -211
- data/spec/unit/scope_spec.rb +0 -209
- data/spec/unit/settings_spec.rb +0 -117
- data/spec/unit/view_factory_spec.rb +0 -19
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
- data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
- data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
- data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
- data/spec/unit/views/components/attributes_table_spec.rb +0 -271
- data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -187
- data/spec/unit/views/components/index_list_spec.rb +0 -49
- data/spec/unit/views/components/index_table_for_spec.rb +0 -127
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
- data/spec/unit/views/components/panel_spec.rb +0 -58
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
- data/spec/unit/views/components/site_title_spec.rb +0 -76
- data/spec/unit/views/components/status_tag_spec.rb +0 -265
- data/spec/unit/views/components/table_for_spec.rb +0 -436
- data/spec/unit/views/components/tabs_spec.rb +0 -67
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
- data/spec/unit/views/index_as_blog_spec.rb +0 -76
- data/spec/unit/views/pages/form_spec.rb +0 -54
- data/spec/unit/views/pages/index_spec.rb +0 -60
- data/spec/unit/views/pages/layout_spec.rb +0 -59
- data/spec/unit/views/pages/show_spec.rb +0 -32
- data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
- data/tasks/parallel_tests.rake +0 -66
@@ -1,15 +1,19 @@
|
|
1
1
|
module ActiveAdmin
|
2
|
-
class AbstractViewFactory
|
3
|
-
@@default_views = {}
|
2
|
+
class AbstractViewFactory < SettingsNode
|
4
3
|
|
5
4
|
def self.register(view_hash)
|
6
5
|
view_hash.each do |view_key, view_class|
|
7
|
-
|
6
|
+
super view_key, view_class
|
7
|
+
add_writer(view_key)
|
8
|
+
send "#{view_key}=", view_class
|
8
9
|
end
|
9
10
|
end
|
10
11
|
|
11
|
-
def
|
12
|
-
|
12
|
+
def self.add_writer(name)
|
13
|
+
define_singleton_method("#{name}=") do |value|
|
14
|
+
value.builder_method name
|
15
|
+
instance_variable_set :"@#{name}", value
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
# Register a new view key with the view factory
|
@@ -25,61 +29,19 @@ module ActiveAdmin
|
|
25
29
|
# another_view: OtherViewClass
|
26
30
|
#
|
27
31
|
def register(view_hash)
|
28
|
-
|
29
|
-
@views[view_key] = view_class
|
30
|
-
end
|
32
|
+
self.class.register view_hash
|
31
33
|
end
|
32
34
|
|
33
35
|
def default_for(key)
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
def has_key?(key)
|
38
|
-
@views.has_key?(key.to_sym) || @@default_views.has_key?(key.to_sym)
|
36
|
+
self.class.send key
|
39
37
|
end
|
40
38
|
|
41
39
|
def [](key)
|
42
|
-
|
40
|
+
send key
|
43
41
|
end
|
44
42
|
|
45
43
|
def []=(key, value)
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
def respond_to_missing?(method, include_private)
|
50
|
-
key = key_from_method_name(method)
|
51
|
-
if has_key?(key)
|
52
|
-
true
|
53
|
-
else
|
54
|
-
super
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def method_missing(method, *args)
|
61
|
-
key = key_from_method_name(method)
|
62
|
-
if has_key?(key)
|
63
|
-
if method.to_s.include?('=')
|
64
|
-
set_view_for_key key, args.first
|
65
|
-
else
|
66
|
-
get_view_for_key key
|
67
|
-
end
|
68
|
-
else
|
69
|
-
super
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def key_from_method_name(method)
|
74
|
-
method.to_s.tr('=', '').to_sym
|
75
|
-
end
|
76
|
-
|
77
|
-
def get_view_for_key(key)
|
78
|
-
@views[key.to_sym] || @@default_views[key.to_sym]
|
79
|
-
end
|
80
|
-
|
81
|
-
def set_view_for_key(key, view)
|
82
|
-
@views[key.to_sym] = view
|
44
|
+
send "#{key}=", value
|
83
45
|
end
|
84
46
|
end
|
85
47
|
end
|
@@ -1,151 +1,47 @@
|
|
1
1
|
require 'active_admin/router'
|
2
2
|
require 'active_admin/reloader'
|
3
|
-
require 'active_admin/
|
3
|
+
require 'active_admin/application_settings'
|
4
|
+
require 'active_admin/namespace_settings'
|
4
5
|
|
5
6
|
module ActiveAdmin
|
6
7
|
class Application
|
7
|
-
include Settings
|
8
|
-
include Settings::Inheritance
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
#
|
15
|
-
# config.default_namespace = :super_admin
|
16
|
-
#
|
17
|
-
setting :default_namespace, :admin
|
9
|
+
class << self
|
10
|
+
def setting(name, default)
|
11
|
+
ApplicationSettings.register name, default
|
12
|
+
end
|
18
13
|
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
def inheritable_setting(name, default)
|
15
|
+
NamespaceSettings.register name, default
|
16
|
+
end
|
22
17
|
end
|
23
18
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
setting :load_paths, [File.expand_path('app/admin', Rails.root)]
|
28
|
-
|
29
|
-
# The default number of resources to display on index pages
|
30
|
-
inheritable_setting :default_per_page, 30
|
31
|
-
|
32
|
-
# The max number of resources to display on index pages and batch exports
|
33
|
-
inheritable_setting :max_per_page, 10_000
|
34
|
-
|
35
|
-
# The title which gets displayed in the main layout
|
36
|
-
inheritable_setting :site_title, ""
|
37
|
-
|
38
|
-
# Set the site title link href (defaults to AA dashboard)
|
39
|
-
inheritable_setting :site_title_link, ""
|
40
|
-
|
41
|
-
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
42
|
-
inheritable_setting :site_title_image, ""
|
43
|
-
|
44
|
-
# Set the site footer text (defaults to Powered by ActiveAdmin text with version)
|
45
|
-
inheritable_setting :footer, ""
|
46
|
-
|
47
|
-
# Set a favicon
|
48
|
-
inheritable_setting :favicon, false
|
49
|
-
|
50
|
-
# Additional meta tags to place in head of logged in pages.
|
51
|
-
inheritable_setting :meta_tags, {}
|
52
|
-
|
53
|
-
# Additional meta tags to place in head of logged out pages.
|
54
|
-
inheritable_setting :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
|
55
|
-
|
56
|
-
# The view factory to use to generate all the view classes. Take
|
57
|
-
# a look at ActiveAdmin::ViewFactory
|
58
|
-
inheritable_setting :view_factory, ActiveAdmin::ViewFactory.new
|
59
|
-
|
60
|
-
# The method to call in controllers to get the current user
|
61
|
-
inheritable_setting :current_user_method, false
|
62
|
-
|
63
|
-
# The method to call in the controllers to ensure that there
|
64
|
-
# is a currently authenticated admin user
|
65
|
-
inheritable_setting :authentication_method, false
|
66
|
-
|
67
|
-
# The path to log user's out with. If set to a symbol, we assume
|
68
|
-
# that it's a method to call which returns the path
|
69
|
-
inheritable_setting :logout_link_path, :destroy_admin_user_session_path
|
70
|
-
|
71
|
-
# The method to use when generating the link for user logout
|
72
|
-
inheritable_setting :logout_link_method, :get
|
73
|
-
|
74
|
-
# Whether the batch actions are enabled or not
|
75
|
-
inheritable_setting :batch_actions, false
|
76
|
-
|
77
|
-
# Whether filters are enabled
|
78
|
-
inheritable_setting :filters, true
|
79
|
-
|
80
|
-
# The namespace root.
|
81
|
-
inheritable_setting :root_to, 'dashboard#index'
|
82
|
-
|
83
|
-
# Options that a passed to root_to.
|
84
|
-
inheritable_setting :root_to_options, {}
|
85
|
-
|
86
|
-
# Options passed to the routes, i.e. { path: '/custom' }
|
87
|
-
inheritable_setting :route_options, {}
|
88
|
-
|
89
|
-
# Display breadcrumbs
|
90
|
-
inheritable_setting :breadcrumb, true
|
91
|
-
|
92
|
-
# Display create another checkbox on a new page
|
93
|
-
# @return [Boolean] (true)
|
94
|
-
inheritable_setting :create_another, false
|
95
|
-
|
96
|
-
# Default CSV options
|
97
|
-
inheritable_setting :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
|
98
|
-
|
99
|
-
# Default Download Links options
|
100
|
-
inheritable_setting :download_links, true
|
101
|
-
|
102
|
-
# The authorization adapter to use
|
103
|
-
inheritable_setting :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
104
|
-
|
105
|
-
# A proc to be used when a user is not authorized to view the current resource
|
106
|
-
inheritable_setting :on_unauthorized_access, :rescue_active_admin_access_denied
|
107
|
-
|
108
|
-
# A regex to detect unsupported browser, set to false to disable
|
109
|
-
inheritable_setting :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
110
|
-
|
111
|
-
# Whether to display 'Current Filters' on search screen
|
112
|
-
inheritable_setting :current_filters, true
|
113
|
-
|
114
|
-
# class to handle ordering
|
115
|
-
inheritable_setting :order_clause, ActiveAdmin::OrderClause
|
116
|
-
|
117
|
-
# default show_count for scopes
|
118
|
-
inheritable_setting :scopes_show_count, true
|
119
|
-
|
120
|
-
# Request parameters that are permitted by default
|
121
|
-
inheritable_setting :permitted_params, [
|
122
|
-
:utf8, :_method, :authenticity_token, :commit, :id
|
123
|
-
]
|
124
|
-
|
125
|
-
# Set flash message keys that shouldn't show in ActiveAdmin
|
126
|
-
inheritable_setting :flash_keys_to_except, ['timedout']
|
19
|
+
def settings
|
20
|
+
@settings ||= SettingsNode.build(ApplicationSettings)
|
21
|
+
end
|
127
22
|
|
128
|
-
|
129
|
-
|
23
|
+
def namespace_settings
|
24
|
+
@namespace_settings ||= SettingsNode.build(NamespaceSettings)
|
25
|
+
end
|
130
26
|
|
131
|
-
|
132
|
-
|
27
|
+
def respond_to_missing?(method, include_private = false)
|
28
|
+
[settings, namespace_settings].any? { |sets| sets.respond_to?(method) } || super
|
29
|
+
end
|
133
30
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
:title,
|
144
|
-
:email,
|
145
|
-
:to_s ]
|
31
|
+
def method_missing(method, *args)
|
32
|
+
if settings.respond_to?(method)
|
33
|
+
settings.send(method, *args)
|
34
|
+
elsif namespace_settings.respond_to?(method)
|
35
|
+
namespace_settings.send(method, *args)
|
36
|
+
else
|
37
|
+
super
|
38
|
+
end
|
39
|
+
end
|
146
40
|
|
147
|
-
|
148
|
-
|
41
|
+
attr_reader :namespaces
|
42
|
+
def initialize
|
43
|
+
@namespaces = Namespace::Store.new
|
44
|
+
end
|
149
45
|
|
150
46
|
# == Deprecated Settings
|
151
47
|
|
@@ -239,14 +135,18 @@ module ActiveAdmin
|
|
239
135
|
load_paths.flatten.compact.uniq.flat_map{ |path| Dir["#{path}/**/*.rb"] }
|
240
136
|
end
|
241
137
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
#
|
138
|
+
# Creates all the necessary routes for the ActiveAdmin configurations
|
139
|
+
#
|
140
|
+
# Use this within the routes.rb file:
|
141
|
+
#
|
142
|
+
# Application.routes.draw do |map|
|
143
|
+
# ActiveAdmin.routes(self)
|
144
|
+
# end
|
145
|
+
#
|
146
|
+
# @param rails_router [ActionDispatch::Routing::Mapper]
|
247
147
|
def routes(rails_router)
|
248
148
|
load!
|
249
|
-
|
149
|
+
Router.new(router: rails_router, namespaces: namespaces).apply
|
250
150
|
end
|
251
151
|
|
252
152
|
# Adds before, around and after filters to all controllers.
|
@@ -268,7 +168,7 @@ module ActiveAdmin
|
|
268
168
|
controllers
|
269
169
|
end
|
270
170
|
|
271
|
-
|
171
|
+
private
|
272
172
|
|
273
173
|
def register_default_assets
|
274
174
|
stylesheets['active_admin.css'] = { media: 'screen' }
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'active_admin/settings_node'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
class ApplicationSettings < SettingsNode
|
5
|
+
|
6
|
+
# The default namespace to put controllers and routes inside. Set this
|
7
|
+
# in config/initializers/active_admin.rb using:
|
8
|
+
#
|
9
|
+
# config.default_namespace = :super_admin
|
10
|
+
#
|
11
|
+
register :default_namespace, :admin
|
12
|
+
|
13
|
+
register :app_path, Rails.root
|
14
|
+
|
15
|
+
# Load paths for admin configurations. Add folders to this load path
|
16
|
+
# to load up other resources for administration. External gems can
|
17
|
+
# include their paths in this load path to provide active_admin UIs
|
18
|
+
register :load_paths, [File.expand_path('app/admin', Rails.root)]
|
19
|
+
|
20
|
+
# Set default localize format for Date/Time values
|
21
|
+
register :localize_format, :long
|
22
|
+
|
23
|
+
# Active Admin makes educated guesses when displaying objects, this is
|
24
|
+
# the list of methods it tries calling in order
|
25
|
+
# Note that Formtastic also has 'collection_label_methods' similar to this
|
26
|
+
# used by auto generated dropdowns in filter or belongs_to field of Active Admin
|
27
|
+
register :display_name_methods, [ :display_name,
|
28
|
+
:full_name,
|
29
|
+
:name,
|
30
|
+
:username,
|
31
|
+
:login,
|
32
|
+
:title,
|
33
|
+
:email,
|
34
|
+
:to_s ]
|
35
|
+
|
36
|
+
# To make debugging easier, by default don't stream in development
|
37
|
+
register :disable_streaming_in, ['development']
|
38
|
+
end
|
39
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module ActiveAdmin
|
2
2
|
class BaseController < ::InheritedResources::Base
|
3
3
|
module Authorization
|
4
|
-
include MethodOrProcHelper
|
5
4
|
extend ActiveSupport::Concern
|
6
5
|
|
7
6
|
ACTIONS_DICTIONARY = {
|
@@ -100,7 +99,7 @@ module ActiveAdmin
|
|
100
99
|
end
|
101
100
|
|
102
101
|
def dispatch_active_admin_access_denied(exception)
|
103
|
-
|
102
|
+
instance_exec(self, exception, &active_admin_namespace.on_unauthorized_access.to_proc)
|
104
103
|
end
|
105
104
|
|
106
105
|
def rescue_active_admin_access_denied(exception)
|
@@ -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 = StringSymbolOrProcSetting.new(current_batch_action.inputs).value(self).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
|
@@ -134,6 +134,14 @@ module ActiveAdmin
|
|
134
134
|
end
|
135
135
|
|
136
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
|
+
|
137
145
|
def parameterize(string)
|
138
146
|
if Dependency.rails5?
|
139
147
|
string.parameterize separator: '_'
|
@@ -6,30 +6,5 @@ module ActiveAdmin
|
|
6
6
|
ActiveSupport::Deprecation.warn "Active Admin: #{message}", callstack
|
7
7
|
end
|
8
8
|
|
9
|
-
# Deprecate a method.
|
10
|
-
#
|
11
|
-
# @param [Module] klass the Class or Module to deprecate the method on
|
12
|
-
# @param [Symbol] method the method to deprecate
|
13
|
-
# @param [String] message the message to display to the end user
|
14
|
-
#
|
15
|
-
# Example:
|
16
|
-
#
|
17
|
-
# class MyClass
|
18
|
-
# def my_method
|
19
|
-
# # ...
|
20
|
-
# end
|
21
|
-
# ActiveAdmin::Deprecation.deprecate self, :my_method,
|
22
|
-
# "MyClass#my_method is being removed in the next release"
|
23
|
-
# end
|
24
|
-
#
|
25
|
-
def deprecate(klass, method, message)
|
26
|
-
klass.send :define_method, "deprecated_#{method}", klass.instance_method(method)
|
27
|
-
|
28
|
-
klass.send :define_method, method do |*args|
|
29
|
-
ActiveAdmin::Deprecation.warn "#{message}", caller
|
30
|
-
send "deprecated_#{method}", *args
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
9
|
end
|
35
10
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
|
3
|
+
class DynamicSetting
|
4
|
+
def self.build(setting, type)
|
5
|
+
(type ? klass(type) : self).new(setting)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.klass(type)
|
9
|
+
klass = "#{type.to_s.camelcase}Setting"
|
10
|
+
raise ArgumentError, "Unknown type: #{type}" unless ActiveAdmin.const_defined?(klass)
|
11
|
+
ActiveAdmin.const_get(klass)
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(setting)
|
15
|
+
@setting = setting
|
16
|
+
end
|
17
|
+
|
18
|
+
def value(*_args)
|
19
|
+
@setting
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Many configuration options (Ex: site_title, title_image) could either be
|
24
|
+
# static (String), methods (Symbol) or procs (Proc). This wrapper takes care of
|
25
|
+
# returning the content when String or using instance_eval when Symbol or Proc.
|
26
|
+
#
|
27
|
+
class StringSymbolOrProcSetting < DynamicSetting
|
28
|
+
def value(context = self)
|
29
|
+
case @setting
|
30
|
+
when Symbol, Proc
|
31
|
+
context.instance_eval(&@setting)
|
32
|
+
else
|
33
|
+
@setting
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|