activeadmin-orac 1.0.0.pre4
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 +15 -0
- data/.gitignore +49 -0
- data/.hound.yml +14 -0
- data/.travis.yml +40 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +120 -0
- data/CODE_OF_CONDUCT.md +22 -0
- data/CONTRIBUTING.md +144 -0
- data/Gemfile +78 -0
- data/Guardfile +8 -0
- data/LICENSE +20 -0
- data/README.md +102 -0
- data/Rakefile +33 -0
- data/activeadmin.gemspec +31 -0
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -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.js.coffee +9 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
- data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +7 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +10 -0
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +22 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +3 -0
- data/app/assets/javascripts/active_admin/jquery_ui.js.erb +11 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +44 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +101 -0
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +45 -0
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +42 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +24 -0
- data/app/assets/stylesheets/active_admin/_base.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +333 -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 +11 -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 +44 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +16 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
- data/app/assets/stylesheets/active_admin/components/_tables.scss +110 -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 +10 -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/_reset.scss +165 -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 +288 -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/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/_links.erb +27 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +39 -0
- data/config/locales/ar.yml +136 -0
- data/config/locales/bg.yml +121 -0
- data/config/locales/bs.yml +122 -0
- data/config/locales/ca.yml +107 -0
- data/config/locales/cs.yml +110 -0
- data/config/locales/da.yml +106 -0
- data/config/locales/de-CH.yml +102 -0
- data/config/locales/de.yml +135 -0
- data/config/locales/el.yml +127 -0
- data/config/locales/en-GB.yml +98 -0
- data/config/locales/en.yml +136 -0
- data/config/locales/es-MX.yml +94 -0
- data/config/locales/es.yml +136 -0
- data/config/locales/fa.yml +120 -0
- data/config/locales/fi.yml +113 -0
- data/config/locales/fr.yml +119 -0
- data/config/locales/he.yml +95 -0
- data/config/locales/hr.yml +124 -0
- data/config/locales/hu.yml +99 -0
- data/config/locales/id.yml +136 -0
- data/config/locales/it.yml +136 -0
- data/config/locales/ja.yml +136 -0
- data/config/locales/ko.yml +121 -0
- data/config/locales/lt.yml +121 -0
- data/config/locales/lv.yml +93 -0
- data/config/locales/nb.yml +121 -0
- data/config/locales/nl.yml +134 -0
- data/config/locales/pl.yml +98 -0
- data/config/locales/pt-BR.yml +136 -0
- data/config/locales/pt-PT.yml +93 -0
- data/config/locales/ro.yml +97 -0
- data/config/locales/ru.yml +140 -0
- data/config/locales/sv-SE.yml +134 -0
- data/config/locales/tr.yml +136 -0
- data/config/locales/uk.yml +137 -0
- data/config/locales/vi.yml +94 -0
- data/config/locales/zh-CN.yml +112 -0
- data/config/locales/zh-TW.yml +136 -0
- data/cucumber.yml +3 -0
- data/docs/0-installation.md +112 -0
- data/docs/1-general-configuration.md +171 -0
- data/docs/10-custom-pages.md +106 -0
- data/docs/11-decorators.md +55 -0
- data/docs/12-arbre-components.md +150 -0
- data/docs/13-authorization-adapter.md +248 -0
- data/docs/14-gotchas.md +116 -0
- data/docs/2-resource-customization.md +422 -0
- data/docs/3-index-pages.md +272 -0
- data/docs/3-index-pages/custom-index.md +31 -0
- data/docs/3-index-pages/index-as-block.md +21 -0
- data/docs/3-index-pages/index-as-blog.md +71 -0
- data/docs/3-index-pages/index-as-grid.md +29 -0
- data/docs/3-index-pages/index-as-table.md +213 -0
- data/docs/4-csv-format.md +58 -0
- data/docs/5-forms.md +172 -0
- data/docs/6-show-pages.md +105 -0
- data/docs/7-sidebars.md +71 -0
- data/docs/8-custom-actions.md +160 -0
- data/docs/9-batch-actions.md +233 -0
- data/docs/README.md +24 -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 +66 -0
- data/features/breadcrumb.feature +75 -0
- data/features/comments/commenting.feature +171 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +16 -0
- data/features/decorators.feature +43 -0
- data/features/development_reloading.feature +30 -0
- data/features/edit_page.feature +117 -0
- data/features/favicon.feature +20 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +29 -0
- data/features/i18n.feature +43 -0
- data/features/index/batch_actions.feature +196 -0
- data/features/index/filters.feature +161 -0
- data/features/index/format_as_csv.feature +203 -0
- data/features/index/formats.feature +66 -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 +251 -0
- data/features/index/page_title.feature +42 -0
- data/features/index/pagination.feature +63 -0
- data/features/index/switch_index_view.feature +73 -0
- data/features/menu.feature +53 -0
- data/features/meta_tags.feature +21 -0
- data/features/new_page.feature +109 -0
- data/features/registering_assets.feature +34 -0
- data/features/registering_pages.feature +148 -0
- data/features/registering_resources.feature +33 -0
- data/features/renamed_resource.feature +32 -0
- data/features/root_to.feature +17 -0
- data/features/show/columns.feature +40 -0
- data/features/show/default_content.feature +44 -0
- data/features/show/page_title.feature +59 -0
- data/features/show/tabs.feature +27 -0
- data/features/sidebar_sections.feature +210 -0
- data/features/site_title.feature +47 -0
- data/features/specifying_actions.feature +93 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/action_link_steps.rb +20 -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/batch_action_steps.rb +81 -0
- data/features/step_definitions/blog_steps.rb +3 -0
- data/features/step_definitions/breadcrumb_steps.rb +3 -0
- data/features/step_definitions/column_steps.rb +8 -0
- data/features/step_definitions/comment_steps.rb +12 -0
- data/features/step_definitions/configuration_steps.rb +100 -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 +39 -0
- data/features/step_definitions/flash_steps.rb +11 -0
- data/features/step_definitions/format_steps.rb +52 -0
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/index_scope_steps.rb +21 -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/sidebar_steps.rb +13 -0
- data/features/step_definitions/site_title_steps.rb +17 -0
- data/features/step_definitions/symbol_leak_steps.rb +3 -0
- data/features/step_definitions/tab_steps.rb +8 -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 +85 -0
- data/features/sti_resource.feature +65 -0
- data/features/strong_parameters.feature +73 -0
- data/features/support/env.rb +162 -0
- data/features/support/paths.rb +71 -0
- data/features/support/selectors.rb +45 -0
- data/features/symbol_leak.feature +35 -0
- data/features/users/logging_in.feature +36 -0
- data/features/users/logging_out.feature +13 -0
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin.rb +130 -0
- data/lib/active_admin/abstract_view_factory.rb +85 -0
- data/lib/active_admin/application.rb +324 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +132 -0
- data/lib/active_admin/base_controller.rb +87 -0
- data/lib/active_admin/base_controller/authorization.rb +130 -0
- data/lib/active_admin/base_controller/menu.rb +38 -0
- data/lib/active_admin/batch_actions.rb +16 -0
- data/lib/active_admin/batch_actions/controller.rb +40 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +159 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -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 +129 -0
- data/lib/active_admin/dependency.rb +168 -0
- data/lib/active_admin/deprecation.rb +35 -0
- data/lib/active_admin/devise.rb +80 -0
- data/lib/active_admin/dsl.rb +173 -0
- data/lib/active_admin/engine.rb +16 -0
- data/lib/active_admin/error.rb +62 -0
- data/lib/active_admin/event.rb +24 -0
- data/lib/active_admin/filters.rb +9 -0
- data/lib/active_admin/filters/active.rb +30 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +83 -0
- data/lib/active_admin/filters/formtastic_addons.rb +79 -0
- data/lib/active_admin/filters/humanized.rb +68 -0
- data/lib/active_admin/filters/resource_extension.rb +194 -0
- data/lib/active_admin/form_builder.rb +145 -0
- data/lib/active_admin/generators/boilerplate.rb +45 -0
- data/lib/active_admin/helpers/collection.rb +17 -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/helpers/settings.rb +115 -0
- data/lib/active_admin/inputs.rb +20 -0
- data/lib/active_admin/inputs/datepicker_input.rb +20 -0
- data/lib/active_admin/inputs/filters/base.rb +44 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -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 +36 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
- data/lib/active_admin/inputs/filters/select_input.rb +55 -0
- data/lib/active_admin/inputs/filters/string_input.rb +26 -0
- data/lib/active_admin/menu.rb +108 -0
- data/lib/active_admin/menu_collection.rb +93 -0
- data/lib/active_admin/menu_item.rb +97 -0
- data/lib/active_admin/namespace.rb +247 -0
- data/lib/active_admin/order_clause.rb +26 -0
- data/lib/active_admin/orm/active_record.rb +5 -0
- data/lib/active_admin/orm/active_record/comments.rb +95 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +45 -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/show_page_helper.rb +23 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +88 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/page.rb +92 -0
- data/lib/active_admin/page_controller.rb +33 -0
- data/lib/active_admin/page_dsl.rb +28 -0
- data/lib/active_admin/page_presenter.rb +32 -0
- data/lib/active_admin/pundit_adapter.rb +68 -0
- data/lib/active_admin/reloader.rb +25 -0
- data/lib/active_admin/resource.rb +168 -0
- data/lib/active_admin/resource/action_items.rb +108 -0
- data/lib/active_admin/resource/belongs_to.rb +44 -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 +64 -0
- data/lib/active_admin/resource/naming.rb +62 -0
- data/lib/active_admin/resource/page_presenters.rb +82 -0
- data/lib/active_admin/resource/pagination.rb +23 -0
- data/lib/active_admin/resource/routes.rb +115 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +50 -0
- data/lib/active_admin/resource/sidebars.rb +28 -0
- data/lib/active_admin/resource_collection.rb +72 -0
- data/lib/active_admin/resource_controller.rb +51 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +317 -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 +43 -0
- data/lib/active_admin/resource_dsl.rb +190 -0
- data/lib/active_admin/router.rb +106 -0
- data/lib/active_admin/scope.rb +56 -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 +27 -0
- data/lib/active_admin/view_helpers.rb +19 -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 +33 -0
- data/lib/active_admin/view_helpers/display_helper.rb +97 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +46 -0
- data/lib/active_admin/view_helpers/fields_for.rb +51 -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/method_or_proc_helper.rb +97 -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/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/active_admin_form.rb +124 -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 +68 -0
- data/lib/active_admin/views/components/paginated_collection.rb +163 -0
- data/lib/active_admin/views/components/panel.rb +38 -0
- data/lib/active_admin/views/components/scopes.rb +66 -0
- data/lib/active_admin/views/components/sidebar_section.rb +34 -0
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +80 -0
- data/lib/active_admin/views/components/table_for.rb +218 -0
- data/lib/active_admin/views/components/tabs.rb +28 -0
- data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
- data/lib/active_admin/views/footer.rb +20 -0
- data/lib/active_admin/views/header.rb +32 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +156 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +373 -0
- data/lib/active_admin/views/pages/base.rb +147 -0
- data/lib/active_admin/views/pages/form.rb +65 -0
- data/lib/active_admin/views/pages/index.rb +163 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/page.rb +30 -0
- data/lib/active_admin/views/pages/show.rb +59 -0
- data/lib/active_admin/views/tabbed_navigation.rb +66 -0
- data/lib/active_admin/views/title_bar.rb +55 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +65 -0
- data/lib/generators/active_admin/install/install_generator.rb +45 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +272 -0
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +30 -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 +19 -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 +45 -0
- data/lib/ransack_ext.rb +20 -0
- data/script/local +53 -0
- data/script/travis_cache +107 -0
- data/script/use_rails +53 -0
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -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/flashes.html +2 -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_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/rails_helper.rb +161 -0
- data/spec/requests/default_namespace_spec.rb +61 -0
- data/spec/requests/javascript_spec.rb +22 -0
- data/spec/requests/memory_spec.rb +21 -0
- data/spec/requests/stylesheets_spec.rb +18 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/active_admin_request_helpers.rb +27 -0
- data/spec/support/deferred_garbage_collection.rb +19 -0
- data/spec/support/detect_rails_version.rb +34 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +162 -0
- data/spec/support/rails_template_with_data.rb +74 -0
- data/spec/support/templates/admin/stores.rb +9 -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 +45 -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 +11 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +134 -0
- data/spec/unit/active_admin_spec.rb +11 -0
- data/spec/unit/application_spec.rb +165 -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 +39 -0
- data/spec/unit/authorization/index_overriding_spec.rb +23 -0
- data/spec/unit/auto_link_spec.rb +69 -0
- data/spec/unit/batch_actions/resource_spec.rb +97 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/belongs_to_spec.rb +65 -0
- data/spec/unit/cancan_adapter_spec.rb +43 -0
- data/spec/unit/comments_spec.rb +188 -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 +303 -0
- data/spec/unit/dependency_spec.rb +135 -0
- data/spec/unit/devise_spec.rb +96 -0
- data/spec/unit/dsl_spec.rb +122 -0
- data/spec/unit/filters/filter_form_builder_spec.rb +434 -0
- data/spec/unit/filters/humanized_spec.rb +64 -0
- data/spec/unit/filters/resource_spec.rb +128 -0
- data/spec/unit/form_builder_spec.rb +932 -0
- data/spec/unit/generators/install_spec.rb +24 -0
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/i18n_spec.rb +12 -0
- data/spec/unit/menu_collection_spec.rb +62 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +71 -0
- data/spec/unit/namespace/authorization_spec.rb +27 -0
- data/spec/unit/namespace/register_page_spec.rb +73 -0
- data/spec/unit/namespace/register_resource_spec.rb +160 -0
- data/spec/unit/namespace_spec.rb +103 -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 +78 -0
- data/spec/unit/pretty_format_spec.rb +77 -0
- data/spec/unit/pundit_adapter_spec.rb +98 -0
- data/spec/unit/resource/action_items_spec.rb +65 -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 +122 -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 +77 -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 +140 -0
- data/spec/unit/resource_controller/decorators_spec.rb +94 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +38 -0
- data/spec/unit/resource_controller_spec.rb +269 -0
- data/spec/unit/resource_registration_spec.rb +56 -0
- data/spec/unit/resource_spec.rb +337 -0
- data/spec/unit/routing_spec.rb +185 -0
- data/spec/unit/scope_spec.rb +185 -0
- data/spec/unit/settings_spec.rb +118 -0
- data/spec/unit/view_factory_spec.rb +19 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +217 -0
- data/spec/unit/view_helpers/display_helper_spec.rb +165 -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 +25 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +43 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +139 -0
- data/spec/unit/views/components/attributes_table_spec.rb +272 -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 +189 -0
- data/spec/unit/views/components/index_list_spec.rb +35 -0
- data/spec/unit/views/components/index_table_for_spec.rb +127 -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 +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +249 -0
- data/spec/unit/views/components/table_for_spec.rb +434 -0
- data/spec/unit/views/components/tabs_spec.rb +39 -0
- data/spec/unit/views/components/unsupported_browser_spec.rb +41 -0
- data/spec/unit/views/index_as_blog_spec.rb +76 -0
- data/spec/unit/views/pages/form_spec.rb +51 -0
- data/spec/unit/views/pages/index_spec.rb +60 -0
- data/spec/unit/views/pages/layout_spec.rb +59 -0
- data/spec/unit/views/pages/show_spec.rb +33 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +158 -0
- data/tasks/docs.rake +37 -0
- data/tasks/parallel_tests.rake +66 -0
- data/tasks/test.rake +91 -0
- data/tasks/yard.rake +9 -0
- metadata +974 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < BaseController
|
|
3
|
+
module Decorators
|
|
4
|
+
|
|
5
|
+
protected
|
|
6
|
+
|
|
7
|
+
def apply_decorator(resource)
|
|
8
|
+
decorate? ? decorator_class.new(resource) : resource
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def apply_collection_decorator(collection)
|
|
12
|
+
if decorate?
|
|
13
|
+
collection_decorator.decorate collection, with: decorator_class
|
|
14
|
+
else
|
|
15
|
+
collection
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.undecorate(resource)
|
|
20
|
+
if resource.respond_to?(:decorated?) && resource.decorated?
|
|
21
|
+
resource.model
|
|
22
|
+
else
|
|
23
|
+
resource
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def decorate?
|
|
30
|
+
case action_name
|
|
31
|
+
when 'new', 'edit', 'create', 'update'
|
|
32
|
+
form = active_admin_config.get_page_presenter :form
|
|
33
|
+
form && form.options[:decorate] && decorator_class.present?
|
|
34
|
+
else
|
|
35
|
+
decorator_class.present?
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def decorator_class
|
|
40
|
+
active_admin_config.decorator_class
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# When using Draper, we wrap the collection draper in a new class that
|
|
44
|
+
# correctly delegates methods that Active Admin depends on.
|
|
45
|
+
def collection_decorator
|
|
46
|
+
if decorator_class
|
|
47
|
+
Wrapper.wrap decorator_class
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
class Wrapper
|
|
52
|
+
@cache = {}
|
|
53
|
+
|
|
54
|
+
def self.wrap(decorator)
|
|
55
|
+
collection_decorator = find_collection_decorator(decorator)
|
|
56
|
+
|
|
57
|
+
if draper_collection_decorator? collection_decorator
|
|
58
|
+
name = "#{collection_decorator.name} of #{decorator} + ActiveAdmin"
|
|
59
|
+
@cache[name] ||= wrap! collection_decorator, name
|
|
60
|
+
else
|
|
61
|
+
collection_decorator
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
|
|
67
|
+
def self.wrap!(parent, name)
|
|
68
|
+
::Class.new parent do
|
|
69
|
+
delegate :reorder, :page, :current_page, :total_pages, :limit_value,
|
|
70
|
+
:total_count, :total_pages, :to_key, :group_values, :except,
|
|
71
|
+
:find_each, :ransack
|
|
72
|
+
|
|
73
|
+
define_singleton_method(:name) { name }
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Draper::CollectionDecorator was introduced in 1.0.0
|
|
78
|
+
# Draper::Decorator#collection_decorator_class was introduced in 1.3.0
|
|
79
|
+
def self.find_collection_decorator(decorator)
|
|
80
|
+
if Dependency.draper? '>= 1.3.0'
|
|
81
|
+
decorator.collection_decorator_class
|
|
82
|
+
elsif Dependency.draper? '>= 1.0.0'
|
|
83
|
+
draper_collection_decorator
|
|
84
|
+
else
|
|
85
|
+
decorator
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def self.draper_collection_decorator?(decorator)
|
|
90
|
+
decorator && decorator <= draper_collection_decorator
|
|
91
|
+
rescue NameError
|
|
92
|
+
false
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def self.draper_collection_decorator
|
|
96
|
+
::Draper::CollectionDecorator
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < BaseController
|
|
3
|
+
module ResourceClassMethods
|
|
4
|
+
|
|
5
|
+
# Override the default `resource_class` class and instance
|
|
6
|
+
# methods to only return the class defined in the instance
|
|
7
|
+
# of ActiveAdmin::Resource
|
|
8
|
+
def override_resource_class_methods!
|
|
9
|
+
class_exec do
|
|
10
|
+
def self.resource_class=(klass); end
|
|
11
|
+
|
|
12
|
+
def self.resource_class
|
|
13
|
+
@active_admin_config ? @active_admin_config.resource_class : nil
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def resource_class
|
|
17
|
+
self.class.resource_class
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < BaseController
|
|
3
|
+
|
|
4
|
+
# This module deals with scoping entire controllers to a relation
|
|
5
|
+
module Scoping
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
protected
|
|
9
|
+
|
|
10
|
+
# Override the default InheritedResource #begin_of_association_chain to allow
|
|
11
|
+
# the scope to be defined in the active admin configuration.
|
|
12
|
+
#
|
|
13
|
+
# If scope_to is a proc, we eval it, otherwise we call the method on the controller.
|
|
14
|
+
#
|
|
15
|
+
# Collection can be scoped conditionally with an :if or :unless proc.
|
|
16
|
+
def begin_of_association_chain
|
|
17
|
+
return nil unless active_admin_config.scope_to?(self)
|
|
18
|
+
render_in_context(self, active_admin_config.scope_to_method)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Overriding from InheritedResources::BaseHelpers
|
|
22
|
+
#
|
|
23
|
+
# Returns the method for the association chain when using
|
|
24
|
+
# the scope_to option
|
|
25
|
+
def method_for_association_chain
|
|
26
|
+
active_admin_config.scope_to_association_method || super
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'csv'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
class ResourceController < BaseController
|
|
5
|
+
|
|
6
|
+
# This module overrides CSV responses to allow large data downloads.
|
|
7
|
+
# Could be expanded to JSON and XML in the future.
|
|
8
|
+
#
|
|
9
|
+
module Streaming
|
|
10
|
+
|
|
11
|
+
def index
|
|
12
|
+
super do |format|
|
|
13
|
+
format.csv { stream_csv }
|
|
14
|
+
yield(format) if block_given?
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
protected
|
|
19
|
+
|
|
20
|
+
def stream_resource(&block)
|
|
21
|
+
headers['X-Accel-Buffering'] = 'no'
|
|
22
|
+
headers['Cache-Control'] = 'no-cache'
|
|
23
|
+
|
|
24
|
+
if ActiveAdmin.application.disable_streaming_in.include? Rails.env
|
|
25
|
+
self.response_body = block['']
|
|
26
|
+
else
|
|
27
|
+
self.response_body = Enumerator.new &block
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def csv_filename
|
|
32
|
+
"#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.zone.now.to_date.to_s(:default)}.csv"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def stream_csv
|
|
36
|
+
headers['Content-Type'] = 'text/csv; charset=utf-8' # In Rails 5 it's set to HTML??
|
|
37
|
+
headers['Content-Disposition'] = %{attachment; filename="#{csv_filename}"}
|
|
38
|
+
stream_resource &active_admin_config.csv_builder.method(:build).to_proc.curry[self]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
# This is the class where all the register blocks are evaluated.
|
|
3
|
+
class ResourceDSL < DSL
|
|
4
|
+
def initialize(config, resource_class)
|
|
5
|
+
@resource = resource_class
|
|
6
|
+
super(config)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def belongs_to(target, options = {})
|
|
12
|
+
config.belongs_to(target, options)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Scope collection to a relation
|
|
16
|
+
def scope_to(*args, &block)
|
|
17
|
+
config.scope_to(*args, &block)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Create a scope
|
|
21
|
+
def scope(*args, &block)
|
|
22
|
+
config.scope(*args, &block)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Store relations that should be included
|
|
26
|
+
def includes(*args)
|
|
27
|
+
config.includes.push *args
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# Rails 4 Strong Parameters Support
|
|
32
|
+
#
|
|
33
|
+
# Either
|
|
34
|
+
#
|
|
35
|
+
# permit_params :title, :author, :body, tags: []
|
|
36
|
+
#
|
|
37
|
+
# Or
|
|
38
|
+
#
|
|
39
|
+
# permit_params do
|
|
40
|
+
# defaults = [:title, :body]
|
|
41
|
+
# if current_user.admin?
|
|
42
|
+
# defaults + [:author]
|
|
43
|
+
# else
|
|
44
|
+
# defaults
|
|
45
|
+
# end
|
|
46
|
+
# end
|
|
47
|
+
#
|
|
48
|
+
# Keys included in the `permitted_params` setting are automatically whitelisted.
|
|
49
|
+
#
|
|
50
|
+
def permit_params(*args, &block)
|
|
51
|
+
param_key = config.param_key.to_sym
|
|
52
|
+
|
|
53
|
+
controller do
|
|
54
|
+
define_method :permitted_params do
|
|
55
|
+
params.permit *active_admin_namespace.permitted_params,
|
|
56
|
+
param_key => block ? instance_exec(&block) : args
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Configure the index page for the resource
|
|
62
|
+
def index(options = {}, &block)
|
|
63
|
+
options[:as] ||= :table
|
|
64
|
+
config.set_page_presenter :index, ActiveAdmin::PagePresenter.new(options, &block)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Configure the show page for the resource
|
|
68
|
+
def show(options = {}, &block)
|
|
69
|
+
config.set_page_presenter :show, ActiveAdmin::PagePresenter.new(options, &block)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def form(options = {}, &block)
|
|
73
|
+
config.set_page_presenter :form, ActiveAdmin::PagePresenter.new(options, &block)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Configure the CSV format
|
|
77
|
+
#
|
|
78
|
+
# For example:
|
|
79
|
+
#
|
|
80
|
+
# csv do
|
|
81
|
+
# column :name
|
|
82
|
+
# column("Author") { |post| post.author.full_name }
|
|
83
|
+
# end
|
|
84
|
+
#
|
|
85
|
+
# csv col_sep: ";", force_quotes: true do
|
|
86
|
+
# column :name
|
|
87
|
+
# end
|
|
88
|
+
#
|
|
89
|
+
def csv(options={}, &block)
|
|
90
|
+
options[:resource] = @resource
|
|
91
|
+
|
|
92
|
+
config.csv_builder = CSVBuilder.new(options, &block)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Member Actions give you the functionality of defining both the
|
|
96
|
+
# action and the route directly from your ActiveAdmin registration
|
|
97
|
+
# block.
|
|
98
|
+
#
|
|
99
|
+
# For example:
|
|
100
|
+
#
|
|
101
|
+
# ActiveAdmin.register Post do
|
|
102
|
+
# member_action :comments do
|
|
103
|
+
# @post = Post.find(params[:id]
|
|
104
|
+
# @comments = @post.comments
|
|
105
|
+
# end
|
|
106
|
+
# end
|
|
107
|
+
#
|
|
108
|
+
# Will create a new controller action comments and will hook it up to
|
|
109
|
+
# the named route (comments_admin_post_path) /admin/posts/:id/comments
|
|
110
|
+
#
|
|
111
|
+
# You can treat everything within the block as a standard Rails controller
|
|
112
|
+
# action.
|
|
113
|
+
#
|
|
114
|
+
def action(set, name, options = {}, &block)
|
|
115
|
+
set << ControllerAction.new(name, options)
|
|
116
|
+
title = options.delete(:title)
|
|
117
|
+
|
|
118
|
+
controller do
|
|
119
|
+
callback = ActiveAdmin::Dependency.rails >= 4 ? :before_action : :before_filter
|
|
120
|
+
send(callback, only: [name]) { @page_title = title } if title
|
|
121
|
+
define_method(name, &block || Proc.new{})
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def member_action(name, options = {}, &block)
|
|
126
|
+
action config.member_actions, name, options, &block
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def collection_action(name, options = {}, &block)
|
|
130
|
+
action config.collection_actions, name, options, &block
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Defined Callbacks
|
|
134
|
+
#
|
|
135
|
+
# == After Build
|
|
136
|
+
# Called after the resource is built in the new and create actions.
|
|
137
|
+
#
|
|
138
|
+
# ActiveAdmin.register Post do
|
|
139
|
+
# after_build do |post|
|
|
140
|
+
# post.author = current_user
|
|
141
|
+
# end
|
|
142
|
+
# end
|
|
143
|
+
#
|
|
144
|
+
# == Before / After Create
|
|
145
|
+
# Called before and after a resource is saved to the db on the create action.
|
|
146
|
+
#
|
|
147
|
+
# == Before / After Update
|
|
148
|
+
# Called before and after a resource is saved to the db on the update action.
|
|
149
|
+
#
|
|
150
|
+
# == Before / After Save
|
|
151
|
+
# Called before and after the object is saved in the create and update action.
|
|
152
|
+
# Note: Gets called after the create and update callbacks
|
|
153
|
+
#
|
|
154
|
+
# == Before / After Destroy
|
|
155
|
+
# Called before and after the object is destroyed from the database.
|
|
156
|
+
#
|
|
157
|
+
delegate :before_build, :after_build, to: :controller
|
|
158
|
+
delegate :before_create, :after_create, to: :controller
|
|
159
|
+
delegate :before_update, :after_update, to: :controller
|
|
160
|
+
delegate :before_save, :after_save, to: :controller
|
|
161
|
+
delegate :before_destroy, :after_destroy, to: :controller
|
|
162
|
+
|
|
163
|
+
# This code defines both *_filter and *_action for Rails 3.2 to Rails 5.
|
|
164
|
+
actions = [
|
|
165
|
+
:before, :skip_before,
|
|
166
|
+
:after, :skip_after,
|
|
167
|
+
:around, :skip
|
|
168
|
+
]
|
|
169
|
+
destination = ActiveAdmin::Dependency.rails >= 4 ? :action : :filter
|
|
170
|
+
[:action, :filter].each do |name|
|
|
171
|
+
actions.each do |action|
|
|
172
|
+
define_method "#{action}_#{name}" do |*args, &block|
|
|
173
|
+
controller.public_send "#{action}_#{destination}", *args, &block
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Specify which actions to create in the controller
|
|
179
|
+
#
|
|
180
|
+
# Eg:
|
|
181
|
+
#
|
|
182
|
+
# ActiveAdmin.register Post do
|
|
183
|
+
# actions :index, :show
|
|
184
|
+
# end
|
|
185
|
+
#
|
|
186
|
+
# Will only create the index and show actions (no create, update or delete)
|
|
187
|
+
delegate :actions, to: :controller
|
|
188
|
+
|
|
189
|
+
end
|
|
190
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Router
|
|
3
|
+
def initialize(application)
|
|
4
|
+
@application = application
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# Creates all the necessary routes for the ActiveAdmin configurations
|
|
8
|
+
#
|
|
9
|
+
# Use this within the routes.rb file:
|
|
10
|
+
#
|
|
11
|
+
# Application.routes.draw do |map|
|
|
12
|
+
# ActiveAdmin.routes(self)
|
|
13
|
+
# end
|
|
14
|
+
#
|
|
15
|
+
def apply(router)
|
|
16
|
+
define_root_routes router
|
|
17
|
+
define_resource_routes router
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def define_root_routes(router)
|
|
21
|
+
router.instance_exec @application.namespaces do |namespaces|
|
|
22
|
+
namespaces.each do |namespace|
|
|
23
|
+
if namespace.root?
|
|
24
|
+
root namespace.root_to_options.merge(to: namespace.root_to)
|
|
25
|
+
else
|
|
26
|
+
namespace namespace.name do
|
|
27
|
+
root namespace.root_to_options.merge(to: namespace.root_to, as: :root)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Defines the routes for each resource
|
|
35
|
+
def define_resource_routes(router)
|
|
36
|
+
router.instance_exec @application.namespaces, self do |namespaces, aa_router|
|
|
37
|
+
resources = namespaces.flat_map{ |n| n.resources.values }
|
|
38
|
+
resources.each do |config|
|
|
39
|
+
routes = aa_router.resource_routes(config)
|
|
40
|
+
|
|
41
|
+
# Add in the parent if it exists
|
|
42
|
+
if config.belongs_to?
|
|
43
|
+
belongs_to = routes
|
|
44
|
+
routes = Proc.new do
|
|
45
|
+
# If it's optional, make the normal resource routes
|
|
46
|
+
instance_exec &belongs_to if config.belongs_to_config.optional?
|
|
47
|
+
|
|
48
|
+
# Make the nested belongs_to routes
|
|
49
|
+
# :only is set to nothing so that we don't clobber any existing routes on the resource
|
|
50
|
+
resources config.belongs_to_config.target.resource_name.plural, only: [] do
|
|
51
|
+
instance_exec &belongs_to
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Add on the namespace if required
|
|
57
|
+
unless config.namespace.root?
|
|
58
|
+
nested = routes
|
|
59
|
+
routes = Proc.new do
|
|
60
|
+
namespace config.namespace.name do
|
|
61
|
+
instance_exec &nested
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
instance_exec &routes
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def resource_routes(config)
|
|
72
|
+
Proc.new do
|
|
73
|
+
# Builds one route for each HTTP verb passed in
|
|
74
|
+
build_route = proc{ |verbs, *args|
|
|
75
|
+
[*verbs].each{ |verb| send verb, *args }
|
|
76
|
+
}
|
|
77
|
+
# Deals with +ControllerAction+ instances
|
|
78
|
+
build_action = proc{ |action|
|
|
79
|
+
build_route.call(action.http_verb, action.name)
|
|
80
|
+
}
|
|
81
|
+
case config
|
|
82
|
+
when ::ActiveAdmin::Resource
|
|
83
|
+
resources config.resource_name.route_key, only: config.defined_actions do
|
|
84
|
+
member do
|
|
85
|
+
config.member_actions.each &build_action
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
collection do
|
|
89
|
+
config.collection_actions.each &build_action
|
|
90
|
+
post :batch_action if config.batch_actions_enabled?
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
when ::ActiveAdmin::Page
|
|
94
|
+
page = config.underscored_resource_name
|
|
95
|
+
get "/#{page}" => "#{page}#index"
|
|
96
|
+
config.page_actions.each do |action|
|
|
97
|
+
build_route.call action.http_verb, "/#{page}/#{action.name}" => "#{page}##{action.name}"
|
|
98
|
+
end
|
|
99
|
+
else
|
|
100
|
+
raise "Unsupported config class: #{config.class}"
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|