activeadmin-rails 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.codeclimate.yml +64 -0
- data/.github/ISSUE_TEMPLATE.md +20 -0
- data/.github/workflows/ci.yaml +64 -0
- data/.github/workflows/daily.yaml +64 -0
- data/.github/workflows/pages.yml +72 -0
- data/.gitignore +23 -0
- data/.mdlrc +1 -0
- data/.rubocop.yml +84 -0
- data/.simplecov +13 -0
- data/.yardopts +7 -0
- data/CHANGELOG.md +514 -0
- data/CODE_OF_CONDUCT.md +22 -0
- data/CONTRIBUTING.md +190 -0
- data/Gemfile +51 -0
- data/LICENSE +20 -0
- data/README.md +84 -0
- data/Rakefile +56 -0
- data/activeadmin-rails.gemspec +39 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +89 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_base.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +338 -0
- data/app/assets/stylesheets/active_admin/_header.scss +156 -0
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +149 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +152 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
- data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +55 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +17 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
- data/app/assets/stylesheets/active_admin/components/_tables.scss +113 -0
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
- data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +34 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.scss +287 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +41 -0
- data/app/views/active_admin/_head.html.erb +14 -0
- data/app/views/active_admin/base/_action_items.html.arb +7 -0
- data/app/views/active_admin/base/_breadcrumbs.html.arb +8 -0
- data/app/views/active_admin/base/_footer.html.arb +11 -0
- data/app/views/active_admin/base/_header.html.arb +5 -0
- data/app/views/active_admin/base/_sidebar.html.arb +3 -0
- data/app/views/active_admin/base/_title_bar.html.arb +9 -0
- data/app/views/active_admin/base/_unsupported_browser.html.erb +5 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +15 -0
- data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +33 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
- data/app/views/active_admin/page/_content.html.arb +1 -0
- data/app/views/active_admin/page/index.html.arb +8 -0
- data/app/views/active_admin/resource/_filters_form.html.erb +1 -0
- data/app/views/active_admin/resource/_form.html.arb +11 -0
- data/app/views/active_admin/resource/_index_as_table.html.arb +8 -0
- data/app/views/active_admin/resource/_show.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +13 -0
- data/app/views/active_admin/resource/index.html.arb +101 -0
- data/app/views/active_admin/resource/new.html.arb +13 -0
- data/app/views/active_admin/resource/show.html.arb +22 -0
- data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
- data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin.html.erb +33 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +39 -0
- data/codecov.yml +25 -0
- data/config/i18n-tasks.yml +26 -0
- data/config/locales/ar.yml +133 -0
- data/config/locales/bg.yml +118 -0
- data/config/locales/bs.yml +119 -0
- data/config/locales/ca.yml +104 -0
- data/config/locales/cs.yml +107 -0
- data/config/locales/da.yml +135 -0
- data/config/locales/de-CH.yml +99 -0
- data/config/locales/de.yml +142 -0
- data/config/locales/el.yml +124 -0
- data/config/locales/en-CA.yml +137 -0
- data/config/locales/en-GB.yml +137 -0
- data/config/locales/en.yml +160 -0
- data/config/locales/eo.yml +143 -0
- data/config/locales/es-MX.yml +94 -0
- data/config/locales/es.yml +160 -0
- data/config/locales/fa.yml +117 -0
- data/config/locales/fi.yml +110 -0
- data/config/locales/fr.yml +139 -0
- data/config/locales/he.yml +140 -0
- data/config/locales/hr.yml +121 -0
- data/config/locales/hu.yml +96 -0
- data/config/locales/id.yml +133 -0
- data/config/locales/it.yml +142 -0
- data/config/locales/ja.yml +139 -0
- data/config/locales/ko.yml +118 -0
- data/config/locales/lt.yml +140 -0
- data/config/locales/lv.yml +90 -0
- data/config/locales/nb.yml +128 -0
- data/config/locales/nl.yml +142 -0
- data/config/locales/pl.yml +166 -0
- data/config/locales/pt-BR.yml +141 -0
- data/config/locales/pt-PT.yml +90 -0
- data/config/locales/ro.yml +94 -0
- data/config/locales/ru.yml +139 -0
- data/config/locales/sk.yml +107 -0
- data/config/locales/sv-SE.yml +133 -0
- data/config/locales/tr.yml +142 -0
- data/config/locales/uk.yml +134 -0
- data/config/locales/vi.yml +132 -0
- data/config/locales/zh-CN.yml +141 -0
- data/config/locales/zh-TW.yml +133 -0
- data/config/mdl_style.rb +9 -0
- data/cucumber.yml +6 -0
- data/docs/0-installation.md +121 -0
- data/docs/1-general-configuration.md +207 -0
- data/docs/10-custom-pages.md +148 -0
- data/docs/11-decorators.md +66 -0
- data/docs/12-arbo-components.md +200 -0
- data/docs/13-authorization-adapter.md +288 -0
- data/docs/14-gotchas.md +141 -0
- data/docs/2-resource-customization.md +480 -0
- data/docs/3-index-pages/custom-index.md +39 -0
- data/docs/3-index-pages/index-as-block.md +23 -0
- data/docs/3-index-pages/index-as-blog.md +73 -0
- data/docs/3-index-pages/index-as-grid.md +31 -0
- data/docs/3-index-pages/index-as-table.md +259 -0
- data/docs/3-index-pages.md +349 -0
- data/docs/4-csv-format.md +86 -0
- data/docs/5-forms.md +233 -0
- data/docs/6-show-pages.md +61 -0
- data/docs/7-sidebars.md +63 -0
- data/docs/8-custom-actions.md +160 -0
- data/docs/9-batch-actions.md +248 -0
- data/docs/CNAME +1 -0
- data/docs/Gemfile +7 -0
- data/docs/README.md +24 -0
- data/docs/_config.yml +15 -0
- data/docs/_includes/nav_footer_custom.html +3 -0
- data/docs/documentation.md +61 -0
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/index.css +835 -0
- data/docs/index.html +105 -0
- data/features/action_item.feature +73 -0
- data/features/authorization.feature +64 -0
- data/features/authorization_cancan.feature +52 -0
- data/features/authorization_pundit.feature +37 -0
- data/features/belongs_to.feature +124 -0
- data/features/breadcrumb.feature +76 -0
- data/features/comments/commenting.feature +178 -0
- data/features/comments/viewing_index.feature +18 -0
- data/features/create_another.feature +55 -0
- data/features/dashboard.feature +16 -0
- data/features/decorators.feature +43 -0
- data/features/development_reloading.feature +28 -0
- data/features/edit_page.feature +116 -0
- data/features/favicon.feature +20 -0
- data/features/filter_attributes.feature +46 -0
- data/features/first_boot.feature +16 -0
- data/features/footer.feature +29 -0
- data/features/global_navigation.feature +29 -0
- data/features/i18n.feature +55 -0
- data/features/index/batch_actions.feature +218 -0
- data/features/index/filters.feature +251 -0
- data/features/index/format_as_csv.feature +273 -0
- data/features/index/formats.feature +88 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +69 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +291 -0
- data/features/index/index_blank_slate.feature +83 -0
- data/features/index/index_parameters.feature +75 -0
- data/features/index/index_scope_to.feature +56 -0
- data/features/index/index_scopes.feature +325 -0
- data/features/index/page_title.feature +41 -0
- data/features/index/pagination.feature +63 -0
- data/features/index/switch_index_view.feature +73 -0
- data/features/menu.feature +85 -0
- data/features/meta_tags.feature +21 -0
- data/features/new_page.feature +136 -0
- data/features/registering_assets.feature +34 -0
- data/features/registering_pages.feature +237 -0
- data/features/registering_resources.feature +33 -0
- data/features/renamed_resource.feature +29 -0
- data/features/root_to.feature +18 -0
- data/features/show/attributes_table_title.feature +54 -0
- data/features/show/columns.feature +40 -0
- data/features/show/default_content.feature +44 -0
- data/features/show/page_title.feature +58 -0
- data/features/show/tabs.feature +47 -0
- data/features/sidebar_sections.feature +210 -0
- data/features/site_title.feature +47 -0
- data/features/specifying_actions.feature +118 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/action_link_steps.rb +19 -0
- data/features/step_definitions/additional_web_steps.rb +81 -0
- data/features/step_definitions/asset_steps.rb +15 -0
- data/features/step_definitions/attribute_steps.rb +18 -0
- data/features/step_definitions/attributes_table_title_steps.rb +11 -0
- data/features/step_definitions/batch_action_steps.rb +78 -0
- data/features/step_definitions/blog_steps.rb +3 -0
- data/features/step_definitions/breadcrumb_steps.rb +13 -0
- data/features/step_definitions/column_steps.rb +8 -0
- data/features/step_definitions/comment_steps.rb +32 -0
- data/features/step_definitions/configuration_steps.rb +102 -0
- data/features/step_definitions/dashboard_steps.rb +15 -0
- data/features/step_definitions/factory_steps.rb +35 -0
- data/features/step_definitions/filter_steps.rb +57 -0
- data/features/step_definitions/flash_steps.rb +11 -0
- data/features/step_definitions/footer_steps.rb +21 -0
- data/features/step_definitions/format_steps.rb +60 -0
- data/features/step_definitions/i18n_steps.rb +11 -0
- data/features/step_definitions/index_scope_steps.rb +42 -0
- data/features/step_definitions/index_views_steps.rb +3 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/member_link_steps.rb +7 -0
- data/features/step_definitions/menu_steps.rb +11 -0
- data/features/step_definitions/meta_tag_steps.rb +3 -0
- data/features/step_definitions/pagination_steps.rb +15 -0
- data/features/step_definitions/root_steps.rb +9 -0
- data/features/step_definitions/sidebar_steps.rb +11 -0
- data/features/step_definitions/site_title_steps.rb +31 -0
- data/features/step_definitions/tab_steps.rb +17 -0
- data/features/step_definitions/table_steps.rb +116 -0
- data/features/step_definitions/user_steps.rb +52 -0
- data/features/step_definitions/web_steps.rb +86 -0
- data/features/sti_resource.feature +65 -0
- data/features/strong_parameters.feature +69 -0
- data/features/support/env.rb +129 -0
- data/features/support/paths.rb +75 -0
- data/features/support/regular_env.rb +7 -0
- data/features/support/reload_env.rb +7 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +32 -0
- data/features/users/logging_out.feature +29 -0
- data/features/users/resetting_password.feature +30 -0
- data/gemfiles/rails_42.gemfile +12 -0
- data/gemfiles/rails_52.gemfile +15 -0
- data/gemfiles/rails_60.gemfile +16 -0
- data/gemfiles/rails_61.gemfile +15 -0
- data/gemfiles/rails_61_turbolinks.gemfile +15 -0
- data/gemfiles/rails_70.gemfile +15 -0
- data/gemfiles/rails_70_hotwire.gemfile +15 -0
- data/gemfiles/rails_71.gemfile +17 -0
- data/lib/active_admin/abstract_view_factory.rb +47 -0
- data/lib/active_admin/application.rb +255 -0
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +129 -0
- data/lib/active_admin/base_controller/authorization.rb +126 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/base_controller.rb +91 -0
- data/lib/active_admin/batch_actions/controller.rb +45 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +151 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +45 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +38 -0
- data/lib/active_admin/batch_actions.rb +16 -0
- data/lib/active_admin/callbacks.rb +88 -0
- data/lib/active_admin/cancan_adapter.rb +36 -0
- data/lib/active_admin/component.rb +5 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +136 -0
- data/lib/active_admin/dependency.rb +96 -0
- data/lib/active_admin/deprecation.rb +10 -0
- data/lib/active_admin/devise.rb +80 -0
- data/lib/active_admin/dsl.rb +193 -0
- 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 +22 -0
- data/lib/active_admin/error.rb +62 -0
- data/lib/active_admin/event.rb +24 -0
- data/lib/active_admin/filters/active.rb +29 -0
- data/lib/active_admin/filters/active_filter.rb +123 -0
- data/lib/active_admin/filters/active_sidebar.rb +50 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +85 -0
- data/lib/active_admin/filters/formtastic_addons.rb +79 -0
- data/lib/active_admin/filters/resource_extension.rb +153 -0
- data/lib/active_admin/filters.rb +11 -0
- data/lib/active_admin/form_builder.rb +182 -0
- data/lib/active_admin/generators/boilerplate.rb +45 -0
- data/lib/active_admin/helpers/collection.rb +19 -0
- data/lib/active_admin/helpers/i18n.rb +7 -0
- data/lib/active_admin/helpers/optional_display.rb +38 -0
- data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/inputs/datepicker_input.rb +27 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
- data/lib/active_admin/inputs/filters/base.rb +44 -0
- data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
- data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +49 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
- data/lib/active_admin/inputs/filters/select_input.rb +58 -0
- data/lib/active_admin/inputs/filters/string_input.rb +26 -0
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +21 -0
- data/lib/active_admin/localizers/resource_localizer.rb +35 -0
- data/lib/active_admin/localizers.rb +11 -0
- data/lib/active_admin/menu.rb +106 -0
- data/lib/active_admin/menu_collection.rb +55 -0
- data/lib/active_admin/menu_item.rb +79 -0
- data/lib/active_admin/namespace.rb +325 -0
- data/lib/active_admin/namespace_settings.rb +107 -0
- data/lib/active_admin/order_clause.rb +48 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +35 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +95 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments.rb +99 -0
- data/lib/active_admin/orm/active_record.rb +5 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +114 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +35 -0
- data/lib/active_admin/page_presenter.rb +32 -0
- data/lib/active_admin/pundit_adapter.rb +68 -0
- data/lib/active_admin/resource/action_items.rb +120 -0
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +48 -0
- data/lib/active_admin/resource/controllers.rb +19 -0
- data/lib/active_admin/resource/includes.rb +12 -0
- data/lib/active_admin/resource/menu.rb +65 -0
- data/lib/active_admin/resource/naming.rb +62 -0
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +90 -0
- data/lib/active_admin/resource/pagination.rb +23 -0
- data/lib/active_admin/resource/routes.rb +134 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +52 -0
- data/lib/active_admin/resource/sidebars.rb +32 -0
- data/lib/active_admin/resource.rb +215 -0
- data/lib/active_admin/resource_collection.rb +72 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +341 -0
- data/lib/active_admin/resource_controller/decorators.rb +102 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
- data/lib/active_admin/resource_controller/scoping.rb +31 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/resource_controller/streaming.rb +47 -0
- data/lib/active_admin/resource_controller.rb +116 -0
- data/lib/active_admin/resource_dsl.rb +221 -0
- data/lib/active_admin/router.rb +113 -0
- data/lib/active_admin/scope.rb +60 -0
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +37 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +10 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +52 -0
- data/lib/active_admin/view_helpers/display_helper.rb +95 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +58 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
- data/lib/active_admin/view_helpers/form_helper.rb +20 -0
- data/lib/active_admin/view_helpers/layout_helper.rb +32 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +97 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/view_helpers.rb +21 -0
- data/lib/active_admin/views/components/action_link.rb +13 -0
- data/lib/active_admin/views/components/active_admin_form.rb +163 -0
- data/lib/active_admin/views/components/attributes_panel.rb +23 -0
- data/lib/active_admin/views/components/attributes_table.rb +94 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +161 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
- data/lib/active_admin/views/components/index_list.rb +69 -0
- 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/paginated_collection.rb +159 -0
- data/lib/active_admin/views/components/panel.rb +38 -0
- data/lib/active_admin/views/components/scopes.rb +72 -0
- data/lib/active_admin/views/components/sidebar_section.rb +34 -0
- data/lib/active_admin/views/components/site_title.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +88 -0
- data/lib/active_admin/views/components/table_for.rb +209 -0
- data/lib/active_admin/views/components/tabs.rb +40 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +155 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +377 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin.rb +132 -0
- data/lib/activeadmin-rails.rb +1 -0
- data/lib/bug_report_templates/active_admin_main.rb +110 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +68 -0
- data/lib/generators/active_admin/install/install_generator.rb +45 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +300 -0
- data/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
- data/lib/generators/active_admin/page/USAGE +8 -0
- data/lib/generators/active_admin/page/page_generator.rb +12 -0
- data/lib/generators/active_admin/page/templates/page.rb +5 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +6 -0
- data/lib/ransack_ext.rb +20 -0
- data/spec/bug_report_templates_spec.rb +28 -0
- data/spec/changelog_spec.rb +15 -0
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_runner.rb +19 -0
- data/spec/rails_helper.rb +67 -0
- data/spec/requests/default_namespace_spec.rb +81 -0
- data/spec/requests/memory_spec.rb +25 -0
- data/spec/requests/pages/form_spec.rb +73 -0
- data/spec/requests/pages/index_spec.rb +96 -0
- data/spec/requests/pages/layout_spec.rb +59 -0
- data/spec/requests/pages/show_spec.rb +38 -0
- data/spec/requests/stylesheets_spec.rb +18 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/active_admin_integration_spec_helper.rb +79 -0
- data/spec/support/active_admin_request_helpers.rb +39 -0
- data/spec/support/rails_template.rb +224 -0
- data/spec/support/rails_template_with_data.rb +328 -0
- data/spec/support/templates/admin/stores.rb +7 -0
- data/spec/support/templates/en.yml +8 -0
- data/spec/support/templates/manifest.js +3 -0
- data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
- data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
- data/spec/support/templates/policies/admin_user_policy.rb +11 -0
- data/spec/support/templates/policies/application_policy.rb +44 -0
- data/spec/support/templates/policies/category_policy.rb +7 -0
- data/spec/support/templates/policies/post_policy.rb +15 -0
- data/spec/support/templates/policies/store_policy.rb +11 -0
- data/spec/support/templates/policies/user_policy.rb +11 -0
- data/spec/support/templates/post_decorator.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +78 -0
- data/spec/unit/action_builder_spec.rb +160 -0
- data/spec/unit/active_admin_spec.rb +11 -0
- data/spec/unit/application_spec.rb +180 -0
- data/spec/unit/asset_registration_spec.rb +52 -0
- data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
- data/spec/unit/authorization/controller_authorization_spec.rb +43 -0
- data/spec/unit/authorization/index_overriding_spec.rb +23 -0
- data/spec/unit/auto_link_spec.rb +103 -0
- data/spec/unit/batch_actions/resource_spec.rb +84 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/belongs_to_spec.rb +76 -0
- data/spec/unit/cancan_adapter_spec.rb +43 -0
- data/spec/unit/comments_spec.rb +204 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/config_shared_examples.rb +59 -0
- data/spec/unit/controller_filters_spec.rb +41 -0
- data/spec/unit/csv_builder_spec.rb +321 -0
- data/spec/unit/dependency_spec.rb +135 -0
- data/spec/unit/devise_spec.rb +110 -0
- data/spec/unit/dsl_spec.rb +120 -0
- data/spec/unit/dynamic_settings_spec.rb +28 -0
- data/spec/unit/filters/active_filter_spec.rb +222 -0
- data/spec/unit/filters/active_spec.rb +24 -0
- data/spec/unit/filters/filter_form_builder_spec.rb +524 -0
- data/spec/unit/filters/resource_spec.rb +128 -0
- data/spec/unit/form_builder_spec.rb +1013 -0
- data/spec/unit/generators/install_spec.rb +31 -0
- data/spec/unit/helpers/collection_spec.rb +68 -0
- data/spec/unit/helpers/scope_chain_spec.rb +35 -0
- data/spec/unit/i18n_spec.rb +29 -0
- data/spec/unit/localizers/resource_localizer_spec.rb +36 -0
- data/spec/unit/menu_collection_spec.rb +40 -0
- data/spec/unit/menu_item_spec.rb +82 -0
- data/spec/unit/menu_spec.rb +60 -0
- data/spec/unit/namespace/authorization_spec.rb +27 -0
- data/spec/unit/namespace/register_page_spec.rb +99 -0
- data/spec/unit/namespace/register_resource_spec.rb +162 -0
- data/spec/unit/namespace_spec.rb +132 -0
- data/spec/unit/order_clause_spec.rb +81 -0
- data/spec/unit/page_controller_spec.rb +5 -0
- data/spec/unit/page_spec.rb +128 -0
- data/spec/unit/pretty_format_spec.rb +133 -0
- data/spec/unit/pundit_adapter_spec.rb +98 -0
- data/spec/unit/resource/action_items_spec.rb +83 -0
- data/spec/unit/resource/attributes_spec.rb +56 -0
- data/spec/unit/resource/includes_spec.rb +21 -0
- data/spec/unit/resource/menu_spec.rb +18 -0
- data/spec/unit/resource/naming_spec.rb +120 -0
- data/spec/unit/resource/ordering_spec.rb +35 -0
- data/spec/unit/resource/page_presenters_spec.rb +44 -0
- data/spec/unit/resource/pagination_spec.rb +38 -0
- data/spec/unit/resource/routes_spec.rb +125 -0
- data/spec/unit/resource/scopes_spec.rb +50 -0
- data/spec/unit/resource/sidebars_spec.rb +43 -0
- data/spec/unit/resource_collection_spec.rb +175 -0
- data/spec/unit/resource_controller/data_access_spec.rb +234 -0
- data/spec/unit/resource_controller/decorators_spec.rb +94 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +37 -0
- data/spec/unit/resource_controller_spec.rb +290 -0
- data/spec/unit/resource_registration_spec.rb +61 -0
- data/spec/unit/resource_spec.rb +320 -0
- data/spec/unit/routing_spec.rb +211 -0
- data/spec/unit/scope_spec.rb +225 -0
- data/spec/unit/settings_node_spec.rb +26 -0
- data/spec/unit/view_factory_spec.rb +13 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +255 -0
- data/spec/unit/view_helpers/display_helper_spec.rb +203 -0
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
- data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
- data/spec/unit/view_helpers/flash_helper_spec.rb +24 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +42 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +138 -0
- data/spec/unit/views/components/attributes_table_spec.rb +271 -0
- data/spec/unit/views/components/batch_action_selector_spec.rb +43 -0
- data/spec/unit/views/components/blank_slate_spec.rb +27 -0
- data/spec/unit/views/components/columns_spec.rb +187 -0
- data/spec/unit/views/components/index_list_spec.rb +49 -0
- data/spec/unit/views/components/index_table_for_spec.rb +127 -0
- data/spec/unit/views/components/menu_item_spec.rb +29 -0
- data/spec/unit/views/components/menu_spec.rb +168 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +249 -0
- data/spec/unit/views/components/panel_spec.rb +58 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +68 -0
- data/spec/unit/views/components/site_title_spec.rb +82 -0
- data/spec/unit/views/components/status_tag_spec.rb +265 -0
- data/spec/unit/views/components/table_for_spec.rb +441 -0
- data/spec/unit/views/components/tabs_spec.rb +99 -0
- data/spec/unit/views/index_as_blog_spec.rb +76 -0
- data/tasks/docs.rake +64 -0
- data/tasks/lint.rake +21 -0
- data/tasks/local.rake +25 -0
- data/tasks/parallel_tests.rake +66 -0
- data/tasks/test.rake +24 -0
- data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
- metadata +1012 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
require 'active_admin/dynamic_settings_node'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
class NamespaceSettings < DynamicSettingsNode
|
|
5
|
+
# The default number of resources to display on index pages
|
|
6
|
+
register :default_per_page, 30
|
|
7
|
+
|
|
8
|
+
# The max number of resources to display on index pages and batch exports
|
|
9
|
+
register :max_per_page, 10_000
|
|
10
|
+
|
|
11
|
+
# The title which gets displayed in the main layout
|
|
12
|
+
register :site_title, "", :string_symbol_or_proc
|
|
13
|
+
|
|
14
|
+
# Set the site title link href (defaults to AA dashboard)
|
|
15
|
+
register :site_title_link, ""
|
|
16
|
+
|
|
17
|
+
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
|
18
|
+
register :site_title_image, "", :string_symbol_or_proc
|
|
19
|
+
|
|
20
|
+
# Set the site footer text (defaults to Powered by ActiveAdmin text with version)
|
|
21
|
+
register :footer, "", :string_symbol_or_proc
|
|
22
|
+
|
|
23
|
+
# Set a favicon
|
|
24
|
+
register :favicon, false
|
|
25
|
+
|
|
26
|
+
# Additional meta tags to place in head of logged in pages.
|
|
27
|
+
register :meta_tags, {}
|
|
28
|
+
|
|
29
|
+
# Additional meta tags to place in head of logged out pages.
|
|
30
|
+
register :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
|
|
31
|
+
|
|
32
|
+
# The view factory to use to generate all the view classes. Take
|
|
33
|
+
# a look at ActiveAdmin::ViewFactory
|
|
34
|
+
register :view_factory, ActiveAdmin::ViewFactory.new
|
|
35
|
+
|
|
36
|
+
# The method to call in controllers to get the current user
|
|
37
|
+
register :current_user_method, false
|
|
38
|
+
|
|
39
|
+
# The method to call in the controllers to ensure that there
|
|
40
|
+
# is a currently authenticated admin user
|
|
41
|
+
register :authentication_method, false
|
|
42
|
+
|
|
43
|
+
# The path to log user's out with. If set to a symbol, we assume
|
|
44
|
+
# that it's a method to call which returns the path
|
|
45
|
+
register :logout_link_path, :destroy_admin_user_session_path
|
|
46
|
+
|
|
47
|
+
# The method to use when generating the link for user logout
|
|
48
|
+
register :logout_link_method, :get
|
|
49
|
+
|
|
50
|
+
# Whether the batch actions are enabled or not
|
|
51
|
+
register :batch_actions, false
|
|
52
|
+
|
|
53
|
+
# Whether filters are enabled
|
|
54
|
+
register :filters, true
|
|
55
|
+
|
|
56
|
+
# The namespace root.
|
|
57
|
+
register :root_to, 'dashboard#index'
|
|
58
|
+
|
|
59
|
+
# Options that a passed to root_to.
|
|
60
|
+
register :root_to_options, {}
|
|
61
|
+
|
|
62
|
+
# Options passed to the routes, i.e. { path: '/custom' }
|
|
63
|
+
register :route_options, {}
|
|
64
|
+
|
|
65
|
+
# Display breadcrumbs
|
|
66
|
+
register :breadcrumb, true
|
|
67
|
+
|
|
68
|
+
# Display create another checkbox on a new page
|
|
69
|
+
# @return [Boolean] (true)
|
|
70
|
+
register :create_another, false
|
|
71
|
+
|
|
72
|
+
# Default CSV options
|
|
73
|
+
register :csv_options, { col_sep: ',', byte_order_mark: "\xEF\xBB\xBF" }
|
|
74
|
+
|
|
75
|
+
# Default Download Links options
|
|
76
|
+
register :download_links, true
|
|
77
|
+
|
|
78
|
+
# The authorization adapter to use
|
|
79
|
+
register :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
|
80
|
+
|
|
81
|
+
# A proc to be used when a user is not authorized to view the current resource
|
|
82
|
+
register :on_unauthorized_access, :rescue_active_admin_access_denied
|
|
83
|
+
|
|
84
|
+
# A regex to detect unsupported browser, set to false to disable
|
|
85
|
+
register :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
|
86
|
+
|
|
87
|
+
# Whether to display 'Current Filters' on search screen
|
|
88
|
+
register :current_filters, true
|
|
89
|
+
|
|
90
|
+
# class to handle ordering
|
|
91
|
+
register :order_clause, ActiveAdmin::OrderClause
|
|
92
|
+
|
|
93
|
+
# default show_count for scopes
|
|
94
|
+
register :scopes_show_count, true
|
|
95
|
+
|
|
96
|
+
# Request parameters that are permitted by default
|
|
97
|
+
register :permitted_params, [
|
|
98
|
+
:utf8, :_method, :authenticity_token, :commit, :id
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
# Set flash message keys that shouldn't show in ActiveAdmin
|
|
102
|
+
register :flash_keys_to_except, ['timedout']
|
|
103
|
+
|
|
104
|
+
# Include association filters by default
|
|
105
|
+
register :include_default_association_filters, true
|
|
106
|
+
end
|
|
107
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class OrderClause
|
|
3
|
+
attr_reader :field, :order, :active_admin_config
|
|
4
|
+
|
|
5
|
+
def initialize(active_admin_config, clause)
|
|
6
|
+
clause =~ /^([\w\_\.]+)(->'\w+')?_(desc|asc)$/
|
|
7
|
+
@column = $1
|
|
8
|
+
@op = $2
|
|
9
|
+
@order = $3
|
|
10
|
+
@active_admin_config = active_admin_config
|
|
11
|
+
@field = [@column, @op].compact.join
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def valid?
|
|
15
|
+
@field.present? && @order.present?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def apply(chain)
|
|
19
|
+
chain.reorder(Arel.sql sql)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def to_sql
|
|
23
|
+
[table_column, @op, ' ', @order].compact.join
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def table
|
|
27
|
+
active_admin_config.resource_column_names.include?(@column) ? active_admin_config.resource_table_name : nil
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def table_column
|
|
31
|
+
(@column =~ /\./) ? @column :
|
|
32
|
+
[table, active_admin_config.resource_quoted_column_name(@column)].compact.join(".")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def sql
|
|
36
|
+
custom_sql || to_sql
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
protected
|
|
40
|
+
|
|
41
|
+
def custom_sql
|
|
42
|
+
if active_admin_config.ordering[@column].present?
|
|
43
|
+
active_admin_config.ordering[@column].call(self)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Comment < ActiveRecord::Base
|
|
3
|
+
|
|
4
|
+
self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
|
|
5
|
+
|
|
6
|
+
belongs_to :resource, polymorphic: true, optional: true
|
|
7
|
+
belongs_to :author, polymorphic: true
|
|
8
|
+
|
|
9
|
+
validates_presence_of :body, :namespace, :resource
|
|
10
|
+
|
|
11
|
+
before_create :set_resource_type
|
|
12
|
+
|
|
13
|
+
# @return [String] The name of the record to use for the polymorphic relationship
|
|
14
|
+
def self.resource_type(resource)
|
|
15
|
+
ResourceController::Decorators.undecorate(resource).class.base_class.name.to_s
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.find_for_resource_in_namespace(resource, namespace)
|
|
19
|
+
where(
|
|
20
|
+
resource_type: resource_type(resource),
|
|
21
|
+
resource_id: resource,
|
|
22
|
+
namespace: namespace.to_s
|
|
23
|
+
).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.ransackable_attributes(auth_object = nil)
|
|
27
|
+
["author_id", "author_type", "body", "created_at", "id", "namespace", "resource_id", "resource_type", "updated_at"]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def set_resource_type
|
|
31
|
+
self.resource_type = self.class.resource_type(resource)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Comments
|
|
3
|
+
|
|
4
|
+
module ResourceHelper
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
included do
|
|
8
|
+
attr_accessor :comments
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def comments?
|
|
12
|
+
(namespace.comments? && comments != false) || comments == true
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require 'active_admin/views'
|
|
2
|
+
require 'active_admin/views/components/panel'
|
|
3
|
+
|
|
4
|
+
module ActiveAdmin
|
|
5
|
+
module Comments
|
|
6
|
+
module Views
|
|
7
|
+
|
|
8
|
+
class Comments < ActiveAdmin::Views::Panel
|
|
9
|
+
builder_method :active_admin_comments_for
|
|
10
|
+
|
|
11
|
+
attr_accessor :resource
|
|
12
|
+
|
|
13
|
+
def build(resource)
|
|
14
|
+
@resource = resource
|
|
15
|
+
@comments = ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page])
|
|
16
|
+
super(title, for: resource)
|
|
17
|
+
build_comments
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
protected
|
|
21
|
+
|
|
22
|
+
def title
|
|
23
|
+
I18n.t 'active_admin.comments.title_content', count: @comments.total_count
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def build_comments
|
|
27
|
+
if @comments.any?
|
|
28
|
+
@comments.each(&method(:build_comment))
|
|
29
|
+
div page_entries_info(@comments).html_safe, class: 'pagination_information'
|
|
30
|
+
else
|
|
31
|
+
build_empty_message
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
text_node paginate @comments
|
|
35
|
+
build_comment_form
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def build_comment(comment)
|
|
39
|
+
div for: comment do
|
|
40
|
+
div class: 'active_admin_comment_meta' do
|
|
41
|
+
h4 class: 'active_admin_comment_author' do
|
|
42
|
+
comment.author ? auto_link(comment.author) : I18n.t('active_admin.comments.author_missing')
|
|
43
|
+
end
|
|
44
|
+
span pretty_format comment.created_at
|
|
45
|
+
if authorized?(ActiveAdmin::Auth::DESTROY, comment)
|
|
46
|
+
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
|
+
end
|
|
48
|
+
end
|
|
49
|
+
div class: 'active_admin_comment_body' do
|
|
50
|
+
simple_format comment.body
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def build_empty_message
|
|
56
|
+
span I18n.t('active_admin.comments.no_comments_yet'), class: 'empty'
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def comments_url(*args)
|
|
60
|
+
parts = []
|
|
61
|
+
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
|
62
|
+
parts << active_admin_namespace.comments_registration_name.underscore
|
|
63
|
+
parts << 'path'
|
|
64
|
+
send parts.join('_'), *args
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def comment_form_url
|
|
68
|
+
parts = []
|
|
69
|
+
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
|
70
|
+
parts << active_admin_namespace.comments_registration_name.underscore.pluralize
|
|
71
|
+
parts << 'path'
|
|
72
|
+
send parts.join '_'
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def build_comment_form
|
|
76
|
+
active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
|
|
77
|
+
f.inputs do
|
|
78
|
+
f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
|
|
79
|
+
f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
|
|
80
|
+
f.input :body, label: false, input_html: { size: '80x8' }
|
|
81
|
+
end
|
|
82
|
+
f.actions do
|
|
83
|
+
f.action :submit, label: I18n.t('active_admin.comments.add')
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def default_id_for_prefix
|
|
89
|
+
'active_admin_comments_for'
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'active_admin/orm/active_record/comments/views'
|
|
2
|
+
require 'active_admin/orm/active_record/comments/namespace_helper'
|
|
3
|
+
require 'active_admin/orm/active_record/comments/resource_helper'
|
|
4
|
+
|
|
5
|
+
# Add the comments configuration
|
|
6
|
+
ActiveAdmin::Application.inheritable_setting :comments, true
|
|
7
|
+
ActiveAdmin::Application.inheritable_setting :comments_registration_name, 'Comment'
|
|
8
|
+
ActiveAdmin::Application.inheritable_setting :comments_order, "created_at ASC"
|
|
9
|
+
ActiveAdmin::Application.inheritable_setting :comments_menu, {}
|
|
10
|
+
|
|
11
|
+
# Insert helper modules
|
|
12
|
+
ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
|
|
13
|
+
ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
|
|
14
|
+
|
|
15
|
+
# Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
|
|
16
|
+
ActiveAdmin.autoload :Comment, 'active_admin/orm/active_record/comments/comment'
|
|
17
|
+
|
|
18
|
+
# Hint i18n-tasks about model and attribute translations used by default install
|
|
19
|
+
# i18n-tasks-use t('activerecord.models.comment')
|
|
20
|
+
# i18n-tasks-use t('activerecord.models.active_admin/comment')
|
|
21
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.author_type')
|
|
22
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.body')
|
|
23
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.created_at')
|
|
24
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.namespace')
|
|
25
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.resource_type')
|
|
26
|
+
# i18n-tasks-use t('activerecord.attributes.active_admin/comment.updated_at')
|
|
27
|
+
# i18n-tasks-use t('active_admin.scopes.all')
|
|
28
|
+
|
|
29
|
+
# Walk through all the loaded namespaces after they're loaded
|
|
30
|
+
ActiveAdmin.after_load do |app|
|
|
31
|
+
app.namespaces.each do |namespace|
|
|
32
|
+
namespace.register ActiveAdmin::Comment, as: namespace.comments_registration_name do
|
|
33
|
+
actions :index, :show, :create, :destroy
|
|
34
|
+
|
|
35
|
+
menu namespace.comments ? namespace.comments_menu : false
|
|
36
|
+
|
|
37
|
+
config.comments = false # Don't allow comments on comments
|
|
38
|
+
config.batch_actions = false # The default destroy batch action isn't showing up anyway...
|
|
39
|
+
|
|
40
|
+
scope :all, show_count: false
|
|
41
|
+
# Register a scope for every namespace that exists.
|
|
42
|
+
# The current namespace will be the default scope.
|
|
43
|
+
app.namespaces.map(&:name).each do |name|
|
|
44
|
+
scope name, default: namespace.name == name do |scope|
|
|
45
|
+
scope.where namespace: name.to_s
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Store the author and namespace
|
|
50
|
+
before_save do |comment|
|
|
51
|
+
comment.namespace = active_admin_config.namespace.name
|
|
52
|
+
comment.author = current_active_admin_user
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
controller do
|
|
56
|
+
# Prevent N+1 queries
|
|
57
|
+
def scoped_collection
|
|
58
|
+
super.includes(:author, :resource)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Redirect to the resource show page after comment creation
|
|
62
|
+
def create
|
|
63
|
+
create! do |success, failure|
|
|
64
|
+
success.html do
|
|
65
|
+
redirect_back fallback_location: active_admin_root
|
|
66
|
+
end
|
|
67
|
+
failure.html do
|
|
68
|
+
flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
|
|
69
|
+
redirect_back fallback_location: active_admin_root
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def destroy
|
|
74
|
+
destroy! do |success, failure|
|
|
75
|
+
success.html do
|
|
76
|
+
redirect_back fallback_location: active_admin_root
|
|
77
|
+
end
|
|
78
|
+
failure.html do
|
|
79
|
+
redirect_back fallback_location: active_admin_root
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
permit_params :body, :namespace, :resource_id, :resource_type
|
|
87
|
+
|
|
88
|
+
index do
|
|
89
|
+
column I18n.t('active_admin.comments.resource_type'), :resource_type
|
|
90
|
+
column I18n.t('active_admin.comments.author_type'), :author_type
|
|
91
|
+
column I18n.t('active_admin.comments.resource'), :resource
|
|
92
|
+
column I18n.t('active_admin.comments.author'), :author
|
|
93
|
+
column I18n.t('active_admin.comments.body'), :body
|
|
94
|
+
column I18n.t('active_admin.comments.created_at'), :created_at
|
|
95
|
+
actions
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Mongoid-specific plugins should be required here
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
# Page is the primary data storage for page configuration in Active Admin
|
|
3
|
+
#
|
|
4
|
+
# When you register a page (ActiveAdmin.register_page "Status") you are actually creating
|
|
5
|
+
# a new Page instance within the given Namespace.
|
|
6
|
+
#
|
|
7
|
+
# The instance of the current page is available in PageController and views
|
|
8
|
+
# by calling the #active_admin_config method.
|
|
9
|
+
#
|
|
10
|
+
class Page
|
|
11
|
+
|
|
12
|
+
# The namespace this config belongs to
|
|
13
|
+
attr_reader :namespace
|
|
14
|
+
|
|
15
|
+
# The name of the page
|
|
16
|
+
attr_reader :name
|
|
17
|
+
|
|
18
|
+
# An array of custom actions defined for this page
|
|
19
|
+
attr_reader :page_actions
|
|
20
|
+
def add_page_route(name, options)
|
|
21
|
+
page_actions << ControllerAction.new(name, options)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Set breadcrumb builder
|
|
25
|
+
attr_accessor :breadcrumb
|
|
26
|
+
|
|
27
|
+
module Base
|
|
28
|
+
def initialize(namespace, name, options)
|
|
29
|
+
@namespace = namespace
|
|
30
|
+
@name = name
|
|
31
|
+
@options = options
|
|
32
|
+
@page_actions = []
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
include Base
|
|
37
|
+
include Resource::Controllers
|
|
38
|
+
include Resource::PagePresenters
|
|
39
|
+
include Resource::Sidebars
|
|
40
|
+
include Resource::ActionItems
|
|
41
|
+
include Resource::Menu
|
|
42
|
+
include Resource::Naming
|
|
43
|
+
include Resource::Routes
|
|
44
|
+
|
|
45
|
+
# label is singular
|
|
46
|
+
def plural_resource_label
|
|
47
|
+
name
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def resource_name
|
|
51
|
+
@resource_name ||= Resource::Name.new(nil, name)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def underscored_resource_name
|
|
55
|
+
resource_name.to_s.parameterize.underscore
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def camelized_resource_name
|
|
59
|
+
underscored_resource_name.camelize
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def namespace_name
|
|
63
|
+
namespace.name.to_s
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def default_menu_options
|
|
67
|
+
super.merge(id: resource_name)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def controller_name
|
|
71
|
+
[namespace.module_name, camelized_resource_name + "Controller"].compact.join('::')
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Override from `ActiveAdmin::Resource::Controllers`
|
|
75
|
+
def route_uncountable?
|
|
76
|
+
false
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def add_default_action_items
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def add_default_sidebar_sections
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Clears all the custom actions this page knows about
|
|
86
|
+
def clear_page_actions!
|
|
87
|
+
@page_actions = []
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def belongs_to(target, options = {})
|
|
91
|
+
@belongs_to = Resource::BelongsTo.new(self, target, options)
|
|
92
|
+
self.navigation_menu_name = target unless @belongs_to.optional?
|
|
93
|
+
controller.send :belongs_to, target, options.dup
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def belongs_to_config
|
|
97
|
+
@belongs_to
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Do we belong to another resource?
|
|
101
|
+
def belongs_to?
|
|
102
|
+
!!belongs_to_config
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def breadcrumb
|
|
106
|
+
instance_variable_defined?(:@breadcrumb) ? @breadcrumb : namespace.breadcrumb
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def order_clause
|
|
110
|
+
@order_clause || namespace.order_clause
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
|
|
3
|
+
# All Pages controllers inherit from this controller.
|
|
4
|
+
class PageController < BaseController
|
|
5
|
+
|
|
6
|
+
# Active admin actions don't require layout. All custom actions do.
|
|
7
|
+
ACTIVE_ADMIN_ACTIONS = [:index]
|
|
8
|
+
|
|
9
|
+
actions :index
|
|
10
|
+
|
|
11
|
+
before_action :authorize_access!
|
|
12
|
+
|
|
13
|
+
def index(options = {}, &block)
|
|
14
|
+
render "active_admin/page/index"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def clear_page_actions!
|
|
18
|
+
active_admin_config.clear_page_actions!
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def authorize_access!
|
|
24
|
+
permission = action_to_permission(params[:action])
|
|
25
|
+
authorize! permission, active_admin_config
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
# This is the class where all the register_page blocks are evaluated.
|
|
3
|
+
class PageDSL < DSL
|
|
4
|
+
|
|
5
|
+
# Page content.
|
|
6
|
+
#
|
|
7
|
+
# The block should define the view using Arbre.
|
|
8
|
+
#
|
|
9
|
+
# Example:
|
|
10
|
+
#
|
|
11
|
+
# ActiveAdmin.register "My Page" do
|
|
12
|
+
# content do
|
|
13
|
+
# para "Sweet!"
|
|
14
|
+
# end
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
def content(options = {}, &block)
|
|
18
|
+
if block_given?
|
|
19
|
+
config.set_page_presenter :index, ActiveAdmin::PagePresenter.new(options, &block)
|
|
20
|
+
else
|
|
21
|
+
config.set_page_options :index, options
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def page_action(name, options = {}, &block)
|
|
26
|
+
define_controller_method(name, &block)
|
|
27
|
+
|
|
28
|
+
config.add_page_route(name, options)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def belongs_to(target, options = {})
|
|
32
|
+
config.belongs_to(target, options)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
|
|
3
|
+
# A simple object that gets used to present different aspects of views
|
|
4
|
+
#
|
|
5
|
+
# Initialize with a set of options and a block. The options become
|
|
6
|
+
# available using hash style syntax.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
#
|
|
10
|
+
# presenter = PagePresenter.new as: :table do
|
|
11
|
+
# # some awesome stuff
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# presenter[:as] #=> :table
|
|
15
|
+
# presenter.block #=> The block passed in to new
|
|
16
|
+
#
|
|
17
|
+
class PagePresenter
|
|
18
|
+
|
|
19
|
+
attr_reader :block, :options
|
|
20
|
+
|
|
21
|
+
delegate :has_key?, :fetch, to: :options
|
|
22
|
+
|
|
23
|
+
def initialize(options = {}, &block)
|
|
24
|
+
@options, @block = options, block
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def [](key)
|
|
28
|
+
@options[key]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|