yousty-activeadmin 1.0.4.pre → 1.0.5.pre
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 +4 -4
- data/CHANGELOG.md +261 -211
- data/CONTRIBUTING.md +73 -39
- data/Gemfile +38 -20
- data/Guardfile +1 -0
- data/LICENSE +1 -1
- data/README.md +48 -24
- data/Rakefile +12 -4
- data/activeadmin.gemspec +21 -26
- data/app/assets/javascripts/active_admin/application.js.coffee +34 -5
- data/app/assets/javascripts/active_admin/base.js.coffee +11 -2
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +3 -4
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +51 -55
- data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
- data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +29 -58
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +2 -3
- data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
- data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +51 -15
- data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
- data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
- data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
- data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -12
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +3 -1
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
- data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
- data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +0 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
- data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +1 -0
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
- data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
- data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_gradients.css.scss → _gradients.scss} +1 -1
- data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
- data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_rounded.css.scss → _rounded.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +7 -1
- data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -0
- data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
- data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +10 -7
- data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
- 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 +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
- data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
- data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +8 -8
- data/app/views/active_admin/devise/shared/_links.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
- data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
- data/config/locales/ar.yml +120 -0
- data/config/locales/bg.yml +26 -6
- data/config/locales/bs.yml +122 -0
- data/config/locales/ca.yml +10 -1
- data/config/locales/cs.yml +7 -2
- data/config/locales/da.yml +7 -3
- data/config/locales/de-CH.yml +14 -31
- data/config/locales/de.yml +33 -33
- data/config/locales/el.yml +127 -0
- data/config/locales/en-GB.yml +11 -4
- data/config/locales/en.yml +21 -4
- data/config/locales/{es_MX.yml → es-MX.yml} +14 -24
- data/config/locales/es.yml +32 -25
- data/config/locales/fa.yml +120 -0
- data/config/locales/fi.yml +9 -5
- data/config/locales/fr.yml +28 -12
- data/config/locales/he.yml +7 -3
- data/config/locales/hr.yml +42 -11
- data/config/locales/hu.yml +10 -3
- data/config/locales/it.yml +31 -3
- data/config/locales/ja.yml +17 -4
- data/config/locales/ko.yml +7 -1
- data/config/locales/lt.yml +42 -11
- data/config/locales/lv.yml +7 -3
- data/config/locales/{no-NB.yml → nb.yml} +46 -15
- data/config/locales/nl.yml +36 -5
- data/config/locales/pl.yml +13 -8
- data/config/locales/pt-BR.yml +36 -5
- data/config/locales/pt-PT.yml +8 -4
- data/config/locales/ro.yml +7 -3
- data/config/locales/ru.yml +26 -5
- data/config/locales/sv-SE.yml +9 -5
- data/config/locales/tr.yml +10 -3
- data/config/locales/uk.yml +36 -12
- data/config/locales/vi.yml +7 -3
- data/config/locales/zh-CN.yml +26 -10
- data/config/locales/zh-TW.yml +19 -13
- data/docs/0-installation.md +14 -6
- data/docs/1-general-configuration.md +8 -5
- data/docs/10-custom-pages.md +68 -70
- data/docs/11-decorators.md +48 -59
- data/docs/12-arbre-components.md +79 -73
- data/docs/13-authorization-adapter.md +128 -107
- data/docs/14-gotchas.md +90 -0
- data/docs/2-resource-customization.md +82 -15
- data/docs/3-index-pages.md +71 -12
- data/docs/3-index-pages/custom-index.md +31 -0
- data/docs/3-index-pages/index-as-table.md +45 -2
- data/docs/4-csv-format.md +1 -1
- data/docs/5-forms.md +78 -29
- data/docs/6-show-pages.md +31 -3
- data/docs/7-sidebars.md +46 -25
- data/docs/8-custom-actions.md +98 -77
- data/docs/9-batch-actions.md +211 -133
- data/docs/README.md +24 -0
- data/features/action_item.feature +3 -3
- data/features/authorization_pundit.feature +37 -0
- data/features/belongs_to.feature +3 -0
- data/features/breadcrumb.feature +48 -0
- data/features/comments/commenting.feature +44 -13
- data/features/development_reloading.feature +3 -4
- data/features/edit_page.feature +9 -19
- data/features/favicon.feature +3 -3
- data/features/i18n.feature +5 -0
- data/features/index/batch_actions.feature +41 -0
- data/features/index/filters.feature +23 -0
- data/features/index/format_as_csv.feature +90 -4
- data/features/index/index_as_blog.feature +4 -4
- data/features/index/index_as_table.feature +102 -6
- data/features/index/index_blank_slate.feature +22 -0
- data/features/index/index_scope_to.feature +16 -16
- data/features/index/page_title.feature +11 -0
- data/features/index/pagination.feature +1 -1
- data/features/index/switch_index_view.feature +14 -14
- data/features/new_page.feature +10 -20
- data/features/registering_pages.feature +1 -1
- data/features/renamed_resource.feature +32 -0
- data/features/show/page_title.feature +11 -0
- data/features/show/tabs.feature +27 -0
- data/features/sidebar_sections.feature +12 -0
- data/features/specifying_actions.feature +3 -3
- data/features/step_definitions/action_item_steps.rb +2 -2
- data/features/step_definitions/action_link_steps.rb +14 -1
- data/features/step_definitions/additional_web_steps.rb +17 -18
- data/features/step_definitions/asset_steps.rb +3 -3
- data/features/step_definitions/attribute_steps.rb +8 -3
- data/features/step_definitions/batch_action_steps.rb +26 -9
- data/features/step_definitions/blog_steps.rb +3 -0
- data/features/step_definitions/breadcrumb_steps.rb +1 -1
- data/features/step_definitions/comment_steps.rb +1 -1
- data/features/step_definitions/configuration_steps.rb +1 -1
- data/features/step_definitions/dashboard_steps.rb +2 -2
- data/features/step_definitions/factory_steps.rb +6 -6
- data/features/step_definitions/filter_steps.rb +25 -3
- data/features/step_definitions/flash_steps.rb +3 -3
- data/features/step_definitions/format_steps.rb +17 -10
- data/features/step_definitions/index_scope_steps.rb +5 -5
- data/features/step_definitions/layout_steps.rb +1 -1
- data/features/step_definitions/member_link_steps.rb +2 -2
- data/features/step_definitions/menu_steps.rb +3 -3
- data/features/step_definitions/pagination_steps.rb +2 -3
- data/features/step_definitions/sidebar_steps.rb +8 -3
- data/features/step_definitions/site_title_steps.rb +6 -4
- data/features/step_definitions/symbol_leak_steps.rb +1 -1
- data/features/step_definitions/tab_steps.rb +5 -0
- data/features/step_definitions/table_steps.rb +4 -4
- data/features/step_definitions/user_steps.rb +15 -9
- data/features/step_definitions/web_steps.rb +10 -11
- data/features/sti_resource.feature +2 -10
- data/features/strong_parameters.feature +73 -0
- data/features/support/env.rb +35 -2
- data/features/support/paths.rb +2 -2
- data/features/support/selectors.rb +1 -1
- data/features/users/resetting_password.feature +7 -7
- data/lib/active_admin.rb +18 -13
- data/lib/active_admin/abstract_view_factory.rb +7 -17
- data/lib/active_admin/application.rb +50 -25
- data/lib/active_admin/asset_registration.rb +2 -2
- data/lib/active_admin/authorization_adapter.rb +2 -2
- data/lib/active_admin/base_controller.rb +2 -3
- data/lib/active_admin/base_controller/authorization.rb +13 -31
- data/lib/active_admin/batch_actions.rb +1 -1
- data/lib/active_admin/batch_actions/controller.rb +13 -7
- data/lib/active_admin/batch_actions/resource_extension.rb +43 -17
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
- data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
- data/lib/active_admin/callbacks.rb +25 -24
- data/lib/active_admin/cancan_adapter.rb +7 -11
- data/lib/active_admin/csv_builder.rb +92 -15
- data/lib/active_admin/dependency.rb +93 -0
- data/lib/active_admin/deprecation.rb +6 -7
- data/lib/active_admin/devise.rb +26 -14
- data/lib/active_admin/dsl.rb +18 -11
- data/lib/active_admin/engine.rb +7 -2
- data/lib/active_admin/error.rb +59 -0
- data/lib/active_admin/filters/dsl.rb +2 -2
- data/lib/active_admin/filters/forms.rb +19 -30
- data/lib/active_admin/filters/formtastic_addons.rb +20 -11
- data/lib/active_admin/filters/resource_extension.rb +16 -9
- data/lib/active_admin/form_builder.rb +94 -105
- data/lib/active_admin/helpers/collection.rb +7 -13
- data/lib/active_admin/helpers/i18n.rb +7 -0
- data/lib/active_admin/helpers/optional_display.rb +5 -5
- data/lib/active_admin/helpers/scope_chain.rb +1 -1
- data/lib/active_admin/helpers/settings.rb +16 -9
- data/lib/active_admin/iconic.rb +17 -15
- data/lib/active_admin/iconic/icons.rb +136 -136
- data/lib/active_admin/inputs.rb +11 -7
- data/lib/active_admin/inputs/datepicker_input.rb +1 -1
- data/lib/active_admin/inputs/filters/base.rb +42 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
- data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
- data/lib/active_admin/inputs/filters/select_input.rb +54 -0
- data/lib/active_admin/inputs/filters/string_input.rb +26 -0
- data/lib/active_admin/menu.rb +3 -3
- data/lib/active_admin/menu_collection.rb +1 -4
- data/lib/active_admin/namespace.rb +52 -29
- data/lib/active_admin/order_clause.rb +26 -0
- data/lib/active_admin/orm/active_record.rb +2 -0
- data/lib/active_admin/orm/active_record/comments.rb +48 -51
- data/lib/active_admin/orm/active_record/comments/comment.rb +16 -10
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -1
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -1
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +15 -13
- data/lib/active_admin/page.rb +5 -1
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/page_presenter.rb +2 -2
- data/lib/active_admin/pundit_adapter.rb +68 -0
- data/lib/active_admin/resource.rb +12 -3
- data/lib/active_admin/resource/action_items.rb +15 -8
- data/lib/active_admin/resource/belongs_to.rb +7 -3
- data/lib/active_admin/resource/controllers.rb +1 -0
- data/lib/active_admin/resource/includes.rb +12 -0
- data/lib/active_admin/resource/menu.rb +5 -5
- data/lib/active_admin/resource/naming.rb +25 -47
- data/lib/active_admin/resource/page_presenters.rb +1 -1
- data/lib/active_admin/resource/routes.rb +26 -10
- data/lib/active_admin/resource/scope_to.rb +7 -7
- data/lib/active_admin/resource/sidebars.rb +1 -0
- data/lib/active_admin/resource_collection.rb +44 -16
- data/lib/active_admin/resource_controller.rb +6 -5
- data/lib/active_admin/resource_controller/data_access.rb +87 -82
- data/lib/active_admin/resource_controller/decorators.rb +91 -9
- data/lib/active_admin/resource_controller/streaming.rb +37 -0
- data/lib/active_admin/resource_dsl.rb +54 -10
- data/lib/active_admin/router.rb +7 -7
- data/lib/active_admin/scope.rb +6 -6
- data/lib/active_admin/sidebar_section.rb +10 -2
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +17 -16
- data/lib/active_admin/view_helpers.rb +0 -1
- data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +13 -6
- data/lib/active_admin/view_helpers/display_helper.rb +30 -17
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -24
- data/lib/active_admin/view_helpers/fields_for.rb +2 -2
- data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
- data/lib/active_admin/view_helpers/form_helper.rb +5 -9
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
- data/lib/active_admin/views/action_items.rb +2 -2
- data/lib/active_admin/views/components/action_list_popover.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +123 -0
- data/lib/active_admin/views/components/attributes_table.rb +22 -13
- data/lib/active_admin/views/components/blank_slate.rb +1 -1
- data/lib/active_admin/views/components/columns.rb +13 -7
- data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
- data/lib/active_admin/views/components/index_list.rb +7 -7
- data/lib/active_admin/views/components/paginated_collection.rb +33 -17
- data/lib/active_admin/views/components/panel.rb +8 -2
- data/lib/active_admin/views/components/popover.rb +1 -1
- data/lib/active_admin/views/components/scopes.rb +1 -1
- data/lib/active_admin/views/components/sidebar_section.rb +3 -2
- data/lib/active_admin/views/components/site_title.rb +2 -2
- data/lib/active_admin/views/components/status_tag.rb +34 -11
- data/lib/active_admin/views/components/table_for.rb +67 -22
- data/lib/active_admin/views/components/tabs.rb +28 -0
- data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
- data/lib/active_admin/views/footer.rb +3 -3
- data/lib/active_admin/views/header.rb +3 -3
- data/lib/active_admin/views/index_as_blog.rb +6 -6
- data/lib/active_admin/views/index_as_grid.rb +2 -2
- data/lib/active_admin/views/index_as_table.rb +127 -40
- data/lib/active_admin/views/pages/base.rb +22 -18
- data/lib/active_admin/views/pages/form.rb +16 -6
- data/lib/active_admin/views/pages/index.rb +36 -20
- data/lib/active_admin/views/pages/layout.rb +1 -1
- data/lib/active_admin/views/pages/show.rb +4 -4
- data/lib/active_admin/views/tabbed_navigation.rb +7 -3
- data/lib/active_admin/views/title_bar.rb +10 -8
- data/lib/generators/active_admin/assets/assets_generator.rb +1 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +20 -28
- data/lib/generators/active_admin/install/install_generator.rb +8 -9
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -22
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -9
- data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
- data/lib/generators/active_admin/page/USAGE +8 -0
- data/lib/generators/active_admin/page/page_generator.rb +12 -0
- data/lib/generators/active_admin/page/templates/page.rb +5 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +2 -4
- data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
- data/lib/ransack_ext.rb +4 -4
- data/script/local +2 -2
- data/script/travis_cache +107 -0
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
- data/spec/javascripts/fixtures/flashes.html +2 -0
- data/spec/rails_helper.rb +154 -0
- data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
- data/spec/{integration → requests}/javascript_spec.rb +5 -5
- data/spec/requests/memory_spec.rb +23 -0
- data/spec/requests/stylesheets_spec.rb +18 -0
- data/spec/spec_helper.rb +12 -170
- data/spec/support/detect_rails_version.rb +31 -39
- data/spec/support/rails_template.rb +61 -34
- data/spec/support/rails_template_with_data.rb +14 -14
- data/spec/support/templates/admin/stores.rb +3 -5
- data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
- data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
- data/spec/support/templates/policies/admin_user_policy.rb +11 -0
- data/spec/support/templates/policies/application_policy.rb +45 -0
- data/spec/support/templates/policies/category_policy.rb +7 -0
- data/spec/support/templates/policies/post_policy.rb +15 -0
- data/spec/support/templates/policies/store_policy.rb +11 -0
- data/spec/support/templates/policies/user_policy.rb +11 -0
- data/spec/support/templates/post_decorator.rb +4 -46
- data/spec/unit/abstract_view_factory_spec.rb +11 -11
- data/spec/unit/action_builder_spec.rb +24 -18
- data/spec/unit/active_admin_spec.rb +2 -2
- data/spec/unit/application_spec.rb +30 -31
- data/spec/unit/asset_registration_spec.rb +11 -11
- data/spec/unit/authorization/authorization_adapter_spec.rb +7 -7
- data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
- data/spec/unit/authorization/index_overriding_spec.rb +22 -0
- data/spec/unit/auto_link_spec.rb +42 -5
- data/spec/unit/batch_actions/resource_spec.rb +15 -14
- data/spec/unit/batch_actions/settings_spec.rb +18 -18
- data/spec/unit/belongs_to_spec.rb +26 -17
- data/spec/unit/cancan_adapter_spec.rb +4 -4
- data/spec/unit/comments_spec.rb +99 -39
- data/spec/unit/component_spec.rb +3 -3
- data/spec/unit/config_shared_examples.rb +8 -8
- data/spec/unit/controller_filters_spec.rb +26 -14
- data/spec/unit/csv_builder_spec.rb +152 -24
- data/spec/unit/dependency_spec.rb +135 -0
- data/spec/unit/devise_spec.rb +17 -37
- data/spec/unit/dsl_spec.rb +70 -9
- data/spec/unit/event_spec.rb +9 -9
- data/spec/unit/filters/filter_form_builder_spec.rb +167 -157
- data/spec/unit/filters/resource_spec.rb +35 -33
- data/spec/unit/form_builder_spec.rb +383 -145
- data/spec/unit/generators/install_spec.rb +5 -5
- data/spec/unit/helpers/collection_spec.rb +18 -18
- data/spec/unit/helpers/scope_chain_spec.rb +5 -5
- data/spec/unit/helpers/settings_spec.rb +4 -4
- data/spec/unit/i18n_spec.rb +12 -0
- data/spec/unit/menu_collection_spec.rb +14 -14
- data/spec/unit/menu_item_spec.rb +42 -42
- data/spec/unit/menu_spec.rb +20 -20
- data/spec/unit/namespace/authorization_spec.rb +5 -5
- data/spec/unit/namespace/register_page_spec.rb +9 -9
- data/spec/unit/namespace/register_resource_spec.rb +26 -28
- data/spec/unit/namespace_spec.rb +20 -20
- data/spec/unit/order_clause_spec.rb +81 -0
- data/spec/unit/page_controller_spec.rb +1 -1
- data/spec/unit/page_spec.rb +18 -12
- data/spec/unit/pretty_format_spec.rb +42 -14
- data/spec/unit/pundit_adapter_spec.rb +98 -0
- data/spec/unit/resource/action_items_spec.rb +13 -10
- data/spec/unit/resource/includes_spec.rb +21 -0
- data/spec/unit/resource/menu_spec.rb +1 -1
- data/spec/unit/resource/naming_spec.rb +23 -23
- data/spec/unit/resource/page_presenters_spec.rb +8 -8
- data/spec/unit/resource/pagination_spec.rb +6 -6
- data/spec/unit/resource/routes_spec.rb +10 -10
- data/spec/unit/resource/scopes_spec.rb +14 -7
- data/spec/unit/resource/sidebars_spec.rb +6 -6
- data/spec/unit/resource_collection_spec.rb +66 -68
- data/spec/unit/resource_controller/data_access_spec.rb +39 -21
- data/spec/unit/resource_controller/decorators_spec.rb +83 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
- data/spec/unit/resource_controller_spec.rb +66 -62
- data/spec/unit/resource_registration_spec.rb +12 -12
- data/spec/unit/resource_spec.rb +75 -40
- data/spec/unit/routing_spec.rb +39 -31
- data/spec/unit/scope_spec.rb +112 -30
- data/spec/unit/settings_spec.rb +51 -21
- data/spec/unit/view_factory_spec.rb +2 -2
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +137 -69
- data/spec/unit/view_helpers/display_name_spec.rb +49 -21
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
- data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
- data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +9 -22
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +59 -21
- data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
- data/spec/unit/views/components/attributes_table_spec.rb +94 -52
- data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
- data/spec/unit/views/components/blank_slate_spec.rb +14 -4
- data/spec/unit/views/components/columns_spec.rb +52 -22
- data/spec/unit/views/components/index_list_spec.rb +11 -8
- data/spec/unit/views/components/index_table_for_spec.rb +46 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +68 -59
- data/spec/unit/views/components/panel_spec.rb +32 -21
- data/spec/unit/views/components/popover_spec.rb +7 -7
- data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
- data/spec/unit/views/components/site_title_spec.rb +8 -8
- data/spec/unit/views/components/status_tag_spec.rb +178 -38
- data/spec/unit/views/components/table_for_spec.rb +227 -44
- data/spec/unit/views/components/tabs_spec.rb +39 -0
- data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
- data/spec/unit/views/pages/form_spec.rb +17 -10
- data/spec/unit/views/pages/index_spec.rb +60 -0
- data/spec/unit/views/pages/layout_spec.rb +17 -21
- data/spec/unit/views/pages/show_spec.rb +16 -3
- data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
- data/tasks/docs.rake +1 -1
- data/tasks/parallel_tests.rake +8 -2
- data/tasks/test.rake +8 -4
- data/tasks/yard.rake +7 -5
- metadata +180 -101
- data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
- data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
- data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
- data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/javascripts/active_admin/components/application.js.coffee +0 -23
- data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +0 -26
- data/app/assets/javascripts/active_admin/components/has_many.js.coffee +0 -41
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -39
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
- data/app/views/active_admin/dashboard/index.html.arb +0 -1
- data/app/views/active_admin/resource/index.csv.erb +0 -17
- data/docs/3-index-pages/create-an-index.md +0 -29
- data/lib/active_admin/inputs/filter_base.rb +0 -33
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
- data/lib/active_admin/inputs/filter_boolean_input.rb +0 -32
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -51
- data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
- data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
- data/lib/active_admin/inputs/filter_select_input.rb +0 -61
- data/lib/active_admin/inputs/filter_string_input.rb +0 -24
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
- data/spec/integration/memory_spec.rb +0 -29
- data/spec/integration/stylesheets_spec.rb +0 -41
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
- data/spec/javascripts/support/jquery.min.js +0 -4
- data/spec/spec_helper_without_rails.rb +0 -16
- data/tasks/js.rake +0 -32
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Inputs
|
|
3
|
+
module Filters
|
|
4
|
+
class CheckBoxesInput < ::Formtastic::Inputs::CheckBoxesInput
|
|
5
|
+
include Base
|
|
6
|
+
|
|
7
|
+
def input_name
|
|
8
|
+
"#{object_name}[#{searchable_method_name}_in][]"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def selected_values
|
|
12
|
+
@object.public_send("#{searchable_method_name}_in") || []
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def searchable_method_name
|
|
16
|
+
if searchable_has_many_through?
|
|
17
|
+
"#{reflection.through_reflection.name}_#{reflection.foreign_key}"
|
|
18
|
+
else
|
|
19
|
+
association_primary_key || method
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Add whitespace before label
|
|
24
|
+
def choice_label(choice)
|
|
25
|
+
' ' + super
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Don't wrap in UL tag
|
|
29
|
+
def choices_group_wrapping(&block)
|
|
30
|
+
template.capture(&block)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Don't wrap in LI tag
|
|
34
|
+
def choice_wrapping(html_options, &block)
|
|
35
|
+
template.capture(&block)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Don't render hidden fields
|
|
39
|
+
def hidden_field_for_all
|
|
40
|
+
""
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Don't render hidden fields
|
|
44
|
+
def hidden_fields?
|
|
45
|
+
false
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Inputs
|
|
3
|
+
module Filters
|
|
4
|
+
class DateRangeInput < ::Formtastic::Inputs::StringInput
|
|
5
|
+
include Base
|
|
6
|
+
|
|
7
|
+
def to_html
|
|
8
|
+
input_wrapping do
|
|
9
|
+
[ label_html,
|
|
10
|
+
builder.text_field(gt_input_name, input_html_options(gt_input_name)),
|
|
11
|
+
template.content_tag(:span, "-", class: "seperator"),
|
|
12
|
+
builder.text_field(lt_input_name, input_html_options(lt_input_name)),
|
|
13
|
+
].join("\n").html_safe
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def gt_input_name
|
|
18
|
+
"#{method}_gteq"
|
|
19
|
+
end
|
|
20
|
+
alias :input_name :gt_input_name
|
|
21
|
+
|
|
22
|
+
def lt_input_name
|
|
23
|
+
"#{method}_lteq"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def input_html_options(input_name = gt_input_name)
|
|
27
|
+
current_value = @object.public_send input_name
|
|
28
|
+
{ size: 12,
|
|
29
|
+
class: "datepicker",
|
|
30
|
+
max: 10,
|
|
31
|
+
value: current_value.respond_to?(:strftime) ? current_value.strftime("%Y-%m-%d") : "" }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Inputs
|
|
3
|
+
module Filters
|
|
4
|
+
class SelectInput < ::Formtastic::Inputs::SelectInput
|
|
5
|
+
include Base
|
|
6
|
+
|
|
7
|
+
def input_name
|
|
8
|
+
return method if seems_searchable?
|
|
9
|
+
|
|
10
|
+
searchable_method_name.concat multiple? ? '_in' : '_eq'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def searchable_method_name
|
|
14
|
+
if searchable_has_many_through?
|
|
15
|
+
"#{reflection.through_reflection.name}_#{reflection.foreign_key}"
|
|
16
|
+
else
|
|
17
|
+
name = method.to_s
|
|
18
|
+
name.concat '_id' if reflection
|
|
19
|
+
name
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Provide the AA translation to the blank input field.
|
|
24
|
+
def include_blank
|
|
25
|
+
I18n.t 'active_admin.any' if super
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def input_html_options_name
|
|
29
|
+
"#{object_name}[#{input_name}]" # was "#{object_name}[#{association_primary_key}]"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Would normally return true for has_many and HABTM, which would subsequently
|
|
33
|
+
# cause the select field to be multi-select instead of a dropdown.
|
|
34
|
+
def multiple_by_association?
|
|
35
|
+
false
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Provides an efficient default lookup query if the attribute is a DB column.
|
|
39
|
+
def collection
|
|
40
|
+
if !options[:collection] && column
|
|
41
|
+
pluck_column
|
|
42
|
+
else
|
|
43
|
+
super
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def pluck_column
|
|
48
|
+
klass.reorder("#{method} asc").uniq.pluck method
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Inputs
|
|
3
|
+
module Filters
|
|
4
|
+
class StringInput < ::Formtastic::Inputs::StringInput
|
|
5
|
+
include Base
|
|
6
|
+
include Base::SearchMethodSelect
|
|
7
|
+
|
|
8
|
+
filter :contains, :equals, :starts_with, :ends_with
|
|
9
|
+
|
|
10
|
+
# If the filter method includes a search condition, build a normal string search field.
|
|
11
|
+
# Else, build a search field with a companion dropdown to choose a search condition from.
|
|
12
|
+
def to_html
|
|
13
|
+
if seems_searchable?
|
|
14
|
+
input_wrapping do
|
|
15
|
+
label_html <<
|
|
16
|
+
builder.text_field(method, input_html_options)
|
|
17
|
+
end
|
|
18
|
+
else
|
|
19
|
+
super # SearchMethodSelect#to_html
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/active_admin/menu.rb
CHANGED
|
@@ -47,9 +47,9 @@ module ActiveAdmin
|
|
|
47
47
|
#
|
|
48
48
|
def add(options)
|
|
49
49
|
item = if parent = options.delete(:parent)
|
|
50
|
-
(self[parent] || add(:
|
|
50
|
+
(self[parent] || add(label: parent)).add options
|
|
51
51
|
else
|
|
52
|
-
_add options.merge :
|
|
52
|
+
_add options.merge parent: self
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
yield(item) if block_given?
|
|
@@ -92,7 +92,7 @@ module ActiveAdmin
|
|
|
92
92
|
def normalize_id(id)
|
|
93
93
|
case id
|
|
94
94
|
when String, Symbol, ActiveModel::Name
|
|
95
|
-
id.to_s.downcase.
|
|
95
|
+
id.to_s.downcase.tr ' ', '_'
|
|
96
96
|
when ActiveAdmin::Resource::Name
|
|
97
97
|
id.param_key
|
|
98
98
|
else
|
|
@@ -5,9 +5,6 @@ module ActiveAdmin
|
|
|
5
5
|
# A MenuCollection stores multiple menus for any given namespace. Namespaces delegate
|
|
6
6
|
# the addition of menu items to this class.
|
|
7
7
|
class MenuCollection
|
|
8
|
-
|
|
9
|
-
NoMenuError = Class.new(KeyError)
|
|
10
|
-
|
|
11
8
|
def initialize
|
|
12
9
|
@menus = {}
|
|
13
10
|
@build_callbacks = []
|
|
@@ -34,7 +31,7 @@ module ActiveAdmin
|
|
|
34
31
|
build_menus!
|
|
35
32
|
|
|
36
33
|
@menus[menu_name] or
|
|
37
|
-
raise NoMenuError, "No menu by the name of #{menu_name.inspect} in
|
|
34
|
+
raise NoMenuError, "No menu by the name of #{menu_name.inspect} in available menus: #{@menus.keys.join(", ")}"
|
|
38
35
|
end
|
|
39
36
|
|
|
40
37
|
# Add callbacks that will be run when the menu is going to be built. This
|
|
@@ -11,7 +11,7 @@ module ActiveAdmin
|
|
|
11
11
|
#
|
|
12
12
|
# For example:
|
|
13
13
|
#
|
|
14
|
-
# ActiveAdmin.register Post, :
|
|
14
|
+
# ActiveAdmin.register Post, namespace: :admin
|
|
15
15
|
#
|
|
16
16
|
# Will register the Post model into the "admin" namespace. This will namespace the
|
|
17
17
|
# urls for the resource to "/admin/posts" and will set the controller to
|
|
@@ -19,7 +19,7 @@ module ActiveAdmin
|
|
|
19
19
|
#
|
|
20
20
|
# You can also register to the "root" namespace, which is to say no namespace at all.
|
|
21
21
|
#
|
|
22
|
-
# ActiveAdmin.register Post, :
|
|
22
|
+
# ActiveAdmin.register Post, namespace: false
|
|
23
23
|
#
|
|
24
24
|
# This will register the resource to an instantiated namespace called :root. The
|
|
25
25
|
# resource will be accessible from "/posts" and the controller will be PostsController.
|
|
@@ -45,7 +45,7 @@ module ActiveAdmin
|
|
|
45
45
|
|
|
46
46
|
# Register the resource
|
|
47
47
|
register_resource_controller(config)
|
|
48
|
-
parse_registration_block(config, &block) if block_given?
|
|
48
|
+
parse_registration_block(config, resource_class, &block) if block_given?
|
|
49
49
|
reset_menu!
|
|
50
50
|
|
|
51
51
|
# Dispatch a registration event
|
|
@@ -96,7 +96,7 @@ module ActiveAdmin
|
|
|
96
96
|
# Override from ActiveAdmin::Settings to inherit default attributes
|
|
97
97
|
# from the application
|
|
98
98
|
def read_default_setting(name)
|
|
99
|
-
application.
|
|
99
|
+
application.public_send name
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
def fetch_menu(name)
|
|
@@ -112,7 +112,7 @@ module ActiveAdmin
|
|
|
112
112
|
# @param [Symbol] name The name of the menu. Default: :default
|
|
113
113
|
# @param [Proc] block The block to be ran when the menu is built
|
|
114
114
|
#
|
|
115
|
-
# @
|
|
115
|
+
# @return [void]
|
|
116
116
|
def build_menu(name = DEFAULT_MENU, &block)
|
|
117
117
|
@menus.before_build do |menus|
|
|
118
118
|
menus.menu name do |menu|
|
|
@@ -121,30 +121,35 @@ module ActiveAdmin
|
|
|
121
121
|
end
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
-
#
|
|
124
|
+
# The default logout menu item
|
|
125
125
|
#
|
|
126
126
|
# @param [ActiveAdmin::MenuItem] menu The menu to add the logout link to
|
|
127
|
-
# @param [Fixnum] priority
|
|
127
|
+
# @param [Fixnum] priority The numeric priority for the order in which it appears
|
|
128
128
|
# @param [Hash] html_options An options hash to pass along to link_to
|
|
129
129
|
#
|
|
130
|
-
|
|
131
|
-
def add_logout_button_to_menu(menu, priority=100, html_options={})
|
|
130
|
+
def add_logout_button_to_menu(menu, priority = 20, html_options = {})
|
|
132
131
|
if logout_link_path
|
|
133
|
-
|
|
134
|
-
menu.add :
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
:url => proc{ render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
|
|
139
|
-
:if => proc{ current_active_admin_user? }
|
|
132
|
+
html_options = html_options.reverse_merge(method: logout_link_method || :get)
|
|
133
|
+
menu.add id: 'logout', priority: priority, html_options: html_options,
|
|
134
|
+
label: ->{ I18n.t 'active_admin.logout' },
|
|
135
|
+
url: ->{ render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
|
|
136
|
+
if: :current_active_admin_user?
|
|
140
137
|
end
|
|
141
138
|
end
|
|
142
139
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
140
|
+
# The default user session menu item
|
|
141
|
+
#
|
|
142
|
+
# @param [ActiveAdmin::MenuItem] menu The menu to add the logout link to
|
|
143
|
+
# @param [Fixnum] priority The numeric priority for the order in which it appears
|
|
144
|
+
# @param [Hash] html_options An options hash to pass along to link_to
|
|
145
|
+
#
|
|
146
|
+
def add_current_user_to_menu(menu, priority = 10, html_options = {})
|
|
147
|
+
if current_user_method
|
|
148
|
+
menu.add id: 'current_user', priority: priority, html_options: html_options,
|
|
149
|
+
label: -> { display_name current_active_admin_user },
|
|
150
|
+
url: -> { auto_url_for(current_active_admin_user) },
|
|
151
|
+
if: :current_active_admin_user?
|
|
152
|
+
end
|
|
148
153
|
end
|
|
149
154
|
|
|
150
155
|
protected
|
|
@@ -170,8 +175,7 @@ module ActiveAdmin
|
|
|
170
175
|
end
|
|
171
176
|
end
|
|
172
177
|
|
|
173
|
-
# Either returns an existing Resource instance or builds a new
|
|
174
|
-
# one for the resource and options
|
|
178
|
+
# Either returns an existing Resource instance or builds a new one.
|
|
175
179
|
def find_or_build_resource(resource_class, options)
|
|
176
180
|
resources.add Resource.new(self, resource_class, options)
|
|
177
181
|
end
|
|
@@ -180,6 +184,7 @@ module ActiveAdmin
|
|
|
180
184
|
resources.add Page.new(self, name, options)
|
|
181
185
|
end
|
|
182
186
|
|
|
187
|
+
# TODO: replace `eval` with `Class.new`
|
|
183
188
|
def register_page_controller(config)
|
|
184
189
|
eval "class ::#{config.controller_name} < ActiveAdmin::PageController; end"
|
|
185
190
|
config.controller.active_admin_config = config
|
|
@@ -188,9 +193,8 @@ module ActiveAdmin
|
|
|
188
193
|
def unload_resources!
|
|
189
194
|
resources.each do |resource|
|
|
190
195
|
parent = (module_name || 'Object').constantize
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
parent.send(:remove_const, const_name) if parent.const_defined?(const_name)
|
|
196
|
+
name = resource.controller_name.split('::').last
|
|
197
|
+
parent.send(:remove_const, name) if parent.const_defined? name
|
|
194
198
|
|
|
195
199
|
# Remove circular references
|
|
196
200
|
resource.controller.active_admin_config = nil
|
|
@@ -203,16 +207,19 @@ module ActiveAdmin
|
|
|
203
207
|
|
|
204
208
|
# Creates a ruby module to namespace all the classes in if required
|
|
205
209
|
def register_module
|
|
206
|
-
|
|
210
|
+
unless Object.const_defined? module_name
|
|
211
|
+
Object.const_set module_name, Module.new
|
|
212
|
+
end
|
|
207
213
|
end
|
|
208
214
|
|
|
215
|
+
# TODO replace `eval` with `Class.new`
|
|
209
216
|
def register_resource_controller(config)
|
|
210
217
|
eval "class ::#{config.controller_name} < ActiveAdmin::ResourceController; end"
|
|
211
218
|
config.controller.active_admin_config = config
|
|
212
219
|
end
|
|
213
220
|
|
|
214
|
-
def parse_registration_block(config, &block)
|
|
215
|
-
config.dsl = ResourceDSL.new(config)
|
|
221
|
+
def parse_registration_block(config, resource_class, &block)
|
|
222
|
+
config.dsl = ResourceDSL.new(config, resource_class)
|
|
216
223
|
config.dsl.run_registration_block(&block)
|
|
217
224
|
end
|
|
218
225
|
|
|
@@ -220,5 +227,21 @@ module ActiveAdmin
|
|
|
220
227
|
PageDSL.new(config).run_registration_block(&block)
|
|
221
228
|
end
|
|
222
229
|
|
|
230
|
+
class Store
|
|
231
|
+
include Enumerable
|
|
232
|
+
delegate :[], :[]=, :empty?, to: :@namespaces
|
|
233
|
+
|
|
234
|
+
def initialize
|
|
235
|
+
@namespaces = {}
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def each(&block)
|
|
239
|
+
@namespaces.values.each(&block)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def names
|
|
243
|
+
@namespaces.keys
|
|
244
|
+
end
|
|
245
|
+
end
|
|
223
246
|
end
|
|
224
247
|
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class OrderClause
|
|
3
|
+
attr_reader :field, :order
|
|
4
|
+
|
|
5
|
+
def initialize(clause)
|
|
6
|
+
clause =~ /^([\w\_\.]+)(->'\w+')?_(desc|asc)$/
|
|
7
|
+
@column = $1
|
|
8
|
+
@op = $2
|
|
9
|
+
@order = $3
|
|
10
|
+
|
|
11
|
+
@field = [@column, @op].compact.join
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def valid?
|
|
15
|
+
@field.present? && @order.present?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def to_sql(active_admin_config)
|
|
19
|
+
table = active_admin_config.resource_column_names.include?(@column) ? active_admin_config.resource_table_name : nil
|
|
20
|
+
table_column = (@column =~ /\./) ? @column :
|
|
21
|
+
[table, active_admin_config.resource_quoted_column_name(@column)].compact.join(".")
|
|
22
|
+
|
|
23
|
+
[table_column, @op, ' ', @order].compact.join
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -4,80 +4,77 @@ require 'active_admin/orm/active_record/comments/namespace_helper'
|
|
|
4
4
|
require 'active_admin/orm/active_record/comments/resource_helper'
|
|
5
5
|
|
|
6
6
|
# Add the comments configuration
|
|
7
|
-
ActiveAdmin::Application.inheritable_setting :
|
|
7
|
+
ActiveAdmin::Application.inheritable_setting :comments, true
|
|
8
8
|
ActiveAdmin::Application.inheritable_setting :show_comments_in_menu, true
|
|
9
9
|
ActiveAdmin::Application.inheritable_setting :comments_registration_name, 'Comment'
|
|
10
10
|
|
|
11
11
|
# Insert helper modules
|
|
12
12
|
ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
|
|
13
13
|
ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
|
|
14
|
-
|
|
15
|
-
# Add the module to the show page
|
|
16
14
|
ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
|
|
17
15
|
|
|
18
16
|
# Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
|
|
19
|
-
|
|
20
|
-
autoload :Comment, 'active_admin/orm/active_record/comments/comment'
|
|
21
|
-
end
|
|
17
|
+
ActiveAdmin.autoload :Comment, 'active_admin/orm/active_record/comments/comment'
|
|
22
18
|
|
|
23
19
|
# Walk through all the loaded namespaces after they're loaded
|
|
24
20
|
ActiveAdmin.after_load do |app|
|
|
25
|
-
app.namespaces.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
actions :index, :show, :create
|
|
21
|
+
app.namespaces.each do |namespace|
|
|
22
|
+
namespace.register ActiveAdmin::Comment, as: namespace.comments_registration_name do
|
|
23
|
+
actions :index, :show, :create
|
|
29
24
|
|
|
30
|
-
|
|
25
|
+
menu false unless namespace.comments && namespace.show_comments_in_menu
|
|
31
26
|
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
config.comments = false # Don't allow comments on comments
|
|
28
|
+
config.batch_actions = false # The default destroy batch action isn't showing up anyway...
|
|
34
29
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
end
|
|
30
|
+
scope :all, show_count: false
|
|
31
|
+
# Register a scope for every namespace that exists.
|
|
32
|
+
# The current namespace will be the default scope.
|
|
33
|
+
app.namespaces.map(&:name).each do |name|
|
|
34
|
+
scope name, default: namespace.name == name do |scope|
|
|
35
|
+
scope.where namespace: name.to_s
|
|
42
36
|
end
|
|
37
|
+
end
|
|
43
38
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
# Store the author and namespace
|
|
40
|
+
before_save do |comment|
|
|
41
|
+
comment.namespace = active_admin_config.namespace.name
|
|
42
|
+
comment.author = current_active_admin_user
|
|
43
|
+
end
|
|
49
44
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
45
|
+
controller do
|
|
46
|
+
# Prevent N+1 queries
|
|
47
|
+
def scoped_collection
|
|
48
|
+
super.includes *( # rails/rails#14734
|
|
49
|
+
ActiveAdmin::Dependency.rails?('>= 4.1.0', '<= 4.1.1') ?
|
|
50
|
+
[:author] : [:author, :resource]
|
|
51
|
+
)
|
|
52
|
+
end
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
end
|
|
54
|
+
# Redirect to the resource show page after comment creation
|
|
55
|
+
def create
|
|
56
|
+
create! do |success, failure|
|
|
57
|
+
success.html{ redirect_to :back }
|
|
58
|
+
failure.html do
|
|
59
|
+
flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
|
|
60
|
+
redirect_to :back
|
|
64
61
|
end
|
|
65
62
|
end
|
|
66
|
-
|
|
67
|
-
# Define the permitted params in case the app is using Strong Parameters
|
|
68
|
-
def permitted_params
|
|
69
|
-
params.permit active_admin_comment: [:body, :namespace, :resource_id, :resource_type]
|
|
70
|
-
end unless Rails::VERSION::MAJOR == 3 && !defined? StrongParameters
|
|
71
63
|
end
|
|
64
|
+
end
|
|
72
65
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
66
|
+
# Set up permitted params in case the app is using Strong Parameters
|
|
67
|
+
unless Rails::VERSION::MAJOR == 3 && !defined? StrongParameters
|
|
68
|
+
permit_params :body, :namespace, :resource_id, :resource_type
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
index do
|
|
72
|
+
column I18n.t('active_admin.comments.resource_type'), :resource_type
|
|
73
|
+
column I18n.t('active_admin.comments.author_type'), :author_type
|
|
74
|
+
column I18n.t('active_admin.comments.resource'), :resource
|
|
75
|
+
column I18n.t('active_admin.comments.author'), :author
|
|
76
|
+
column I18n.t('active_admin.comments.body'), :body
|
|
77
|
+
actions
|
|
81
78
|
end
|
|
82
79
|
end
|
|
83
80
|
end
|