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
data/lib/active_admin/menu.rb
CHANGED
|
@@ -27,6 +27,7 @@ module ActiveAdmin
|
|
|
27
27
|
def [](id)
|
|
28
28
|
@children[normalize_id(id)]
|
|
29
29
|
end
|
|
30
|
+
|
|
30
31
|
def []=(id, child)
|
|
31
32
|
@children[normalize_id(id)] = child
|
|
32
33
|
end
|
|
@@ -46,11 +47,14 @@ module ActiveAdmin
|
|
|
46
47
|
# menu.add parent: 'Dashboard', label: 'My Child Dashboard'
|
|
47
48
|
#
|
|
48
49
|
def add(options)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
parent_chain = Array.wrap(options.delete(:parent))
|
|
51
|
+
|
|
52
|
+
item = if parent = parent_chain.shift
|
|
53
|
+
options[:parent] = parent_chain if parent_chain.any?
|
|
54
|
+
(self[parent] || add(label: parent)).add options
|
|
55
|
+
else
|
|
56
|
+
_add options.merge parent: self
|
|
57
|
+
end
|
|
54
58
|
|
|
55
59
|
yield(item) if block_given?
|
|
56
60
|
|
|
@@ -59,7 +63,7 @@ module ActiveAdmin
|
|
|
59
63
|
|
|
60
64
|
# Whether any children match the given item.
|
|
61
65
|
def include?(item)
|
|
62
|
-
@children.values.include? item
|
|
66
|
+
@children.values.include?(item) || @children.values.any? { |child| child.include?(item) }
|
|
63
67
|
end
|
|
64
68
|
|
|
65
69
|
# Used in the UI to visually distinguish which menu item is selected.
|
|
@@ -67,14 +71,8 @@ module ActiveAdmin
|
|
|
67
71
|
self == item || include?(item)
|
|
68
72
|
end
|
|
69
73
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def items(context = nil)
|
|
73
|
-
@children.values.select{ |i| i.display?(context) }.sort do |a,b|
|
|
74
|
-
result = a.priority <=> b.priority
|
|
75
|
-
result = a.label(context) <=> b.label(context) if result == 0
|
|
76
|
-
result
|
|
77
|
-
end
|
|
74
|
+
def items
|
|
75
|
+
@children.values
|
|
78
76
|
end
|
|
79
77
|
|
|
80
78
|
attr_reader :children
|
|
@@ -92,7 +90,7 @@ module ActiveAdmin
|
|
|
92
90
|
def normalize_id(id)
|
|
93
91
|
case id
|
|
94
92
|
when String, Symbol, ActiveModel::Name
|
|
95
|
-
id.to_s.downcase.tr
|
|
93
|
+
id.to_s.downcase.tr " ", "_"
|
|
96
94
|
when ActiveAdmin::Resource::Name
|
|
97
95
|
id.param_key
|
|
98
96
|
else
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
require 'active_admin/view_helpers/method_or_proc_helper'
|
|
2
|
-
|
|
3
1
|
module ActiveAdmin
|
|
4
2
|
class MenuItem
|
|
5
3
|
include Menu::MenuNode
|
|
6
|
-
include MethodOrProcHelper
|
|
7
4
|
|
|
8
5
|
attr_reader :html_options, :parent, :priority
|
|
9
6
|
|
|
@@ -48,13 +45,13 @@ module ActiveAdmin
|
|
|
48
45
|
#
|
|
49
46
|
def initialize(options = {})
|
|
50
47
|
super() # MenuNode
|
|
51
|
-
@label
|
|
52
|
-
@dirty_id
|
|
53
|
-
@url
|
|
54
|
-
@priority
|
|
55
|
-
@html_options
|
|
56
|
-
@should_display = options[:if]
|
|
57
|
-
@parent
|
|
48
|
+
@label = options[:label]
|
|
49
|
+
@dirty_id = options[:id] || options[:label]
|
|
50
|
+
@url = options[:url] || "#"
|
|
51
|
+
@priority = options[:priority] || 10
|
|
52
|
+
@html_options = options[:html_options] || {}
|
|
53
|
+
@should_display = options[:if] || proc { true }
|
|
54
|
+
@parent = options[:parent]
|
|
58
55
|
|
|
59
56
|
yield(self) if block_given? # Builder style syntax
|
|
60
57
|
end
|
|
@@ -63,35 +60,10 @@ module ActiveAdmin
|
|
|
63
60
|
@id ||= normalize_id @dirty_id
|
|
64
61
|
end
|
|
65
62
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def url(context = nil)
|
|
71
|
-
render_in_context context, @url
|
|
72
|
-
end
|
|
63
|
+
attr_reader :label
|
|
64
|
+
attr_reader :url
|
|
73
65
|
|
|
74
66
|
# Don't display if the :if option passed says so
|
|
75
|
-
|
|
76
|
-
def display?(context = nil)
|
|
77
|
-
return false unless render_in_context(context, @should_display)
|
|
78
|
-
return false if !real_url?(context) && @children.any? && !items(context).any?
|
|
79
|
-
true
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# Returns an array of the ancestory of this menu item.
|
|
83
|
-
# The first item is the immediate parent of the item.
|
|
84
|
-
def ancestors
|
|
85
|
-
parent ? [parent, parent.ancestors].flatten : []
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
private
|
|
89
|
-
|
|
90
|
-
# URL is not nil, empty, or '#'
|
|
91
|
-
def real_url?(context = nil)
|
|
92
|
-
url = url context
|
|
93
|
-
url.present? && url != '#'
|
|
94
|
-
end
|
|
95
|
-
|
|
67
|
+
attr_reader :should_display
|
|
96
68
|
end
|
|
97
69
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "active_admin/resource_collection"
|
|
2
2
|
|
|
3
3
|
module ActiveAdmin
|
|
4
4
|
|
|
@@ -25,18 +25,40 @@ module ActiveAdmin
|
|
|
25
25
|
# resource will be accessible from "/posts" and the controller will be PostsController.
|
|
26
26
|
#
|
|
27
27
|
class Namespace
|
|
28
|
-
|
|
28
|
+
class << self
|
|
29
|
+
def setting(name, default)
|
|
30
|
+
Deprecation.warn "This method does not do anything and will be removed."
|
|
31
|
+
end
|
|
32
|
+
end
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
RegisterEvent = "active_admin.namespace.register".freeze
|
|
35
|
+
|
|
36
|
+
attr_reader :application, :resources, :menus
|
|
31
37
|
|
|
32
38
|
def initialize(application, name)
|
|
33
39
|
@application = application
|
|
34
|
-
@name = name.to_s.underscore
|
|
40
|
+
@name = name.to_s.underscore
|
|
35
41
|
@resources = ResourceCollection.new
|
|
36
42
|
register_module unless root?
|
|
37
43
|
build_menu_collection
|
|
38
44
|
end
|
|
39
45
|
|
|
46
|
+
def name
|
|
47
|
+
@name.to_sym
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def settings
|
|
51
|
+
@settings ||= SettingsNode.build(application.namespace_settings)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def respond_to_missing?(method, include_private = false)
|
|
55
|
+
settings.respond_to?(method) || super
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def method_missing(method, *args)
|
|
59
|
+
settings.respond_to?(method) ? settings.send(method, *args) : super
|
|
60
|
+
end
|
|
61
|
+
|
|
40
62
|
# Register a resource into this namespace. The preffered method to access this is to
|
|
41
63
|
# use the global registration ActiveAdmin.register which delegates to the proper
|
|
42
64
|
# namespace instance.
|
|
@@ -45,11 +67,11 @@ module ActiveAdmin
|
|
|
45
67
|
|
|
46
68
|
# Register the resource
|
|
47
69
|
register_resource_controller(config)
|
|
48
|
-
parse_registration_block(config,
|
|
70
|
+
parse_registration_block(config, &block) if block_given?
|
|
49
71
|
reset_menu!
|
|
50
72
|
|
|
51
73
|
# Dispatch a registration event
|
|
52
|
-
|
|
74
|
+
ActiveSupport::Notifications.publish ActiveAdmin::Resource::RegisterEvent, config
|
|
53
75
|
|
|
54
76
|
# Return the config
|
|
55
77
|
config
|
|
@@ -78,8 +100,11 @@ module ActiveAdmin
|
|
|
78
100
|
# Namespace.new(:root).module_name # => nil
|
|
79
101
|
#
|
|
80
102
|
def module_name
|
|
81
|
-
|
|
82
|
-
|
|
103
|
+
root? ? nil : @name.camelize
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def route_prefix
|
|
107
|
+
root? ? nil : @name
|
|
83
108
|
end
|
|
84
109
|
|
|
85
110
|
# Unload all the registered resources for this namespace
|
|
@@ -93,12 +118,6 @@ module ActiveAdmin
|
|
|
93
118
|
resources[klass]
|
|
94
119
|
end
|
|
95
120
|
|
|
96
|
-
# Override from ActiveAdmin::Settings to inherit default attributes
|
|
97
|
-
# from the application
|
|
98
|
-
def read_default_setting(name)
|
|
99
|
-
application.public_send name
|
|
100
|
-
end
|
|
101
|
-
|
|
102
121
|
def fetch_menu(name)
|
|
103
122
|
@menus.fetch(name)
|
|
104
123
|
end
|
|
@@ -110,13 +129,13 @@ module ActiveAdmin
|
|
|
110
129
|
# Add a callback to be ran when we build the menu
|
|
111
130
|
#
|
|
112
131
|
# @param [Symbol] name The name of the menu. Default: :default
|
|
113
|
-
# @
|
|
132
|
+
# @yield [ActiveAdmin::Menu] The block to be ran when the menu is built
|
|
114
133
|
#
|
|
115
134
|
# @return [void]
|
|
116
|
-
def build_menu(name = DEFAULT_MENU
|
|
135
|
+
def build_menu(name = DEFAULT_MENU)
|
|
117
136
|
@menus.before_build do |menus|
|
|
118
137
|
menus.menu name do |menu|
|
|
119
|
-
|
|
138
|
+
yield menu
|
|
120
139
|
end
|
|
121
140
|
end
|
|
122
141
|
end
|
|
@@ -130,10 +149,10 @@ module ActiveAdmin
|
|
|
130
149
|
def add_logout_button_to_menu(menu, priority = 20, html_options = {})
|
|
131
150
|
if logout_link_path
|
|
132
151
|
html_options = html_options.reverse_merge(method: logout_link_method || :get)
|
|
133
|
-
menu.add id:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
152
|
+
menu.add id: "logout", priority: priority, html_options: html_options,
|
|
153
|
+
label: -> { I18n.t "active_admin.logout" },
|
|
154
|
+
url: -> { render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
|
|
155
|
+
if: :current_active_admin_user?
|
|
137
156
|
end
|
|
138
157
|
end
|
|
139
158
|
|
|
@@ -145,10 +164,10 @@ module ActiveAdmin
|
|
|
145
164
|
#
|
|
146
165
|
def add_current_user_to_menu(menu, priority = 10, html_options = {})
|
|
147
166
|
if current_user_method
|
|
148
|
-
menu.add id:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
167
|
+
menu.add id: "current_user", priority: priority, html_options: html_options,
|
|
168
|
+
label: -> { display_name current_active_admin_user },
|
|
169
|
+
url: -> { auto_url_for(current_active_admin_user) },
|
|
170
|
+
if: :current_active_admin_user?
|
|
152
171
|
end
|
|
153
172
|
end
|
|
154
173
|
|
|
@@ -157,7 +176,7 @@ module ActiveAdmin
|
|
|
157
176
|
def build_menu_collection
|
|
158
177
|
@menus = MenuCollection.new
|
|
159
178
|
|
|
160
|
-
@menus.on_build do
|
|
179
|
+
@menus.on_build do
|
|
161
180
|
build_default_utility_nav
|
|
162
181
|
|
|
163
182
|
resources.each do |resource|
|
|
@@ -192,9 +211,9 @@ module ActiveAdmin
|
|
|
192
211
|
|
|
193
212
|
def unload_resources!
|
|
194
213
|
resources.each do |resource|
|
|
195
|
-
parent = (module_name ||
|
|
196
|
-
name
|
|
197
|
-
parent.send(:remove_const, name) if parent.const_defined?
|
|
214
|
+
parent = (module_name || "Object").constantize
|
|
215
|
+
name = resource.controller_name.split("::").last
|
|
216
|
+
parent.send(:remove_const, name) if parent.const_defined?(name, false)
|
|
198
217
|
|
|
199
218
|
# Remove circular references
|
|
200
219
|
resource.controller.active_admin_config = nil
|
|
@@ -212,14 +231,14 @@ module ActiveAdmin
|
|
|
212
231
|
end
|
|
213
232
|
end
|
|
214
233
|
|
|
215
|
-
# TODO replace `eval` with `Class.new`
|
|
234
|
+
# TODO: replace `eval` with `Class.new`
|
|
216
235
|
def register_resource_controller(config)
|
|
217
236
|
eval "class ::#{config.controller_name} < ActiveAdmin::ResourceController; end"
|
|
218
237
|
config.controller.active_admin_config = config
|
|
219
238
|
end
|
|
220
239
|
|
|
221
|
-
def parse_registration_block(config,
|
|
222
|
-
config.dsl = ResourceDSL.new(config
|
|
240
|
+
def parse_registration_block(config, &block)
|
|
241
|
+
config.dsl = ResourceDSL.new(config)
|
|
223
242
|
config.dsl.run_registration_block(&block)
|
|
224
243
|
end
|
|
225
244
|
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require "active_admin/dynamic_settings_node"
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
class NamespaceSettings < DynamicSettingsNode
|
|
5
|
+
# The default number of resources to display on index pages
|
|
6
|
+
register :default_per_page, 30
|
|
7
|
+
|
|
8
|
+
# The max number of resources to display on index pages and batch exports
|
|
9
|
+
register :max_per_page, 10_000
|
|
10
|
+
|
|
11
|
+
# The title which gets displayed in the main layout
|
|
12
|
+
register :site_title, "", :string_symbol_or_proc
|
|
13
|
+
|
|
14
|
+
# Set the site title link href (defaults to AA dashboard)
|
|
15
|
+
register :site_title_link, ""
|
|
16
|
+
|
|
17
|
+
# Set the site title image displayed in the main layout (has precendence over :site_title)
|
|
18
|
+
register :site_title_image, "", :string_symbol_or_proc
|
|
19
|
+
|
|
20
|
+
# Add to the site head
|
|
21
|
+
register :head, "", :string_symbol_or_proc
|
|
22
|
+
|
|
23
|
+
# Set the site footer text (defaults to Powered by ActiveAdmin text with version)
|
|
24
|
+
register :footer, "", :string_symbol_or_proc
|
|
25
|
+
|
|
26
|
+
# Set a favicon
|
|
27
|
+
register :favicon, false
|
|
28
|
+
|
|
29
|
+
# Additional meta tags to place in head of logged in pages
|
|
30
|
+
register :meta_tags, {}
|
|
31
|
+
|
|
32
|
+
# Additional meta tags to place in head of logged out pages
|
|
33
|
+
register :meta_tags_for_logged_out_pages, { robots: "noindex, nofollow" }
|
|
34
|
+
|
|
35
|
+
# The view factory to use to generate all the view classes. Take
|
|
36
|
+
# a look at ActiveAdmin::ViewFactory
|
|
37
|
+
register :view_factory, ActiveAdmin::ViewFactory.new
|
|
38
|
+
|
|
39
|
+
# The method to call in controllers to get the current user
|
|
40
|
+
register :current_user_method, false
|
|
41
|
+
|
|
42
|
+
# The method to call in the controllers to ensure that there
|
|
43
|
+
# is a currently authenticated admin user
|
|
44
|
+
register :authentication_method, false
|
|
45
|
+
|
|
46
|
+
# The path to log user's out with. If set to a symbol, we assume
|
|
47
|
+
# that it's a method to call which returns the path
|
|
48
|
+
register :logout_link_path, :destroy_admin_user_session_path
|
|
49
|
+
|
|
50
|
+
# The method to use when generating the link for user logout
|
|
51
|
+
register :logout_link_method, :get
|
|
52
|
+
|
|
53
|
+
# Whether the batch actions are enabled or not
|
|
54
|
+
register :batch_actions, false
|
|
55
|
+
|
|
56
|
+
# Whether filters are enabled
|
|
57
|
+
register :filters, true
|
|
58
|
+
|
|
59
|
+
# The namespace root
|
|
60
|
+
register :root_to, "dashboard#index"
|
|
61
|
+
|
|
62
|
+
# Options that are passed to root_to
|
|
63
|
+
register :root_to_options, {}
|
|
64
|
+
|
|
65
|
+
# Options passed to the routes, i.e. { path: '/custom' }
|
|
66
|
+
register :route_options, {}
|
|
67
|
+
|
|
68
|
+
# Display breadcrumbs
|
|
69
|
+
register :breadcrumb, true
|
|
70
|
+
|
|
71
|
+
# Display create another checkbox on a new page
|
|
72
|
+
# @return [Boolean] (true)
|
|
73
|
+
register :create_another, false
|
|
74
|
+
|
|
75
|
+
# Default CSV options
|
|
76
|
+
register :csv_options, { col_sep: ",", byte_order_mark: "\xEF\xBB\xBF" }
|
|
77
|
+
|
|
78
|
+
# Default Download Links options
|
|
79
|
+
register :download_links, true
|
|
80
|
+
|
|
81
|
+
# The authorization adapter to use
|
|
82
|
+
register :authorization_adapter, ActiveAdmin::AuthorizationAdapter
|
|
83
|
+
|
|
84
|
+
# A proc to be used when a user is not authorized to view the current resource
|
|
85
|
+
register :on_unauthorized_access, :rescue_active_admin_access_denied
|
|
86
|
+
|
|
87
|
+
# A regex to detect unsupported browser, set to false to disable
|
|
88
|
+
register :unsupported_browser_matcher, /MSIE [1-8]\.0/
|
|
89
|
+
|
|
90
|
+
# Whether to display 'Current Filters' on search screen
|
|
91
|
+
register :current_filters, true
|
|
92
|
+
|
|
93
|
+
# class to handle ordering
|
|
94
|
+
register :order_clause, ActiveAdmin::OrderClause
|
|
95
|
+
|
|
96
|
+
# default show_count for scopes
|
|
97
|
+
register :scopes_show_count, true
|
|
98
|
+
|
|
99
|
+
# Request parameters that are permitted by default
|
|
100
|
+
register :permitted_params, [
|
|
101
|
+
:utf8, :_method, :authenticity_token, :commit, :id
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
# Set flash message keys that shouldn't show in ActiveAdmin
|
|
105
|
+
register :flash_keys_to_except, ["timedout"]
|
|
106
|
+
|
|
107
|
+
# Include association filters by default
|
|
108
|
+
register :include_default_association_filters, true
|
|
109
|
+
|
|
110
|
+
register :maximum_association_filter_arity, :unlimited
|
|
111
|
+
|
|
112
|
+
register :filter_columns_for_large_association, [
|
|
113
|
+
:display_name,
|
|
114
|
+
:full_name,
|
|
115
|
+
:name,
|
|
116
|
+
:username,
|
|
117
|
+
:login,
|
|
118
|
+
:title,
|
|
119
|
+
:email,
|
|
120
|
+
]
|
|
121
|
+
register :filter_method_for_large_association, "_starts_with"
|
|
122
|
+
|
|
123
|
+
# Switch between asset pipeline and webpacker assets
|
|
124
|
+
register :use_webpacker, false
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module ActiveAdmin
|
|
2
2
|
class OrderClause
|
|
3
|
-
attr_reader :field, :order
|
|
3
|
+
attr_reader :field, :order, :active_admin_config
|
|
4
4
|
|
|
5
|
-
def initialize(clause)
|
|
6
|
-
clause =~ /^([\w
|
|
5
|
+
def initialize(active_admin_config, clause)
|
|
6
|
+
clause =~ /^([\w\.]+)(->'\w+')?_(desc|asc)$/
|
|
7
7
|
@column = $1
|
|
8
8
|
@op = $2
|
|
9
9
|
@order = $3
|
|
10
|
-
|
|
10
|
+
@active_admin_config = active_admin_config
|
|
11
11
|
@field = [@column, @op].compact.join
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -15,12 +15,34 @@ module ActiveAdmin
|
|
|
15
15
|
@field.present? && @order.present?
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
def apply(chain)
|
|
19
|
+
chain.reorder(Arel.sql sql)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def to_sql
|
|
23
|
+
[table_column, @op, " ", @order].compact.join
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def table
|
|
27
|
+
active_admin_config.resource_column_names.include?(@column) ? active_admin_config.resource_table_name : nil
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def table_column
|
|
31
|
+
(@column =~ /\./) ? @column :
|
|
21
32
|
[table, active_admin_config.resource_quoted_column_name(@column)].compact.join(".")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def sql
|
|
36
|
+
custom_sql || to_sql
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
protected
|
|
22
40
|
|
|
23
|
-
|
|
41
|
+
def custom_sql
|
|
42
|
+
if active_admin_config.ordering[@column].present?
|
|
43
|
+
active_admin_config.ordering[@column].call(self)
|
|
44
|
+
end
|
|
24
45
|
end
|
|
46
|
+
|
|
25
47
|
end
|
|
26
48
|
end
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
module ActiveAdmin
|
|
2
2
|
class Comment < ActiveRecord::Base
|
|
3
3
|
|
|
4
|
-
self.table_name =
|
|
4
|
+
self.table_name = "#{table_name_prefix}active_admin_comments#{table_name_suffix}"
|
|
5
5
|
|
|
6
|
-
belongs_to :resource, polymorphic: true
|
|
7
|
-
belongs_to :author,
|
|
8
|
-
|
|
9
|
-
unless Rails::VERSION::MAJOR > 3 && !defined? ProtectedAttributes
|
|
10
|
-
attr_accessible :resource, :resource_id, :resource_type, :body, :namespace
|
|
11
|
-
end
|
|
6
|
+
belongs_to :resource, polymorphic: true, optional: true
|
|
7
|
+
belongs_to :author, polymorphic: true
|
|
12
8
|
|
|
13
9
|
validates_presence_of :body, :namespace, :resource
|
|
14
10
|
|
|
@@ -19,21 +15,12 @@ module ActiveAdmin
|
|
|
19
15
|
ResourceController::Decorators.undecorate(resource).class.base_class.name.to_s
|
|
20
16
|
end
|
|
21
17
|
|
|
22
|
-
# Postgres adapters won't compare strings to numbers (issue 34)
|
|
23
|
-
def self.resource_id_cast(record)
|
|
24
|
-
resource_id_type == :string ? record.id.to_s : record.id
|
|
25
|
-
end
|
|
26
|
-
|
|
27
18
|
def self.find_for_resource_in_namespace(resource, namespace)
|
|
28
19
|
where(
|
|
29
20
|
resource_type: resource_type(resource),
|
|
30
|
-
resource_id:
|
|
31
|
-
namespace:
|
|
32
|
-
).order(
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def self.resource_id_type
|
|
36
|
-
columns.detect{ |i| i.name == "resource_id" }.type
|
|
21
|
+
resource_id: resource.id,
|
|
22
|
+
namespace: namespace.to_s
|
|
23
|
+
).order(ActiveAdmin.application.namespaces[namespace.to_sym].comments_order)
|
|
37
24
|
end
|
|
38
25
|
|
|
39
26
|
def set_resource_type
|
|
@@ -42,4 +29,3 @@ module ActiveAdmin
|
|
|
42
29
|
|
|
43
30
|
end
|
|
44
31
|
end
|
|
45
|
-
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "active_admin/views"
|
|
2
|
+
require "active_admin/views/components/panel"
|
|
3
3
|
|
|
4
4
|
module ActiveAdmin
|
|
5
5
|
module Comments
|
|
@@ -11,64 +11,87 @@ module ActiveAdmin
|
|
|
11
11
|
attr_accessor :resource
|
|
12
12
|
|
|
13
13
|
def build(resource)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
if authorized?(ActiveAdmin::Auth::READ, ActiveAdmin::Comment)
|
|
15
|
+
@resource = resource
|
|
16
|
+
@comments = active_admin_authorization.scope_collection(ActiveAdmin::Comment.find_for_resource_in_namespace(resource, active_admin_namespace.name).includes(:author).page(params[:page]))
|
|
17
|
+
super(title, for: resource)
|
|
18
|
+
build_comments
|
|
19
|
+
end
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
protected
|
|
21
23
|
|
|
22
24
|
def title
|
|
23
|
-
I18n.t
|
|
25
|
+
I18n.t "active_admin.comments.title_content", count: @comments.total_count
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
def build_comments
|
|
27
|
-
@comments.any?
|
|
28
|
-
|
|
29
|
+
if @comments.any?
|
|
30
|
+
@comments.each(&method(:build_comment))
|
|
31
|
+
div page_entries_info(@comments).html_safe, class: "pagination_information"
|
|
32
|
+
else
|
|
33
|
+
build_empty_message
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
text_node paginate @comments
|
|
37
|
+
|
|
38
|
+
if authorized?(ActiveAdmin::Auth::CREATE, ActiveAdmin::Comment)
|
|
39
|
+
build_comment_form
|
|
40
|
+
end
|
|
29
41
|
end
|
|
30
42
|
|
|
31
43
|
def build_comment(comment)
|
|
32
44
|
div for: comment do
|
|
33
|
-
div class:
|
|
34
|
-
h4 class:
|
|
35
|
-
comment.author ? auto_link(comment.author) : I18n.t(
|
|
45
|
+
div class: "active_admin_comment_meta" do
|
|
46
|
+
h4 class: "active_admin_comment_author" do
|
|
47
|
+
comment.author ? auto_link(comment.author) : I18n.t("active_admin.comments.author_missing")
|
|
36
48
|
end
|
|
37
49
|
span pretty_format comment.created_at
|
|
50
|
+
if authorized?(ActiveAdmin::Auth::DESTROY, comment)
|
|
51
|
+
text_node link_to I18n.t("active_admin.comments.delete"), comments_url(comment.id), method: :delete, data: { confirm: I18n.t("active_admin.comments.delete_confirmation") }
|
|
52
|
+
end
|
|
38
53
|
end
|
|
39
|
-
div class:
|
|
54
|
+
div class: "active_admin_comment_body" do
|
|
40
55
|
simple_format comment.body
|
|
41
56
|
end
|
|
42
57
|
end
|
|
43
58
|
end
|
|
44
59
|
|
|
45
60
|
def build_empty_message
|
|
46
|
-
span I18n.t(
|
|
61
|
+
span I18n.t("active_admin.comments.no_comments_yet"), class: "empty"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def comments_url(*args)
|
|
65
|
+
parts = []
|
|
66
|
+
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
|
67
|
+
parts << active_admin_namespace.comments_registration_name.underscore
|
|
68
|
+
parts << "path"
|
|
69
|
+
send parts.join("_"), *args
|
|
47
70
|
end
|
|
48
71
|
|
|
49
72
|
def comment_form_url
|
|
50
73
|
parts = []
|
|
51
74
|
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
|
52
75
|
parts << active_admin_namespace.comments_registration_name.underscore.pluralize
|
|
53
|
-
parts <<
|
|
54
|
-
send parts.join
|
|
76
|
+
parts << "path"
|
|
77
|
+
send parts.join "_"
|
|
55
78
|
end
|
|
56
79
|
|
|
57
80
|
def build_comment_form
|
|
58
81
|
active_admin_form_for(ActiveAdmin::Comment.new, url: comment_form_url) do |f|
|
|
59
82
|
f.inputs do
|
|
60
|
-
f.input :resource_type, as: :hidden,
|
|
61
|
-
f.input :resource_id,
|
|
62
|
-
f.input :body,
|
|
83
|
+
f.input :resource_type, as: :hidden, input_html: { value: ActiveAdmin::Comment.resource_type(parent.resource) }
|
|
84
|
+
f.input :resource_id, as: :hidden, input_html: { value: parent.resource.id }
|
|
85
|
+
f.input :body, label: false, input_html: { size: "80x8" }
|
|
63
86
|
end
|
|
64
87
|
f.actions do
|
|
65
|
-
f.action :submit, label: I18n.t(
|
|
88
|
+
f.action :submit, label: I18n.t("active_admin.comments.add")
|
|
66
89
|
end
|
|
67
90
|
end
|
|
68
91
|
end
|
|
69
92
|
|
|
70
93
|
def default_id_for_prefix
|
|
71
|
-
|
|
94
|
+
"active_admin_comments_for"
|
|
72
95
|
end
|
|
73
96
|
end
|
|
74
97
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "active_admin/views"
|
|
2
|
+
require "active_admin/orm/active_record/comments/views/active_admin_comments"
|