activeadmin 1.4.3 → 2.9.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 +359 -25
- data/CONTRIBUTING.md +53 -74
- data/README.md +44 -11
- 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/_forms.scss +2 -14
- 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/_status_tags.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- 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/javascript/active_admin/ext/jquery-ui.js +7 -0
- data/app/javascript/active_admin/ext/jquery.js +9 -0
- data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/datepicker.js +16 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/javascript/active_admin/initializers/has-many.js +95 -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/javascript/active_admin/initializers/tabs.js +6 -0
- data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
- data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
- 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 +16 -6
- data/config/locales/ar.yml +9 -8
- data/config/locales/az.yml +138 -0
- 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 +19 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en-CA.yml +4 -3
- data/config/locales/en-GB.yml +4 -3
- data/config/locales/en.yml +4 -3
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +3 -1
- data/config/locales/es.yml +6 -5
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/fr.yml +6 -5
- 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 +19 -0
- data/config/locales/ja.yml +4 -3
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +3 -2
- data/config/locales/lv.yml +3 -2
- 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 +60 -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 +7 -5
- data/config/locales/zh-CN.yml +1 -0
- data/config/locales/zh-TW.yml +1 -0
- data/docs/0-installation.md +28 -4
- data/docs/1-general-configuration.md +20 -0
- data/docs/11-decorators.md +16 -5
- data/docs/12-arbre-components.md +13 -0
- data/docs/13-authorization-adapter.md +6 -6
- data/docs/2-resource-customization.md +11 -2
- data/docs/3-index-pages.md +1 -1
- data/docs/3-index-pages/index-as-table.md +7 -0
- data/docs/5-forms.md +6 -1
- data/docs/6-show-pages.md +12 -0
- data/docs/9-batch-actions.md +2 -2
- data/docs/CNAME +1 -1
- data/docs/Gemfile +2 -3
- data/docs/Gemfile.lock +126 -116
- data/docs/_config.yml +2 -0
- data/docs/_includes/top-menu.html +2 -2
- data/docs/documentation.md +1 -1
- data/docs/index.html +110 -9
- data/docs/stylesheets/main.css +29 -0
- data/lib/active_admin.rb +67 -63
- data/lib/active_admin/application.rb +20 -27
- data/lib/active_admin/application_settings.rb +6 -3
- data/lib/active_admin/asset_registration.rb +0 -8
- data/lib/active_admin/authorization_adapter.rb +3 -3
- data/lib/active_admin/base_controller.rb +10 -10
- data/lib/active_admin/base_controller/authorization.rb +15 -15
- data/lib/active_admin/batch_actions/controller.rb +4 -4
- data/lib/active_admin/batch_actions/resource_extension.rb +15 -10
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +3 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +6 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +3 -3
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/cancan_adapter.rb +1 -1
- data/lib/active_admin/collection_decorator.rb +31 -0
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +14 -9
- data/lib/active_admin/dependency.rb +13 -85
- data/lib/active_admin/devise.rb +5 -5
- data/lib/active_admin/dsl.rb +2 -9
- data/lib/active_admin/dynamic_settings_node.rb +2 -2
- data/lib/active_admin/engine.rb +10 -8
- data/lib/active_admin/error.rb +4 -4
- data/lib/active_admin/filters.rb +7 -7
- data/lib/active_admin/filters/active.rb +1 -1
- data/lib/active_admin/filters/active_filter.rb +10 -10
- data/lib/active_admin/filters/active_sidebar.rb +9 -5
- data/lib/active_admin/filters/forms.rb +7 -7
- data/lib/active_admin/filters/formtastic_addons.rb +2 -7
- data/lib/active_admin/filters/resource_extension.rb +28 -4
- data/lib/active_admin/form_builder.rb +26 -22
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/helpers/optional_display.rb +2 -2
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +2 -2
- data/lib/active_admin/inputs/filters/base.rb +1 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +6 -6
- data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
- data/lib/active_admin/inputs/filters/date_range_input.rb +15 -12
- data/lib/active_admin/inputs/filters/select_input.rb +2 -2
- data/lib/active_admin/localizers.rb +1 -1
- data/lib/active_admin/localizers/resource_localizer.rb +3 -3
- data/lib/active_admin/menu.rb +6 -3
- data/lib/active_admin/menu_item.rb +7 -7
- data/lib/active_admin/namespace.rb +12 -12
- data/lib/active_admin/namespace_settings.rb +27 -8
- data/lib/active_admin/order_clause.rb +2 -2
- data/lib/active_admin/orm/active_record.rb +1 -1
- data/lib/active_admin/orm/active_record/comments.rb +23 -23
- data/lib/active_admin/orm/active_record/comments/comment.rb +4 -4
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +29 -24
- data/lib/active_admin/page.rb +1 -1
- 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 +22 -9
- data/lib/active_admin/resource.rb +34 -20
- data/lib/active_admin/resource/action_items.rb +5 -5
- data/lib/active_admin/resource/attributes.rb +8 -5
- data/lib/active_admin/resource/belongs_to.rb +8 -3
- data/lib/active_admin/resource/controllers.rb +1 -1
- data/lib/active_admin/resource/menu.rb +5 -5
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +5 -5
- data/lib/active_admin/resource/routes.rb +25 -14
- data/lib/active_admin/resource/scope_to.rb +7 -7
- data/lib/active_admin/resource/scopes.rb +3 -3
- data/lib/active_admin/resource/sidebars.rb +2 -2
- data/lib/active_admin/resource_collection.rb +2 -2
- data/lib/active_admin/resource_controller.rb +13 -10
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/data_access.rb +1 -1
- data/lib/active_admin/resource_controller/decorators.rb +7 -29
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/streaming.rb +7 -6
- data/lib/active_admin/resource_dsl.rb +11 -9
- data/lib/active_admin/router.rb +3 -2
- data/lib/active_admin/scope.rb +15 -11
- 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_factory.rb +17 -17
- data/lib/active_admin/view_helpers.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
- data/lib/active_admin/view_helpers/display_helper.rb +16 -7
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
- data/lib/active_admin/view_helpers/fields_for.rb +2 -2
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +2 -0
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +12 -6
- data/lib/active_admin/views/components/attributes_table.rb +8 -8
- data/lib/active_admin/views/components/blank_slate.rb +1 -1
- data/lib/active_admin/views/components/dropdown_menu.rb +8 -8
- data/lib/active_admin/views/components/index_list.rb +3 -3
- data/lib/active_admin/views/components/menu.rb +1 -1
- data/lib/active_admin/views/components/menu_item.rb +4 -4
- data/lib/active_admin/views/components/paginated_collection.rb +21 -20
- data/lib/active_admin/views/components/panel.rb +1 -1
- data/lib/active_admin/views/components/scopes.rb +7 -5
- data/lib/active_admin/views/components/sidebar_section.rb +0 -3
- data/lib/active_admin/views/components/site_title.rb +1 -1
- data/lib/active_admin/views/components/status_tag.rb +13 -26
- data/lib/active_admin/views/components/table_for.rb +20 -19
- data/lib/active_admin/views/components/tabs.rb +13 -4
- data/lib/active_admin/views/footer.rb +3 -2
- data/lib/active_admin/views/header.rb +2 -2
- data/lib/active_admin/views/index_as_blog.rb +1 -1
- data/lib/active_admin/views/index_as_grid.rb +1 -1
- data/lib/active_admin/views/index_as_table.rb +27 -19
- data/lib/active_admin/views/pages/base.rb +18 -11
- data/lib/active_admin/views/pages/index.rb +15 -13
- data/lib/active_admin/views/tabbed_navigation.rb +2 -2
- data/lib/active_admin/views/title_bar.rb +1 -1
- data/lib/activeadmin.rb +1 -1
- 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/assets/templates/active_admin.scss +2 -2
- data/lib/generators/active_admin/devise/devise_generator.rb +5 -5
- data/lib/generators/active_admin/install/install_generator.rb +18 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
- 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 +3 -3
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
- 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
- data/lib/ransack_ext.rb +9 -9
- 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 +108 -127
- data/.circleci/config.yml +0 -572
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -16
- data/.mdlrc +0 -1
- data/.rspec +0 -1
- data/.rspec_parallel +0 -2
- data/.rubocop.yml +0 -99
- data/.simplecov +0 -9
- data/.yardopts +0 -7
- data/Gemfile +0 -30
- data/Gemfile.common +0 -26
- data/Gemfile.lock +0 -433
- data/Rakefile +0 -24
- data/activeadmin.gemspec +0 -32
- 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.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/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 -339
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_50.gemfile.lock +0 -353
- data/gemfiles/rails_51.gemfile +0 -10
- data/gemfiles/rails_51.gemfile.lock +0 -353
- 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 -50
- 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/release.rake +0 -6
- data/tasks/test.rake +0 -42
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "active_admin/helpers/collection"
|
2
|
+
require "active_admin/view_helpers/method_or_proc_helper"
|
3
3
|
|
4
4
|
module ActiveAdmin
|
5
5
|
module Views
|
@@ -17,7 +17,7 @@ module ActiveAdmin
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def tag_name
|
20
|
-
|
20
|
+
"div"
|
21
21
|
end
|
22
22
|
|
23
23
|
def build(scopes, options = {})
|
@@ -26,6 +26,8 @@ module ActiveAdmin
|
|
26
26
|
group_scopes.each do |scope|
|
27
27
|
build_scope(scope, options) if call_method_or_exec_proc(scope.display_if_block)
|
28
28
|
end
|
29
|
+
|
30
|
+
nil
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
@@ -36,9 +38,9 @@ module ActiveAdmin
|
|
36
38
|
li class: classes_for_scope(scope) do
|
37
39
|
params = request.query_parameters.except :page, :scope, :commit, :format
|
38
40
|
|
39
|
-
a href: url_for(scope: scope.id, params: params), class:
|
41
|
+
a href: url_for(scope: scope.id, params: params), class: "table_tools_button" do
|
40
42
|
text_node scope_name(scope)
|
41
|
-
span class:
|
43
|
+
span class: "count" do
|
42
44
|
"(#{get_scope_count(scope)})"
|
43
45
|
end if options[:scope_count] && scope.show_count
|
44
46
|
end
|
@@ -1,11 +1,8 @@
|
|
1
|
-
require 'active_admin/helpers/output_safety_helper'
|
2
|
-
|
3
1
|
module ActiveAdmin
|
4
2
|
module Views
|
5
3
|
|
6
4
|
class SidebarSection < Panel
|
7
5
|
builder_method :sidebar_section
|
8
|
-
include OutputSafetyHelper
|
9
6
|
|
10
7
|
# Takes a ActiveAdmin::SidebarSection instance
|
11
8
|
def build(section)
|
@@ -5,11 +5,11 @@ module ActiveAdmin
|
|
5
5
|
builder_method :status_tag
|
6
6
|
|
7
7
|
def tag_name
|
8
|
-
|
8
|
+
"span"
|
9
9
|
end
|
10
10
|
|
11
11
|
def default_class_name
|
12
|
-
|
12
|
+
"status_tag"
|
13
13
|
end
|
14
14
|
|
15
15
|
# @overload status_tag(status, options = {})
|
@@ -28,11 +28,7 @@ module ActiveAdmin
|
|
28
28
|
# status_tag('active', class: 'important', id: 'status_123', label: 'on')
|
29
29
|
# # => <span class='status_tag active important' id='status_123'>on</span>
|
30
30
|
#
|
31
|
-
def build(
|
32
|
-
options = args.extract_options!
|
33
|
-
status = args[0]
|
34
|
-
type = args[1]
|
35
|
-
|
31
|
+
def build(status, options = {})
|
36
32
|
label = options.delete(:label)
|
37
33
|
classes = options.delete(:class)
|
38
34
|
status = convert_to_boolean_status(status)
|
@@ -46,19 +42,6 @@ module ActiveAdmin
|
|
46
42
|
super(content, options)
|
47
43
|
|
48
44
|
add_class(status_to_class(status)) if status
|
49
|
-
|
50
|
-
if type
|
51
|
-
Deprecation.warn <<-MSG.strip_heredoc
|
52
|
-
The `type` parameter has been deprecated. Provide the "#{type}" type as
|
53
|
-
a class instead. For example, `status_tag(status, :#{type}, class: "abc")`
|
54
|
-
would change to `status_tag(status, class: "#{type} abc")`. Also note that
|
55
|
-
the "#{type}" CSS rule will be removed too, so you'll have to provide
|
56
|
-
the styles yourself. See https://github.com/activeadmin/activeadmin/blob/master/CHANGELOG.md#110-
|
57
|
-
for more information.
|
58
|
-
MSG
|
59
|
-
add_class(type.to_s)
|
60
|
-
end
|
61
|
-
|
62
45
|
add_class(classes) if classes
|
63
46
|
end
|
64
47
|
|
@@ -66,10 +49,12 @@ module ActiveAdmin
|
|
66
49
|
|
67
50
|
def convert_to_boolean_status(status)
|
68
51
|
case status
|
69
|
-
when true,
|
70
|
-
|
71
|
-
when false,
|
72
|
-
|
52
|
+
when true, "true"
|
53
|
+
"Yes"
|
54
|
+
when false, "false"
|
55
|
+
"No"
|
56
|
+
when nil
|
57
|
+
"Unset"
|
73
58
|
else
|
74
59
|
status
|
75
60
|
end
|
@@ -77,10 +62,12 @@ module ActiveAdmin
|
|
77
62
|
|
78
63
|
def status_to_class(status)
|
79
64
|
case status
|
65
|
+
when "Unset"
|
66
|
+
"unset no"
|
80
67
|
when String, Symbol
|
81
|
-
status.to_s.titleize.gsub(/\s/,
|
68
|
+
status.to_s.titleize.gsub(/\s/, "").underscore
|
82
69
|
else
|
83
|
-
|
70
|
+
""
|
84
71
|
end
|
85
72
|
end
|
86
73
|
end
|
@@ -4,17 +4,18 @@ module ActiveAdmin
|
|
4
4
|
builder_method :table_for
|
5
5
|
|
6
6
|
def tag_name
|
7
|
-
|
7
|
+
"table"
|
8
8
|
end
|
9
9
|
|
10
10
|
def build(obj, *attrs)
|
11
|
-
options
|
12
|
-
@sortable
|
13
|
-
@collection
|
11
|
+
options = attrs.extract_options!
|
12
|
+
@sortable = options.delete(:sortable)
|
13
|
+
@collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj]
|
14
14
|
@resource_class = options.delete(:i18n)
|
15
15
|
@resource_class ||= @collection.klass if @collection.respond_to? :klass
|
16
|
-
|
17
|
-
@
|
16
|
+
|
17
|
+
@columns = []
|
18
|
+
@row_class = options.delete(:row_class)
|
18
19
|
|
19
20
|
build_table
|
20
21
|
super(options)
|
@@ -22,13 +23,13 @@ module ActiveAdmin
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def columns(*attrs)
|
25
|
-
attrs.each {|attr| column(attr) }
|
26
|
+
attrs.each { |attr| column(attr) }
|
26
27
|
end
|
27
28
|
|
28
29
|
def column(*args, &block)
|
29
30
|
options = default_options.merge(args.extract_options!)
|
30
31
|
title = args[0]
|
31
|
-
data
|
32
|
+
data = args[1] || args[0]
|
32
33
|
|
33
34
|
col = Column.new(title, data, @resource_class, options, &block)
|
34
35
|
@columns << col
|
@@ -64,12 +65,12 @@ module ActiveAdmin
|
|
64
65
|
end
|
65
66
|
|
66
67
|
def build_table_header(col)
|
67
|
-
classes
|
68
|
+
classes = Arbre::HTML::ClassList.new
|
68
69
|
sort_key = sortable? && col.sortable? && col.sort_key
|
69
|
-
params
|
70
|
+
params = request.query_parameters.except :page, :order, :commit, :format
|
70
71
|
|
71
|
-
classes <<
|
72
|
-
classes << "sorted-#{current_sort[1]}"
|
72
|
+
classes << "sortable" if sort_key
|
73
|
+
classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
|
73
74
|
classes << col.html_class
|
74
75
|
|
75
76
|
if sort_key
|
@@ -85,13 +86,13 @@ module ActiveAdmin
|
|
85
86
|
@tbody = tbody do
|
86
87
|
# Build enough rows for our collection
|
87
88
|
@collection.each do |elem|
|
88
|
-
classes = [helpers.cycle(
|
89
|
+
classes = [helpers.cycle("odd", "even")]
|
89
90
|
|
90
91
|
if @row_class
|
91
92
|
classes << @row_class.call(elem)
|
92
93
|
end
|
93
94
|
|
94
|
-
tr(class: classes.flatten.join(
|
95
|
+
tr(class: classes.flatten.join(" "), id: dom_id_for(elem))
|
95
96
|
end
|
96
97
|
end
|
97
98
|
end
|
@@ -125,8 +126,8 @@ module ActiveAdmin
|
|
125
126
|
# 'desc' it will return 'asc'
|
126
127
|
def order_for_sort_key(sort_key)
|
127
128
|
current_key, current_order = current_sort
|
128
|
-
return
|
129
|
-
current_order ==
|
129
|
+
return "desc" unless current_key == sort_key
|
130
|
+
current_order == "desc" ? "asc" : "desc"
|
130
131
|
end
|
131
132
|
|
132
133
|
def default_options
|
@@ -137,7 +138,7 @@ module ActiveAdmin
|
|
137
138
|
|
138
139
|
class Column
|
139
140
|
|
140
|
-
attr_accessor :title, :data
|
141
|
+
attr_accessor :title, :data, :html_class
|
141
142
|
|
142
143
|
def initialize(*args, &block)
|
143
144
|
@options = args.extract_options!
|
@@ -147,9 +148,9 @@ module ActiveAdmin
|
|
147
148
|
if @options.has_key?(:class)
|
148
149
|
html_classes << @options.delete(:class)
|
149
150
|
elsif @title.present?
|
150
|
-
html_classes << "col-#{
|
151
|
+
html_classes << "col-#{@title.to_s.parameterize(separator: "_")}"
|
151
152
|
end
|
152
|
-
@html_class = html_classes.join(
|
153
|
+
@html_class = html_classes.join(" ")
|
153
154
|
@data = args[1] || args[0]
|
154
155
|
@data = block if block
|
155
156
|
@resource_class = args[2]
|
@@ -10,12 +10,13 @@ module ActiveAdmin
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def build(&block)
|
13
|
-
@menu = ul(class:
|
14
|
-
@tabs_content = div(class:
|
13
|
+
@menu = ul(class: "nav nav-tabs", role: "tablist")
|
14
|
+
@tabs_content = div(class: "tab-content")
|
15
15
|
end
|
16
16
|
|
17
17
|
def build_menu_item(title, options, &block)
|
18
|
-
fragment = options.fetch(:id, title
|
18
|
+
fragment = options.fetch(:id, fragmentize(title))
|
19
|
+
|
19
20
|
html_options = options.fetch(:html_options, {})
|
20
21
|
li html_options do
|
21
22
|
link_to title, "##{fragment}"
|
@@ -23,9 +24,17 @@ module ActiveAdmin
|
|
23
24
|
end
|
24
25
|
|
25
26
|
def build_content_item(title, options, &block)
|
26
|
-
options = options.reverse_merge(id: title
|
27
|
+
options = options.reverse_merge(id: fragmentize(title))
|
27
28
|
div(options, &block)
|
28
29
|
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def fragmentize(string)
|
34
|
+
result = string.parameterize
|
35
|
+
result = CGI.escape(string) if result.blank?
|
36
|
+
result
|
37
|
+
end
|
29
38
|
end
|
30
39
|
end
|
31
40
|
end
|
@@ -20,8 +20,9 @@ module ActiveAdmin
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def powered_by_message
|
23
|
-
I18n.t(
|
24
|
-
active_admin
|
23
|
+
I18n.t(
|
24
|
+
"active_admin.powered_by",
|
25
|
+
active_admin: link_to("Active Admin", "https://activeadmin.info"),
|
25
26
|
version: ActiveAdmin::VERSION).html_safe
|
26
27
|
end
|
27
28
|
|
@@ -10,8 +10,8 @@ module ActiveAdmin
|
|
10
10
|
@utility_menu = @namespace.fetch_menu(:utility_navigation)
|
11
11
|
|
12
12
|
site_title @namespace
|
13
|
-
global_navigation @menu, class:
|
14
|
-
utility_navigation @utility_menu, id: "utility_nav", class:
|
13
|
+
global_navigation @menu, class: "header-item tabs"
|
14
|
+
utility_navigation @utility_menu, id: "utility_nav", class: "header-item tabs"
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
@@ -192,6 +192,13 @@ module ActiveAdmin
|
|
192
192
|
# end
|
193
193
|
# ```
|
194
194
|
#
|
195
|
+
# You can also define associated objects to include outside of the
|
196
|
+
# `scoped_collection` method:
|
197
|
+
#
|
198
|
+
# ```ruby
|
199
|
+
# includes :publisher
|
200
|
+
# ```
|
201
|
+
#
|
195
202
|
# Then it's simple to sort by any Publisher attribute from within the index table:
|
196
203
|
#
|
197
204
|
# ```ruby
|
@@ -271,13 +278,13 @@ module ActiveAdmin
|
|
271
278
|
# Display a column for checkbox
|
272
279
|
def selectable_column
|
273
280
|
return unless active_admin_config.batch_actions.any?
|
274
|
-
column resource_selection_toggle_cell, class:
|
281
|
+
column resource_selection_toggle_cell, class: "col-selectable", sortable: false do |resource|
|
275
282
|
resource_selection_cell resource
|
276
283
|
end
|
277
284
|
end
|
278
285
|
|
279
286
|
def index_column(start_value = 1)
|
280
|
-
column
|
287
|
+
column "#", class: "col-index", sortable: false do |resource|
|
281
288
|
@collection.offset_value + @collection.index(resource) + start_value
|
282
289
|
end
|
283
290
|
end
|
@@ -286,9 +293,9 @@ module ActiveAdmin
|
|
286
293
|
def id_column
|
287
294
|
raise "#{resource_class.name} has no primary_key!" unless resource_class.primary_key
|
288
295
|
column(resource_class.human_attribute_name(resource_class.primary_key), sortable: resource_class.primary_key) do |resource|
|
289
|
-
if controller.action_methods.include?(
|
296
|
+
if controller.action_methods.include?("show")
|
290
297
|
link_to resource.id, resource_path(resource), class: "resource_id_link"
|
291
|
-
elsif controller.action_methods.include?(
|
298
|
+
elsif controller.action_methods.include?("edit")
|
292
299
|
link_to resource.id, edit_resource_path(resource), class: "resource_id_link"
|
293
300
|
else
|
294
301
|
resource.id
|
@@ -297,7 +304,7 @@ module ActiveAdmin
|
|
297
304
|
end
|
298
305
|
|
299
306
|
def default_actions
|
300
|
-
raise
|
307
|
+
raise "`default_actions` is no longer provided in ActiveAdmin 1.x. Use `actions` instead."
|
301
308
|
end
|
302
309
|
|
303
310
|
# Add links to perform actions.
|
@@ -337,12 +344,12 @@ module ActiveAdmin
|
|
337
344
|
#
|
338
345
|
# ```
|
339
346
|
def actions(options = {}, &block)
|
340
|
-
name
|
341
|
-
defaults
|
342
|
-
dropdown
|
343
|
-
dropdown_name = options.delete(:dropdown_name) { I18n.t
|
347
|
+
name = options.delete(:name) { "" }
|
348
|
+
defaults = options.delete(:defaults) { true }
|
349
|
+
dropdown = options.delete(:dropdown) { false }
|
350
|
+
dropdown_name = options.delete(:dropdown_name) { I18n.t "active_admin.dropdown_actions.button_label", default: "Actions" }
|
344
351
|
|
345
|
-
options[:class] ||=
|
352
|
+
options[:class] ||= "col-actions"
|
346
353
|
|
347
354
|
column name, options do |resource|
|
348
355
|
if dropdown
|
@@ -365,23 +372,24 @@ module ActiveAdmin
|
|
365
372
|
private
|
366
373
|
|
367
374
|
def defaults(resource, options = {})
|
368
|
-
|
369
|
-
|
375
|
+
localizer = ActiveAdmin::Localizers.resource(active_admin_config)
|
376
|
+
if controller.action_methods.include?("show") && authorized?(ActiveAdmin::Auth::READ, resource)
|
377
|
+
item localizer.t(:view), resource_path(resource), class: "view_link #{options[:css_class]}", title: localizer.t(:view)
|
370
378
|
end
|
371
|
-
if controller.action_methods.include?(
|
372
|
-
item
|
379
|
+
if controller.action_methods.include?("edit") && authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
380
|
+
item localizer.t(:edit), edit_resource_path(resource), class: "edit_link #{options[:css_class]}", title: localizer.t(:edit)
|
373
381
|
end
|
374
|
-
if controller.action_methods.include?(
|
375
|
-
item
|
376
|
-
|
382
|
+
if controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, resource)
|
383
|
+
item localizer.t(:delete), resource_path(resource), class: "delete_link #{options[:css_class]}", title: localizer.t(:delete),
|
384
|
+
method: :delete, data: { confirm: localizer.t(:delete_confirmation) }
|
377
385
|
end
|
378
386
|
end
|
379
387
|
|
380
388
|
class TableActions < ActiveAdmin::Component
|
381
389
|
builder_method :table_actions
|
382
390
|
|
383
|
-
def item *args
|
384
|
-
text_node link_to
|
391
|
+
def item *args, **kwargs
|
392
|
+
text_node link_to(*args, **kwargs)
|
385
393
|
end
|
386
394
|
end
|
387
395
|
end # IndexTableFor
|
@@ -4,6 +4,7 @@ module ActiveAdmin
|
|
4
4
|
class Base < Arbre::HTML::Document
|
5
5
|
|
6
6
|
def build(*args)
|
7
|
+
set_attribute :lang, I18n.locale
|
7
8
|
build_active_admin_head
|
8
9
|
build_page
|
9
10
|
end
|
@@ -14,7 +15,7 @@ module ActiveAdmin
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def main_content
|
17
|
-
I18n.t(
|
18
|
+
I18n.t("active_admin.main_content", model: title).html_safe
|
18
19
|
end
|
19
20
|
|
20
21
|
private
|
@@ -25,16 +26,20 @@ module ActiveAdmin
|
|
25
26
|
within head do
|
26
27
|
html_title [title, helpers.active_admin_namespace.site_title(self)].compact.join(" | ")
|
27
28
|
|
29
|
+
text_node(active_admin_namespace.head)
|
30
|
+
|
28
31
|
active_admin_application.stylesheets.each do |style, options|
|
29
|
-
|
32
|
+
stylesheet_tag = active_admin_namespace.use_webpacker ? stylesheet_pack_tag(style, **options) : stylesheet_link_tag(style, **options)
|
33
|
+
text_node(stylesheet_tag.html_safe) if stylesheet_tag
|
30
34
|
end
|
31
35
|
|
32
36
|
active_admin_namespace.meta_tags.each do |name, content|
|
33
|
-
text_node(
|
37
|
+
text_node(meta(name: name, content: content))
|
34
38
|
end
|
35
39
|
|
36
40
|
active_admin_application.javascripts.each do |path|
|
37
|
-
|
41
|
+
javascript_tag = active_admin_namespace.use_webpacker ? javascript_pack_tag(path) : javascript_include_tag(path)
|
42
|
+
text_node(javascript_tag)
|
38
43
|
end
|
39
44
|
|
40
45
|
if active_admin_namespace.favicon
|
@@ -60,9 +65,9 @@ module ActiveAdmin
|
|
60
65
|
def body_classes
|
61
66
|
Arbre::HTML::ClassList.new [
|
62
67
|
params[:action],
|
63
|
-
params[:controller].tr(
|
64
|
-
|
65
|
-
active_admin_namespace.name.to_s +
|
68
|
+
params[:controller].tr("/", "_"),
|
69
|
+
"active_admin", "logged_in",
|
70
|
+
active_admin_namespace.name.to_s + "_namespace"
|
66
71
|
]
|
67
72
|
end
|
68
73
|
|
@@ -76,14 +81,16 @@ module ActiveAdmin
|
|
76
81
|
build_flash_messages
|
77
82
|
div id: "active_admin_content", class: (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
|
78
83
|
build_main_content_wrapper
|
79
|
-
sidebar sidebar_sections_for_action, id:
|
84
|
+
sidebar sidebar_sections_for_action, id: "sidebar" unless skip_sidebar?
|
80
85
|
end
|
81
86
|
end
|
82
87
|
|
83
88
|
def build_flash_messages
|
84
|
-
div class:
|
85
|
-
flash_messages.each do |type,
|
86
|
-
|
89
|
+
div class: "flashes" do
|
90
|
+
flash_messages.each do |type, messages|
|
91
|
+
[*messages].each do |message|
|
92
|
+
div message, class: "flash flash_#{type}"
|
93
|
+
end
|
87
94
|
end
|
88
95
|
end
|
89
96
|
end
|