activeadmin 1.0.0.pre1 → 2.9.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 +5 -5
- data/CHANGELOG.md +587 -939
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +110 -59
- data/LICENSE +0 -5
- data/README.md +80 -61
- data/app/assets/javascripts/active_admin/base.js +517 -0
- data/app/assets/stylesheets/active_admin/_base.scss +31 -34
- data/app/assets/stylesheets/active_admin/_forms.scss +33 -35
- data/app/assets/stylesheets/active_admin/_header.scss +40 -8
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- data/app/assets/stylesheets/active_admin/_normalize.scss +447 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -5
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
- data/app/assets/stylesheets/active_admin/components/_tables.scss +5 -3
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -11
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -1
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -1
- data/app/assets/stylesheets/active_admin/print.scss +3 -4
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -5
- data/app/javascript/active_admin/base.js +28 -0
- data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
- data/app/javascript/active_admin/ext/jquery.js +9 -0
- data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/datepicker.js +16 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/javascript/active_admin/initializers/has-many.js +95 -0
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/tabs.js +6 -0
- data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
- data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
- data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
- data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
- data/app/views/active_admin/devise/registrations/new.html.erb +3 -4
- data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +12 -6
- data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
- 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/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +21 -7
- data/config/locales/ar.yml +62 -47
- data/config/locales/az.yml +138 -0
- data/config/locales/bg.yml +1 -3
- data/config/locales/bs.yml +1 -2
- data/config/locales/ca.yml +2 -4
- data/config/locales/cs.yml +1 -2
- data/config/locales/da.yml +45 -14
- data/config/locales/de-CH.yml +4 -3
- data/config/locales/de.yml +46 -3
- data/config/locales/el.yml +3 -4
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +46 -5
- data/config/locales/en.yml +44 -9
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +9 -6
- data/config/locales/es.yml +63 -14
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +2 -3
- data/config/locales/fr.yml +36 -8
- data/config/locales/he.yml +53 -7
- data/config/locales/hr.yml +1 -2
- data/config/locales/hu.yml +6 -3
- data/config/locales/id.yml +135 -0
- data/config/locales/it.yml +49 -4
- data/config/locales/ja.yml +31 -7
- data/config/locales/ko.yml +66 -36
- data/config/locales/lt.yml +27 -6
- data/config/locales/lv.yml +3 -4
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +22 -8
- data/config/locales/nl.yml +26 -3
- data/config/locales/pl.yml +75 -5
- data/config/locales/pt-BR.yml +24 -2
- data/config/locales/pt-PT.yml +1 -2
- data/config/locales/ro.yml +1 -2
- data/config/locales/ru.yml +21 -4
- data/config/locales/sk.yml +168 -0
- data/config/locales/sv-SE.yml +50 -8
- data/config/locales/tr.yml +92 -45
- data/config/locales/uk.yml +30 -16
- data/config/locales/vi.yml +53 -12
- data/config/locales/zh-CN.yml +44 -7
- data/config/locales/zh-TW.yml +42 -3
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +68 -18
- data/docs/1-general-configuration.md +88 -4
- data/docs/10-custom-pages.md +56 -2
- data/docs/11-decorators.md +20 -5
- data/docs/12-arbre-components.md +75 -11
- data/docs/13-authorization-adapter.md +73 -36
- data/docs/14-gotchas.md +64 -18
- data/docs/2-resource-customization.md +91 -23
- data/docs/3-index-pages/custom-index.md +5 -1
- data/docs/3-index-pages/index-as-block.md +3 -5
- data/docs/3-index-pages/index-as-blog.md +4 -6
- data/docs/3-index-pages/index-as-grid.md +3 -5
- data/docs/3-index-pages/index-as-table.md +46 -9
- data/docs/3-index-pages.md +73 -10
- data/docs/4-csv-format.md +35 -0
- data/docs/5-forms.md +96 -18
- data/docs/6-show-pages.md +13 -25
- data/docs/7-sidebars.md +13 -1
- data/docs/8-custom-actions.md +18 -1
- data/docs/9-batch-actions.md +9 -5
- data/docs/CNAME +1 -0
- data/docs/Gemfile +3 -0
- data/docs/Gemfile.lock +259 -0
- data/docs/_config.yml +4 -0
- data/docs/_includes/footer.html +8 -0
- data/docs/_includes/google-analytics.html +16 -0
- data/docs/_includes/head.html +7 -0
- data/docs/_includes/toc.html +98 -0
- data/docs/_includes/top-menu.html +17 -0
- data/docs/_layouts/default.html +21 -0
- data/docs/documentation.md +60 -0
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/code-header.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/images/tidelift.svg +14 -0
- data/docs/index.html +226 -0
- data/docs/stylesheets/main.css +1205 -0
- data/lib/active_admin/abstract_view_factory.rb +13 -51
- data/lib/active_admin/application.rb +105 -138
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/authorization_adapter.rb +4 -7
- data/lib/active_admin/base_controller/authorization.rb +16 -21
- data/lib/active_admin/base_controller/menu.rb +10 -10
- data/lib/active_admin/base_controller.rb +15 -11
- data/lib/active_admin/batch_actions/controller.rb +6 -7
- data/lib/active_admin/batch_actions/resource_extension.rb +15 -15
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -4
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -7
- data/lib/active_admin/batch_actions/views/selection_cells.rb +7 -6
- data/lib/active_admin/batch_actions.rb +0 -1
- data/lib/active_admin/callbacks.rb +2 -2
- data/lib/active_admin/cancan_adapter.rb +1 -1
- data/lib/active_admin/collection_decorator.rb +31 -0
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +30 -20
- data/lib/active_admin/dependency.rb +36 -29
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/devise.rb +9 -9
- data/lib/active_admin/dsl.rb +5 -18
- 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 +14 -7
- data/lib/active_admin/error.rb +6 -6
- 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 +54 -0
- data/lib/active_admin/filters/forms.rb +17 -10
- data/lib/active_admin/filters/formtastic_addons.rb +2 -7
- data/lib/active_admin/filters/resource_extension.rb +50 -14
- data/lib/active_admin/filters.rb +7 -5
- data/lib/active_admin/form_builder.rb +112 -67
- data/lib/active_admin/generators/boilerplate.rb +53 -0
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/optional_display.rb +2 -2
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -1
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +13 -6
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +9 -9
- data/lib/active_admin/inputs/filters/base.rb +3 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
- data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +25 -9
- data/lib/active_admin/inputs/filters/select_input.rb +8 -4
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +2 -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 +13 -15
- data/lib/active_admin/menu_collection.rb +0 -2
- data/lib/active_admin/menu_item.rb +10 -38
- data/lib/active_admin/namespace.rb +51 -32
- data/lib/active_admin/namespace_settings.rb +126 -0
- data/lib/active_admin/order_clause.rb +30 -8
- data/lib/active_admin/orm/active_record/comments/comment.rb +6 -20
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +44 -21
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
- data/lib/active_admin/orm/active_record/comments.rb +49 -29
- data/lib/active_admin/orm/active_record.rb +1 -1
- data/lib/active_admin/page.rb +24 -5
- data/lib/active_admin/page_controller.rb +2 -2
- data/lib/active_admin/page_dsl.rb +5 -1
- data/lib/active_admin/page_presenter.rb +2 -1
- data/lib/active_admin/pundit_adapter.rb +22 -9
- data/lib/active_admin/resource/action_items.rb +34 -12
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +17 -4
- data/lib/active_admin/resource/controllers.rb +1 -1
- data/lib/active_admin/resource/menu.rb +9 -6
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +5 -5
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/pagination.rb +4 -0
- data/lib/active_admin/resource/routes.rb +56 -26
- data/lib/active_admin/resource/scope_to.rb +7 -7
- data/lib/active_admin/resource/scopes.rb +5 -3
- data/lib/active_admin/resource/sidebars.rb +2 -2
- data/lib/active_admin/resource.rb +80 -22
- data/lib/active_admin/resource_collection.rb +5 -3
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/data_access.rb +56 -43
- data/lib/active_admin/resource_controller/decorators.rb +9 -31
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_controller/streaming.rb +12 -5
- data/lib/active_admin/resource_controller.rb +26 -10
- data/lib/active_admin/resource_dsl.rb +67 -21
- data/lib/active_admin/router.rb +90 -82
- data/lib/active_admin/scope.rb +21 -14
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +6 -12
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +17 -18
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
- data/lib/active_admin/view_helpers/display_helper.rb +51 -9
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +14 -1
- data/lib/active_admin/view_helpers/fields_for.rb +4 -4
- data/lib/active_admin/view_helpers/form_helper.rb +2 -2
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +11 -4
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers.rb +2 -2
- data/lib/active_admin/views/action_items.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +45 -13
- data/lib/active_admin/views/components/attributes_table.rb +11 -29
- data/lib/active_admin/views/components/blank_slate.rb +1 -1
- data/lib/active_admin/views/components/columns.rb +12 -7
- data/lib/active_admin/views/components/dropdown_menu.rb +11 -13
- data/lib/active_admin/views/components/index_list.rb +6 -5
- 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 +52 -33
- data/lib/active_admin/views/components/panel.rb +2 -4
- data/lib/active_admin/views/components/scopes.rb +20 -12
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/sidebar_section.rb +6 -1
- data/lib/active_admin/views/components/site_title.rb +6 -7
- data/lib/active_admin/views/components/status_tag.rb +19 -23
- data/lib/active_admin/views/components/table_for.rb +31 -57
- data/lib/active_admin/views/components/tabs.rb +17 -5
- data/lib/active_admin/views/footer.rb +15 -4
- data/lib/active_admin/views/header.rb +3 -16
- data/lib/active_admin/views/index_as_blog.rb +3 -4
- data/lib/active_admin/views/index_as_grid.rb +28 -28
- data/lib/active_admin/views/index_as_table.rb +76 -28
- data/lib/active_admin/views/pages/base.rb +45 -58
- data/lib/active_admin/views/pages/form.rb +5 -2
- data/lib/active_admin/views/pages/index.rb +15 -13
- data/lib/active_admin/views/pages/layout.rb +1 -1
- data/lib/active_admin/views/pages/show.rb +9 -3
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/active_admin/views/title_bar.rb +6 -6
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin.rb +69 -67
- data/lib/activeadmin.rb +1 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -3
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/{active_admin.css.scss → active_admin.scss} +3 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +17 -26
- data/lib/generators/active_admin/install/install_generator.rb +18 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +107 -5
- data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -3
- data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
- data/lib/generators/active_admin/install/templates/migrations/{create_active_admin_comments.rb → create_active_admin_comments.rb.erb} +2 -5
- data/lib/generators/active_admin/page/page_generator.rb +1 -1
- data/lib/generators/active_admin/page/templates/page.rb +1 -1
- data/lib/generators/active_admin/resource/resource_generator.rb +8 -2
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
- data/lib/ransack_ext.rb +11 -3
- data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
- data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
- data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
- data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
- data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
- data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
- data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
- data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
- data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
- data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
- data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
- data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
- data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
- data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
- data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
- data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
- metadata +182 -553
- data/.gitignore +0 -49
- data/.hound.yml +0 -11
- data/.travis.yml +0 -42
- data/.yardopts +0 -8
- data/Gemfile +0 -54
- data/Guardfile +0 -8
- data/Rakefile +0 -33
- data/activeadmin.gemspec +0 -28
- 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/application.js.coffee +0 -32
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -14
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -36
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -37
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -27
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +0 -68
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
- data/app/assets/stylesheets/active_admin/components/_popovers.scss +0 -122
- data/app/assets/stylesheets/active_admin/mixins/_icons.scss +0 -20
- data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
- data/cucumber.yml +0 -3
- data/features/action_item.feature +0 -73
- data/features/authorization.feature +0 -64
- data/features/authorization_cancan.feature +0 -52
- data/features/authorization_pundit.feature +0 -37
- data/features/belongs_to.feature +0 -66
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -171
- data/features/comments/viewing_index.feature +0 -19
- data/features/dashboard.feature +0 -16
- data/features/decorators.feature +0 -41
- data/features/development_reloading.feature +0 -30
- data/features/edit_page.feature +0 -117
- data/features/favicon.feature +0 -20
- data/features/first_boot.feature +0 -16
- data/features/global_navigation.feature +0 -29
- data/features/i18n.feature +0 -43
- data/features/index/batch_actions.feature +0 -164
- data/features/index/filters.feature +0 -161
- data/features/index/format_as_csv.feature +0 -203
- data/features/index/formats.feature +0 -66
- data/features/index/index_as_block.feature +0 -15
- data/features/index/index_as_blog.feature +0 -69
- data/features/index/index_as_grid.feature +0 -45
- data/features/index/index_as_table.feature +0 -291
- data/features/index/index_blank_slate.feature +0 -83
- data/features/index/index_parameters.feature +0 -75
- data/features/index/index_scope_to.feature +0 -56
- data/features/index/index_scopes.feature +0 -251
- data/features/index/page_title.feature +0 -41
- data/features/index/pagination.feature +0 -59
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -53
- data/features/new_page.feature +0 -109
- data/features/registering_assets.feature +0 -35
- data/features/registering_pages.feature +0 -148
- data/features/registering_resources.feature +0 -33
- data/features/renamed_resource.feature +0 -32
- data/features/root_to.feature +0 -17
- data/features/show/default_content.feature +0 -43
- data/features/show/page_title.feature +0 -58
- data/features/show/tabs.feature +0 -27
- data/features/sidebar_sections.feature +0 -210
- data/features/site_title.feature +0 -47
- data/features/specifying_actions.feature +0 -93
- data/features/step_definitions/action_item_steps.rb +0 -7
- data/features/step_definitions/action_link_steps.rb +0 -20
- data/features/step_definitions/additional_web_steps.rb +0 -81
- data/features/step_definitions/asset_steps.rb +0 -15
- data/features/step_definitions/attribute_steps.rb +0 -18
- data/features/step_definitions/batch_action_steps.rb +0 -72
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- data/features/step_definitions/comment_steps.rb +0 -12
- data/features/step_definitions/configuration_steps.rb +0 -100
- data/features/step_definitions/dashboard_steps.rb +0 -15
- data/features/step_definitions/factory_steps.rb +0 -34
- data/features/step_definitions/filter_steps.rb +0 -39
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/format_steps.rb +0 -52
- data/features/step_definitions/i18n_steps.rb +0 -3
- data/features/step_definitions/index_scope_steps.rb +0 -21
- data/features/step_definitions/index_views_steps.rb +0 -3
- data/features/step_definitions/layout_steps.rb +0 -3
- data/features/step_definitions/member_link_steps.rb +0 -7
- data/features/step_definitions/menu_steps.rb +0 -11
- data/features/step_definitions/pagination_steps.rb +0 -7
- data/features/step_definitions/sidebar_steps.rb +0 -13
- data/features/step_definitions/site_title_steps.rb +0 -17
- data/features/step_definitions/symbol_leak_steps.rb +0 -3
- data/features/step_definitions/tab_steps.rb +0 -8
- data/features/step_definitions/table_steps.rb +0 -119
- data/features/step_definitions/user_steps.rb +0 -45
- data/features/step_definitions/web_steps.rb +0 -85
- data/features/sti_resource.feature +0 -65
- data/features/strong_parameters.feature +0 -73
- data/features/support/env.rb +0 -145
- data/features/support/paths.rb +0 -71
- data/features/support/selectors.rb +0 -45
- data/features/symbol_leak.feature +0 -35
- data/features/users/logging_in.feature +0 -34
- data/features/users/logging_out.feature +0 -13
- data/features/users/resetting_password.feature +0 -34
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +0 -28
- data/lib/active_admin/event.rb +0 -33
- data/lib/active_admin/helpers/settings.rb +0 -115
- data/lib/active_admin/iconic/icons.rb +0 -142
- data/lib/active_admin/iconic.rb +0 -53
- data/lib/active_admin/view_helpers/icon_helper.rb +0 -12
- data/lib/active_admin/views/components/action_list_popover.rb +0 -29
- data/lib/active_admin/views/components/popover.rb +0 -27
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/lib/generators/active_admin/resource/templates/admin.rb +0 -18
- data/script/local +0 -44
- data/script/travis_cache +0 -107
- data/script/use_rails +0 -53
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +0 -82
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
- data/spec/javascripts/fixtures/checkboxes.html +0 -9
- data/spec/javascripts/fixtures/flashes.html +0 -2
- data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
- data/spec/javascripts/helpers/SpecHelper.js +0 -3
- data/spec/javascripts/support/jasmine.yml +0 -74
- data/spec/javascripts/support/jasmine_config.rb +0 -23
- data/spec/javascripts/support/jasmine_runner.rb +0 -32
- data/spec/rails_helper.rb +0 -154
- data/spec/requests/default_namespace_spec.rb +0 -61
- data/spec/requests/javascript_spec.rb +0 -20
- data/spec/requests/memory_spec.rb +0 -23
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -17
- data/spec/support/deferred_garbage_collection.rb +0 -19
- data/spec/support/detect_rails_version.rb +0 -34
- data/spec/support/integration_example_group.rb +0 -31
- data/spec/support/jslint.yml +0 -80
- data/spec/support/rails_template.rb +0 -138
- data/spec/support/rails_template_with_data.rb +0 -59
- data/spec/support/templates/admin/stores.rb +0 -9
- data/spec/support/templates/cucumber.rb +0 -24
- data/spec/support/templates/cucumber_with_reloading.rb +0 -5
- data/spec/support/templates/en.yml +0 -8
- data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
- data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
- data/spec/support/templates/policies/admin_user_policy.rb +0 -11
- data/spec/support/templates/policies/application_policy.rb +0 -45
- data/spec/support/templates/policies/category_policy.rb +0 -7
- data/spec/support/templates/policies/post_policy.rb +0 -15
- data/spec/support/templates/policies/store_policy.rb +0 -11
- data/spec/support/templates/policies/user_policy.rb +0 -11
- data/spec/support/templates/post_decorator.rb +0 -11
- data/spec/unit/abstract_view_factory_spec.rb +0 -79
- data/spec/unit/action_builder_spec.rb +0 -132
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -140
- data/spec/unit/asset_registration_spec.rb +0 -52
- data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
- data/spec/unit/authorization/controller_authorization_spec.rb +0 -39
- data/spec/unit/authorization/index_overriding_spec.rb +0 -22
- data/spec/unit/auto_link_spec.rb +0 -69
- data/spec/unit/batch_actions/resource_spec.rb +0 -92
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -51
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -166
- data/spec/unit/component_spec.rb +0 -18
- data/spec/unit/config_shared_examples.rb +0 -59
- data/spec/unit/controller_filters_spec.rb +0 -44
- data/spec/unit/csv_builder_spec.rb +0 -244
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -96
- data/spec/unit/dsl_spec.rb +0 -122
- data/spec/unit/event_spec.rb +0 -47
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -433
- data/spec/unit/filters/resource_spec.rb +0 -121
- data/spec/unit/form_builder_spec.rb +0 -752
- data/spec/unit/generators/install_spec.rb +0 -23
- data/spec/unit/helpers/collection_spec.rb +0 -65
- data/spec/unit/helpers/scope_chain_spec.rb +0 -36
- data/spec/unit/helpers/settings_spec.rb +0 -30
- data/spec/unit/i18n_spec.rb +0 -12
- data/spec/unit/menu_collection_spec.rb +0 -62
- data/spec/unit/menu_item_spec.rb +0 -143
- data/spec/unit/menu_spec.rb +0 -71
- data/spec/unit/namespace/authorization_spec.rb +0 -27
- data/spec/unit/namespace/register_page_spec.rb +0 -74
- data/spec/unit/namespace/register_resource_spec.rb +0 -161
- data/spec/unit/namespace_spec.rb +0 -103
- data/spec/unit/order_clause_spec.rb +0 -81
- data/spec/unit/page_controller_spec.rb +0 -5
- data/spec/unit/page_spec.rb +0 -78
- data/spec/unit/pretty_format_spec.rb +0 -63
- data/spec/unit/pundit_adapter_spec.rb +0 -98
- data/spec/unit/resource/action_items_spec.rb +0 -65
- data/spec/unit/resource/includes_spec.rb +0 -21
- data/spec/unit/resource/menu_spec.rb +0 -18
- data/spec/unit/resource/naming_spec.rb +0 -122
- data/spec/unit/resource/page_presenters_spec.rb +0 -44
- data/spec/unit/resource/pagination_spec.rb +0 -38
- data/spec/unit/resource/routes_spec.rb +0 -73
- data/spec/unit/resource/scopes_spec.rb +0 -50
- data/spec/unit/resource/sidebars_spec.rb +0 -43
- data/spec/unit/resource_collection_spec.rb +0 -158
- data/spec/unit/resource_controller/data_access_spec.rb +0 -140
- data/spec/unit/resource_controller/decorators_spec.rb +0 -83
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -45
- data/spec/unit/resource_controller_spec.rb +0 -269
- data/spec/unit/resource_registration_spec.rb +0 -56
- data/spec/unit/resource_spec.rb +0 -278
- data/spec/unit/routing_spec.rb +0 -180
- data/spec/unit/scope_spec.rb +0 -190
- data/spec/unit/settings_spec.rb +0 -118
- data/spec/unit/view_factory_spec.rb +0 -21
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
- data/spec/unit/view_helpers/display_name_spec.rb +0 -69
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
- data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
- data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
- data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
- data/spec/unit/views/components/action_list_popover_spec.rb +0 -40
- data/spec/unit/views/components/attributes_table_spec.rb +0 -272
- data/spec/unit/views/components/batch_action_popover_spec.rb +0 -47
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -172
- data/spec/unit/views/components/index_list_spec.rb +0 -35
- data/spec/unit/views/components/index_table_for_spec.rb +0 -46
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -236
- data/spec/unit/views/components/panel_spec.rb +0 -62
- data/spec/unit/views/components/popover_spec.rb +0 -33
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -47
- data/spec/unit/views/components/site_title_spec.rb +0 -78
- data/spec/unit/views/components/status_tag_spec.rb +0 -235
- data/spec/unit/views/components/table_for_spec.rb +0 -384
- data/spec/unit/views/components/tabs_spec.rb +0 -39
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -47
- data/spec/unit/views/pages/form_spec.rb +0 -42
- data/spec/unit/views/pages/index_spec.rb +0 -60
- data/spec/unit/views/pages/layout_spec.rb +0 -59
- data/spec/unit/views/pages/show_spec.rb +0 -33
- data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
- data/tasks/docs.rake +0 -37
- data/tasks/parallel_tests.rake +0 -66
- data/tasks/test.rake +0 -83
- data/tasks/yard.rake +0 -9
|
@@ -4,24 +4,36 @@ module ActiveAdmin
|
|
|
4
4
|
# @param params [Hash] of params: { study_id: 3 }
|
|
5
5
|
# @return [String] the path to this resource collection page
|
|
6
6
|
# @example "/admin/posts"
|
|
7
|
-
def route_collection_path(params = {})
|
|
8
|
-
|
|
7
|
+
def route_collection_path(params = {}, additional_params = {})
|
|
8
|
+
route_builder.collection_path(params, additional_params)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def route_batch_action_path(params = {}, additional_params = {})
|
|
12
|
+
route_builder.batch_action_path(params, additional_params)
|
|
9
13
|
end
|
|
10
14
|
|
|
11
15
|
# @param resource [ActiveRecord::Base] the instance we want the path of
|
|
12
16
|
# @return [String] the path to this resource collection page
|
|
13
17
|
# @example "/admin/posts/1"
|
|
14
|
-
def route_instance_path(resource)
|
|
15
|
-
|
|
18
|
+
def route_instance_path(resource, additional_params = {})
|
|
19
|
+
route_builder.instance_path(resource, additional_params)
|
|
16
20
|
end
|
|
17
21
|
|
|
18
|
-
def route_edit_instance_path(resource)
|
|
19
|
-
|
|
22
|
+
def route_edit_instance_path(resource, additional_params = {})
|
|
23
|
+
route_builder.member_action_path(:edit, resource, additional_params)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def route_member_action_path(action, resource, additional_params = {})
|
|
27
|
+
route_builder.member_action_path(action, resource, additional_params)
|
|
20
28
|
end
|
|
21
29
|
|
|
22
30
|
# Returns the routes prefix for this config
|
|
23
31
|
def route_prefix
|
|
24
|
-
namespace.
|
|
32
|
+
namespace.route_prefix
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def route_builder
|
|
36
|
+
@route_builder ||= RouteBuilder.new(self)
|
|
25
37
|
end
|
|
26
38
|
|
|
27
39
|
def route_uncountable?
|
|
@@ -30,39 +42,50 @@ module ActiveAdmin
|
|
|
30
42
|
config[:route_collection_name] == config[:route_instance_name]
|
|
31
43
|
end
|
|
32
44
|
|
|
33
|
-
private
|
|
34
|
-
|
|
35
45
|
class RouteBuilder
|
|
36
46
|
def initialize(resource)
|
|
37
47
|
@resource = resource
|
|
38
48
|
end
|
|
39
49
|
|
|
40
|
-
def collection_path(params)
|
|
50
|
+
def collection_path(params, additional_params = {})
|
|
41
51
|
route_name = route_name(
|
|
42
52
|
resource.resources_configuration[:self][:route_collection_name],
|
|
43
53
|
suffix: (resource.route_uncountable? ? "index_path" : "path")
|
|
44
54
|
)
|
|
45
55
|
|
|
46
|
-
routes.public_send route_name, *route_collection_params(params)
|
|
56
|
+
routes.public_send route_name, *route_collection_params(params), additional_params
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def batch_action_path(params, additional_params = {})
|
|
60
|
+
route_name = route_name(
|
|
61
|
+
resource.resources_configuration[:self][:route_collection_name],
|
|
62
|
+
action: :batch_action,
|
|
63
|
+
suffix: (resource.route_uncountable? ? "index_path" : "path")
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
query = params.slice(:q, :scope)
|
|
67
|
+
query = query.permit!.to_h
|
|
68
|
+
routes.public_send route_name, *route_collection_params(params), additional_params.merge(query)
|
|
47
69
|
end
|
|
48
70
|
|
|
49
71
|
# @return [String] the path to this resource collection page
|
|
50
72
|
# @param instance [ActiveRecord::Base] the instance we want the path of
|
|
51
73
|
# @example "/admin/posts/1"
|
|
52
|
-
def instance_path(instance)
|
|
74
|
+
def instance_path(instance, additional_params = {})
|
|
53
75
|
route_name = route_name(resource.resources_configuration[:self][:route_instance_name])
|
|
54
76
|
|
|
55
|
-
routes.public_send route_name, *route_instance_params(instance)
|
|
77
|
+
routes.public_send route_name, *route_instance_params(instance), additional_params
|
|
56
78
|
end
|
|
57
79
|
|
|
58
|
-
# @return [String] the path to the
|
|
80
|
+
# @return [String] the path to the member action of this resource
|
|
81
|
+
# @param action [Symbol]
|
|
59
82
|
# @param instance [ActiveRecord::Base] the instance we want the path of
|
|
60
83
|
# @example "/admin/posts/1/edit"
|
|
61
|
-
def
|
|
84
|
+
def member_action_path(action, instance, additional_params = {})
|
|
62
85
|
path = resource.resources_configuration[:self][:route_instance_name]
|
|
63
|
-
route_name = route_name(path, action:
|
|
86
|
+
route_name = route_name(path, action: action)
|
|
64
87
|
|
|
65
|
-
routes.public_send route_name, *route_instance_params(instance)
|
|
88
|
+
routes.public_send route_name, *route_instance_params(instance), additional_params
|
|
66
89
|
end
|
|
67
90
|
|
|
68
91
|
private
|
|
@@ -73,20 +96,19 @@ module ActiveAdmin
|
|
|
73
96
|
suffix = options[:suffix] || "path"
|
|
74
97
|
route = []
|
|
75
98
|
|
|
76
|
-
route << options[:action]
|
|
77
|
-
route << resource.route_prefix
|
|
99
|
+
route << options[:action] # "batch_action", "edit" or "new"
|
|
100
|
+
route << resource.route_prefix # "admin"
|
|
78
101
|
route << belongs_to_name if nested? # "category"
|
|
79
|
-
route << resource_path_name
|
|
80
|
-
route << suffix
|
|
102
|
+
route << resource_path_name # "posts" or "post"
|
|
103
|
+
route << suffix # "path" or "index path"
|
|
81
104
|
|
|
82
|
-
route.compact.join(
|
|
105
|
+
route.compact.join("_").to_sym # :admin_category_posts_path
|
|
83
106
|
end
|
|
84
107
|
|
|
85
|
-
|
|
86
108
|
# @return params to pass to instance path
|
|
87
109
|
def route_instance_params(instance)
|
|
88
110
|
if nested?
|
|
89
|
-
[instance.public_send(
|
|
111
|
+
[instance.public_send(belongs_to_target_name).to_param, instance.to_param]
|
|
90
112
|
else
|
|
91
113
|
instance.to_param
|
|
92
114
|
end
|
|
@@ -99,11 +121,19 @@ module ActiveAdmin
|
|
|
99
121
|
end
|
|
100
122
|
|
|
101
123
|
def nested?
|
|
102
|
-
resource.belongs_to? &&
|
|
124
|
+
resource.belongs_to? && belongs_to_config.required?
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def belongs_to_target_name
|
|
128
|
+
belongs_to_config.target_name
|
|
103
129
|
end
|
|
104
130
|
|
|
105
131
|
def belongs_to_name
|
|
106
|
-
|
|
132
|
+
belongs_to_config.target.resource_name.singular
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def belongs_to_config
|
|
136
|
+
resource.belongs_to_config
|
|
107
137
|
end
|
|
108
138
|
|
|
109
139
|
def routes
|
|
@@ -38,10 +38,10 @@ module ActiveAdmin
|
|
|
38
38
|
options = args.extract_options!
|
|
39
39
|
method = args.first
|
|
40
40
|
|
|
41
|
-
scope_to_config[:method]
|
|
42
|
-
scope_to_config[:association_method]
|
|
43
|
-
scope_to_config[:if]
|
|
44
|
-
scope_to_config[:unless]
|
|
41
|
+
scope_to_config[:method] = block || method
|
|
42
|
+
scope_to_config[:association_method] = options[:association_method]
|
|
43
|
+
scope_to_config[:if] = options[:if]
|
|
44
|
+
scope_to_config[:unless] = options[:unless]
|
|
45
45
|
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -55,10 +55,10 @@ module ActiveAdmin
|
|
|
55
55
|
|
|
56
56
|
def scope_to_config
|
|
57
57
|
@scope_to_config ||= {
|
|
58
|
-
method:
|
|
58
|
+
method: nil,
|
|
59
59
|
association_method: nil,
|
|
60
|
-
if:
|
|
61
|
-
unless:
|
|
60
|
+
if: nil,
|
|
61
|
+
unless: nil
|
|
62
62
|
}
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -10,7 +10,7 @@ module ActiveAdmin
|
|
|
10
10
|
# Returns a scope for this object by its identifier
|
|
11
11
|
def get_scope_by_id(id)
|
|
12
12
|
id = id.to_s
|
|
13
|
-
scopes.find{|s| s.id == id }
|
|
13
|
+
scopes.find { |s| s.id == id }
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def default_scope(context = nil)
|
|
@@ -27,14 +27,16 @@ module ActiveAdmin
|
|
|
27
27
|
# If you want to internationalize the scope name, you can add
|
|
28
28
|
# to your i18n files a key like "active_admin.scopes.scope_method".
|
|
29
29
|
def scope(*args, &block)
|
|
30
|
-
|
|
30
|
+
default_options = { show_count: namespace.scopes_show_count }
|
|
31
|
+
options = default_options.merge(args.extract_options!)
|
|
31
32
|
title = args[0] rescue nil
|
|
32
33
|
method = args[1] rescue nil
|
|
33
34
|
|
|
35
|
+
options[:localizer] ||= ActiveAdmin::Localizers.resource(self)
|
|
34
36
|
scope = ActiveAdmin::Scope.new(title, method, options, &block)
|
|
35
37
|
|
|
36
38
|
# Finds and replaces a scope by the same name if it already exists
|
|
37
|
-
existing_scope_index = scopes.index{|existing_scope| existing_scope.id == scope.id }
|
|
39
|
+
existing_scope_index = scopes.index { |existing_scope| existing_scope.id == scope.id }
|
|
38
40
|
if existing_scope_index
|
|
39
41
|
scopes.delete_at(existing_scope_index)
|
|
40
42
|
scopes.insert(existing_scope_index, scope)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "active_admin/helpers/optional_display"
|
|
2
2
|
|
|
3
3
|
module ActiveAdmin
|
|
4
4
|
|
|
@@ -14,7 +14,7 @@ module ActiveAdmin
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def sidebar_sections_for(action, render_context = nil)
|
|
17
|
-
sidebar_sections.select{|section| section.display_on?(action, render_context) }
|
|
17
|
+
sidebar_sections.select { |section| section.display_on?(action, render_context) }
|
|
18
18
|
.sort_by(&:priority)
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
9
|
-
require
|
|
10
|
-
require
|
|
11
|
-
require
|
|
12
|
-
require
|
|
1
|
+
require "active_admin/resource/action_items"
|
|
2
|
+
require "active_admin/resource/attributes"
|
|
3
|
+
require "active_admin/resource/controllers"
|
|
4
|
+
require "active_admin/resource/menu"
|
|
5
|
+
require "active_admin/resource/page_presenters"
|
|
6
|
+
require "active_admin/resource/pagination"
|
|
7
|
+
require "active_admin/resource/routes"
|
|
8
|
+
require "active_admin/resource/naming"
|
|
9
|
+
require "active_admin/resource/scopes"
|
|
10
|
+
require "active_admin/resource/includes"
|
|
11
|
+
require "active_admin/resource/scope_to"
|
|
12
|
+
require "active_admin/resource/sidebars"
|
|
13
|
+
require "active_admin/resource/belongs_to"
|
|
14
|
+
require "active_admin/resource/ordering"
|
|
15
|
+
require "active_admin/resource/model"
|
|
13
16
|
|
|
14
17
|
module ActiveAdmin
|
|
15
18
|
|
|
@@ -24,7 +27,7 @@ module ActiveAdmin
|
|
|
24
27
|
class Resource
|
|
25
28
|
|
|
26
29
|
# Event dispatched when a new resource is registered
|
|
27
|
-
RegisterEvent =
|
|
30
|
+
RegisterEvent = "active_admin.resource.register".freeze
|
|
28
31
|
|
|
29
32
|
# The namespace this config belongs to
|
|
30
33
|
attr_reader :namespace
|
|
@@ -41,7 +44,7 @@ module ActiveAdmin
|
|
|
41
44
|
# The default sort order to use in the controller
|
|
42
45
|
attr_writer :sort_order
|
|
43
46
|
def sort_order
|
|
44
|
-
@sort_order ||= (resource_class.respond_to?(:primary_key) ? resource_class.primary_key.to_s :
|
|
47
|
+
@sort_order ||= (resource_class.respond_to?(:primary_key) ? resource_class.primary_key.to_s : "id") + "_desc"
|
|
45
48
|
end
|
|
46
49
|
|
|
47
50
|
# Set the configuration for the CSV
|
|
@@ -50,6 +53,12 @@ module ActiveAdmin
|
|
|
50
53
|
# Set breadcrumb builder
|
|
51
54
|
attr_writer :breadcrumb
|
|
52
55
|
|
|
56
|
+
#Set order clause
|
|
57
|
+
attr_writer :order_clause
|
|
58
|
+
# Display create another checkbox on a new page
|
|
59
|
+
# @return [Boolean]
|
|
60
|
+
attr_writer :create_another
|
|
61
|
+
|
|
53
62
|
# Store a reference to the DSL so that we can dereference it during garbage collection.
|
|
54
63
|
attr_accessor :dsl
|
|
55
64
|
|
|
@@ -61,9 +70,10 @@ module ActiveAdmin
|
|
|
61
70
|
def initialize(namespace, resource_class, options = {})
|
|
62
71
|
@namespace = namespace
|
|
63
72
|
@resource_class_name = "::#{resource_class.name}"
|
|
64
|
-
@options
|
|
73
|
+
@options = options
|
|
65
74
|
@sort_order = options[:sort_order]
|
|
66
|
-
@member_actions
|
|
75
|
+
@member_actions = []
|
|
76
|
+
@collection_actions = []
|
|
67
77
|
end
|
|
68
78
|
end
|
|
69
79
|
|
|
@@ -82,6 +92,8 @@ module ActiveAdmin
|
|
|
82
92
|
include ScopeTo
|
|
83
93
|
include Sidebars
|
|
84
94
|
include Routes
|
|
95
|
+
include Ordering
|
|
96
|
+
include Attributes
|
|
85
97
|
|
|
86
98
|
# The class this resource wraps. If you register the Post model, Resource#resource_class
|
|
87
99
|
# will point to the Post class
|
|
@@ -93,6 +105,10 @@ module ActiveAdmin
|
|
|
93
105
|
ActiveSupport::Dependencies.constantize(decorator_class_name) if decorator_class_name
|
|
94
106
|
end
|
|
95
107
|
|
|
108
|
+
def resource_name_extension
|
|
109
|
+
@resource_name_extension ||= define_resource_name_extension(self)
|
|
110
|
+
end
|
|
111
|
+
|
|
96
112
|
def resource_table_name
|
|
97
113
|
resource_class.quoted_table_name
|
|
98
114
|
end
|
|
@@ -121,7 +137,8 @@ module ActiveAdmin
|
|
|
121
137
|
|
|
122
138
|
def belongs_to(target, options = {})
|
|
123
139
|
@belongs_to = Resource::BelongsTo.new(self, target, options)
|
|
124
|
-
self.
|
|
140
|
+
self.menu_item_options = false if @belongs_to.required?
|
|
141
|
+
options[:class_name] ||= @belongs_to.resource.resource_class_name if @belongs_to.resource
|
|
125
142
|
controller.send :belongs_to, target, options.dup
|
|
126
143
|
end
|
|
127
144
|
|
|
@@ -129,6 +146,12 @@ module ActiveAdmin
|
|
|
129
146
|
@belongs_to
|
|
130
147
|
end
|
|
131
148
|
|
|
149
|
+
def belongs_to_param
|
|
150
|
+
if belongs_to? && belongs_to_config.required?
|
|
151
|
+
belongs_to_config.to_param
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
132
155
|
# Do we belong to another resource?
|
|
133
156
|
def belongs_to?
|
|
134
157
|
!!belongs_to_config
|
|
@@ -143,20 +166,55 @@ module ActiveAdmin
|
|
|
143
166
|
instance_variable_defined?(:@breadcrumb) ? @breadcrumb : namespace.breadcrumb
|
|
144
167
|
end
|
|
145
168
|
|
|
169
|
+
def order_clause
|
|
170
|
+
@order_clause || namespace.order_clause
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def create_another
|
|
174
|
+
instance_variable_defined?(:@create_another) ? @create_another : namespace.create_another
|
|
175
|
+
end
|
|
176
|
+
|
|
146
177
|
def find_resource(id)
|
|
147
|
-
resource = resource_class.public_send(
|
|
148
|
-
decorator_class ? decorator_class.new(resource) : resource
|
|
178
|
+
resource = resource_class.public_send *method_for_find(id)
|
|
179
|
+
(decorator_class && resource) ? decorator_class.new(resource) : resource
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def resource_columns
|
|
183
|
+
resource_attributes.values
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def resource_attributes
|
|
187
|
+
@resource_attributes ||= default_attributes
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def association_columns
|
|
191
|
+
@association_columns ||= resource_attributes.select { |key, value| key != value }.values
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def content_columns
|
|
195
|
+
@content_columns ||= resource_attributes.select { |key, value| key == value }.values
|
|
149
196
|
end
|
|
150
197
|
|
|
151
198
|
private
|
|
152
199
|
|
|
153
|
-
def method_for_find
|
|
154
|
-
resources_configuration[:self][:finder]
|
|
200
|
+
def method_for_find(id)
|
|
201
|
+
if finder = resources_configuration[:self][:finder]
|
|
202
|
+
[finder, id]
|
|
203
|
+
else
|
|
204
|
+
[:find_by, { resource_class.primary_key => id }]
|
|
205
|
+
end
|
|
155
206
|
end
|
|
156
207
|
|
|
157
208
|
def default_csv_builder
|
|
158
|
-
@default_csv_builder ||= CSVBuilder.default_for_resource(
|
|
209
|
+
@default_csv_builder ||= CSVBuilder.default_for_resource(self)
|
|
159
210
|
end
|
|
160
211
|
|
|
212
|
+
def define_resource_name_extension(resource)
|
|
213
|
+
Module.new do
|
|
214
|
+
define_method :model_name do
|
|
215
|
+
resource.resource_name
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
161
219
|
end # class Resource
|
|
162
220
|
end # module ActiveAdmin
|
|
@@ -33,15 +33,17 @@ module ActiveAdmin
|
|
|
33
33
|
# Finds a resource based on the resource name, resource class, or base class.
|
|
34
34
|
def find_resource(obj)
|
|
35
35
|
resources.detect do |r|
|
|
36
|
-
r.resource_name.to_s == obj.to_s
|
|
36
|
+
r.resource_name.to_s == obj.to_s
|
|
37
|
+
end || resources.detect do |r|
|
|
38
|
+
r.resource_class.to_s == obj.to_s
|
|
37
39
|
end ||
|
|
38
40
|
if obj.respond_to? :base_class
|
|
39
|
-
resources.detect{ |r| r.resource_class.to_s == obj.base_class.to_s }
|
|
41
|
+
resources.detect { |r| r.resource_class.to_s == obj.base_class.to_s }
|
|
40
42
|
end
|
|
41
43
|
end
|
|
42
44
|
|
|
43
45
|
def resources
|
|
44
|
-
select{ |r| r.class <= Resource } # can otherwise be a Page
|
|
46
|
+
select { |r| r.class <= Resource } # can otherwise be a Page
|
|
45
47
|
end
|
|
46
48
|
|
|
47
49
|
def raise_if_mismatched!(existing, given)
|
|
@@ -7,12 +7,22 @@ module ActiveAdmin
|
|
|
7
7
|
module ClassMethods
|
|
8
8
|
|
|
9
9
|
def clear_member_actions!
|
|
10
|
+
remove_action_methods(:member)
|
|
10
11
|
active_admin_config.clear_member_actions!
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
def clear_collection_actions!
|
|
15
|
+
remove_action_methods(:collection)
|
|
14
16
|
active_admin_config.clear_collection_actions!
|
|
15
17
|
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def remove_action_methods(actions_type)
|
|
22
|
+
active_admin_config.public_send("#{actions_type}_actions").each do |action|
|
|
23
|
+
remove_method action.name
|
|
24
|
+
end
|
|
25
|
+
end
|
|
16
26
|
end
|
|
17
27
|
|
|
18
28
|
end
|
|
@@ -14,6 +14,8 @@ module ActiveAdmin
|
|
|
14
14
|
include ScopeChain
|
|
15
15
|
|
|
16
16
|
define_active_admin_callbacks :build, :create, :update, :save, :destroy
|
|
17
|
+
|
|
18
|
+
helper_method :current_scope
|
|
17
19
|
end
|
|
18
20
|
end
|
|
19
21
|
|
|
@@ -45,7 +47,6 @@ module ActiveAdmin
|
|
|
45
47
|
end
|
|
46
48
|
end
|
|
47
49
|
|
|
48
|
-
|
|
49
50
|
# Does the actual work of retrieving the current collection from the db.
|
|
50
51
|
# This is a great method to override if you would like to perform
|
|
51
52
|
# some additional db # work before your controller returns and
|
|
@@ -60,7 +61,6 @@ module ActiveAdmin
|
|
|
60
61
|
collection
|
|
61
62
|
end
|
|
62
63
|
|
|
63
|
-
|
|
64
64
|
# Override this method in your controllers to modify the start point
|
|
65
65
|
# of our searches and index.
|
|
66
66
|
#
|
|
@@ -88,9 +88,9 @@ module ActiveAdmin
|
|
|
88
88
|
def resource
|
|
89
89
|
get_resource_ivar || begin
|
|
90
90
|
resource = find_resource
|
|
91
|
+
resource = apply_decorations(resource)
|
|
91
92
|
authorize_resource! resource
|
|
92
93
|
|
|
93
|
-
resource = apply_decorator resource
|
|
94
94
|
set_resource_ivar resource
|
|
95
95
|
end
|
|
96
96
|
end
|
|
@@ -98,16 +98,11 @@ module ActiveAdmin
|
|
|
98
98
|
# Does the actual work of finding a resource in the database. This
|
|
99
99
|
# method uses the finder method as defined in InheritedResources.
|
|
100
100
|
#
|
|
101
|
-
# Note that public_send can't be used here because Rails 3.2's
|
|
102
|
-
# ActiveRecord::Associations::CollectionProxy (belongs_to associations)
|
|
103
|
-
# mysteriously returns an Enumerator object.
|
|
104
|
-
#
|
|
105
101
|
# @return [ActiveRecord::Base] An active record object.
|
|
106
102
|
def find_resource
|
|
107
103
|
scoped_collection.send method_for_find, params[:id]
|
|
108
104
|
end
|
|
109
105
|
|
|
110
|
-
|
|
111
106
|
# Builds, memoize and authorize a new instance of the resource. The
|
|
112
107
|
# actual work of building the new instance is delegated to the
|
|
113
108
|
# #build_new_resource method.
|
|
@@ -119,10 +114,11 @@ module ActiveAdmin
|
|
|
119
114
|
def build_resource
|
|
120
115
|
get_resource_ivar || begin
|
|
121
116
|
resource = build_new_resource
|
|
117
|
+
resource = apply_decorations(resource)
|
|
118
|
+
resource = assign_attributes(resource, resource_params)
|
|
122
119
|
run_build_callbacks resource
|
|
123
120
|
authorize_resource! resource
|
|
124
121
|
|
|
125
|
-
resource = apply_decorator resource
|
|
126
122
|
set_resource_ivar resource
|
|
127
123
|
end
|
|
128
124
|
end
|
|
@@ -130,12 +126,12 @@ module ActiveAdmin
|
|
|
130
126
|
# Builds a new resource. This method uses the method_for_build provided
|
|
131
127
|
# by Inherited Resources.
|
|
132
128
|
#
|
|
133
|
-
# Note that public_send can't be used here w/ Rails 3.2 & a belongs_to
|
|
134
|
-
# config, or you'll get undefined method `build' for []:Array.
|
|
135
|
-
#
|
|
136
129
|
# @return [ActiveRecord::Base] An un-saved active record base object
|
|
137
130
|
def build_new_resource
|
|
138
|
-
scoped_collection.send
|
|
131
|
+
scoped_collection.send(
|
|
132
|
+
method_for_build,
|
|
133
|
+
*resource_params.map { |params| params.slice(active_admin_config.resource_class.inheritance_column) }
|
|
134
|
+
)
|
|
139
135
|
end
|
|
140
136
|
|
|
141
137
|
# Calls all the appropriate callbacks and then creates the new resource.
|
|
@@ -171,11 +167,7 @@ module ActiveAdmin
|
|
|
171
167
|
#
|
|
172
168
|
# @return [void]
|
|
173
169
|
def update_resource(object, attributes)
|
|
174
|
-
|
|
175
|
-
object.assign_attributes(*attributes)
|
|
176
|
-
else
|
|
177
|
-
object.attributes = attributes[0]
|
|
178
|
-
end
|
|
170
|
+
object = assign_attributes(object, attributes)
|
|
179
171
|
|
|
180
172
|
run_update_callbacks object do
|
|
181
173
|
save_resource(object)
|
|
@@ -191,12 +183,10 @@ module ActiveAdmin
|
|
|
191
183
|
end
|
|
192
184
|
end
|
|
193
185
|
|
|
194
|
-
|
|
195
186
|
#
|
|
196
187
|
# Collection Helper Methods
|
|
197
188
|
#
|
|
198
189
|
|
|
199
|
-
|
|
200
190
|
# Gives the authorization library a change to pre-scope the collection.
|
|
201
191
|
#
|
|
202
192
|
# In the case of the CanCan adapter, it calls `#accessible_by` on
|
|
@@ -212,11 +202,10 @@ module ActiveAdmin
|
|
|
212
202
|
|
|
213
203
|
def apply_sorting(chain)
|
|
214
204
|
params[:order] ||= active_admin_config.sort_order
|
|
215
|
-
|
|
216
|
-
order_clause = OrderClause.new params[:order]
|
|
205
|
+
order_clause = active_admin_config.order_clause.new(active_admin_config, params[:order])
|
|
217
206
|
|
|
218
207
|
if order_clause.valid?
|
|
219
|
-
|
|
208
|
+
order_clause.apply(chain)
|
|
220
209
|
else
|
|
221
210
|
chain # just return the chain
|
|
222
211
|
end
|
|
@@ -225,18 +214,10 @@ module ActiveAdmin
|
|
|
225
214
|
# Applies any Ransack search methods to the currently scoped collection.
|
|
226
215
|
# Both `search` and `ransack` are provided, but we use `ransack` to prevent conflicts.
|
|
227
216
|
def apply_filtering(chain)
|
|
228
|
-
@search = chain.ransack
|
|
217
|
+
@search = chain.ransack(params[:q] || {})
|
|
229
218
|
@search.result
|
|
230
219
|
end
|
|
231
220
|
|
|
232
|
-
def clean_search_params(params)
|
|
233
|
-
if params.is_a? Hash
|
|
234
|
-
params.dup.delete_if{ |key, value| value.blank? }
|
|
235
|
-
else
|
|
236
|
-
{}
|
|
237
|
-
end
|
|
238
|
-
end
|
|
239
|
-
|
|
240
221
|
def apply_scoping(chain)
|
|
241
222
|
@collection_before_scope = chain
|
|
242
223
|
|
|
@@ -261,13 +242,15 @@ module ActiveAdmin
|
|
|
261
242
|
|
|
262
243
|
def current_scope
|
|
263
244
|
@current_scope ||= if params[:scope]
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
245
|
+
active_admin_config.get_scope_by_id(params[:scope])
|
|
246
|
+
else
|
|
247
|
+
active_admin_config.default_scope(self)
|
|
248
|
+
end
|
|
268
249
|
end
|
|
269
250
|
|
|
270
251
|
def apply_pagination(chain)
|
|
252
|
+
# skip pagination if already was paginated by scope
|
|
253
|
+
return chain if chain.respond_to?(:total_pages)
|
|
271
254
|
page_method_name = Kaminari.config.page_method_name
|
|
272
255
|
page = params[Kaminari.config.param_name]
|
|
273
256
|
|
|
@@ -277,14 +260,15 @@ module ActiveAdmin
|
|
|
277
260
|
def collection_applies(options = {})
|
|
278
261
|
only = Array(options.fetch(:only, COLLECTION_APPLIES))
|
|
279
262
|
except = Array(options.fetch(:except, []))
|
|
280
|
-
|
|
263
|
+
|
|
264
|
+
COLLECTION_APPLIES & only - except
|
|
281
265
|
end
|
|
282
266
|
|
|
283
267
|
def per_page
|
|
284
268
|
if active_admin_config.paginate
|
|
285
269
|
dynamic_per_page || configured_per_page
|
|
286
270
|
else
|
|
287
|
-
max_per_page
|
|
271
|
+
active_admin_config.max_per_page
|
|
288
272
|
end
|
|
289
273
|
end
|
|
290
274
|
|
|
@@ -293,17 +277,46 @@ module ActiveAdmin
|
|
|
293
277
|
end
|
|
294
278
|
|
|
295
279
|
def configured_per_page
|
|
296
|
-
|
|
297
|
-
|
|
280
|
+
Array(active_admin_config.per_page).first
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
# @param resource [ActiveRecord::Base]
|
|
284
|
+
# @param attributes [Array<Hash]
|
|
285
|
+
# @return [ActiveRecord::Base] resource
|
|
286
|
+
#
|
|
287
|
+
def assign_attributes(resource, attributes)
|
|
288
|
+
if resource.respond_to?(:assign_attributes)
|
|
289
|
+
resource.assign_attributes(*attributes)
|
|
298
290
|
else
|
|
299
|
-
|
|
291
|
+
resource.attributes = attributes[0]
|
|
300
292
|
end
|
|
293
|
+
|
|
294
|
+
resource
|
|
301
295
|
end
|
|
302
296
|
|
|
303
|
-
|
|
304
|
-
|
|
297
|
+
# @param resource [ActiveRecord::Base]
|
|
298
|
+
# @return [ActiveRecord::Base] resource
|
|
299
|
+
#
|
|
300
|
+
def apply_decorations(resource)
|
|
301
|
+
apply_decorator(resource)
|
|
305
302
|
end
|
|
306
303
|
|
|
304
|
+
# @return [String]
|
|
305
|
+
def smart_resource_url
|
|
306
|
+
if create_another?
|
|
307
|
+
new_resource_url(create_another: params[:create_another])
|
|
308
|
+
else
|
|
309
|
+
super
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
private
|
|
314
|
+
|
|
315
|
+
# @return [Boolean] true if user requested to create one more
|
|
316
|
+
# resource after creating this one.
|
|
317
|
+
def create_another?
|
|
318
|
+
params[:create_another].present?
|
|
319
|
+
end
|
|
307
320
|
end
|
|
308
321
|
end
|
|
309
322
|
end
|