activeadmin 1.0.0.pre4 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CHANGELOG.md +529 -52
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +129 -58
- data/README.md +80 -79
- data/app/assets/javascripts/active_admin/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_base.scss +2 -2
- data/app/assets/stylesheets/active_admin/_forms.scss +19 -26
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
- 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 +4 -1
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -2
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
- data/app/assets/stylesheets/active_admin/print.scss +2 -3
- data/app/views/active_admin/devise/confirmations/new.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 +2 -2
- data/config/locales/ar.yml +4 -5
- 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 +2 -3
- data/config/locales/de.yml +30 -3
- data/config/locales/el.yml +3 -4
- data/config/locales/en-CA.yml +139 -0
- data/config/locales/en-GB.yml +44 -3
- data/config/locales/en.yml +31 -5
- data/config/locales/eo.yml +145 -0
- data/config/locales/es-MX.yml +5 -3
- data/config/locales/es.yml +32 -6
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +2 -3
- data/config/locales/fr.yml +27 -5
- data/config/locales/he.yml +53 -7
- data/config/locales/hr.yml +1 -2
- data/config/locales/hu.yml +5 -2
- data/config/locales/id.yml +2 -3
- data/config/locales/it.yml +15 -7
- data/config/locales/ja.yml +8 -3
- data/config/locales/ko.yml +1 -2
- data/config/locales/lt.yml +27 -6
- data/config/locales/lv.yml +1 -2
- data/config/locales/mk.yml +134 -0
- data/config/locales/nb.yml +16 -7
- data/config/locales/nl.yml +13 -3
- data/config/locales/pl.yml +75 -5
- data/config/locales/pt-BR.yml +10 -3
- data/config/locales/pt-PT.yml +1 -2
- data/config/locales/ro.yml +1 -2
- data/config/locales/ru.yml +5 -3
- data/config/locales/sk.yml +168 -0
- data/config/locales/sv-SE.yml +4 -3
- data/config/locales/tr.yml +10 -2
- data/config/locales/uk.yml +4 -3
- data/config/locales/vi.yml +48 -8
- data/config/locales/zh-CN.yml +38 -7
- data/config/locales/zh-TW.yml +2 -3
- data/docs/.gitignore +1 -0
- data/docs/0-installation.md +19 -13
- data/docs/1-general-configuration.md +37 -4
- data/docs/10-custom-pages.md +47 -3
- data/docs/11-decorators.md +4 -0
- data/docs/12-arbre-components.md +73 -9
- data/docs/13-authorization-adapter.md +72 -35
- data/docs/14-gotchas.md +57 -19
- data/docs/2-resource-customization.md +64 -20
- 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 +33 -12
- data/docs/3-index-pages.md +65 -9
- data/docs/4-csv-format.md +16 -0
- data/docs/5-forms.md +78 -17
- data/docs/6-show-pages.md +5 -29
- data/docs/7-sidebars.md +5 -1
- data/docs/8-custom-actions.md +18 -1
- data/docs/9-batch-actions.md +8 -4
- data/docs/CNAME +1 -0
- data/docs/Gemfile +3 -0
- data/docs/Gemfile.lock +248 -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 +50 -140
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/authorization_adapter.rb +0 -3
- data/lib/active_admin/base_controller/authorization.rb +4 -7
- data/lib/active_admin/base_controller/menu.rb +10 -14
- data/lib/active_admin/base_controller.rb +8 -14
- data/lib/active_admin/batch_actions/controller.rb +3 -3
- data/lib/active_admin/batch_actions/resource_extension.rb +9 -13
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -1
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -1
- data/lib/active_admin/batch_actions/views/selection_cells.rb +6 -5
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/controller_action.rb +2 -1
- data/lib/active_admin/csv_builder.rb +15 -12
- data/lib/active_admin/dependency.rb +8 -76
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/devise.rb +3 -3
- data/lib/active_admin/dsl.rb +3 -16
- 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 +5 -0
- data/lib/active_admin/error.rb +5 -3
- data/lib/active_admin/filters/active.rb +13 -14
- data/lib/active_admin/filters/active_filter.rb +124 -0
- data/lib/active_admin/filters/active_sidebar.rb +54 -0
- data/lib/active_admin/filters/forms.rb +6 -4
- data/lib/active_admin/filters/formtastic_addons.rb +2 -2
- data/lib/active_admin/filters/resource_extension.rb +28 -43
- data/lib/active_admin/filters.rb +2 -0
- data/lib/active_admin/form_builder.rb +100 -59
- data/lib/active_admin/generators/boilerplate.rb +12 -4
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +12 -5
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
- data/lib/active_admin/inputs/filters/date_range_input.rb +21 -8
- data/lib/active_admin/inputs/filters/select_input.rb +6 -3
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +1 -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 +6 -12
- data/lib/active_admin/menu_collection.rb +0 -2
- data/lib/active_admin/menu_item.rb +4 -32
- data/lib/active_admin/namespace.rb +36 -17
- data/lib/active_admin/namespace_settings.rb +123 -0
- data/lib/active_admin/order_clause.rb +30 -8
- data/lib/active_admin/orm/active_record/comments/comment.rb +3 -17
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +19 -7
- data/lib/active_admin/orm/active_record/comments.rb +17 -11
- data/lib/active_admin/page.rb +23 -4
- data/lib/active_admin/page_controller.rb +2 -6
- 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 +18 -5
- data/lib/active_admin/resource/action_items.rb +17 -5
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +10 -1
- data/lib/active_admin/resource/menu.rb +7 -4
- data/lib/active_admin/resource/model.rb +15 -0
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/routes.rb +52 -20
- data/lib/active_admin/resource/scopes.rb +5 -3
- data/lib/active_admin/resource/sidebars.rb +1 -1
- data/lib/active_admin/resource.rb +59 -7
- data/lib/active_admin/resource_collection.rb +2 -2
- data/lib/active_admin/resource_controller/action_builder.rb +10 -0
- data/lib/active_admin/resource_controller/data_access.rb +32 -27
- data/lib/active_admin/resource_controller/decorators.rb +5 -5
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -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.rb +15 -0
- data/lib/active_admin/resource_dsl.rb +58 -24
- data/lib/active_admin/router.rb +90 -82
- data/lib/active_admin/scope.rb +20 -12
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/sidebar_section.rb +3 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
- data/lib/active_admin/view_helpers/display_helper.rb +28 -16
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +13 -0
- data/lib/active_admin/view_helpers/fields_for.rb +1 -2
- data/lib/active_admin/view_helpers/form_helper.rb +2 -2
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +8 -1
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
- data/lib/active_admin/view_helpers.rb +2 -1
- data/lib/active_admin/views/action_items.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +43 -11
- data/lib/active_admin/views/components/attributes_table.rb +4 -4
- data/lib/active_admin/views/components/columns.rb +3 -3
- data/lib/active_admin/views/components/dropdown_menu.rb +4 -4
- data/lib/active_admin/views/components/index_list.rb +4 -3
- 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 +7 -11
- data/lib/active_admin/views/components/scopes.rb +14 -8
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/site_title.rb +5 -6
- data/lib/active_admin/views/components/status_tag.rb +11 -16
- data/lib/active_admin/views/components/table_for.rb +7 -16
- data/lib/active_admin/views/components/tabs.rb +15 -3
- data/lib/active_admin/views/footer.rb +14 -4
- data/lib/active_admin/views/header.rb +3 -16
- data/lib/active_admin/views/index_as_blog.rb +2 -3
- data/lib/active_admin/views/index_as_grid.rb +25 -25
- data/lib/active_admin/views/index_as_table.rb +39 -13
- data/lib/active_admin/views/pages/base.rb +36 -57
- data/lib/active_admin/views/pages/form.rb +2 -3
- data/lib/active_admin/views/pages/layout.rb +1 -1
- data/lib/active_admin/views/pages/show.rb +8 -2
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/active_admin/views/title_bar.rb +4 -4
- data/lib/active_admin/views.rb +1 -1
- data/lib/active_admin.rb +11 -7
- data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +8 -5
- data/lib/generators/active_admin/install/install_generator.rb +7 -3
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +60 -4
- 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/resource/resource_generator.rb +2 -2
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
- data/lib/ransack_ext.rb +5 -5
- 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
- data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
- metadata +190 -539
- data/.gitignore +0 -49
- data/.hound.yml +0 -14
- data/.travis.yml +0 -46
- data/.yardopts +0 -8
- data/Gemfile +0 -75
- data/Guardfile +0 -8
- data/Rakefile +0 -33
- data/activeadmin.gemspec +0 -31
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +0 -9
- 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/initializers/batch_actions.js.coffee +0 -7
- data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -10
- data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -15
- data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -3
- data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -11
- 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 -45
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -31
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
- 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 -43
- 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 -196
- 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 -42
- data/features/index/pagination.feature +0 -63
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -53
- data/features/meta_tags.feature +0 -21
- data/features/new_page.feature +0 -109
- data/features/registering_assets.feature +0 -34
- 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/columns.feature +0 -40
- data/features/show/default_content.feature +0 -44
- data/features/show/page_title.feature +0 -59
- 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 -81
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- data/features/step_definitions/column_steps.rb +0 -8
- 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 -35
- 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/meta_tag_steps.rb +0 -3
- data/features/step_definitions/pagination_steps.rb +0 -15
- 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 -120
- 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 -162
- 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/event.rb +0 -24
- data/lib/active_admin/filters/humanized.rb +0 -68
- data/lib/active_admin/helpers/settings.rb +0 -115
- data/lib/active_admin/reloader.rb +0 -25
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
- data/lib/generators/active_admin/resource/templates/admin.rb +0 -45
- data/script/local +0 -53
- 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.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 -169
- data/spec/requests/default_namespace_spec.rb +0 -61
- data/spec/requests/javascript_spec.rb +0 -22
- data/spec/requests/memory_spec.rb +0 -21
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -17
- data/spec/support/active_admin_request_helpers.rb +0 -27
- data/spec/support/deferred_garbage_collection.rb +0 -19
- data/spec/support/detect_rails_version.rb +0 -34
- data/spec/support/jslint.yml +0 -80
- data/spec/support/rails_template.rb +0 -158
- data/spec/support/rails_template_with_data.rb +0 -55
- data/spec/support/templates/admin/stores.rb +0 -9
- 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 -134
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -165
- 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 -23
- data/spec/unit/auto_link_spec.rb +0 -69
- data/spec/unit/batch_actions/resource_spec.rb +0 -97
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -65
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -188
- 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 -41
- data/spec/unit/csv_builder_spec.rb +0 -303
- 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/filters/filter_form_builder_spec.rb +0 -434
- data/spec/unit/filters/humanized_spec.rb +0 -56
- data/spec/unit/filters/resource_spec.rb +0 -128
- data/spec/unit/form_builder_spec.rb +0 -815
- data/spec/unit/generators/install_spec.rb +0 -24
- 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 -73
- data/spec/unit/namespace/register_resource_spec.rb +0 -160
- 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 -77
- 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 -77
- 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 -175
- data/spec/unit/resource_controller/data_access_spec.rb +0 -140
- data/spec/unit/resource_controller/decorators_spec.rb +0 -94
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -38
- 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 -331
- data/spec/unit/routing_spec.rb +0 -185
- data/spec/unit/scope_spec.rb +0 -185
- data/spec/unit/settings_spec.rb +0 -118
- data/spec/unit/view_factory_spec.rb +0 -19
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -165
- 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/attributes_table_spec.rb +0 -272
- data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -189
- data/spec/unit/views/components/index_list_spec.rb +0 -35
- data/spec/unit/views/components/index_table_for_spec.rb +0 -127
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
- data/spec/unit/views/components/panel_spec.rb +0 -58
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
- data/spec/unit/views/components/site_title_spec.rb +0 -78
- data/spec/unit/views/components/status_tag_spec.rb +0 -249
- data/spec/unit/views/components/table_for_spec.rb +0 -434
- data/spec/unit/views/components/tabs_spec.rb +0 -39
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
- data/spec/unit/views/index_as_blog_spec.rb +0 -76
- data/spec/unit/views/pages/form_spec.rb +0 -51
- 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 -91
- data/tasks/yard.rake +0 -9
@@ -0,0 +1,19 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
|
3
|
+
class SettingsNode
|
4
|
+
class << self
|
5
|
+
# Never instantiated. Variables are stored in the singleton_class.
|
6
|
+
private_class_method :new
|
7
|
+
|
8
|
+
# @return anonymous class with same accessors as the superclass.
|
9
|
+
def build(superclass = self)
|
10
|
+
Class.new(superclass)
|
11
|
+
end
|
12
|
+
|
13
|
+
def register(name, value)
|
14
|
+
class_attribute name
|
15
|
+
send "#{name}=", value
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/active_admin/version.rb
CHANGED
@@ -26,10 +26,10 @@ module ActiveAdmin
|
|
26
26
|
|
27
27
|
if config.controller.action_methods.include?("show") &&
|
28
28
|
authorized?(ActiveAdmin::Auth::READ, resource)
|
29
|
-
url_for config.route_instance_path resource
|
29
|
+
url_for config.route_instance_path resource, url_options
|
30
30
|
elsif config.controller.action_methods.include?("edit") &&
|
31
31
|
authorized?(ActiveAdmin::Auth::UPDATE, resource)
|
32
|
-
url_for config.route_edit_instance_path resource
|
32
|
+
url_for config.route_edit_instance_path resource, url_options
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -12,9 +12,9 @@ module ActiveAdmin
|
|
12
12
|
# 1. try using `display_name` if we can locate a DB object
|
13
13
|
# 2. try using the model name translation
|
14
14
|
# 3. default to calling `titlecase` on the URL fragment
|
15
|
-
if part =~ /\A(\d+|[a-f0-9]{24})\z/ && parts[index-1]
|
15
|
+
if part =~ /\A(\d+|[a-f0-9]{24}|(?:[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}))\z/ && parts[index - 1]
|
16
16
|
parent = active_admin_config.belongs_to_config.try :target
|
17
|
-
config = parent && parent.resource_name.route_key == parts[index-1] ? parent : active_admin_config
|
17
|
+
config = parent && parent.resource_name.route_key == parts[index - 1] ? parent : active_admin_config
|
18
18
|
name = display_name config.find_resource part
|
19
19
|
end
|
20
20
|
name ||= I18n.t "activerecord.models.#{part.singularize}", count: ::ActiveAdmin::Helpers::I18n::PLURAL_MANY_COUNT, default: part.titlecase
|
@@ -2,8 +2,9 @@ module ActiveAdmin
|
|
2
2
|
module ViewHelpers
|
3
3
|
module DisplayHelper
|
4
4
|
|
5
|
-
DISPLAY_NAME_FALLBACK = ->{
|
6
|
-
name
|
5
|
+
DISPLAY_NAME_FALLBACK = -> {
|
6
|
+
name = ""
|
7
|
+
klass = self.class
|
7
8
|
name << klass.model_name.human if klass.respond_to? :model_name
|
8
9
|
name << " ##{send(klass.primary_key)}" if klass.respond_to? :primary_key
|
9
10
|
name.present? ? name : to_s
|
@@ -15,7 +16,7 @@ module ActiveAdmin
|
|
15
16
|
# Attempts to call any known display name methods on the resource.
|
16
17
|
# See the setting in `application.rb` for the list of methods and their priority.
|
17
18
|
def display_name(resource)
|
18
|
-
render_in_context
|
19
|
+
ERB::Util.html_escape(render_in_context(resource, display_name_method_for(resource))) unless resource.nil?
|
19
20
|
end
|
20
21
|
|
21
22
|
# Looks up and caches the first available display name method.
|
@@ -25,7 +26,7 @@ module ActiveAdmin
|
|
25
26
|
@@display_name_methods_cache ||= {}
|
26
27
|
@@display_name_methods_cache[resource.class] ||= begin
|
27
28
|
methods = active_admin_application.display_name_methods - association_methods_for(resource)
|
28
|
-
method = methods.detect{ |method| resource.respond_to? method }
|
29
|
+
method = methods.detect { |method| resource.respond_to? method }
|
29
30
|
|
30
31
|
if method != :to_s || resource.method(method).source_location
|
31
32
|
method
|
@@ -42,16 +43,19 @@ module ActiveAdmin
|
|
42
43
|
|
43
44
|
def format_attribute(resource, attr)
|
44
45
|
value = find_value resource, attr
|
45
|
-
|
46
|
-
value
|
47
|
-
|
46
|
+
|
47
|
+
if value.is_a?(Arbre::Element)
|
48
|
+
value
|
49
|
+
elsif boolean_attr?(resource, attr, value)
|
50
|
+
Arbre::Context.new { status_tag value }
|
51
|
+
else
|
52
|
+
pretty_format value
|
53
|
+
end
|
48
54
|
end
|
49
55
|
|
50
56
|
def find_value(resource, attr)
|
51
57
|
if attr.is_a? Proc
|
52
58
|
attr.call resource
|
53
|
-
elsif attr =~ /\A(.+)_id\z/ && reflection_for(resource, $1.to_sym)
|
54
|
-
resource.public_send $1
|
55
59
|
elsif resource.respond_to? attr
|
56
60
|
resource.public_send attr
|
57
61
|
elsif resource.respond_to? :[]
|
@@ -65,25 +69,33 @@ module ActiveAdmin
|
|
65
69
|
when String, Numeric, Symbol, Arbre::Element
|
66
70
|
object.to_s
|
67
71
|
when Date, Time
|
68
|
-
localize object, format: active_admin_application.localize_format
|
72
|
+
I18n.localize object, format: active_admin_application.localize_format
|
73
|
+
when Array
|
74
|
+
format_collection(object)
|
69
75
|
else
|
70
76
|
if defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Base) ||
|
71
77
|
defined?(::Mongoid) && object.class.include?(Mongoid::Document)
|
72
78
|
auto_link object
|
79
|
+
elsif defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Relation)
|
80
|
+
format_collection(object)
|
73
81
|
else
|
74
82
|
display_name object
|
75
83
|
end
|
76
84
|
end
|
77
85
|
end
|
78
86
|
|
79
|
-
def
|
80
|
-
|
81
|
-
klass.reflect_on_association method if klass.respond_to? :reflect_on_association
|
87
|
+
def format_collection(collection)
|
88
|
+
safe_join(collection.map { |item| pretty_format(item) }, ', ')
|
82
89
|
end
|
83
90
|
|
84
|
-
def boolean_attr?(resource, attr)
|
85
|
-
|
86
|
-
|
91
|
+
def boolean_attr?(resource, attr, value)
|
92
|
+
case value
|
93
|
+
when TrueClass, FalseClass
|
94
|
+
true
|
95
|
+
else
|
96
|
+
if resource.class.respond_to? :columns_hash
|
97
|
+
column = resource.class.columns_hash[attr.to_s] and column.type == :boolean
|
98
|
+
end
|
87
99
|
end
|
88
100
|
end
|
89
101
|
|
@@ -1,6 +1,19 @@
|
|
1
1
|
module ActiveAdmin
|
2
2
|
module ViewHelpers
|
3
3
|
module DownloadFormatLinksHelper
|
4
|
+
private
|
5
|
+
|
6
|
+
def build_download_formats(download_links)
|
7
|
+
download_links = instance_exec(&download_links) if download_links.is_a?(Proc)
|
8
|
+
|
9
|
+
if download_links.is_a?(Array) && !download_links.empty?
|
10
|
+
download_links
|
11
|
+
elsif download_links == false
|
12
|
+
[]
|
13
|
+
else
|
14
|
+
self.class.formats
|
15
|
+
end
|
16
|
+
end
|
4
17
|
|
5
18
|
def build_download_format_links(formats = self.class.formats)
|
6
19
|
params = request.query_parameters.except :format, :commit
|
@@ -16,7 +16,6 @@ module ActiveAdmin
|
|
16
16
|
def fields_for_params(params, options = {})
|
17
17
|
namespace = options[:namespace]
|
18
18
|
except = Array.wrap(options[:except]).map &:to_s
|
19
|
-
params = params.respond_to?(:to_unsafe_h) ? params.to_unsafe_h : params
|
20
19
|
|
21
20
|
params.flat_map do |k, v|
|
22
21
|
next if namespace.nil? && %w(controller action commit utf8).include?(k.to_s)
|
@@ -39,7 +38,7 @@ module ActiveAdmin
|
|
39
38
|
end
|
40
39
|
when nil
|
41
40
|
{ k => '' }
|
42
|
-
when TrueClass,FalseClass
|
41
|
+
when TrueClass, FalseClass
|
43
42
|
{ k => v }
|
44
43
|
else
|
45
44
|
raise "I don't know what to do with #{v.class} params: #{v.inspect}"
|
@@ -8,8 +8,8 @@ module ActiveAdmin
|
|
8
8
|
end.content
|
9
9
|
end
|
10
10
|
|
11
|
-
def hidden_field_tags_for(params, options={})
|
12
|
-
fields_for_params(params, options).map do |kv|
|
11
|
+
def hidden_field_tags_for(params, options = {})
|
12
|
+
fields_for_params(params.to_unsafe_hash, options).map do |kv|
|
13
13
|
k, v = kv.first
|
14
14
|
hidden_field_tag k, v, id: sanitize_to_id("hidden_active_admin_#{k}")
|
15
15
|
end.join("\n").html_safe
|
@@ -1,4 +1,7 @@
|
|
1
|
+
# Utility methods for internal use.
|
2
|
+
# @private
|
1
3
|
module MethodOrProcHelper
|
4
|
+
extend self
|
2
5
|
|
3
6
|
# This method will either call the symbol on self or instance_exec the Proc
|
4
7
|
# within self. Any args will be passed along to the method dispatch.
|
@@ -18,6 +21,8 @@ module MethodOrProcHelper
|
|
18
21
|
send(symbol_or_proc, *args)
|
19
22
|
when Proc
|
20
23
|
instance_exec(*args, &symbol_or_proc)
|
24
|
+
else
|
25
|
+
symbol_or_proc
|
21
26
|
end
|
22
27
|
end
|
23
28
|
|
@@ -60,6 +65,8 @@ module MethodOrProcHelper
|
|
60
65
|
else
|
61
66
|
symbol_or_proc.call(receiver, *args)
|
62
67
|
end
|
68
|
+
else
|
69
|
+
symbol_or_proc
|
63
70
|
end
|
64
71
|
end
|
65
72
|
|
@@ -71,7 +78,7 @@ module MethodOrProcHelper
|
|
71
78
|
case string_symbol_or_proc
|
72
79
|
when Symbol, Proc
|
73
80
|
call_method_or_proc_on(obj, string_symbol_or_proc, options)
|
74
|
-
|
81
|
+
else
|
75
82
|
string_symbol_or_proc
|
76
83
|
end
|
77
84
|
end
|
@@ -2,7 +2,7 @@ module ActiveAdmin
|
|
2
2
|
module ViewHelpers
|
3
3
|
|
4
4
|
# Require all ruby files in the view helpers dir
|
5
|
-
Dir[File.expand_path('
|
5
|
+
Dir[File.expand_path('view_helpers', __dir__) + "/*.rb"].each { |f| require f }
|
6
6
|
|
7
7
|
include ActiveAdminApplicationHelper
|
8
8
|
include AutoLinkHelper
|
@@ -14,6 +14,7 @@ module ActiveAdmin
|
|
14
14
|
include TitleHelper
|
15
15
|
include ViewFactoryHelper
|
16
16
|
include FlashHelper
|
17
|
+
include ScopeNameHelper
|
17
18
|
|
18
19
|
end
|
19
20
|
end
|
@@ -19,7 +19,7 @@ module ActiveAdmin
|
|
19
19
|
opening_tag << children.to_s << closing_tag
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
class ActiveAdminForm < FormtasticProxy
|
24
24
|
builder_method :active_admin_form_for
|
25
25
|
|
@@ -27,14 +27,14 @@ module ActiveAdmin
|
|
27
27
|
@resource = resource
|
28
28
|
options = options.deep_dup
|
29
29
|
options[:builder] ||= ActiveAdmin::FormBuilder
|
30
|
-
form_string = semantic_form_for(resource, options) do |f|
|
30
|
+
form_string = helpers.semantic_form_for(resource, options) do |f|
|
31
31
|
@form_builder = f
|
32
32
|
end
|
33
33
|
|
34
34
|
@opening_tag, @closing_tag = split_string_on(form_string, "</form>")
|
35
35
|
instance_eval(&block) if block_given?
|
36
36
|
|
37
|
-
# Rails
|
37
|
+
# Rails sets multipart automatically if a file field is present,
|
38
38
|
# but the form tag has already been rendered before the block eval.
|
39
39
|
if multipart? && @opening_tag !~ /multipart/
|
40
40
|
@opening_tag.sub!(/<form/, '<form enctype="multipart/form-data"')
|
@@ -43,7 +43,7 @@ module ActiveAdmin
|
|
43
43
|
|
44
44
|
def inputs(*args, &block)
|
45
45
|
if block_given?
|
46
|
-
form_builder.template.
|
46
|
+
form_builder.template.assigns[:has_many_block] = true
|
47
47
|
end
|
48
48
|
if block_given? && block.arity == 0
|
49
49
|
wrapped_block = proc do
|
@@ -57,6 +57,12 @@ module ActiveAdmin
|
|
57
57
|
end
|
58
58
|
insert_tag(SemanticInputsProxy, form_builder, *args, &wrapped_block)
|
59
59
|
else
|
60
|
+
# Set except option to prevent sensitive fields from being shown in forms by default.
|
61
|
+
opts = args.extract_options!
|
62
|
+
opts[:except] ||= []
|
63
|
+
ActiveAdmin.application.filter_attributes.each { |e| opts[:except] << e }
|
64
|
+
args << opts
|
65
|
+
|
60
66
|
proxy_call_to_form(:inputs, *args, &block)
|
61
67
|
end
|
62
68
|
end
|
@@ -72,10 +78,17 @@ module ActiveAdmin
|
|
72
78
|
end
|
73
79
|
|
74
80
|
def commit_action_with_cancel_link
|
81
|
+
add_create_another_checkbox
|
75
82
|
action(:submit)
|
76
83
|
cancel_link
|
77
84
|
end
|
78
85
|
|
86
|
+
def add_create_another_checkbox
|
87
|
+
if %w(new create).include?(helpers.action_name) && active_admin_config && active_admin_config.create_another
|
88
|
+
current_arbre_element.add_child(create_another_checkbox)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
79
92
|
def has_many(*args, &block)
|
80
93
|
insert_tag(HasManyProxy, form_builder, *args, &block)
|
81
94
|
end
|
@@ -91,18 +104,37 @@ module ActiveAdmin
|
|
91
104
|
def form_buffers
|
92
105
|
raise "'form_buffers' has been removed from ActiveAdmin::FormBuilder, please read https://github.com/activeadmin/activeadmin/blob/master/docs/5-forms.md for details."
|
93
106
|
end
|
107
|
+
|
108
|
+
private
|
109
|
+
|
110
|
+
def create_another_checkbox
|
111
|
+
create_another = params[:create_another]
|
112
|
+
label = @resource.class.model_name.human
|
113
|
+
Arbre::Context.new do
|
114
|
+
li class: 'create_another' do
|
115
|
+
input(
|
116
|
+
checked: create_another,
|
117
|
+
id: 'create_another',
|
118
|
+
name: 'create_another',
|
119
|
+
type: 'checkbox'
|
120
|
+
)
|
121
|
+
label(I18n.t('active_admin.create_another', model: label), for: 'create_another')
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
94
125
|
end
|
95
126
|
|
96
127
|
class SemanticInputsProxy < FormtasticProxy
|
97
128
|
def build(form_builder, *args, &block)
|
98
|
-
|
99
|
-
|
129
|
+
html_options = args.extract_options!
|
130
|
+
html_options[:class] ||= "inputs"
|
131
|
+
legend = args.shift if args.first.is_a?(::String)
|
132
|
+
legend = html_options.delete(:name) if html_options.key?(:name)
|
100
133
|
legend_tag = legend ? "<legend><span>#{legend}</span></legend>" : ""
|
101
|
-
|
102
|
-
|
103
|
-
@opening_tag = "<fieldset class=\"#{klasses.join(" ")}\">#{legend_tag}<ol>"
|
134
|
+
fieldset_attrs = html_options.map { |k, v| %Q{#{k}="#{v}"} }.join(" ")
|
135
|
+
@opening_tag = "<fieldset #{fieldset_attrs}>#{legend_tag}<ol>"
|
104
136
|
@closing_tag = "</ol></fieldset>"
|
105
|
-
super(*(args <<
|
137
|
+
super(*(args << html_options), &block)
|
106
138
|
end
|
107
139
|
end
|
108
140
|
|
@@ -120,4 +152,4 @@ module ActiveAdmin
|
|
120
152
|
end
|
121
153
|
end
|
122
154
|
end
|
123
|
-
end
|
155
|
+
end
|
@@ -7,7 +7,7 @@ module ActiveAdmin
|
|
7
7
|
def build(obj, *attrs)
|
8
8
|
@collection = Array.wrap(obj)
|
9
9
|
@resource_class = @collection.first.class
|
10
|
-
options = {
|
10
|
+
options = {}
|
11
11
|
options[:for] = @collection.first if single_record?
|
12
12
|
super(options)
|
13
13
|
@table = table
|
@@ -16,7 +16,7 @@ module ActiveAdmin
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def rows(*attrs)
|
19
|
-
attrs.each {|attr| row(attr) }
|
19
|
+
attrs.each { |attr| row(attr) }
|
20
20
|
end
|
21
21
|
|
22
22
|
def row(*args, &block)
|
@@ -26,7 +26,7 @@ module ActiveAdmin
|
|
26
26
|
if options[:class]
|
27
27
|
classes << options[:class]
|
28
28
|
elsif title.present?
|
29
|
-
classes << "row-#{
|
29
|
+
classes << "row-#{title.to_s.parameterize(separator: "_")}"
|
30
30
|
end
|
31
31
|
options[:class] = classes.join(' ')
|
32
32
|
|
@@ -79,7 +79,7 @@ module ActiveAdmin
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def content_for(record, attr)
|
82
|
-
value = format_attribute record, attr
|
82
|
+
value = helpers.format_attribute record, attr
|
83
83
|
value.blank? && current_arbre_element.children.to_s.empty? ? empty_value : value
|
84
84
|
# Don't add the same Arbre twice, while still allowing format_attribute to call status_tag
|
85
85
|
current_arbre_element << value unless current_arbre_element.children.include? value
|
@@ -14,7 +14,7 @@ module ActiveAdmin
|
|
14
14
|
#
|
15
15
|
# To create a two column layout:
|
16
16
|
#
|
17
|
-
#
|
17
|
+
# columns do
|
18
18
|
# column do
|
19
19
|
# span "Column # 1
|
20
20
|
# end
|
@@ -28,7 +28,7 @@ module ActiveAdmin
|
|
28
28
|
#
|
29
29
|
# To make a column span multiple, pass the :span option to the column method:
|
30
30
|
#
|
31
|
-
#
|
31
|
+
# columns do
|
32
32
|
# column span: 2 do
|
33
33
|
# span "Column # 1
|
34
34
|
# end
|
@@ -49,7 +49,7 @@ module ActiveAdmin
|
|
49
49
|
#
|
50
50
|
# To overcome this, columns include a :max_width and :min_width option.
|
51
51
|
#
|
52
|
-
#
|
52
|
+
# columns do
|
53
53
|
# column max_width: "200px", min_width: "100px" do
|
54
54
|
# span "Column # 1
|
55
55
|
# end
|
@@ -7,7 +7,7 @@ module ActiveAdmin
|
|
7
7
|
#
|
8
8
|
# dropdown_menu "Administration" do
|
9
9
|
# item "Edit Details", edit_details_path
|
10
|
-
# item "Edit My Account",
|
10
|
+
# item "Edit My Account", edit_my_account_path
|
11
11
|
# end
|
12
12
|
#
|
13
13
|
# This will create a button with the label "Administration" and
|
@@ -26,10 +26,10 @@ module ActiveAdmin
|
|
26
26
|
options = options.dup
|
27
27
|
|
28
28
|
# Easily set options for the button or menu
|
29
|
-
button_options
|
29
|
+
button_options = options.delete(:button) || {}
|
30
30
|
menu_options = options.delete(:menu) || {}
|
31
31
|
|
32
|
-
@button
|
32
|
+
@button = build_button(name, button_options)
|
33
33
|
@menu = build_menu(menu_options)
|
34
34
|
|
35
35
|
super(options)
|
@@ -58,7 +58,7 @@ module ActiveAdmin
|
|
58
58
|
|
59
59
|
menu_list = nil
|
60
60
|
|
61
|
-
div :
|
61
|
+
div class: 'dropdown_menu_list_wrapper' do
|
62
62
|
menu_list = ul(options)
|
63
63
|
end
|
64
64
|
|
@@ -36,7 +36,10 @@ module ActiveAdmin
|
|
36
36
|
# @param [Class] index_class The class on which to build the link and html classes
|
37
37
|
def build_index_list(index_class)
|
38
38
|
li class: classes_for_index(index_class) do
|
39
|
-
|
39
|
+
params = request.query_parameters.except :page, :commit, :format
|
40
|
+
url_with_params = url_for(params.merge(as: index_class.index_name.to_sym))
|
41
|
+
|
42
|
+
a href: url_with_params, class: "table_tools_button" do
|
40
43
|
name = index_class.index_name
|
41
44
|
I18n.t("active_admin.index_list.#{name}", default: name.to_s.titleize)
|
42
45
|
end
|
@@ -64,5 +67,3 @@ module ActiveAdmin
|
|
64
67
|
end
|
65
68
|
end
|
66
69
|
end
|
67
|
-
|
68
|
-
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
|
4
|
+
# Renders an ActiveAdmin::Menu as a set of unordered list items.
|
5
|
+
#
|
6
|
+
# This component takes cares of deciding which items should be
|
7
|
+
# displayed given the current context and renders them appropriately.
|
8
|
+
#
|
9
|
+
# The entire component is rendered within one ul element.
|
10
|
+
class Menu < Component
|
11
|
+
attr_reader :menu
|
12
|
+
builder_method :menu
|
13
|
+
|
14
|
+
# @param [ActiveAdmin::Menu] menu the Menu to render
|
15
|
+
# @param [Hash] options the options as passed to the underlying ul element.
|
16
|
+
#
|
17
|
+
def build(menu, options = {})
|
18
|
+
@menu = menu
|
19
|
+
super(options)
|
20
|
+
|
21
|
+
menu.items.each do |item|
|
22
|
+
menu_item(item) if helpers.render_in_context self, item.should_display
|
23
|
+
end
|
24
|
+
children.sort!
|
25
|
+
end
|
26
|
+
|
27
|
+
def tag_name
|
28
|
+
'ul'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
|
4
|
+
# Arbre component used to render ActiveAdmin::MenuItem
|
5
|
+
class MenuItem < Component
|
6
|
+
builder_method :menu_item
|
7
|
+
attr_reader :label
|
8
|
+
attr_reader :url
|
9
|
+
attr_reader :priority
|
10
|
+
|
11
|
+
def build(item, options = {})
|
12
|
+
super(options.merge(id: item.id))
|
13
|
+
@label = helpers.render_in_context self, item.label
|
14
|
+
@url = helpers.render_in_context self, item.url
|
15
|
+
@priority = item.priority
|
16
|
+
@submenu = nil
|
17
|
+
|
18
|
+
add_class "current" if item.current? assigns[:current_tab]
|
19
|
+
|
20
|
+
if url
|
21
|
+
text_node link_to label, url, item.html_options
|
22
|
+
else
|
23
|
+
span label, item.html_options
|
24
|
+
end
|
25
|
+
|
26
|
+
if item.items.any?
|
27
|
+
add_class "has_nested"
|
28
|
+
@submenu = menu(item)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def tag_name
|
33
|
+
'li'
|
34
|
+
end
|
35
|
+
|
36
|
+
# Sorts by priority first, then alphabetically by label if needed.
|
37
|
+
def <=>(other)
|
38
|
+
result = priority <=> other.priority
|
39
|
+
result == 0 ? label <=> other.label : result
|
40
|
+
end
|
41
|
+
|
42
|
+
def visible?
|
43
|
+
url.nil? || real_url? || @submenu && @submenu.children.any?
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_s
|
47
|
+
visible? ? super : ''
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
# URL is not nil, empty, or '#'
|
53
|
+
def real_url?
|
54
|
+
url && url.present? && url != '#'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'active_admin/helpers/collection'
|
2
|
+
require 'active_admin/view_helpers/download_format_links_helper'
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
module Views
|
@@ -70,19 +71,14 @@ module ActiveAdmin
|
|
70
71
|
build_pagination
|
71
72
|
div(page_entries_info(options).html_safe, class: "pagination_information")
|
72
73
|
|
73
|
-
|
74
|
-
|
75
|
-
if download_links.is_a?(Array) && !download_links.empty?
|
76
|
-
build_download_format_links download_links
|
77
|
-
else
|
78
|
-
build_download_format_links unless download_links == false
|
79
|
-
end
|
74
|
+
formats = build_download_formats @download_links
|
75
|
+
build_download_format_links formats if formats.any?
|
80
76
|
end
|
81
77
|
end
|
82
78
|
|
83
79
|
def build_per_page_select
|
84
80
|
div class: "pagination_per_page" do
|
85
|
-
text_node "
|
81
|
+
text_node I18n.t("active_admin.pagination.per_page")
|
86
82
|
select do
|
87
83
|
@per_page.each do |per_page|
|
88
84
|
option(
|
@@ -96,17 +92,17 @@ module ActiveAdmin
|
|
96
92
|
end
|
97
93
|
|
98
94
|
def build_pagination
|
99
|
-
options = {}
|
95
|
+
options = { theme: @display_total ? 'active_admin' : 'active_admin_countless' }
|
100
96
|
options[:params] = @params if @params
|
101
97
|
options[:param_name] = @param_name if @param_name
|
102
98
|
|
103
|
-
if !@display_total
|
99
|
+
if !@display_total
|
104
100
|
# The #paginate method in kaminari will query the resource with a
|
105
101
|
# count(*) to determine how many pages there should be unless
|
106
102
|
# you pass in the :total_pages option. We issue a query to determine
|
107
103
|
# if there is another page or not, but the limit/offset make this
|
108
104
|
# query fast.
|
109
|
-
offset = collection.offset(collection.current_page *
|
105
|
+
offset = collection.offset(collection.current_page * collection.limit_value).limit(1).count
|
110
106
|
options[:total_pages] = collection.current_page + offset
|
111
107
|
options[:right] = 0
|
112
108
|
end
|