activeadmin 1.3.0 → 2.13.1
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 +764 -135
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +83 -61
- data/README.md +73 -19
- data/app/assets/javascripts/active_admin/base.js +524 -0
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +3 -25
- 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 +25 -123
- data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- 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 +17 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -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 +98 -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 +2 -2
- 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 +2 -2
- data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
- data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
- data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- 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.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +17 -7
- 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 +29 -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 +23 -4
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +3 -1
- data/config/locales/es.yml +26 -6
- data/config/locales/fa.yml +1 -0
- data/config/locales/fi.yml +2 -1
- 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 +23 -0
- data/config/locales/ja.yml +4 -3
- data/config/locales/ko.yml +2 -1
- 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 +16 -5
- data/config/locales/nl.yml +13 -1
- data/config/locales/pl.yml +72 -3
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/pt-PT.yml +1 -0
- data/config/locales/ro.yml +4 -2
- data/config/locales/ru.yml +3 -0
- data/config/locales/sk.yml +60 -0
- data/config/locales/sv-SE.yml +1 -0
- data/config/locales/tr.yml +10 -0
- data/config/locales/uk.yml +3 -0
- data/config/locales/vi.yml +7 -5
- data/config/locales/zh-CN.yml +34 -5
- data/config/locales/zh-TW.yml +1 -0
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +29 -5
- data/docs/1-general-configuration.md +36 -1
- data/docs/10-custom-pages.md +14 -0
- data/docs/11-decorators.md +16 -5
- data/docs/12-arbre-components.md +41 -1
- data/docs/13-authorization-adapter.md +41 -22
- data/docs/2-resource-customization.md +19 -5
- 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 +12 -5
- data/docs/3-index-pages.md +18 -1
- data/docs/5-forms.md +25 -5
- data/docs/6-show-pages.md +12 -0
- data/docs/8-custom-actions.md +12 -1
- data/docs/9-batch-actions.md +2 -2
- data/docs/CNAME +1 -1
- data/docs/Gemfile +4 -2
- data/docs/Gemfile.lock +283 -0
- data/docs/_config.yml +3 -1
- data/docs/_includes/toc.html +1 -1
- data/docs/_includes/top-menu.html +9 -1
- data/docs/documentation.md +2 -2
- data/docs/images/tidelift.svg +14 -0
- data/docs/index.html +110 -9
- data/docs/stylesheets/main.css +55 -2
- data/lib/active_admin/abstract_view_factory.rb +14 -51
- data/lib/active_admin/application.rb +65 -172
- data/lib/active_admin/application_settings.rb +43 -0
- data/lib/active_admin/asset_registration.rb +1 -8
- data/lib/active_admin/authorization_adapter.rb +4 -3
- data/lib/active_admin/base_controller/authorization.rb +18 -18
- data/lib/active_admin/base_controller/menu.rb +1 -0
- data/lib/active_admin/base_controller.rb +12 -11
- data/lib/active_admin/batch_actions/controller.rb +6 -5
- data/lib/active_admin/batch_actions/resource_extension.rb +16 -10
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
- data/lib/active_admin/batch_actions.rb +1 -0
- data/lib/active_admin/callbacks.rb +2 -1
- data/lib/active_admin/cancan_adapter.rb +2 -1
- data/lib/active_admin/collection_decorator.rb +32 -0
- data/lib/active_admin/component.rb +1 -0
- data/lib/active_admin/controller_action.rb +3 -1
- data/lib/active_admin/csv_builder.rb +15 -23
- data/lib/active_admin/dependency.rb +14 -77
- data/lib/active_admin/deprecation.rb +1 -25
- data/lib/active_admin/devise.rb +16 -5
- data/lib/active_admin/dsl.rb +3 -9
- data/lib/active_admin/dynamic_setting.rb +39 -0
- data/lib/active_admin/dynamic_settings_node.rb +29 -0
- data/lib/active_admin/engine.rb +16 -7
- data/lib/active_admin/error.rb +5 -4
- data/lib/active_admin/filters/active.rb +2 -1
- data/lib/active_admin/filters/active_filter.rb +12 -11
- data/lib/active_admin/filters/active_sidebar.rb +8 -30
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +13 -9
- data/lib/active_admin/filters/formtastic_addons.rb +3 -7
- data/lib/active_admin/filters/resource_extension.rb +30 -5
- data/lib/active_admin/filters.rb +8 -7
- data/lib/active_admin/form_builder.rb +110 -70
- data/lib/active_admin/generators/boilerplate.rb +13 -4
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/i18n.rb +1 -0
- data/lib/active_admin/helpers/optional_display.rb +3 -2
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
- data/lib/active_admin/helpers/scope_chain.rb +2 -0
- data/lib/active_admin/inputs/datepicker_input.rb +10 -2
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +7 -6
- data/lib/active_admin/inputs/filters/base.rb +2 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
- data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
- data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
- data/lib/active_admin/inputs/filters/select_input.rb +3 -2
- data/lib/active_admin/inputs/filters/string_input.rb +1 -0
- data/lib/active_admin/inputs/filters/text_input.rb +1 -0
- data/lib/active_admin/inputs.rb +1 -0
- data/lib/active_admin/localizers/resource_localizer.rb +4 -3
- data/lib/active_admin/localizers.rb +2 -1
- data/lib/active_admin/menu.rb +9 -11
- data/lib/active_admin/menu_collection.rb +1 -0
- data/lib/active_admin/menu_item.rb +11 -38
- data/lib/active_admin/namespace.rb +33 -20
- data/lib/active_admin/namespace_settings.rb +127 -0
- data/lib/active_admin/order_clause.rb +3 -2
- data/lib/active_admin/orm/active_record/comments/comment.rb +5 -4
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +30 -24
- data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
- data/lib/active_admin/orm/active_record/comments.rb +35 -23
- data/lib/active_admin/orm/active_record.rb +2 -1
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +2 -1
- data/lib/active_admin/page_controller.rb +1 -0
- data/lib/active_admin/page_dsl.rb +2 -1
- data/lib/active_admin/page_presenter.rb +3 -1
- data/lib/active_admin/pundit_adapter.rb +73 -16
- data/lib/active_admin/resource/action_items.rb +12 -6
- data/lib/active_admin/resource/attributes.rb +9 -5
- data/lib/active_admin/resource/belongs_to.rb +9 -3
- data/lib/active_admin/resource/controllers.rb +2 -1
- data/lib/active_admin/resource/includes.rb +1 -0
- data/lib/active_admin/resource/menu.rb +6 -5
- data/lib/active_admin/resource/model.rb +16 -0
- data/lib/active_admin/resource/naming.rb +6 -5
- data/lib/active_admin/resource/ordering.rb +1 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -0
- data/lib/active_admin/resource/pagination.rb +1 -0
- data/lib/active_admin/resource/routes.rb +26 -14
- data/lib/active_admin/resource/scope_to.rb +8 -7
- data/lib/active_admin/resource/scopes.rb +4 -3
- data/lib/active_admin/resource/sidebars.rb +3 -2
- data/lib/active_admin/resource.rb +37 -22
- data/lib/active_admin/resource_collection.rb +3 -2
- data/lib/active_admin/resource_controller/action_builder.rb +11 -0
- data/lib/active_admin/resource_controller/data_access.rb +31 -5
- data/lib/active_admin/resource_controller/decorators.rb +10 -31
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +3 -0
- data/lib/active_admin/resource_controller/scoping.rb +2 -1
- data/lib/active_admin/resource_controller/sidebars.rb +1 -0
- data/lib/active_admin/resource_controller/streaming.rb +9 -7
- data/lib/active_admin/resource_controller.rb +14 -10
- data/lib/active_admin/resource_dsl.rb +16 -28
- data/lib/active_admin/router.rb +91 -84
- data/lib/active_admin/scope.rb +20 -11
- data/lib/active_admin/settings_node.rb +20 -0
- data/lib/active_admin/sidebar_section.rb +4 -1
- data/lib/active_admin/version.rb +2 -1
- data/lib/active_admin/view_factory.rb +18 -17
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +6 -5
- data/lib/active_admin/view_helpers/display_helper.rb +25 -8
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +3 -1
- data/lib/active_admin/view_helpers/fields_for.rb +3 -2
- data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +4 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
- data/lib/active_admin/view_helpers/title_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
- data/lib/active_admin/view_helpers.rb +2 -1
- data/lib/active_admin/views/action_items.rb +1 -0
- data/lib/active_admin/views/components/active_admin_form.rb +14 -8
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/lib/active_admin/views/components/attributes_table.rb +9 -8
- data/lib/active_admin/views/components/blank_slate.rb +2 -1
- data/lib/active_admin/views/components/columns.rb +1 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
- data/lib/active_admin/views/components/index_list.rb +4 -3
- data/lib/active_admin/views/components/menu.rb +33 -0
- data/lib/active_admin/views/components/menu_item.rb +59 -0
- data/lib/active_admin/views/components/paginated_collection.rb +22 -20
- data/lib/active_admin/views/components/panel.rb +2 -1
- data/lib/active_admin/views/components/scopes.rb +18 -8
- data/lib/active_admin/views/components/sidebar.rb +14 -0
- data/lib/active_admin/views/components/sidebar_section.rb +1 -3
- data/lib/active_admin/views/components/site_title.rb +7 -7
- data/lib/active_admin/views/components/status_tag.rb +14 -26
- data/lib/active_admin/views/components/table_for.rb +22 -29
- data/lib/active_admin/views/components/tabs.rb +18 -5
- data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
- data/lib/active_admin/views/footer.rb +6 -8
- data/lib/active_admin/views/header.rb +4 -15
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +3 -2
- data/lib/active_admin/views/index_as_grid.rb +27 -26
- data/lib/active_admin/views/index_as_table.rb +34 -25
- data/lib/active_admin/views/pages/base.rb +44 -60
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +16 -13
- data/lib/active_admin/views/pages/layout.rb +1 -0
- data/lib/active_admin/views/pages/page.rb +1 -0
- data/lib/active_admin/views/pages/show.rb +1 -0
- data/lib/active_admin/views/tabbed_navigation.rb +5 -59
- data/lib/active_admin/views/title_bar.rb +2 -1
- data/lib/active_admin/views.rb +2 -1
- data/lib/active_admin.rb +68 -63
- data/lib/activeadmin.rb +2 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -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 +6 -5
- data/lib/generators/active_admin/install/install_generator.rb +19 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +45 -3
- data/lib/generators/active_admin/install/templates/dashboard.rb +3 -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 +2 -1
- data/lib/generators/active_admin/page/templates/page.rb +1 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +4 -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 +27 -0
- data/lib/ransack_ext.rb +10 -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 +126 -558
- data/.github/ISSUE_TEMPLATE.md +0 -20
- data/.gitignore +0 -49
- data/.mdlrc +0 -1
- data/.rubocop.yml +0 -76
- data/.simplecov +0 -13
- data/.travis.yml +0 -51
- data/.yardopts +0 -7
- data/Gemfile +0 -58
- data/Rakefile +0 -54
- 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/codecov.yml +0 -25
- data/config/i18n-tasks.yml +0 -26
- data/config/mdl_style.rb +0 -9
- data/cucumber.yml +0 -3
- 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_42.gemfile +0 -10
- data/gemfiles/rails_50.gemfile +0 -10
- data/gemfiles/rails_51.gemfile +0 -10
- data/gemfiles/rails_52.gemfile +0 -11
- data/lib/active_admin/event.rb +0 -24
- data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
- data/lib/active_admin/helpers/settings.rb +0 -114
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/bug_report_templates/active_admin_master.rb +0 -112
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- 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/docs.rake +0 -64
- data/tasks/lint.rake +0 -21
- data/tasks/local.rake +0 -25
- data/tasks/parallel_tests.rake +0 -66
- data/tasks/test.rake +0 -29
@@ -0,0 +1,127 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/dynamic_settings_node"
|
3
|
+
|
4
|
+
module ActiveAdmin
|
5
|
+
class NamespaceSettings < DynamicSettingsNode
|
6
|
+
# The default number of resources to display on index pages
|
7
|
+
register :default_per_page, 30
|
8
|
+
|
9
|
+
# The max number of resources to display on index pages and batch exports
|
10
|
+
register :max_per_page, 10_000
|
11
|
+
|
12
|
+
# The title which gets displayed in the main layout
|
13
|
+
register :site_title, "", :string_symbol_or_proc
|
14
|
+
|
15
|
+
# Set the site title link href (defaults to AA dashboard)
|
16
|
+
register :site_title_link, ""
|
17
|
+
|
18
|
+
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
19
|
+
register :site_title_image, "", :string_symbol_or_proc
|
20
|
+
|
21
|
+
# Add to the site head
|
22
|
+
register :head, "", :string_symbol_or_proc
|
23
|
+
|
24
|
+
# Set the site footer text (defaults to Powered by ActiveAdmin text with version)
|
25
|
+
register :footer, "", :string_symbol_or_proc
|
26
|
+
|
27
|
+
# Set a favicon
|
28
|
+
register :favicon, false
|
29
|
+
|
30
|
+
# Additional meta tags to place in head of logged in pages
|
31
|
+
register :meta_tags, {}
|
32
|
+
|
33
|
+
# Additional meta tags to place in head of logged out pages
|
34
|
+
register :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
|
35
|
+
|
36
|
+
# The view factory to use to generate all the view classes. Take
|
37
|
+
# a look at ActiveAdmin::ViewFactory
|
38
|
+
register :view_factory, ActiveAdmin::ViewFactory.new
|
39
|
+
|
40
|
+
# The method to call in controllers to get the current user
|
41
|
+
register :current_user_method, false
|
42
|
+
|
43
|
+
# The method to call in the controllers to ensure that there
|
44
|
+
# is a currently authenticated admin user
|
45
|
+
register :authentication_method, false
|
46
|
+
|
47
|
+
# The path to log user's out with. If set to a symbol, we assume
|
48
|
+
# that it's a method to call which returns the path
|
49
|
+
register :logout_link_path, :destroy_admin_user_session_path
|
50
|
+
|
51
|
+
# The method to use when generating the link for user logout
|
52
|
+
register :logout_link_method, :get
|
53
|
+
|
54
|
+
# Whether the batch actions are enabled or not
|
55
|
+
register :batch_actions, false
|
56
|
+
|
57
|
+
# Whether filters are enabled
|
58
|
+
register :filters, true
|
59
|
+
|
60
|
+
# The namespace root
|
61
|
+
register :root_to, "dashboard#index"
|
62
|
+
|
63
|
+
# Options that are passed to root_to
|
64
|
+
register :root_to_options, {}
|
65
|
+
|
66
|
+
# Options passed to the routes, i.e. { path: '/custom' }
|
67
|
+
register :route_options, {}
|
68
|
+
|
69
|
+
# Display breadcrumbs
|
70
|
+
register :breadcrumb, true
|
71
|
+
|
72
|
+
# Display create another checkbox on a new page
|
73
|
+
# @return [Boolean] (true)
|
74
|
+
register :create_another, false
|
75
|
+
|
76
|
+
# Default CSV options
|
77
|
+
register :csv_options, { col_sep: ",", byte_order_mark: "\xEF\xBB\xBF" }
|
78
|
+
|
79
|
+
# Default Download Links options
|
80
|
+
register :download_links, true
|
81
|
+
|
82
|
+
# The authorization adapter to use
|
83
|
+
register :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
84
|
+
|
85
|
+
# A proc to be used when a user is not authorized to view the current resource
|
86
|
+
register :on_unauthorized_access, :rescue_active_admin_access_denied
|
87
|
+
|
88
|
+
# A regex to detect unsupported browser, set to false to disable
|
89
|
+
register :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
90
|
+
|
91
|
+
# Whether to display 'Current Filters' on search screen
|
92
|
+
register :current_filters, true
|
93
|
+
|
94
|
+
# class to handle ordering
|
95
|
+
register :order_clause, ActiveAdmin::OrderClause
|
96
|
+
|
97
|
+
# default show_count for scopes
|
98
|
+
register :scopes_show_count, true
|
99
|
+
|
100
|
+
# Request parameters that are permitted by default
|
101
|
+
register :permitted_params, [
|
102
|
+
:utf8, :_method, :authenticity_token, :commit, :id
|
103
|
+
]
|
104
|
+
|
105
|
+
# Set flash message keys that shouldn't show in ActiveAdmin
|
106
|
+
register :flash_keys_to_except, ["timedout"]
|
107
|
+
|
108
|
+
# Include association filters by default
|
109
|
+
register :include_default_association_filters, true
|
110
|
+
|
111
|
+
register :maximum_association_filter_arity, :unlimited
|
112
|
+
|
113
|
+
register :filter_columns_for_large_association, [
|
114
|
+
:display_name,
|
115
|
+
:full_name,
|
116
|
+
:name,
|
117
|
+
:username,
|
118
|
+
:login,
|
119
|
+
:title,
|
120
|
+
:email,
|
121
|
+
]
|
122
|
+
register :filter_method_for_large_association, "_starts_with"
|
123
|
+
|
124
|
+
# Switch between asset pipeline and webpacker assets
|
125
|
+
register :use_webpacker, false
|
126
|
+
end
|
127
|
+
end
|
@@ -1,9 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class OrderClause
|
3
4
|
attr_reader :field, :order, :active_admin_config
|
4
5
|
|
5
6
|
def initialize(active_admin_config, clause)
|
6
|
-
clause =~ /^([\w
|
7
|
+
clause =~ /^([\w\.]+)(->'\w+')?_(desc|asc)$/
|
7
8
|
@column = $1
|
8
9
|
@op = $2
|
9
10
|
@order = $3
|
@@ -20,7 +21,7 @@ module ActiveAdmin
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def to_sql
|
23
|
-
[table_column, @op,
|
24
|
+
[table_column, @op, " ", @order].compact.join
|
24
25
|
end
|
25
26
|
|
26
27
|
def table
|
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class Comment < ActiveRecord::Base
|
3
4
|
|
4
5
|
self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
|
5
6
|
|
6
|
-
belongs_to :resource, polymorphic: true
|
7
|
-
belongs_to :author,
|
7
|
+
belongs_to :resource, polymorphic: true, optional: true
|
8
|
+
belongs_to :author, polymorphic: true
|
8
9
|
|
9
10
|
validates_presence_of :body, :namespace, :resource
|
10
11
|
|
@@ -18,8 +19,8 @@ module ActiveAdmin
|
|
18
19
|
def self.find_for_resource_in_namespace(resource, namespace)
|
19
20
|
where(
|
20
21
|
resource_type: resource_type(resource),
|
21
|
-
resource_id:
|
22
|
-
namespace:
|
22
|
+
resource_id: resource.id,
|
23
|
+
namespace: namespace.to_s
|
23
24
|
).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
|
24
25
|
end
|
25
26
|
|
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/views"
|
3
|
+
require "active_admin/views/components/panel"
|
3
4
|
|
4
5
|
module ActiveAdmin
|
5
6
|
module Comments
|
@@ -11,82 +12,87 @@ module ActiveAdmin
|
|
11
12
|
attr_accessor :resource
|
12
13
|
|
13
14
|
def build(resource)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
|
16
|
+
@resource = resource
|
17
|
+
@comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
|
18
|
+
super(title, for: resource)
|
19
|
+
build_comments
|
20
|
+
end
|
18
21
|
end
|
19
22
|
|
20
23
|
protected
|
21
24
|
|
22
25
|
def title
|
23
|
-
I18n.t
|
26
|
+
I18n.t "active_admin.comments.title_content", count: @comments.total_count
|
24
27
|
end
|
25
28
|
|
26
29
|
def build_comments
|
27
30
|
if @comments.any?
|
28
31
|
@comments.each(&method(:build_comment))
|
29
|
-
div page_entries_info(@comments).html_safe, class:
|
32
|
+
div page_entries_info(@comments).html_safe, class: "pagination_information"
|
30
33
|
else
|
31
34
|
build_empty_message
|
32
35
|
end
|
33
36
|
|
34
37
|
text_node paginate @comments
|
35
|
-
|
38
|
+
|
39
|
+
if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
|
40
|
+
build_comment_form
|
41
|
+
end
|
36
42
|
end
|
37
43
|
|
38
44
|
def build_comment(comment)
|
39
45
|
div for: comment do
|
40
|
-
div class:
|
41
|
-
h4 class:
|
42
|
-
comment.author ? auto_link(comment.author) : I18n.t(
|
46
|
+
div class: "active_admin_comment_meta" do
|
47
|
+
h4 class: "active_admin_comment_author" do
|
48
|
+
comment.author ? auto_link(comment.author) : I18n.t("active_admin.comments.author_missing")
|
43
49
|
end
|
44
50
|
span pretty_format comment.created_at
|
45
51
|
if authorized?(ActiveAdmin::Auth::DESTROY, comment)
|
46
|
-
text_node link_to I18n.t(
|
52
|
+
text_node link_to I18n.t("active_admin.comments.delete"), comments_url(comment.id), method: :delete, data: { confirm: I18n.t("active_admin.comments.delete_confirmation") }
|
47
53
|
end
|
48
54
|
end
|
49
|
-
div class:
|
55
|
+
div class: "active_admin_comment_body" do
|
50
56
|
simple_format comment.body
|
51
57
|
end
|
52
58
|
end
|
53
59
|
end
|
54
60
|
|
55
61
|
def build_empty_message
|
56
|
-
span I18n.t(
|
62
|
+
span I18n.t("active_admin.comments.no_comments_yet"), class: "empty"
|
57
63
|
end
|
58
64
|
|
59
65
|
def comments_url(*args)
|
60
66
|
parts = []
|
61
67
|
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
62
68
|
parts << active_admin_namespace.comments_registration_name.underscore
|
63
|
-
parts <<
|
64
|
-
send parts.join(
|
69
|
+
parts << "path"
|
70
|
+
send parts.join("_"), *args
|
65
71
|
end
|
66
72
|
|
67
73
|
def comment_form_url
|
68
74
|
parts = []
|
69
75
|
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
70
76
|
parts << active_admin_namespace.comments_registration_name.underscore.pluralize
|
71
|
-
parts <<
|
72
|
-
send parts.join
|
77
|
+
parts << "path"
|
78
|
+
send parts.join "_"
|
73
79
|
end
|
74
80
|
|
75
81
|
def build_comment_form
|
76
82
|
active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
|
77
83
|
f.inputs do
|
78
|
-
f.input :resource_type, as: :hidden,
|
79
|
-
f.input :resource_id,
|
80
|
-
f.input :body,
|
84
|
+
f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
|
85
|
+
f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
|
86
|
+
f.input :body, label: false, input_html: { size: "80x8" }
|
81
87
|
end
|
82
88
|
f.actions do
|
83
|
-
f.action :submit, label: I18n.t(
|
89
|
+
f.action :submit, label: I18n.t("active_admin.comments.add")
|
84
90
|
end
|
85
91
|
end
|
86
92
|
end
|
87
93
|
|
88
94
|
def default_id_for_prefix
|
89
|
-
|
95
|
+
"active_admin_comments_for"
|
90
96
|
end
|
91
97
|
end
|
92
98
|
|
@@ -1,2 +1,3 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/views"
|
3
|
+
require "active_admin/orm/active_record/comments/views/active_admin_comments"
|
@@ -1,21 +1,33 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/orm/active_record/comments/views"
|
3
|
+
require "active_admin/orm/active_record/comments/show_page_helper"
|
4
|
+
require "active_admin/orm/active_record/comments/namespace_helper"
|
5
|
+
require "active_admin/orm/active_record/comments/resource_helper"
|
5
6
|
|
6
7
|
# Add the comments configuration
|
7
|
-
ActiveAdmin::Application.inheritable_setting :comments,
|
8
|
-
ActiveAdmin::Application.inheritable_setting :comments_registration_name,
|
9
|
-
ActiveAdmin::Application.inheritable_setting :comments_order,
|
10
|
-
ActiveAdmin::Application.inheritable_setting :comments_menu,
|
8
|
+
ActiveAdmin::Application.inheritable_setting :comments, true
|
9
|
+
ActiveAdmin::Application.inheritable_setting :comments_registration_name, "Comment"
|
10
|
+
ActiveAdmin::Application.inheritable_setting :comments_order, "created_at ASC"
|
11
|
+
ActiveAdmin::Application.inheritable_setting :comments_menu, {}
|
11
12
|
|
12
13
|
# Insert helper modules
|
13
14
|
ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
|
14
|
-
ActiveAdmin::Resource.send
|
15
|
+
ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
|
15
16
|
ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
|
16
17
|
|
17
18
|
# Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
|
18
|
-
ActiveAdmin.autoload :Comment,
|
19
|
+
ActiveAdmin.autoload :Comment, "active_admin/orm/active_record/comments/comment"
|
20
|
+
|
21
|
+
# Hint i18n-tasks about model and attribute translations used by default install
|
22
|
+
# i18n-tasks-use t('activerecord.models.comment')
|
23
|
+
# i18n-tasks-use t('activerecord.models.active_admin/comment')
|
24
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.author_type')
|
25
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.body')
|
26
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.created_at')
|
27
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.namespace')
|
28
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.resource_type')
|
29
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.updated_at')
|
30
|
+
# i18n-tasks-use t('active_admin.scopes.all')
|
19
31
|
|
20
32
|
# Walk through all the loaded namespaces after they're loaded
|
21
33
|
ActiveAdmin.after_load do |app|
|
@@ -25,7 +37,7 @@ ActiveAdmin.after_load do |app|
|
|
25
37
|
|
26
38
|
menu namespace.comments ? namespace.comments_menu : false
|
27
39
|
|
28
|
-
config.comments
|
40
|
+
config.comments = false # Don't allow comments on comments
|
29
41
|
config.batch_actions = false # The default destroy batch action isn't showing up anyway...
|
30
42
|
|
31
43
|
scope :all, show_count: false
|
@@ -40,7 +52,7 @@ ActiveAdmin.after_load do |app|
|
|
40
52
|
# Store the author and namespace
|
41
53
|
before_save do |comment|
|
42
54
|
comment.namespace = active_admin_config.namespace.name
|
43
|
-
comment.author
|
55
|
+
comment.author = current_active_admin_user
|
44
56
|
end
|
45
57
|
|
46
58
|
controller do
|
@@ -53,21 +65,21 @@ ActiveAdmin.after_load do |app|
|
|
53
65
|
def create
|
54
66
|
create! do |success, failure|
|
55
67
|
success.html do
|
56
|
-
|
68
|
+
redirect_back fallback_location: active_admin_root
|
57
69
|
end
|
58
70
|
failure.html do
|
59
|
-
flash[:error] = I18n.t
|
60
|
-
|
71
|
+
flash[:error] = I18n.t "active_admin.comments.errors.empty_text"
|
72
|
+
redirect_back fallback_location: active_admin_root
|
61
73
|
end
|
62
74
|
end
|
63
75
|
|
64
76
|
def destroy
|
65
77
|
destroy! do |success, failure|
|
66
78
|
success.html do
|
67
|
-
|
79
|
+
redirect_back fallback_location: active_admin_root
|
68
80
|
end
|
69
81
|
failure.html do
|
70
|
-
|
82
|
+
redirect_back fallback_location: active_admin_root
|
71
83
|
end
|
72
84
|
end
|
73
85
|
end
|
@@ -77,12 +89,12 @@ ActiveAdmin.after_load do |app|
|
|
77
89
|
permit_params :body, :namespace, :resource_id, :resource_type
|
78
90
|
|
79
91
|
index do
|
80
|
-
column I18n.t(
|
81
|
-
column I18n.t(
|
82
|
-
column I18n.t(
|
83
|
-
column I18n.t(
|
84
|
-
column I18n.t(
|
85
|
-
column I18n.t(
|
92
|
+
column I18n.t("active_admin.comments.resource_type"), :resource_type
|
93
|
+
column I18n.t("active_admin.comments.author_type"), :author_type
|
94
|
+
column I18n.t("active_admin.comments.resource"), :resource
|
95
|
+
column I18n.t("active_admin.comments.author"), :author
|
96
|
+
column I18n.t("active_admin.comments.body"), :body
|
97
|
+
column I18n.t("active_admin.comments.created_at"), :created_at
|
86
98
|
actions
|
87
99
|
end
|
88
100
|
end
|
@@ -1,5 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# ActiveRecord-specific plugins should be required here
|
2
3
|
|
3
4
|
ActiveAdmin::DatabaseHitDuringLoad.database_error_classes << ActiveRecord::StatementInvalid
|
4
5
|
|
5
|
-
require
|
6
|
+
require "active_admin/orm/active_record/comments"
|
data/lib/active_admin/page.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
# Page is the primary data storage for page configuration in Active Admin
|
3
4
|
#
|
@@ -65,7 +66,7 @@ module ActiveAdmin
|
|
65
66
|
end
|
66
67
|
|
67
68
|
def controller_name
|
68
|
-
[namespace.module_name, camelized_resource_name + "Controller"].compact.join(
|
69
|
+
[namespace.module_name, camelized_resource_name + "Controller"].compact.join("::")
|
69
70
|
end
|
70
71
|
|
71
72
|
# Override from `ActiveAdmin::Resource::Controllers`
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
# This is the class where all the register_page blocks are evaluated.
|
3
4
|
class PageDSL < DSL
|
@@ -21,7 +22,7 @@ module ActiveAdmin
|
|
21
22
|
def page_action(name, options = {}, &block)
|
22
23
|
config.page_actions << ControllerAction.new(name, options)
|
23
24
|
controller do
|
24
|
-
define_method(name, &block || Proc.new{})
|
25
|
+
define_method(name, &block || Proc.new {})
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
|
3
4
|
# A simple object that gets used to present different aspects of views
|
@@ -21,7 +22,8 @@ module ActiveAdmin
|
|
21
22
|
delegate :has_key?, :fetch, to: :options
|
22
23
|
|
23
24
|
def initialize(options = {}, &block)
|
24
|
-
@options
|
25
|
+
@options = options
|
26
|
+
@block = block
|
25
27
|
end
|
26
28
|
|
27
29
|
def [](key)
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
ActiveAdmin::Dependency.pundit!
|
2
3
|
|
3
|
-
require
|
4
|
+
require "pundit"
|
4
5
|
|
5
6
|
# Add a setting to the application to configure the pundit default policy
|
6
7
|
ActiveAdmin::Application.inheritable_setting :pundit_default_policy, nil
|
8
|
+
ActiveAdmin::Application.inheritable_setting :pundit_policy_namespace, nil
|
7
9
|
|
8
10
|
module ActiveAdmin
|
9
11
|
|
@@ -19,7 +21,7 @@ module ActiveAdmin
|
|
19
21
|
def scope_collection(collection, action = Auth::READ)
|
20
22
|
# scoping is appliable only to read/index action
|
21
23
|
# which means there is no way how to scope other actions
|
22
|
-
Pundit.policy_scope!(user, collection)
|
24
|
+
Pundit.policy_scope!(user, namespace(collection))
|
23
25
|
rescue Pundit::NotDefinedError => e
|
24
26
|
if default_policy_class && default_policy_class.const_defined?(:Scope)
|
25
27
|
default_policy_class::Scope.new(user, collection).resolve
|
@@ -29,25 +31,22 @@ module ActiveAdmin
|
|
29
31
|
end
|
30
32
|
|
31
33
|
def retrieve_policy(subject)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
rescue Pundit::NotDefinedError => e
|
38
|
-
if default_policy_class
|
39
|
-
default_policy(user, subject)
|
34
|
+
target = policy_target(subject)
|
35
|
+
if (policy = policy(namespace(target)) || compat_policy(subject))
|
36
|
+
policy
|
37
|
+
elsif default_policy_class
|
38
|
+
default_policy(subject)
|
40
39
|
else
|
41
|
-
raise
|
40
|
+
raise Pundit::NotDefinedError, "unable to find a compatible policy for `#{target}`"
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
44
|
def format_action(action, subject)
|
46
|
-
# https://github.com/
|
45
|
+
# https://github.com/varvet/pundit/blob/master/lib/generators/pundit/install/templates/application_policy.rb
|
47
46
|
case action
|
48
|
-
when Auth::CREATE
|
49
|
-
when Auth::UPDATE
|
50
|
-
when Auth::READ
|
47
|
+
when Auth::CREATE then :create?
|
48
|
+
when Auth::UPDATE then :update?
|
49
|
+
when Auth::READ then subject.is_a?(Class) ? :index? : :show?
|
51
50
|
when Auth::DESTROY then subject.is_a?(Class) ? :destroy_all? : :destroy?
|
52
51
|
else "#{action}?"
|
53
52
|
end
|
@@ -55,14 +54,72 @@ module ActiveAdmin
|
|
55
54
|
|
56
55
|
private
|
57
56
|
|
57
|
+
def policy_target(subject)
|
58
|
+
case subject
|
59
|
+
when nil then resource
|
60
|
+
when Class then subject.new
|
61
|
+
else subject
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# This method is needed to fallback to our previous policy searching logic.
|
66
|
+
# I.e.: when class name contains `default_policy_namespace` (eg: ShopAdmin)
|
67
|
+
# we should try to search it without namespace. This is because that's
|
68
|
+
# the only thing that worked in this case before we fixed our buggy namespace
|
69
|
+
# detection, so people are probably relying on it.
|
70
|
+
# This fallback might be removed in future versions of ActiveAdmin, so
|
71
|
+
# pundit_adapter search will work consistently with provided namespaces
|
72
|
+
def compat_policy(subject)
|
73
|
+
return unless default_policy_namespace
|
74
|
+
|
75
|
+
target = policy_target(subject)
|
76
|
+
|
77
|
+
return unless target.class.to_s.include?(default_policy_module) &&
|
78
|
+
(policy = policy(target))
|
79
|
+
|
80
|
+
policy_name = policy.class.to_s
|
81
|
+
|
82
|
+
Deprecation.warn "You have `pundit_policy_namespace` configured as `#{default_policy_namespace}`, " \
|
83
|
+
"but ActiveAdmin was unable to find policy #{default_policy_module}::#{policy_name}. " \
|
84
|
+
"#{policy_name} will be used instead. " \
|
85
|
+
"This behavior will be removed in future versions of ActiveAdmin. " \
|
86
|
+
"To fix this warning, move your #{policy_name} policy to the #{default_policy_module} namespace"
|
87
|
+
|
88
|
+
policy
|
89
|
+
end
|
90
|
+
|
91
|
+
def namespace(object)
|
92
|
+
if default_policy_namespace && !object.class.to_s.start_with?("#{default_policy_module}::")
|
93
|
+
[default_policy_namespace.to_sym, object]
|
94
|
+
else
|
95
|
+
object
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
58
99
|
def default_policy_class
|
59
100
|
ActiveAdmin.application.pundit_default_policy && ActiveAdmin.application.pundit_default_policy.constantize
|
60
101
|
end
|
61
102
|
|
62
|
-
def default_policy(
|
103
|
+
def default_policy(subject)
|
63
104
|
default_policy_class.new(user, subject)
|
64
105
|
end
|
65
106
|
|
107
|
+
def default_policy_namespace
|
108
|
+
ActiveAdmin.application.pundit_policy_namespace
|
109
|
+
end
|
110
|
+
|
111
|
+
def default_policy_module
|
112
|
+
default_policy_namespace.to_s.camelize
|
113
|
+
end
|
114
|
+
|
115
|
+
def policy(target)
|
116
|
+
policies[target] ||= Pundit.policy(user, target)
|
117
|
+
end
|
118
|
+
|
119
|
+
def policies
|
120
|
+
@policies ||= {}
|
121
|
+
end
|
122
|
+
|
66
123
|
end
|
67
124
|
|
68
125
|
end
|