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
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
## Contributing
|
|
2
|
+
|
|
3
|
+
This is probably not a beginner friendly project: it has a long history, complex functionality,
|
|
4
|
+
and too much cleverness, eg. metaprogramming.
|
|
5
|
+
|
|
6
|
+
If you are using, or intending to use this project in production it would be great to hear about that in the discussions area.
|
|
7
|
+
Fixes are welcome, if you have ideas for improvements reach out to the maintainer first.
|
|
8
|
+
|
|
9
|
+
Translations and documentation tweaks are welcome, but not a priority, don't expect a quick response.
|
|
10
|
+
|
|
11
|
+
Linting has become very popular in recent years, eg. rubocop, but depending on the team or project it can quickly
|
|
12
|
+
become a couterproductive distraction. By all means make suggestions, but don't expect a quick response.
|
|
13
|
+
|
|
14
|
+
### 1. Where do I go from here?
|
|
15
|
+
|
|
16
|
+
If you've noticed a bug or have a question that doesn't belong on the
|
|
17
|
+
[mailing list][] or [Stack Overflow][], [search the issue tracker][] to see if
|
|
18
|
+
someone else in the community has already created a ticket. If not, go ahead and
|
|
19
|
+
[make one][new issue]!
|
|
20
|
+
|
|
21
|
+
### 2. Fork & create a branch
|
|
22
|
+
|
|
23
|
+
If this is something you think you can fix, then [fork Active Admin][] and
|
|
24
|
+
create a branch with a descriptive name.
|
|
25
|
+
|
|
26
|
+
A good branch name would be (where issue #325 is the ticket you're working on):
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
git checkout -b 325-add-japanese-translations
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 3. Get the test suite running
|
|
33
|
+
|
|
34
|
+
Make sure you're using a recent ruby and have the `bundler` gem installed.
|
|
35
|
+
|
|
36
|
+
Select the Gemfile for your preferred Rails version, preferably the latest:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
export BUNDLE_GEMFILE=gemfiles/rails_71.gemfile
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Now install the development dependencies:
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
bundle install
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Now you should be able to run the entire suite using:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
bundle exec rake
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The test run will generate a sample Rails application in `spec/rails` to run the
|
|
55
|
+
tests against.
|
|
56
|
+
|
|
57
|
+
If your tests are passing locally but they're failing on GitHub, reset your test
|
|
58
|
+
environment:
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
rm -rf spec/rails && bundle update
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 4. Did you find a bug?
|
|
65
|
+
|
|
66
|
+
* **Ensure the bug was not already reported** by [searching all issues][].
|
|
67
|
+
|
|
68
|
+
* If you're unable to find an open issue addressing the problem,
|
|
69
|
+
[open a new one][new issue]. Be sure to include a **title and clear
|
|
70
|
+
description**, as much relevant information as possible, and a **code sample**
|
|
71
|
+
or an **executable test case** demonstrating the expected behavior that is not
|
|
72
|
+
occurring.
|
|
73
|
+
|
|
74
|
+
* If possible, use the relevant bug report templates to create the issue.
|
|
75
|
+
Simply copy the content of the appropriate template into a .rb file, make the
|
|
76
|
+
necessary changes to demonstrate the issue, and **paste the content into the
|
|
77
|
+
issue description**:
|
|
78
|
+
* [**ActiveAdmin** main issues][main template]
|
|
79
|
+
|
|
80
|
+
### 5. Implement your fix or feature
|
|
81
|
+
|
|
82
|
+
At this point, you're ready to make your changes! Feel free to ask for help.
|
|
83
|
+
|
|
84
|
+
### 6. View your changes in a Rails application
|
|
85
|
+
|
|
86
|
+
Active Admin is meant to be used by humans, not cucumbers. So make sure to take
|
|
87
|
+
a look at your changes in a browser.
|
|
88
|
+
|
|
89
|
+
To boot up a test Rails app:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
bundle exec rake local server
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
This will automatically create a Rails app if none already exists, and store it
|
|
96
|
+
in the `.test-rails-apps` folder.
|
|
97
|
+
|
|
98
|
+
You should now be able to open <http://localhost:3000/admin> in your browser.
|
|
99
|
+
You can log in using:
|
|
100
|
+
|
|
101
|
+
*User*: admin@example.com
|
|
102
|
+
*Password*: password
|
|
103
|
+
|
|
104
|
+
If you need to perform any other commands on the test application, just pass
|
|
105
|
+
them to the `local` rake task. For example, to boot the rails console:
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
bundle exec rake local console
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Or to migrate the database:
|
|
112
|
+
|
|
113
|
+
```sh
|
|
114
|
+
bundle exec rake local db:migrate
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 7. Get the style right
|
|
118
|
+
|
|
119
|
+
Your patch should follow the same conventions & pass the same code quality
|
|
120
|
+
checks as the rest of the project. [Codeclimate][codeclimate] will give you
|
|
121
|
+
feedback in this regard. You can check & fix codeclimate's feedback by running
|
|
122
|
+
it locally using [Codeclimate's CLI][codeclimate cli], via `codeclimate analyze`.
|
|
123
|
+
|
|
124
|
+
### 8. Make a Pull Request
|
|
125
|
+
|
|
126
|
+
At this point, you should switch back to your main branch and make sure it's
|
|
127
|
+
up to date with Active Admin's main branch:
|
|
128
|
+
|
|
129
|
+
```sh
|
|
130
|
+
git remote add upstream git@github.com:activeadmin/activeadmin.git
|
|
131
|
+
git checkout main
|
|
132
|
+
git pull upstream main
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Then update your feature branch from your local copy of main, and push it!
|
|
136
|
+
|
|
137
|
+
```sh
|
|
138
|
+
git checkout 325-add-japanese-translations
|
|
139
|
+
git rebase main
|
|
140
|
+
git push --set-upstream origin 325-add-japanese-translations
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Finally, go to GitHub and [make a Pull Request][] :D
|
|
144
|
+
|
|
145
|
+
Travis CI will run our test suite against all supported Rails versions. We care
|
|
146
|
+
about quality, so your PR won't be merged until all tests pass. It's unlikely,
|
|
147
|
+
but it's possible that your changes pass tests in one Rails version but fail in
|
|
148
|
+
another. In that case, you'll have to setup your development environment (as
|
|
149
|
+
explained in step 3) to use the problematic Rails version, and investigate
|
|
150
|
+
what's going on!
|
|
151
|
+
|
|
152
|
+
### 8. Keeping your Pull Request updated
|
|
153
|
+
|
|
154
|
+
If a maintainer asks you to "rebase" your PR, they're saying that a lot of code
|
|
155
|
+
has changed, and that you need to update your branch so it's easier to merge.
|
|
156
|
+
|
|
157
|
+
To learn more about rebasing in Git, there are a lot of [good][git rebasing]
|
|
158
|
+
[resources][interactive rebase] but here's the suggested workflow:
|
|
159
|
+
|
|
160
|
+
```sh
|
|
161
|
+
git checkout 325-add-japanese-translations
|
|
162
|
+
git pull --rebase upstream main
|
|
163
|
+
git push --force-with-lease 325-add-japanese-translations
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 10. Merging a PR (maintainers only)
|
|
167
|
+
|
|
168
|
+
A PR can only be merged into main by a maintainer if:
|
|
169
|
+
|
|
170
|
+
* It is passing CI.
|
|
171
|
+
* It has been approved by at least two maintainers. If it was a maintainer who
|
|
172
|
+
opened the PR, only one extra approval is needed.
|
|
173
|
+
* It has no requested changes.
|
|
174
|
+
* It is up to date with current main.
|
|
175
|
+
|
|
176
|
+
Any maintainer is allowed to merge a PR if all of these conditions are
|
|
177
|
+
met.
|
|
178
|
+
|
|
179
|
+
[mailing list]: http://groups.google.com/group/activeadmin
|
|
180
|
+
[Stack Overflow]: http://stackoverflow.com/questions/tagged/activeadmin
|
|
181
|
+
[search the issue tracker]: https://github.com/activeadmin/activeadmin/issues?q=something
|
|
182
|
+
[new issue]: https://github.com/activeadmin/activeadmin/issues/new
|
|
183
|
+
[fork Active Admin]: https://help.github.com/articles/fork-a-repo
|
|
184
|
+
[searching all issues]: https://github.com/activeadmin/activeadmin/issues?q=
|
|
185
|
+
[main template]: https://github.com/varyonic/activeadmin/blob/main/lib/bug_report_templates/active_admin_main.rb
|
|
186
|
+
[codeclimate]: https://codeclimate.com
|
|
187
|
+
[codeclimate cli]: https://github.com/codeclimate/codeclimate
|
|
188
|
+
[make a pull request]: https://help.github.com/articles/creating-a-pull-request
|
|
189
|
+
[git rebasing]: http://git-scm.com/book/en/Git-Branching-Rebasing
|
|
190
|
+
[interactive rebase]: https://help.github.com/articles/interactive-rebase
|
data/Gemfile
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gem 'arbo'
|
|
4
|
+
|
|
5
|
+
# Optional dependencies
|
|
6
|
+
gem 'cancan'
|
|
7
|
+
gem 'pundit'
|
|
8
|
+
gem 'jruby-openssl', '~> 0.10.1', platforms: :jruby
|
|
9
|
+
|
|
10
|
+
# Utility gems used in both development & test environments
|
|
11
|
+
gem 'rake'
|
|
12
|
+
gem 'parallel_tests'
|
|
13
|
+
|
|
14
|
+
# Debugging
|
|
15
|
+
gem 'pry' # Easily debug from your console with `binding.pry`
|
|
16
|
+
|
|
17
|
+
# Code style
|
|
18
|
+
gem 'rubocop', '0.51.0'
|
|
19
|
+
gem 'mdl', '0.4.0'
|
|
20
|
+
|
|
21
|
+
# Translations
|
|
22
|
+
gem 'i18n-tasks'
|
|
23
|
+
|
|
24
|
+
# Documentation
|
|
25
|
+
gem 'yard' # Documentation generator
|
|
26
|
+
gem 'kramdown' # Markdown implementation (for yard)
|
|
27
|
+
gem 'rexml'
|
|
28
|
+
|
|
29
|
+
group :development, :test do
|
|
30
|
+
# Debugging
|
|
31
|
+
gem 'better_errors' # Web UI to debug exceptions. Go to /__better_errors to access the latest one
|
|
32
|
+
|
|
33
|
+
gem 'binding_of_caller', platforms: :mri # Retrieve the binding of a method's caller
|
|
34
|
+
|
|
35
|
+
# Performance
|
|
36
|
+
gem 'rack-mini-profiler' # Inline app profiler. See ?pp=help for options.
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
group :test do
|
|
40
|
+
gem 'cuprite'
|
|
41
|
+
gem 'capybara'
|
|
42
|
+
gem 'simplecov', require: false # Test coverage generator. Go to /coverage/ after running tests
|
|
43
|
+
gem 'codecov', require: false # Test coverage website. Go to https://codecov.io
|
|
44
|
+
gem 'cucumber-rails', github: 'cucumber/cucumber-rails', require: false
|
|
45
|
+
gem 'cucumber'
|
|
46
|
+
gem 'database_cleaner'
|
|
47
|
+
gem 'jasmine'
|
|
48
|
+
gem 'launchy'
|
|
49
|
+
gem 'rspec-rails'
|
|
50
|
+
gem 'i18n-spec'
|
|
51
|
+
end
|
data/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) Greg Bell, VersaPay Corporation
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Active Admin for Rails Developers
|
|
2
|
+
|
|
3
|
+
[Active Admin](https://www.activeadmin.org) is a Ruby on Rails framework for creating elegant backends for website administration.
|
|
4
|
+
|
|
5
|
+
This is a significant fork of the original Active Admin project
|
|
6
|
+
starting in 2018 with v1.3.1 and abandoning v2.0.0.alpha started one year earlier.
|
|
7
|
+
|
|
8
|
+
This fork aims to make it simpler and more Rails-like without dropping the
|
|
9
|
+
rich functionality that made Active Admin a leading choice for a decade.
|
|
10
|
+
See [CHANGELOG] for more details.
|
|
11
|
+
|
|
12
|
+
Active Admin is open source software, [free as in puppy].
|
|
13
|
+
As of writing this software is in production with at least one mid-size business,
|
|
14
|
+
but Varyonic has no plans to provide commercial support - let us know if you do.
|
|
15
|
+
|
|
16
|
+
[![Version ][rubygems_badge]][rubygems]
|
|
17
|
+
[![Github Actions ][actions_badge]][actions]
|
|
18
|
+
[![Quality ][codeclimate_badge]][codeclimate]
|
|
19
|
+
[![Coverage ][codecov_badge]][codecov]
|
|
20
|
+
[![Inch CI ][inch_badge]][inch]
|
|
21
|
+
|
|
22
|
+
## Goals
|
|
23
|
+
|
|
24
|
+
1. Enable developers to quickly create good-looking administration interfaces.
|
|
25
|
+
2. Follow Rails conventions that make the framework easy to understand and customize.
|
|
26
|
+
|
|
27
|
+
## Getting started
|
|
28
|
+
|
|
29
|
+
* Check out [the docs][docs].
|
|
30
|
+
* Try the [live demo][demo].
|
|
31
|
+
* The [wiki] includes links to tutorials, articles and sample projects.
|
|
32
|
+
|
|
33
|
+
## Need help?
|
|
34
|
+
|
|
35
|
+
Please use [StackOverflow][stackoverflow] for help requests and how-to questions.
|
|
36
|
+
|
|
37
|
+
Please open GitHub issues for bugs and enhancements only, not general help requests.
|
|
38
|
+
Please search previous issues (and Google and StackOverflow) before creating a new issue.
|
|
39
|
+
|
|
40
|
+
Google Groups, IRC #activeadmin and Gitter are not actively monitored.
|
|
41
|
+
|
|
42
|
+
## Want to contribute?
|
|
43
|
+
|
|
44
|
+
The [contributing guide][contributing]
|
|
45
|
+
is a good place to start. If you have questions, feel free to ask.
|
|
46
|
+
|
|
47
|
+
## Dependencies
|
|
48
|
+
|
|
49
|
+
We try not to reinvent the wheel, so Active Admin is built with other open source projects:
|
|
50
|
+
|
|
51
|
+
Tool | Description
|
|
52
|
+
--------------------- | -----------
|
|
53
|
+
[Arbo] | HTML Views in Ruby.
|
|
54
|
+
[Devise] | Powerful, extensible user authentication
|
|
55
|
+
[Formtastic] | A Rails form builder plugin with semantically rich and accessible markup
|
|
56
|
+
[Inherited Resources] | Simplifies controllers with pre-built RESTful controller actions
|
|
57
|
+
[Kaminari] | Elegant pagination for any sort of collection
|
|
58
|
+
[Ransack] | Provides a simple search API to query your data
|
|
59
|
+
|
|
60
|
+
[Arbo]: https://github.com/varyonic/arbo
|
|
61
|
+
[Devise]: https://github.com/plataformatec/devise
|
|
62
|
+
[Formtastic]: https://github.com/justinfrench/formtastic
|
|
63
|
+
[Inherited Resources]: https://github.com/activeadmin/inherited_resources
|
|
64
|
+
[Kaminari]: https://github.com/kaminari/kaminari
|
|
65
|
+
[Ransack]: https://github.com/activerecord-hackery/ransack
|
|
66
|
+
|
|
67
|
+
[rubygems_badge]: http://img.shields.io/gem/v/activeadmin-rails.svg
|
|
68
|
+
[rubygems]: https://rubygems.org/gems/activeadmin-rails
|
|
69
|
+
[actions_badge]: https://github.com/varyonic/activeadmin/workflows/ci/badge.svg
|
|
70
|
+
[actions]: https://github.com/varyonic/activeadmin/actions
|
|
71
|
+
[codeclimate_badge]: https://api.codeclimate.com/v1/badges/1698787497cc7d4c7c88/maintainability
|
|
72
|
+
[codeclimate]: https://codeclimate.com/github/varyonic/activeadmin/maintainability
|
|
73
|
+
[codecov_badge]: https://codecov.io/gh/varyonic/activeadmin/branch/main/graph/badge.svg
|
|
74
|
+
[codecov]: https://codecov.io/gh/varyonic/activeadmin
|
|
75
|
+
[inch_badge]: http://inch-ci.org/github/varyonic/activeadmin.svg?branch=main
|
|
76
|
+
[inch]: http://inch-ci.org/github/varyonic/activeadmin
|
|
77
|
+
|
|
78
|
+
[docs]: http://activeadmin.org/0-installation.html
|
|
79
|
+
[demo]: http://demo.activeadmin.org/admin
|
|
80
|
+
[wiki]: https://github.com/varyonic/activeadmin/wiki
|
|
81
|
+
[stackoverflow]: http://stackoverflow.com/questions/tagged/activeadmin
|
|
82
|
+
[CHANGELOG]: https://github.com/varyonic/activeadmin/blob/main/CHANGELOG.md
|
|
83
|
+
[contributing]: https://github.com/varyonic/activeadmin/blob/main/CONTRIBUTING.md
|
|
84
|
+
[free as in puppy]: https://www.zdnet.com/article/open-source-free-as-in-beer-puppy-or-mattress/
|
data/Rakefile
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
|
|
3
|
+
desc 'Creates a test rails app for the specs to run against'
|
|
4
|
+
task :setup, [:parallel, :dir, :template] do |_t, opts|
|
|
5
|
+
require 'rails/version'
|
|
6
|
+
|
|
7
|
+
base_dir = opts[:dir] || 'spec/rails'
|
|
8
|
+
app_dir = "#{base_dir}/rails-#{Rails::VERSION::STRING}"
|
|
9
|
+
template = opts[:template] || 'rails_template'
|
|
10
|
+
|
|
11
|
+
if File.exist? app_dir
|
|
12
|
+
puts "test app #{app_dir} already exists; skipping"
|
|
13
|
+
else
|
|
14
|
+
system "mkdir -p #{base_dir}"
|
|
15
|
+
args = %W(
|
|
16
|
+
-m spec/support/#{template}.rb
|
|
17
|
+
--skip-bundle
|
|
18
|
+
--skip-listen
|
|
19
|
+
--skip-test-unit
|
|
20
|
+
--skip-coffee
|
|
21
|
+
)
|
|
22
|
+
args << "--skip-turbolinks" unless ENV['BUNDLE_GEMFILE'] =~ /turbolinks/
|
|
23
|
+
args << "--skip-hotwire" unless ENV['BUNDLE_GEMFILE'] =~ /hotwire/
|
|
24
|
+
|
|
25
|
+
command = ['bundle', 'exec', 'rails', 'new', app_dir, *args].join(' ')
|
|
26
|
+
|
|
27
|
+
env = { 'BUNDLE_GEMFILE' => ENV['BUNDLE_GEMFILE'] }
|
|
28
|
+
env['INSTALL_PARALLEL'] = 'yes' if opts[:parallel]
|
|
29
|
+
|
|
30
|
+
Bundler.with_unbundled_env { Kernel.exec(env, command) }
|
|
31
|
+
|
|
32
|
+
Rake::Task['parallel:after_setup_hook'].invoke if opts[:parallel]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Import all our rake tasks
|
|
37
|
+
FileList['tasks/**/*.rake'].each { |task| import task }
|
|
38
|
+
|
|
39
|
+
task default: :test
|
|
40
|
+
|
|
41
|
+
begin
|
|
42
|
+
require 'jasmine'
|
|
43
|
+
load 'jasmine/tasks/jasmine.rake'
|
|
44
|
+
rescue LoadError
|
|
45
|
+
task :jasmine do
|
|
46
|
+
abort 'Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
task :console do
|
|
51
|
+
require 'irb'
|
|
52
|
+
require 'irb/completion'
|
|
53
|
+
|
|
54
|
+
ARGV.clear
|
|
55
|
+
IRB.start
|
|
56
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "lib", "active_admin", "version")
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |s|
|
|
4
|
+
s.name = 'activeadmin-rails'
|
|
5
|
+
s.license = 'MIT'
|
|
6
|
+
s.version = ActiveAdmin::VERSION
|
|
7
|
+
s.homepage = 'http://activeadmin.org'
|
|
8
|
+
s.authors = ['Piers Chambers, Greg Bell']
|
|
9
|
+
s.email = ['piers@varyonic.com']
|
|
10
|
+
s.description = 'A rapid development framework for Ruby on Rails.'
|
|
11
|
+
s.summary = 'A rapid development framework for Ruby on Rails.'
|
|
12
|
+
|
|
13
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
14
|
+
f.match(%r{^(spec|features)/})
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
|
18
|
+
|
|
19
|
+
s.metadata = {
|
|
20
|
+
"bug_tracker_uri" => "https://github.com/varyonic/activeadmin-rails/issues",
|
|
21
|
+
"changelog_uri" => "https://github.com/varyonic/activeadmin-rails/blob/main/CHANGELOG.md",
|
|
22
|
+
"source_code_uri" => "https://github.com/varyonic/activeadmin-rails",
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
s.required_ruby_version = '>= 2.5'
|
|
26
|
+
|
|
27
|
+
s.add_dependency 'arbo'
|
|
28
|
+
s.add_dependency 'formtastic'
|
|
29
|
+
s.add_dependency 'formtastic_i18n'
|
|
30
|
+
s.add_dependency 'inherited_resources', '>= 1.13.1'
|
|
31
|
+
s.add_dependency 'jquery-rails', '>= 4.2.0'
|
|
32
|
+
s.add_dependency 'jquery-ui-rails', '~> 6.0'
|
|
33
|
+
s.add_dependency 'kaminari', '>= 1.0.1'
|
|
34
|
+
s.add_dependency 'railties', '>= 5.0'
|
|
35
|
+
s.add_dependency 'ransack', '>= 1.8.7'
|
|
36
|
+
s.add_dependency 'sass-rails'
|
|
37
|
+
s.add_dependency 'sprockets'
|
|
38
|
+
s.add_dependency 'sprockets-es6', '>= 0.9.2'
|
|
39
|
+
end
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//= require jquery3
|
|
2
|
+
//= require jquery-ui/widgets/datepicker
|
|
3
|
+
//= require jquery-ui/widgets/dialog
|
|
4
|
+
//= require jquery-ui/widgets/sortable
|
|
5
|
+
//= require jquery-ui/widgets/tabs
|
|
6
|
+
//= require jquery-ui/widget
|
|
7
|
+
//= require jquery_ujs
|
|
8
|
+
//= require_self
|
|
9
|
+
//= require ./ext/jquery
|
|
10
|
+
//= require ./ext/jquery-ui
|
|
11
|
+
//= require ./lib/active_admin
|
|
12
|
+
//= require ./lib/batch_actions
|
|
13
|
+
//= require ./lib/dropdown-menu
|
|
14
|
+
//= require ./lib/has_many
|
|
15
|
+
//= require ./lib/modal_dialog
|
|
16
|
+
//= require ./lib/per_page
|
|
17
|
+
//= require ./lib/checkbox-toggler
|
|
18
|
+
//= require ./lib/table-checkbox-toggler
|
|
19
|
+
//= require ./initializers/datepicker
|
|
20
|
+
//= require ./initializers/filters
|
|
21
|
+
//= require ./initializers/tabs
|
|
22
|
+
|
|
23
|
+
window.ActiveAdmin = {}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Short-circuits `_focusTabbable` to focus on the modal itself instead of
|
|
2
|
+
// elements inside the modal. Without this, if a datepicker is the first input,
|
|
3
|
+
// it'll immediately pop up when the modal opens.
|
|
4
|
+
// See this ticket for more info: http://bugs.jqueryui.com/ticket/4731
|
|
5
|
+
$.ui.dialog.prototype._focusTabbable = function() {
|
|
6
|
+
this.uiDialog.focus();
|
|
7
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// `serializeArray` generates => [{ name: 'foo', value: 'bar' }]
|
|
2
|
+
// This function remaps it to => { foo: 'bar' }
|
|
3
|
+
$.fn.serializeObject = function() {
|
|
4
|
+
return this.serializeArray()
|
|
5
|
+
.reduce((obj, item) => {
|
|
6
|
+
obj[item.name] = item.value
|
|
7
|
+
return obj
|
|
8
|
+
}, {});
|
|
9
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
(($) => {
|
|
2
|
+
|
|
3
|
+
$(document)
|
|
4
|
+
.on('focus', 'input.datepicker:not(.hasDatepicker)', function() {
|
|
5
|
+
const input = $(this);
|
|
6
|
+
|
|
7
|
+
// Only create datepickers in compatible browsers
|
|
8
|
+
if (input[0].type === 'date') { return; }
|
|
9
|
+
|
|
10
|
+
const defaults = { dateFormat: 'yy-mm-dd' };
|
|
11
|
+
const options = input.data('datepicker-options');
|
|
12
|
+
|
|
13
|
+
input.datepicker($.extend(defaults, options));
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
})(jQuery);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
(($, ActiveAdmin) => {
|
|
2
|
+
|
|
3
|
+
class Filters {
|
|
4
|
+
|
|
5
|
+
static _clearForm(event) {
|
|
6
|
+
const regex = /^(q\[|q%5B|q%5b|page|utf8|commit)/;
|
|
7
|
+
const params = ActiveAdmin
|
|
8
|
+
.queryStringToParams()
|
|
9
|
+
.filter(({name}) => !name.match(regex));
|
|
10
|
+
|
|
11
|
+
event.preventDefault();
|
|
12
|
+
|
|
13
|
+
if (ActiveAdmin.turbolinks) {
|
|
14
|
+
ActiveAdmin.turbolinksVisit(params);
|
|
15
|
+
} else {
|
|
16
|
+
window.location.search = ActiveAdmin.toQueryString(params);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static _disableEmptyInputFields(event) {
|
|
21
|
+
const params = $(this)
|
|
22
|
+
.find(':input')
|
|
23
|
+
.filter((i, input) => input.value === '')
|
|
24
|
+
.prop({ disabled: true })
|
|
25
|
+
.end()
|
|
26
|
+
.serializeArray();
|
|
27
|
+
|
|
28
|
+
if (ActiveAdmin.turbolinks) {
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
ActiveAdmin.turbolinksVisit(params);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static _setSearchType() {
|
|
35
|
+
$(this).siblings('input').prop({name: `q[${this.value}]`});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
$(document).
|
|
41
|
+
on('click', '.clear_filters_btn', Filters._clearForm).
|
|
42
|
+
on('submit', '.filter_form', Filters._disableEmptyInputFields).
|
|
43
|
+
on('change', '.filter_form_field.select_and_search select', Filters._setSearchType);
|
|
44
|
+
|
|
45
|
+
})(jQuery, window.activeadmin);
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
((window, $) => {
|
|
2
|
+
|
|
3
|
+
class ActiveAdmin {
|
|
4
|
+
|
|
5
|
+
static get turbolinks() {
|
|
6
|
+
return (typeof Turbolinks !== 'undefined' && Turbolinks.supported);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
static turbolinksVisit(params) {
|
|
10
|
+
const path = [window.location.pathname, '?', this.toQueryString(params)].join('')
|
|
11
|
+
Turbolinks.visit(path);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static queryString() {
|
|
15
|
+
return (window.location.search || '').replace(/^\?/, '');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
static queryStringToParams() {
|
|
19
|
+
const decode = (value) => decodeURIComponent((value || '').replace(/\+/g, '%20'));
|
|
20
|
+
|
|
21
|
+
return this.queryString()
|
|
22
|
+
.split("&")
|
|
23
|
+
.map(pair => pair.split("="))
|
|
24
|
+
.map(([key, value]) => {
|
|
25
|
+
return { name: decode(key), value: decode(value) }
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static toQueryString(params) {
|
|
30
|
+
const encode = (value) => encodeURIComponent(value || '');
|
|
31
|
+
|
|
32
|
+
return params
|
|
33
|
+
.map(({name, value}) => [ encode(name), encode(value) ])
|
|
34
|
+
.map(pair => pair.join('='))
|
|
35
|
+
.join('&')
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
window.activeadmin = ActiveAdmin
|
|
40
|
+
|
|
41
|
+
})(window, jQuery);
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const onDOMReady = function() {
|
|
2
|
+
// Detach any previously attached handlers before re-attaching them.
|
|
3
|
+
// This avoids double-registered handlers when Turbolinks is enabled
|
|
4
|
+
$('.batch_actions_selector li a').off('click confirm:complete');
|
|
5
|
+
|
|
6
|
+
//
|
|
7
|
+
// Use ActiveAdmin.modal_dialog to prompt user if
|
|
8
|
+
// confirmation is required for current Batch Action
|
|
9
|
+
//
|
|
10
|
+
$('.batch_actions_selector li a').on('click', function(event){
|
|
11
|
+
let message;
|
|
12
|
+
event.stopPropagation(); // prevent Rails UJS click event
|
|
13
|
+
event.preventDefault();
|
|
14
|
+
if ((message = $(this).data('confirm'))) {
|
|
15
|
+
ActiveAdmin.modal_dialog(message, $(this).data('inputs'), inputs => {
|
|
16
|
+
$(this).trigger('confirm:complete', inputs);
|
|
17
|
+
});
|
|
18
|
+
} else {
|
|
19
|
+
$(this).trigger('confirm:complete');
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
$('.batch_actions_selector li a').on('confirm:complete', function(event, inputs){
|
|
24
|
+
let val;
|
|
25
|
+
if ((val = JSON.stringify(inputs))) {
|
|
26
|
+
$('#batch_action_inputs').removeAttr('disabled').val(val);
|
|
27
|
+
} else {
|
|
28
|
+
$('#batch_action_inputs').attr('disabled', 'disabled');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
$('#batch_action').val($(this).data('action'));
|
|
32
|
+
$('#collection_selection').submit();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
//
|
|
36
|
+
// Add checkbox selection to resource tables and lists if batch actions are enabled
|
|
37
|
+
//
|
|
38
|
+
|
|
39
|
+
if ($(".batch_actions_selector").length && $(":checkbox.toggle_all").length) {
|
|
40
|
+
|
|
41
|
+
if ($(".paginated_collection table.index_table").length) {
|
|
42
|
+
$(".paginated_collection table.index_table").tableCheckboxToggler();
|
|
43
|
+
} else {
|
|
44
|
+
$(".paginated_collection").checkboxToggler();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
$(document).on('change', '.paginated_collection :checkbox', function() {
|
|
48
|
+
if ($(".paginated_collection :checkbox:checked").length) {
|
|
49
|
+
$(".batch_actions_selector").each(function() { $(this).aaDropdownMenu("enable"); });
|
|
50
|
+
} else {
|
|
51
|
+
$(".batch_actions_selector").each(function() { $(this).aaDropdownMenu("disable"); });
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
$(document).
|
|
58
|
+
ready(onDOMReady).
|
|
59
|
+
on('page:load turbolinks:load turbo:load', onDOMReady);
|