yousty-activeadmin 1.0.0.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 +7 -0
- data/.gitignore +43 -0
- data/.travis.yml +8 -0
- data/.yardopts +9 -0
- data/CHANGELOG.md +1056 -0
- data/CONTRIBUTING.md +110 -0
- data/Gemfile +41 -0
- data/Guardfile +7 -0
- data/LICENSE +25 -0
- data/README.md +67 -0
- data/Rakefile +25 -0
- data/activeadmin.gemspec +33 -0
- 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-input-icon.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 +10 -0
- data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +4 -0
- data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +13 -0
- data/app/assets/images/active_admin/index_list_icons/table_icon.svg +3 -0
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/application.js.coffee +6 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +5 -0
- data/app/assets/javascripts/active_admin/components/application.js.coffee +23 -0
- data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +26 -0
- data/app/assets/javascripts/active_admin/components/has_many.js.coffee +41 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +37 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +105 -0
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +97 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +25 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +293 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +152 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +95 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +110 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +66 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +38 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +36 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +26 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +32 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.css.scss +284 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +43 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +19 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/app/views/active_admin/devise/shared/_links.erb +27 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +14 -0
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +17 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +37 -0
- data/config/locales/bg.yml +101 -0
- data/config/locales/ca.yml +98 -0
- data/config/locales/cs.yml +105 -0
- data/config/locales/da.yml +102 -0
- data/config/locales/de-CH.yml +117 -0
- data/config/locales/de.yml +119 -0
- data/config/locales/en-GB.yml +91 -0
- data/config/locales/en.yml +110 -0
- data/config/locales/es.yml +106 -0
- data/config/locales/es_MX.yml +104 -0
- data/config/locales/fi.yml +109 -0
- data/config/locales/fr.yml +97 -0
- data/config/locales/he.yml +91 -0
- data/config/locales/hr.yml +93 -0
- data/config/locales/hu.yml +92 -0
- data/config/locales/it.yml +89 -0
- data/config/locales/ja.yml +104 -0
- data/config/locales/ko.yml +84 -0
- data/config/locales/lt.yml +90 -0
- data/config/locales/lv.yml +89 -0
- data/config/locales/nl.yml +90 -0
- data/config/locales/no-NB.yml +85 -0
- data/config/locales/pl.yml +93 -0
- data/config/locales/pt-BR.yml +90 -0
- data/config/locales/pt-PT.yml +89 -0
- data/config/locales/ro.yml +93 -0
- data/config/locales/ru.yml +103 -0
- data/config/locales/sv-SE.yml +89 -0
- data/config/locales/tr.yml +90 -0
- data/config/locales/uk.yml +100 -0
- data/config/locales/vi.yml +90 -0
- data/config/locales/zh-CN.yml +90 -0
- data/config/locales/zh-TW.yml +90 -0
- data/cucumber.yml +3 -0
- data/docs/0-installation.md +84 -0
- data/docs/1-general-configuration.md +137 -0
- data/docs/10-custom-pages.md +98 -0
- data/docs/11-decorators.md +66 -0
- data/docs/12-arbre-components.md +144 -0
- data/docs/13-authorization-adapter.md +227 -0
- data/docs/2-resource-customization.md +340 -0
- data/docs/3-index-pages/create-an-index.md +29 -0
- data/docs/3-index-pages/index-as-block.md +21 -0
- data/docs/3-index-pages/index-as-blog.md +71 -0
- data/docs/3-index-pages/index-as-grid.md +29 -0
- data/docs/3-index-pages/index-as-table.md +154 -0
- data/docs/3-index-pages.md +206 -0
- data/docs/4-csv-format.md +39 -0
- data/docs/5-forms.md +110 -0
- data/docs/6-show-pages.md +77 -0
- data/docs/7-sidebars.md +42 -0
- data/docs/8-custom-actions.md +139 -0
- data/docs/9-batch-actions.md +155 -0
- data/features/action_item.feature +73 -0
- data/features/authorization.feature +64 -0
- data/features/authorization_cancan.feature +52 -0
- data/features/belongs_to.feature +63 -0
- data/features/breadcrumb.feature +27 -0
- data/features/comments/commenting.feature +140 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +16 -0
- data/features/decorators.feature +41 -0
- data/features/development_reloading.feature +31 -0
- data/features/edit_page.feature +127 -0
- data/features/favicon.feature +20 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +29 -0
- data/features/i18n.feature +38 -0
- data/features/index/batch_actions.feature +123 -0
- data/features/index/filters.feature +138 -0
- data/features/index/format_as_csv.feature +117 -0
- data/features/index/formats.feature +66 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +69 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +195 -0
- data/features/index/index_blank_slate.feature +61 -0
- data/features/index/index_parameters.feature +75 -0
- data/features/index/index_scope_to.feature +56 -0
- data/features/index/index_scopes.feature +251 -0
- data/features/index/page_title.feature +30 -0
- data/features/index/pagination.feature +59 -0
- data/features/index/switch_index_view.feature +73 -0
- data/features/menu.feature +53 -0
- data/features/new_page.feature +119 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_pages.feature +148 -0
- data/features/registering_resources.feature +33 -0
- data/features/root_to.feature +17 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +47 -0
- data/features/sidebar_sections.feature +198 -0
- data/features/site_title.feature +47 -0
- data/features/specifying_actions.feature +93 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/action_link_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +82 -0
- data/features/step_definitions/asset_steps.rb +15 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/batch_action_steps.rb +55 -0
- data/features/step_definitions/breadcrumb_steps.rb +3 -0
- data/features/step_definitions/comment_steps.rb +12 -0
- data/features/step_definitions/configuration_steps.rb +100 -0
- data/features/step_definitions/dashboard_steps.rb +15 -0
- data/features/step_definitions/factory_steps.rb +34 -0
- data/features/step_definitions/filter_steps.rb +17 -0
- data/features/step_definitions/flash_steps.rb +11 -0
- data/features/step_definitions/format_steps.rb +45 -0
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/index_scope_steps.rb +21 -0
- data/features/step_definitions/index_views_steps.rb +3 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/member_link_steps.rb +7 -0
- data/features/step_definitions/menu_steps.rb +11 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +8 -0
- data/features/step_definitions/site_title_steps.rb +15 -0
- data/features/step_definitions/symbol_leak_steps.rb +3 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/table_steps.rb +119 -0
- data/features/step_definitions/user_steps.rb +39 -0
- data/features/step_definitions/web_steps.rb +86 -0
- data/features/sti_resource.feature +73 -0
- data/features/support/env.rb +112 -0
- data/features/support/paths.rb +71 -0
- data/features/support/selectors.rb +45 -0
- data/features/symbol_leak.feature +35 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +242 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +132 -0
- data/lib/active_admin/base_controller/authorization.rb +151 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/base_controller.rb +78 -0
- data/lib/active_admin/batch_actions/controller.rb +24 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +127 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +66 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/cancan_adapter.rb +40 -0
- data/lib/active_admin/component.rb +5 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +49 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +70 -0
- data/lib/active_admin/dsl.rb +166 -0
- data/lib/active_admin/engine.rb +7 -0
- data/lib/active_admin/event.rb +33 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +89 -0
- data/lib/active_admin/filters/formtastic_addons.rb +70 -0
- data/lib/active_admin/filters/resource_extension.rb +136 -0
- data/lib/active_admin/filters.rb +9 -0
- data/lib/active_admin/form_builder.rb +152 -0
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/optional_display.rb +38 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +108 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/inputs/datepicker_input.rb +20 -0
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
- data/lib/active_admin/inputs/filter_base.rb +33 -0
- data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +51 -0
- data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
- data/lib/active_admin/inputs/filter_numeric_input.rb +10 -0
- data/lib/active_admin/inputs/filter_select_input.rb +61 -0
- data/lib/active_admin/inputs/filter_string_input.rb +24 -0
- data/lib/active_admin/inputs.rb +15 -0
- data/lib/active_admin/menu.rb +107 -0
- data/lib/active_admin/menu_collection.rb +96 -0
- data/lib/active_admin/menu_item.rb +97 -0
- data/lib/active_admin/namespace.rb +224 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +39 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +75 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments.rb +84 -0
- data/lib/active_admin/orm/active_record.rb +3 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +88 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +28 -0
- data/lib/active_admin/page_presenter.rb +32 -0
- data/lib/active_admin/resource/action_items.rb +91 -0
- data/lib/active_admin/resource/belongs_to.rb +36 -0
- data/lib/active_admin/resource/controllers.rb +18 -0
- data/lib/active_admin/resource/menu.rb +64 -0
- data/lib/active_admin/resource/naming.rb +84 -0
- data/lib/active_admin/resource/page_presenters.rb +82 -0
- data/lib/active_admin/resource/pagination.rb +19 -0
- data/lib/active_admin/resource/routes.rb +99 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +50 -0
- data/lib/active_admin/resource/sidebars.rb +27 -0
- data/lib/active_admin/resource.rb +153 -0
- data/lib/active_admin/resource_collection.rb +42 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +298 -0
- data/lib/active_admin/resource_controller/decorators.rb +20 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
- data/lib/active_admin/resource_controller/scoping.rb +31 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/resource_controller.rb +50 -0
- data/lib/active_admin/resource_dsl.rb +134 -0
- data/lib/active_admin/router.rb +106 -0
- data/lib/active_admin/scope.rb +57 -0
- data/lib/active_admin/sidebar_section.rb +37 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +27 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +34 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +26 -0
- data/lib/active_admin/view_helpers/display_helper.rb +49 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +49 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +13 -0
- data/lib/active_admin/view_helpers/form_helper.rb +24 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/view_helpers.rb +21 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +103 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +150 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
- data/lib/active_admin/views/components/index_list.rb +68 -0
- data/lib/active_admin/views/components/paginated_collection.rb +125 -0
- data/lib/active_admin/views/components/panel.rb +34 -0
- data/lib/active_admin/views/components/popover.rb +27 -0
- data/lib/active_admin/views/components/scopes.rb +66 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +56 -0
- data/lib/active_admin/views/components/table_for.rb +191 -0
- data/lib/active_admin/views/footer.rb +20 -0
- data/lib/active_admin/views/header.rb +32 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +156 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +264 -0
- data/lib/active_admin/views/pages/base.rb +139 -0
- data/lib/active_admin/views/pages/form.rb +51 -0
- data/lib/active_admin/views/pages/index.rb +147 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/page.rb +30 -0
- data/lib/active_admin/views/pages/show.rb +59 -0
- data/lib/active_admin/views/tabbed_navigation.rb +62 -0
- data/lib/active_admin/views/title_bar.rb +53 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin.rb +125 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +16 -0
- data/lib/generators/active_admin/assets/templates/active_admin.css.scss +17 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +86 -0
- data/lib/generators/active_admin/install/install_generator.rb +46 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +235 -0
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +27 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/lib/ransack_ext.rb +12 -0
- data/script/local +44 -0
- data/script/use_rails +53 -0
- data/spec/integration/default_namespace_spec.rb +61 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/memory_spec.rb +29 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
- data/spec/javascripts/support/jquery.min.js +4 -0
- data/spec/spec_helper.rb +175 -0
- data/spec/spec_helper_without_rails.rb +16 -0
- data/spec/support/deferred_garbage_collection.rb +19 -0
- data/spec/support/detect_rails_version.rb +42 -0
- data/spec/support/integration_example_group.rb +31 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +111 -0
- data/spec/support/rails_template_with_data.rb +59 -0
- data/spec/support/templates/admin/stores.rb +11 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/support/templates/cucumber_with_reloading.rb +5 -0
- data/spec/support/templates/en.yml +8 -0
- data/spec/support/templates/post_decorator.rb +53 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +126 -0
- data/spec/unit/active_admin_spec.rb +11 -0
- data/spec/unit/application_spec.rb +141 -0
- data/spec/unit/asset_registration_spec.rb +52 -0
- data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
- data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
- data/spec/unit/auto_link_spec.rb +32 -0
- data/spec/unit/batch_actions/resource_spec.rb +91 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/belongs_to_spec.rb +42 -0
- data/spec/unit/cancan_adapter_spec.rb +43 -0
- data/spec/unit/comments_spec.rb +106 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/config_shared_examples.rb +59 -0
- data/spec/unit/controller_filters_spec.rb +32 -0
- data/spec/unit/csv_builder_spec.rb +103 -0
- data/spec/unit/devise_spec.rb +116 -0
- data/spec/unit/dsl_spec.rb +61 -0
- data/spec/unit/event_spec.rb +47 -0
- data/spec/unit/filters/filter_form_builder_spec.rb +423 -0
- data/spec/unit/filters/resource_spec.rb +119 -0
- data/spec/unit/form_builder_spec.rb +514 -0
- data/spec/unit/generators/install_spec.rb +23 -0
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_collection_spec.rb +62 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +71 -0
- data/spec/unit/namespace/authorization_spec.rb +27 -0
- data/spec/unit/namespace/register_page_spec.rb +74 -0
- data/spec/unit/namespace/register_resource_spec.rb +163 -0
- data/spec/unit/namespace_spec.rb +103 -0
- data/spec/unit/page_controller_spec.rb +5 -0
- data/spec/unit/page_spec.rb +72 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +18 -0
- data/spec/unit/resource/naming_spec.rb +122 -0
- data/spec/unit/resource/page_presenters_spec.rb +44 -0
- data/spec/unit/resource/pagination_spec.rb +38 -0
- data/spec/unit/resource/routes_spec.rb +73 -0
- data/spec/unit/resource/scopes_spec.rb +43 -0
- data/spec/unit/resource/sidebars_spec.rb +43 -0
- data/spec/unit/resource_collection_spec.rb +160 -0
- data/spec/unit/resource_controller/data_access_spec.rb +73 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
- data/spec/unit/resource_controller_spec.rb +265 -0
- data/spec/unit/resource_registration_spec.rb +56 -0
- data/spec/unit/resource_spec.rb +243 -0
- data/spec/unit/routing_spec.rb +172 -0
- data/spec/unit/scope_spec.rb +108 -0
- data/spec/unit/settings_spec.rb +88 -0
- data/spec/unit/view_factory_spec.rb +21 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +149 -0
- data/spec/unit/view_helpers/display_name_spec.rb +41 -0
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
- data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +56 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +101 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
- data/spec/unit/views/components/attributes_table_spec.rb +230 -0
- data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
- data/spec/unit/views/components/blank_slate_spec.rb +17 -0
- data/spec/unit/views/components/columns_spec.rb +142 -0
- data/spec/unit/views/components/index_list_spec.rb +32 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +227 -0
- data/spec/unit/views/components/panel_spec.rb +51 -0
- data/spec/unit/views/components/popover_spec.rb +33 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +95 -0
- data/spec/unit/views/components/table_for_spec.rb +201 -0
- data/spec/unit/views/pages/form_spec.rb +35 -0
- data/spec/unit/views/pages/layout_spec.rb +63 -0
- data/spec/unit/views/pages/show_spec.rb +20 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +149 -0
- data/tasks/docs.rake +37 -0
- data/tasks/js.rake +32 -0
- data/tasks/parallel_tests.rake +60 -0
- data/tasks/test.rake +79 -0
- data/tasks/yard.rake +7 -0
- metadata +896 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
require 'active_admin/resource_collection'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
|
|
5
|
+
# Namespaces are the basic organizing principle for resources within Active Admin
|
|
6
|
+
#
|
|
7
|
+
# Each resource is registered into a namespace which defines:
|
|
8
|
+
# * the namespaceing for routing
|
|
9
|
+
# * the module to namespace controllers
|
|
10
|
+
# * the menu which gets displayed (other resources in the same namespace)
|
|
11
|
+
#
|
|
12
|
+
# For example:
|
|
13
|
+
#
|
|
14
|
+
# ActiveAdmin.register Post, :namespace => :admin
|
|
15
|
+
#
|
|
16
|
+
# Will register the Post model into the "admin" namespace. This will namespace the
|
|
17
|
+
# urls for the resource to "/admin/posts" and will set the controller to
|
|
18
|
+
# Admin::PostsController
|
|
19
|
+
#
|
|
20
|
+
# You can also register to the "root" namespace, which is to say no namespace at all.
|
|
21
|
+
#
|
|
22
|
+
# ActiveAdmin.register Post, :namespace => false
|
|
23
|
+
#
|
|
24
|
+
# This will register the resource to an instantiated namespace called :root. The
|
|
25
|
+
# resource will be accessible from "/posts" and the controller will be PostsController.
|
|
26
|
+
#
|
|
27
|
+
class Namespace
|
|
28
|
+
RegisterEvent = 'active_admin.namespace.register'.freeze
|
|
29
|
+
|
|
30
|
+
attr_reader :application, :resources, :name, :menus
|
|
31
|
+
|
|
32
|
+
def initialize(application, name)
|
|
33
|
+
@application = application
|
|
34
|
+
@name = name.to_s.underscore.to_sym
|
|
35
|
+
@resources = ResourceCollection.new
|
|
36
|
+
register_module unless root?
|
|
37
|
+
build_menu_collection
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Register a resource into this namespace. The preffered method to access this is to
|
|
41
|
+
# use the global registration ActiveAdmin.register which delegates to the proper
|
|
42
|
+
# namespace instance.
|
|
43
|
+
def register(resource_class, options = {}, &block)
|
|
44
|
+
config = find_or_build_resource(resource_class, options)
|
|
45
|
+
|
|
46
|
+
# Register the resource
|
|
47
|
+
register_resource_controller(config)
|
|
48
|
+
parse_registration_block(config, &block) if block_given?
|
|
49
|
+
reset_menu!
|
|
50
|
+
|
|
51
|
+
# Dispatch a registration event
|
|
52
|
+
ActiveAdmin::Event.dispatch ActiveAdmin::Resource::RegisterEvent, config
|
|
53
|
+
|
|
54
|
+
# Return the config
|
|
55
|
+
config
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def register_page(name, options = {}, &block)
|
|
59
|
+
config = build_page(name, options)
|
|
60
|
+
|
|
61
|
+
# Register the resource
|
|
62
|
+
register_page_controller(config)
|
|
63
|
+
parse_page_registration_block(config, &block) if block_given?
|
|
64
|
+
reset_menu!
|
|
65
|
+
|
|
66
|
+
config
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def root?
|
|
70
|
+
name == :root
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Returns the name of the module if required. Will be nil if none
|
|
74
|
+
# is required.
|
|
75
|
+
#
|
|
76
|
+
# eg:
|
|
77
|
+
# Namespace.new(:admin).module_name # => 'Admin'
|
|
78
|
+
# Namespace.new(:root).module_name # => nil
|
|
79
|
+
#
|
|
80
|
+
def module_name
|
|
81
|
+
return nil if root?
|
|
82
|
+
@module_name ||= name.to_s.camelize
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Unload all the registered resources for this namespace
|
|
86
|
+
def unload!
|
|
87
|
+
unload_resources!
|
|
88
|
+
reset_menu!
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Returns the first registered ActiveAdmin::Resource instance for a given class
|
|
92
|
+
def resource_for(klass)
|
|
93
|
+
resources[klass]
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Override from ActiveAdmin::Settings to inherit default attributes
|
|
97
|
+
# from the application
|
|
98
|
+
def read_default_setting(name)
|
|
99
|
+
application.send(name)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def fetch_menu(name)
|
|
103
|
+
@menus.fetch(name)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def reset_menu!
|
|
107
|
+
@menus.clear!
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Add a callback to be ran when we build the menu
|
|
111
|
+
#
|
|
112
|
+
# @param [Symbol] name The name of the menu. Default: :default
|
|
113
|
+
# @param [Proc] block The block to be ran when the menu is built
|
|
114
|
+
#
|
|
115
|
+
# @returns [void]
|
|
116
|
+
def build_menu(name = DEFAULT_MENU, &block)
|
|
117
|
+
@menus.before_build do |menus|
|
|
118
|
+
menus.menu name do |menu|
|
|
119
|
+
block.call(menu)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Add the default logout button to the menu, using the ActiveAdmin configuration settings
|
|
125
|
+
#
|
|
126
|
+
# @param [ActiveAdmin::MenuItem] menu The menu to add the logout link to
|
|
127
|
+
# @param [Fixnum] priority Override the default priority of 100 to position the logout button where you want
|
|
128
|
+
# @param [Hash] html_options An options hash to pass along to link_to
|
|
129
|
+
#
|
|
130
|
+
# @returns [void]
|
|
131
|
+
def add_logout_button_to_menu(menu, priority=100, html_options={})
|
|
132
|
+
if logout_link_path
|
|
133
|
+
logout_method = logout_link_method || :get
|
|
134
|
+
menu.add :id => 'logout',
|
|
135
|
+
:priority => priority,
|
|
136
|
+
:label => proc{ I18n.t('active_admin.logout') },
|
|
137
|
+
:html_options => html_options.reverse_merge(:method => logout_method),
|
|
138
|
+
:url => proc{ render_or_call_method_or_proc_on self, active_admin_namespace.logout_link_path },
|
|
139
|
+
:if => proc{ current_active_admin_user? }
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def add_current_user_to_menu(menu)
|
|
144
|
+
menu.add label: proc{ display_name current_active_admin_user },
|
|
145
|
+
url: proc{ url_for [active_admin_namespace.name, current_active_admin_user] rescue '#' },
|
|
146
|
+
id: 'current_user',
|
|
147
|
+
if: proc{ current_active_admin_user? }
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
protected
|
|
151
|
+
|
|
152
|
+
def build_menu_collection
|
|
153
|
+
@menus = MenuCollection.new
|
|
154
|
+
|
|
155
|
+
@menus.on_build do |menus|
|
|
156
|
+
build_default_utility_nav
|
|
157
|
+
|
|
158
|
+
resources.each do |resource|
|
|
159
|
+
resource.add_to_menu(@menus)
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# Builds the default utility navigation in top right header with current user & logout button
|
|
165
|
+
def build_default_utility_nav
|
|
166
|
+
return if @menus.exists? :utility_navigation
|
|
167
|
+
@menus.menu :utility_navigation do |menu|
|
|
168
|
+
add_current_user_to_menu menu
|
|
169
|
+
add_logout_button_to_menu menu
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# Either returns an existing Resource instance or builds a new
|
|
174
|
+
# one for the resource and options
|
|
175
|
+
def find_or_build_resource(resource_class, options)
|
|
176
|
+
resources.add Resource.new(self, resource_class, options)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def build_page(name, options)
|
|
180
|
+
resources.add Page.new(self, name, options)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def register_page_controller(config)
|
|
184
|
+
eval "class ::#{config.controller_name} < ActiveAdmin::PageController; end"
|
|
185
|
+
config.controller.active_admin_config = config
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def unload_resources!
|
|
189
|
+
resources.each do |resource|
|
|
190
|
+
parent = (module_name || 'Object').constantize
|
|
191
|
+
const_name = resource.controller_name.split('::').last
|
|
192
|
+
# Remove the const if its been defined
|
|
193
|
+
parent.send(:remove_const, const_name) if parent.const_defined?(const_name)
|
|
194
|
+
|
|
195
|
+
# Remove circular references
|
|
196
|
+
resource.controller.active_admin_config = nil
|
|
197
|
+
if resource.is_a?(Resource) && resource.dsl
|
|
198
|
+
resource.dsl.run_registration_block { @config = nil }
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
@resources = ResourceCollection.new
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# Creates a ruby module to namespace all the classes in if required
|
|
205
|
+
def register_module
|
|
206
|
+
eval "module ::#{module_name}; end"
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def register_resource_controller(config)
|
|
210
|
+
eval "class ::#{config.controller_name} < ActiveAdmin::ResourceController; end"
|
|
211
|
+
config.controller.active_admin_config = config
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def parse_registration_block(config, &block)
|
|
215
|
+
config.dsl = ResourceDSL.new(config)
|
|
216
|
+
config.dsl.run_registration_block(&block)
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def parse_page_registration_block(config, &block)
|
|
220
|
+
PageDSL.new(config).run_registration_block(&block)
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
end
|
|
224
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Comment < ActiveRecord::Base
|
|
3
|
+
|
|
4
|
+
belongs_to :resource, :polymorphic => true
|
|
5
|
+
belongs_to :author, :polymorphic => true
|
|
6
|
+
|
|
7
|
+
unless Rails::VERSION::MAJOR > 3 && !defined? ProtectedAttributes
|
|
8
|
+
attr_accessible :resource, :resource_id, :resource_type, :body, :namespace
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
validates_presence_of :body, :namespace, :resource
|
|
12
|
+
|
|
13
|
+
# @returns [String] The name of the record to use for the polymorphic relationship
|
|
14
|
+
def self.resource_type(record)
|
|
15
|
+
record.class.base_class.name.to_s
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Postgres adapters won't compare strings to numbers (issue 34)
|
|
19
|
+
def self.resource_id_cast(record)
|
|
20
|
+
resource_id_type == :string ? record.id.to_s : record.id
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.find_for_resource_in_namespace(resource, namespace)
|
|
24
|
+
where :resource_type => resource_type(resource),
|
|
25
|
+
:resource_id => resource_id_cast(resource),
|
|
26
|
+
:namespace => namespace.to_s
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.resource_id_type
|
|
30
|
+
columns.detect{ |i| i.name == "resource_id" }.type
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.table_name
|
|
34
|
+
@table_name ||= ActiveRecord::Migrator.proper_table_name("active_admin_comments")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Comments
|
|
3
|
+
|
|
4
|
+
# Adds #active_admin_comments to the show page for use
|
|
5
|
+
# and sets it up on the default main content
|
|
6
|
+
module ShowPageHelper
|
|
7
|
+
|
|
8
|
+
# Add admin comments to the main content if they are
|
|
9
|
+
# turned on for the current resource
|
|
10
|
+
def default_main_content
|
|
11
|
+
super
|
|
12
|
+
active_admin_comments if active_admin_config.comments?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Display the comments for the resource. Same as calling
|
|
16
|
+
# #active_admin_comments_for with the current resource
|
|
17
|
+
def active_admin_comments(*args, &block)
|
|
18
|
+
active_admin_comments_for(resource, *args, &block)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require 'active_admin/views'
|
|
2
|
+
require 'active_admin/views/components/panel'
|
|
3
|
+
|
|
4
|
+
module ActiveAdmin
|
|
5
|
+
module Comments
|
|
6
|
+
module Views
|
|
7
|
+
|
|
8
|
+
class Comments < ActiveAdmin::Views::Panel
|
|
9
|
+
builder_method :active_admin_comments_for
|
|
10
|
+
|
|
11
|
+
def build(resource)
|
|
12
|
+
@resource = resource
|
|
13
|
+
@comments = ActiveAdmin::Comment.find_for_resource_in_namespace @resource, active_admin_namespace.name
|
|
14
|
+
super(title, :for => resource)
|
|
15
|
+
build_comments
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
protected
|
|
19
|
+
|
|
20
|
+
def title
|
|
21
|
+
I18n.t 'active_admin.comments.title_content', :count => @comments.count
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def build_comments
|
|
25
|
+
@comments.any? ? @comments.each(&method(:build_comment)) : build_empty_message
|
|
26
|
+
build_comment_form
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def build_comment(comment)
|
|
30
|
+
div :for => comment do
|
|
31
|
+
div :class => 'active_admin_comment_meta' do
|
|
32
|
+
h4 :class => 'active_admin_comment_author' do
|
|
33
|
+
comment.author ? auto_link(comment.author) : I18n.t('active_admin.comments.author_missing')
|
|
34
|
+
end
|
|
35
|
+
span pretty_format comment.created_at
|
|
36
|
+
end
|
|
37
|
+
div :class => 'active_admin_comment_body' do
|
|
38
|
+
simple_format comment.body
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def build_empty_message
|
|
44
|
+
span I18n.t('active_admin.comments.no_comments_yet'), :class => 'empty'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def comment_form_url
|
|
48
|
+
parts = []
|
|
49
|
+
parts << active_admin_namespace.name unless active_admin_namespace.root?
|
|
50
|
+
parts << active_admin_namespace.comments_registration_name.underscore.pluralize
|
|
51
|
+
parts << 'path'
|
|
52
|
+
send parts.join '_'
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def build_comment_form
|
|
56
|
+
self << active_admin_form_for(ActiveAdmin::Comment.new, :url => comment_form_url) do |f|
|
|
57
|
+
f.inputs do
|
|
58
|
+
f.input :resource_type, :as => :hidden, :input_html => { :value => ActiveAdmin::Comment.resource_type(@resource) }
|
|
59
|
+
f.input :resource_id, :as => :hidden, :input_html => { :value => @resource.id }
|
|
60
|
+
f.input :body, :label => false, :input_html => { :size => '80x8' }
|
|
61
|
+
end
|
|
62
|
+
f.actions do
|
|
63
|
+
f.action :submit, :label => I18n.t('active_admin.comments.add')
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def default_id_for_prefix
|
|
69
|
+
'active_admin_comments_for'
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require 'active_admin/orm/active_record/comments/views'
|
|
2
|
+
require 'active_admin/orm/active_record/comments/show_page_helper'
|
|
3
|
+
require 'active_admin/orm/active_record/comments/namespace_helper'
|
|
4
|
+
require 'active_admin/orm/active_record/comments/resource_helper'
|
|
5
|
+
|
|
6
|
+
# Add the comments configuration
|
|
7
|
+
ActiveAdmin::Application.inheritable_setting :allow_comments, true
|
|
8
|
+
ActiveAdmin::Application.inheritable_setting :show_comments_in_menu, true
|
|
9
|
+
ActiveAdmin::Application.inheritable_setting :comments_registration_name, 'Comment'
|
|
10
|
+
|
|
11
|
+
# Insert helper modules
|
|
12
|
+
ActiveAdmin::Namespace.send :include, ActiveAdmin::Comments::NamespaceHelper
|
|
13
|
+
ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
|
|
14
|
+
|
|
15
|
+
# Add the module to the show page
|
|
16
|
+
ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
|
|
17
|
+
|
|
18
|
+
# Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
|
|
19
|
+
module ActiveAdmin
|
|
20
|
+
autoload :Comment, 'active_admin/orm/active_record/comments/comment'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Walk through all the loaded namespaces after they're loaded
|
|
24
|
+
ActiveAdmin.after_load do |app|
|
|
25
|
+
app.namespaces.values.each do |namespace|
|
|
26
|
+
if namespace.comments?
|
|
27
|
+
namespace.register ActiveAdmin::Comment, :as => namespace.comments_registration_name do
|
|
28
|
+
actions :index, :show, :create
|
|
29
|
+
|
|
30
|
+
menu false unless namespace.show_comments_in_menu
|
|
31
|
+
|
|
32
|
+
config.comments = false # Don't allow comments on comments
|
|
33
|
+
config.batch_actions = false # The default destroy batch action isn't showing up anyway...
|
|
34
|
+
|
|
35
|
+
scope :all, :show_count => false
|
|
36
|
+
# Register a scope for every namespace that exists.
|
|
37
|
+
# The current namespace will be the default scope.
|
|
38
|
+
app.namespaces.values.map(&:name).each do |name|
|
|
39
|
+
scope name, :default => namespace.name == name do |scope|
|
|
40
|
+
scope.where :namespace => name.to_s
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Store the author and namespace
|
|
45
|
+
before_save do |comment|
|
|
46
|
+
comment.namespace = active_admin_config.namespace.name
|
|
47
|
+
comment.author = current_active_admin_user
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
controller do
|
|
51
|
+
# Prevent N+1 queries
|
|
52
|
+
def scoped_collection
|
|
53
|
+
resource_class.includes :author, :resource
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Redirect to the resource show page after comment creation
|
|
57
|
+
def create
|
|
58
|
+
create! do |success, failure|
|
|
59
|
+
success.html{ redirect_to :back }
|
|
60
|
+
failure.html do
|
|
61
|
+
flash[:error] = I18n.t 'active_admin.comments.errors.empty_text'
|
|
62
|
+
redirect_to :back
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
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
|
+
end
|
|
72
|
+
|
|
73
|
+
index do
|
|
74
|
+
column I18n.t('active_admin.comments.resource_type'), :resource_type
|
|
75
|
+
column I18n.t('active_admin.comments.author_type'), :author_type
|
|
76
|
+
column I18n.t('active_admin.comments.resource'), :resource
|
|
77
|
+
column I18n.t('active_admin.comments.author'), :author
|
|
78
|
+
column I18n.t('active_admin.comments.body'), :body
|
|
79
|
+
actions
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Mongoid-specific plugins should be required here
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
# Page is the primary data storage for page configuration in Active Admin
|
|
3
|
+
#
|
|
4
|
+
# When you register a page (ActiveAdmin.page "Status") you are actually creating
|
|
5
|
+
# a new Page instance within the given Namespace.
|
|
6
|
+
#
|
|
7
|
+
# The instance of the current page is available in PageController and views
|
|
8
|
+
# by calling the #active_admin_config method.
|
|
9
|
+
#
|
|
10
|
+
class Page
|
|
11
|
+
|
|
12
|
+
# The namespace this config belongs to
|
|
13
|
+
attr_reader :namespace
|
|
14
|
+
|
|
15
|
+
# The name of the page
|
|
16
|
+
attr_reader :name
|
|
17
|
+
|
|
18
|
+
# An array of custom actions defined for this page
|
|
19
|
+
attr_reader :page_actions
|
|
20
|
+
|
|
21
|
+
# Set breadcrumb builder
|
|
22
|
+
attr_accessor :breadcrumb
|
|
23
|
+
|
|
24
|
+
module Base
|
|
25
|
+
def initialize(namespace, name, options)
|
|
26
|
+
@namespace = namespace
|
|
27
|
+
@name = name
|
|
28
|
+
@options = options
|
|
29
|
+
@page_actions = []
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
include Base
|
|
34
|
+
include Resource::Controllers
|
|
35
|
+
include Resource::PagePresenters
|
|
36
|
+
include Resource::Sidebars
|
|
37
|
+
include Resource::ActionItems
|
|
38
|
+
include Resource::Menu
|
|
39
|
+
include Resource::Naming
|
|
40
|
+
include Resource::Routes
|
|
41
|
+
|
|
42
|
+
# label is singular
|
|
43
|
+
def plural_resource_label
|
|
44
|
+
name
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def resource_name
|
|
48
|
+
@resource_name ||= Resource::Name.new(nil, name)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def underscored_resource_name
|
|
52
|
+
resource_name.to_s.parameterize.underscore
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def camelized_resource_name
|
|
56
|
+
underscored_resource_name.camelize
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def default_menu_options
|
|
60
|
+
super.merge(:id => resource_name)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def controller_name
|
|
64
|
+
[namespace.module_name, camelized_resource_name + "Controller"].compact.join('::')
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Override from `ActiveAdmin::Resource::Controllers`
|
|
68
|
+
def route_uncountable?
|
|
69
|
+
false
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def belongs_to?
|
|
73
|
+
false
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def add_default_action_items
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def add_default_sidebar_sections
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Clears all the custom actions this page knows about
|
|
83
|
+
def clear_page_actions!
|
|
84
|
+
@page_actions = []
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
|
|
3
|
+
# All Pages controllers inherit from this controller.
|
|
4
|
+
class PageController < BaseController
|
|
5
|
+
|
|
6
|
+
# Active admin actions don't require layout. All custom actions do.
|
|
7
|
+
ACTIVE_ADMIN_ACTIONS = [:index]
|
|
8
|
+
|
|
9
|
+
actions :index
|
|
10
|
+
|
|
11
|
+
before_filter :authorize_access!
|
|
12
|
+
|
|
13
|
+
def index(options={}, &block)
|
|
14
|
+
render "active_admin/page/index"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def clear_page_actions!
|
|
18
|
+
active_admin_config.clear_page_actions!
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def authorize_access!
|
|
24
|
+
permission = action_to_permission(params[:action])
|
|
25
|
+
authorize! permission, active_admin_config
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
# This is the class where all the register_page blocks are instance eval'd
|
|
3
|
+
class PageDSL < DSL
|
|
4
|
+
|
|
5
|
+
# Page content.
|
|
6
|
+
#
|
|
7
|
+
# The block should define the view using Arbre.
|
|
8
|
+
#
|
|
9
|
+
# Example:
|
|
10
|
+
#
|
|
11
|
+
# ActiveAdmin.register "My Page" do
|
|
12
|
+
# content do
|
|
13
|
+
# para "Sweet!"
|
|
14
|
+
# end
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
def content(options = {}, &block)
|
|
18
|
+
config.set_page_presenter :index, ActiveAdmin::PagePresenter.new(options, &block)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def page_action(name, options = {}, &block)
|
|
22
|
+
config.page_actions << ControllerAction.new(name, options)
|
|
23
|
+
controller do
|
|
24
|
+
define_method(name, &block || Proc.new{})
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
|
|
3
|
+
# A simple object that gets used to present different aspects of views
|
|
4
|
+
#
|
|
5
|
+
# Initialize with a set of options and a block. The options become
|
|
6
|
+
# available using hash style syntax.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
#
|
|
10
|
+
# presenter = PagePresenter.new :as => :table do
|
|
11
|
+
# # some awesome stuff
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# presenter[:as] #=> :table
|
|
15
|
+
# presenter.block #=> The block passed in to new
|
|
16
|
+
#
|
|
17
|
+
class PagePresenter
|
|
18
|
+
|
|
19
|
+
attr_reader :block, :options
|
|
20
|
+
|
|
21
|
+
delegate :has_key?, :to => :options
|
|
22
|
+
|
|
23
|
+
def initialize(options = {}, &block)
|
|
24
|
+
@options, @block = options, block
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def [](key)
|
|
28
|
+
@options[key]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|