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,147 @@
|
|
|
1
|
+
require 'active_admin/helpers/collection'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
module Views
|
|
5
|
+
module Pages
|
|
6
|
+
|
|
7
|
+
class Index < Base
|
|
8
|
+
|
|
9
|
+
def title
|
|
10
|
+
case config[:title]
|
|
11
|
+
when Proc then controller.instance_eval(&config[:title])
|
|
12
|
+
when String then config[:title]
|
|
13
|
+
else
|
|
14
|
+
active_admin_config.plural_resource_label
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Retreives the given page presenter, or uses the default.
|
|
19
|
+
def config
|
|
20
|
+
active_admin_config.get_page_presenter(:index, params[:as]) ||
|
|
21
|
+
ActiveAdmin::PagePresenter.new(as: :table)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Render's the index configuration that was set in the
|
|
25
|
+
# controller. Defaults to rendering the ActiveAdmin::Pages::Index::Table
|
|
26
|
+
def main_content
|
|
27
|
+
wrap_with_batch_action_form do
|
|
28
|
+
build_table_tools
|
|
29
|
+
build_collection
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
protected
|
|
34
|
+
|
|
35
|
+
def wrap_with_batch_action_form(&block)
|
|
36
|
+
if active_admin_config.batch_actions.any?
|
|
37
|
+
batch_action_form(&block)
|
|
38
|
+
else
|
|
39
|
+
block.call
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
include ::ActiveAdmin::Helpers::Collection
|
|
44
|
+
|
|
45
|
+
def items_in_collection?
|
|
46
|
+
!collection_is_empty?
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def build_collection
|
|
50
|
+
if items_in_collection?
|
|
51
|
+
render_index
|
|
52
|
+
else
|
|
53
|
+
if params[:q] || params[:scope]
|
|
54
|
+
render_empty_results
|
|
55
|
+
else
|
|
56
|
+
render_blank_slate
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
include ::ActiveAdmin::ViewHelpers::DownloadFormatLinksHelper
|
|
62
|
+
|
|
63
|
+
def build_table_tools
|
|
64
|
+
div :class => "table_tools" do
|
|
65
|
+
build_batch_actions_selector
|
|
66
|
+
build_scopes
|
|
67
|
+
build_index_list
|
|
68
|
+
end if any_table_tools?
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def any_table_tools?
|
|
72
|
+
active_admin_config.batch_actions.any? ||
|
|
73
|
+
active_admin_config.scopes.any? ||
|
|
74
|
+
active_admin_config.page_presenters[:index].try(:size).try(:>, 1)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def build_batch_actions_selector
|
|
78
|
+
if active_admin_config.batch_actions.any?
|
|
79
|
+
insert_tag view_factory.batch_action_selector, active_admin_config.batch_actions
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def build_scopes
|
|
84
|
+
if active_admin_config.scopes.any?
|
|
85
|
+
scope_options = {
|
|
86
|
+
:scope_count => config[:scope_count].nil? ? true : config[:scope_count]
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
scopes_renderer active_admin_config.scopes, scope_options
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def build_index_list
|
|
94
|
+
indexes = active_admin_config.page_presenters[:index]
|
|
95
|
+
|
|
96
|
+
if indexes.kind_of?(Hash) && indexes.length > 1
|
|
97
|
+
index_classes = []
|
|
98
|
+
active_admin_config.page_presenters[:index].each do |type, page_presenter|
|
|
99
|
+
index_classes << find_index_renderer_class(page_presenter[:as])
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
index_list_renderer index_classes
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Returns the actual class for renderering the main content on the index
|
|
107
|
+
# page. To set this, use the :as option in the page_presenter block.
|
|
108
|
+
def find_index_renderer_class(klass)
|
|
109
|
+
klass.is_a?(Class) ? klass :
|
|
110
|
+
::ActiveAdmin::Views.const_get("IndexAs" + klass.to_s.camelcase)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def render_blank_slate
|
|
114
|
+
blank_slate_content = I18n.t("active_admin.blank_slate.content", :resource_name => active_admin_config.plural_resource_label)
|
|
115
|
+
if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
|
|
116
|
+
blank_slate_content += " " + link_to(I18n.t("active_admin.blank_slate.link"), new_resource_path)
|
|
117
|
+
end
|
|
118
|
+
insert_tag(view_factory.blank_slate, blank_slate_content)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def render_empty_results
|
|
122
|
+
empty_results_content = I18n.t("active_admin.pagination.empty", :model => active_admin_config.plural_resource_label)
|
|
123
|
+
insert_tag(view_factory.blank_slate, empty_results_content)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def render_index
|
|
127
|
+
renderer_class = find_index_renderer_class(config[:as])
|
|
128
|
+
paginator = config[:paginator].nil? ? true : config[:paginator]
|
|
129
|
+
download_links = config[:download_links].nil? ? active_admin_config.namespace.download_links : config[:download_links]
|
|
130
|
+
pagination_total = config[:pagination_total].nil? ? true : config[:pagination_total]
|
|
131
|
+
|
|
132
|
+
paginated_collection(collection, :entry_name => active_admin_config.resource_label,
|
|
133
|
+
:entries_name => active_admin_config.plural_resource_label(:count => collection_size),
|
|
134
|
+
:download_links => download_links,
|
|
135
|
+
:paginator => paginator,
|
|
136
|
+
:pagination_total => pagination_total) do
|
|
137
|
+
div :class => 'index_content' do
|
|
138
|
+
insert_tag(renderer_class, config, collection)
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
|
|
5
|
+
# Acts as a standard rails Layout for use when logged
|
|
6
|
+
# out or when rendering custom actions.
|
|
7
|
+
class Layout < Base
|
|
8
|
+
|
|
9
|
+
def title
|
|
10
|
+
assigns[:page_title] || I18n.t("active_admin.#{params[:action]}", :default => params[:action].to_s.titleize)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Render the content_for(:layout) into the main content area
|
|
14
|
+
def main_content
|
|
15
|
+
content_for_layout = content_for(:layout)
|
|
16
|
+
if content_for_layout.is_a?(Arbre::Element)
|
|
17
|
+
current_arbre_element.add_child content_for_layout.children
|
|
18
|
+
else
|
|
19
|
+
text_node content_for_layout
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Page < Base
|
|
5
|
+
|
|
6
|
+
def main_content
|
|
7
|
+
if page_presenter.block
|
|
8
|
+
instance_exec &page_presenter.block
|
|
9
|
+
else
|
|
10
|
+
nil
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
def page_presenter
|
|
17
|
+
active_admin_config.get_page_presenter(:index) || ActiveAdmin::PagePresenter.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def title
|
|
21
|
+
if page_presenter[:title]
|
|
22
|
+
render_or_call_method_or_proc_on self, page_presenter[:title]
|
|
23
|
+
else
|
|
24
|
+
active_admin_config.name
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Show < Base
|
|
5
|
+
|
|
6
|
+
def config
|
|
7
|
+
active_admin_config.get_page_presenter(:show) || super
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def title
|
|
11
|
+
if config[:title]
|
|
12
|
+
render_or_call_method_or_proc_on(resource, config[:title])
|
|
13
|
+
else
|
|
14
|
+
default_title
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def main_content
|
|
19
|
+
if config.block
|
|
20
|
+
# Eval the show config from the controller
|
|
21
|
+
instance_exec resource, &config.block
|
|
22
|
+
else
|
|
23
|
+
default_main_content
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def attributes_table(*args, &block)
|
|
28
|
+
panel(I18n.t('active_admin.details', :model => active_admin_config.resource_label)) do
|
|
29
|
+
attributes_table_for resource, *args, &block
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
protected
|
|
34
|
+
|
|
35
|
+
def default_title
|
|
36
|
+
title = display_name(resource)
|
|
37
|
+
|
|
38
|
+
if title.nil? || title.empty? || title == resource.to_s
|
|
39
|
+
title = "#{active_admin_config.resource_label} ##{resource.id}"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
title
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
module DefaultMainContent
|
|
46
|
+
def default_main_content
|
|
47
|
+
attributes_table *default_attribute_table_rows
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def default_attribute_table_rows
|
|
51
|
+
resource.class.columns.collect{|column| column.name.to_sym }
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
include DefaultMainContent
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# Renders an ActiveAdmin::Menu as a set of unordered list items.
|
|
5
|
+
#
|
|
6
|
+
# This component takes cares of deciding which items should be
|
|
7
|
+
# displayed given the current context and renders them appropriately.
|
|
8
|
+
#
|
|
9
|
+
# The entire component is rendered within one ul element.
|
|
10
|
+
class TabbedNavigation < Component
|
|
11
|
+
|
|
12
|
+
attr_reader :menu
|
|
13
|
+
|
|
14
|
+
# Build a new tabbed navigation component.
|
|
15
|
+
#
|
|
16
|
+
# @param [ActiveAdmin::Menu] menu the Menu to render
|
|
17
|
+
# @param [Hash] options the options as passed to the underlying ul element.
|
|
18
|
+
#
|
|
19
|
+
def build(menu, options = {})
|
|
20
|
+
@menu = menu
|
|
21
|
+
super(default_options.merge(options))
|
|
22
|
+
build_menu
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# The top-level menu items that should be displayed.
|
|
26
|
+
def menu_items
|
|
27
|
+
menu.items(self)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def tag_name
|
|
31
|
+
'ul'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def build_menu
|
|
37
|
+
menu_items.each do |item|
|
|
38
|
+
build_menu_item(item)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def build_menu_item(item)
|
|
43
|
+
li :id => item.id do |li|
|
|
44
|
+
li.add_class "current" if item.current? assigns[:current_tab]
|
|
45
|
+
|
|
46
|
+
text_node link_to item.label(self), item.url(self), item.html_options
|
|
47
|
+
|
|
48
|
+
if children = item.items(self).presence
|
|
49
|
+
li.add_class "has_nested"
|
|
50
|
+
ul do
|
|
51
|
+
children.each{ |child| build_menu_item child }
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def default_options
|
|
58
|
+
{ :id => "tabs" }
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
class TitleBar < Component
|
|
4
|
+
|
|
5
|
+
def build(title, action_items)
|
|
6
|
+
super(:id => "title_bar")
|
|
7
|
+
@title = title
|
|
8
|
+
@action_items = action_items
|
|
9
|
+
build_titlebar_left
|
|
10
|
+
build_titlebar_right
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def build_titlebar_left
|
|
16
|
+
div :id => "titlebar_left" do
|
|
17
|
+
build_breadcrumb
|
|
18
|
+
build_title_tag
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def build_titlebar_right
|
|
23
|
+
div :id => "titlebar_right" do
|
|
24
|
+
build_action_items
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def build_breadcrumb(separator = "/")
|
|
29
|
+
links = if active_admin_config && active_admin_config.breadcrumb.present?
|
|
30
|
+
instance_exec(controller, &active_admin_config.breadcrumb)
|
|
31
|
+
else
|
|
32
|
+
breadcrumb_links
|
|
33
|
+
end
|
|
34
|
+
return unless links.present? && links.is_a?(::Array)
|
|
35
|
+
span :class => "breadcrumb" do
|
|
36
|
+
links.each do |link|
|
|
37
|
+
text_node link
|
|
38
|
+
span(separator, :class => "breadcrumb_sep")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def build_title_tag
|
|
44
|
+
h2(@title, :id => 'page_title')
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def build_action_items
|
|
48
|
+
insert_tag(view_factory.action_items, @action_items) if @action_items.any?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
data/lib/active_admin.rb
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
require 'active_support/core_ext/class/attribute' # needed for Ransack
|
|
2
|
+
require 'ransack'
|
|
3
|
+
require 'ransack_ext'
|
|
4
|
+
require 'bourbon'
|
|
5
|
+
require 'devise'
|
|
6
|
+
require 'kaminari'
|
|
7
|
+
require 'formtastic'
|
|
8
|
+
require 'sass-rails'
|
|
9
|
+
require 'inherited_resources'
|
|
10
|
+
require 'jquery-rails'
|
|
11
|
+
require 'jquery-ui-rails'
|
|
12
|
+
require 'coffee-rails'
|
|
13
|
+
require 'arbre'
|
|
14
|
+
require 'active_admin/engine'
|
|
15
|
+
|
|
16
|
+
module ActiveAdmin
|
|
17
|
+
|
|
18
|
+
autoload :VERSION, 'active_admin/version'
|
|
19
|
+
autoload :Application, 'active_admin/application'
|
|
20
|
+
autoload :AssetRegistration, 'active_admin/asset_registration'
|
|
21
|
+
autoload :Authorization, 'active_admin/authorization_adapter'
|
|
22
|
+
autoload :AuthorizationAdapter, 'active_admin/authorization_adapter'
|
|
23
|
+
autoload :Breadcrumbs, 'active_admin/breadcrumbs'
|
|
24
|
+
autoload :Callbacks, 'active_admin/callbacks'
|
|
25
|
+
autoload :Component, 'active_admin/component'
|
|
26
|
+
autoload :BaseController, 'active_admin/base_controller'
|
|
27
|
+
autoload :ControllerAction, 'active_admin/controller_action'
|
|
28
|
+
autoload :CSVBuilder, 'active_admin/csv_builder'
|
|
29
|
+
autoload :Deprecation, 'active_admin/deprecation'
|
|
30
|
+
autoload :Devise, 'active_admin/devise'
|
|
31
|
+
autoload :DSL, 'active_admin/dsl'
|
|
32
|
+
autoload :Event, 'active_admin/event'
|
|
33
|
+
autoload :FormBuilder, 'active_admin/form_builder'
|
|
34
|
+
autoload :Inputs, 'active_admin/inputs'
|
|
35
|
+
autoload :Iconic, 'active_admin/iconic'
|
|
36
|
+
autoload :Menu, 'active_admin/menu'
|
|
37
|
+
autoload :MenuCollection, 'active_admin/menu_collection'
|
|
38
|
+
autoload :MenuItem, 'active_admin/menu_item'
|
|
39
|
+
autoload :Namespace, 'active_admin/namespace'
|
|
40
|
+
autoload :Page, 'active_admin/page'
|
|
41
|
+
autoload :PagePresenter, 'active_admin/page_presenter'
|
|
42
|
+
autoload :PageController, 'active_admin/page_controller'
|
|
43
|
+
autoload :PageDSL, 'active_admin/page_dsl'
|
|
44
|
+
autoload :Reloader, 'active_admin/reloader'
|
|
45
|
+
autoload :Resource, 'active_admin/resource'
|
|
46
|
+
autoload :ResourceController, 'active_admin/resource_controller'
|
|
47
|
+
autoload :ResourceDSL, 'active_admin/resource_dsl'
|
|
48
|
+
autoload :Scope, 'active_admin/scope'
|
|
49
|
+
autoload :ScopeChain, 'active_admin/helpers/scope_chain'
|
|
50
|
+
autoload :SidebarSection, 'active_admin/sidebar_section'
|
|
51
|
+
autoload :TableBuilder, 'active_admin/table_builder'
|
|
52
|
+
autoload :ViewFactory, 'active_admin/view_factory'
|
|
53
|
+
autoload :ViewHelpers, 'active_admin/view_helpers'
|
|
54
|
+
autoload :Views, 'active_admin/views'
|
|
55
|
+
|
|
56
|
+
class << self
|
|
57
|
+
|
|
58
|
+
attr_accessor :application
|
|
59
|
+
|
|
60
|
+
def application
|
|
61
|
+
@application ||= ::ActiveAdmin::Application.new
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Gets called within the initializer
|
|
65
|
+
def setup
|
|
66
|
+
application.setup!
|
|
67
|
+
yield(application)
|
|
68
|
+
application.prepare!
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
delegate :register, :to => :application
|
|
72
|
+
delegate :register_page, :to => :application
|
|
73
|
+
delegate :unload!, :to => :application
|
|
74
|
+
delegate :load!, :to => :application
|
|
75
|
+
delegate :routes, :to => :application
|
|
76
|
+
|
|
77
|
+
# A callback is triggered each time (before) Active Admin loads the configuration files.
|
|
78
|
+
# In development mode, this will happen whenever the user changes files. In production
|
|
79
|
+
# it only happens on boot.
|
|
80
|
+
#
|
|
81
|
+
# The block takes the current instance of [ActiveAdmin::Application]
|
|
82
|
+
#
|
|
83
|
+
# Example:
|
|
84
|
+
#
|
|
85
|
+
# ActiveAdmin.before_load do |app|
|
|
86
|
+
# # Do some stuff before AA loads
|
|
87
|
+
# end
|
|
88
|
+
#
|
|
89
|
+
# @param [Block] block A block to call each time (before) AA loads resources
|
|
90
|
+
def before_load(&block)
|
|
91
|
+
ActiveAdmin::Event.subscribe ActiveAdmin::Application::BeforeLoadEvent, &block
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# A callback is triggered each time (after) Active Admin loads the configuration files. This
|
|
95
|
+
# is an opportunity to hook into Resources after they've been loaded.
|
|
96
|
+
#
|
|
97
|
+
# The block takes the current instance of [ActiveAdmin::Application]
|
|
98
|
+
#
|
|
99
|
+
# Example:
|
|
100
|
+
#
|
|
101
|
+
# ActiveAdmin.after_load do |app|
|
|
102
|
+
# app.namespaces.each do |name, namespace|
|
|
103
|
+
# puts "Namespace: #{name} loaded!"
|
|
104
|
+
# end
|
|
105
|
+
# end
|
|
106
|
+
#
|
|
107
|
+
# @param [Block] block A block to call each time (after) AA loads resources
|
|
108
|
+
def after_load(&block)
|
|
109
|
+
ActiveAdmin::Event.subscribe ActiveAdmin::Application::AfterLoadEvent, &block
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Require internal plugins
|
|
117
|
+
require 'active_admin/batch_actions'
|
|
118
|
+
require 'active_admin/filters'
|
|
119
|
+
|
|
120
|
+
# Require ORM-specific plugins
|
|
121
|
+
require 'active_admin/orm/active_record' if defined? ActiveRecord
|
|
122
|
+
require 'active_admin/orm/mongoid' if defined? Mongoid
|
|
123
|
+
|
|
124
|
+
# Load gem-specific code only if that gem is being used
|
|
125
|
+
require 'active_admin/cancan_adapter' if Gem.loaded_specs['cancan']
|
data/lib/activeadmin.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'active_admin'
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Generators
|
|
3
|
+
class AssetsGenerator < Rails::Generators::Base
|
|
4
|
+
|
|
5
|
+
def self.source_root
|
|
6
|
+
@_active_admin_source_root ||= File.expand_path("../templates", __FILE__)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def install_assets
|
|
10
|
+
template 'active_admin.js.coffee', 'app/assets/javascripts/active_admin.js.coffee'
|
|
11
|
+
template 'active_admin.css.scss', 'app/assets/stylesheets/active_admin.css.scss'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SASS variable overrides must be declared before loading up Active Admin's styles.
|
|
2
|
+
//
|
|
3
|
+
// To view the variables that Active Admin provides, take a look at
|
|
4
|
+
// `app/assets/stylesheets/active_admin/mixins/_variables.css.scss` in the
|
|
5
|
+
// Active Admin source.
|
|
6
|
+
//
|
|
7
|
+
// For example, to change the sidebar width:
|
|
8
|
+
// $sidebar-width: 242px;
|
|
9
|
+
|
|
10
|
+
// Active Admin's got SASS!
|
|
11
|
+
@import "active_admin/mixins";
|
|
12
|
+
@import "active_admin/base";
|
|
13
|
+
|
|
14
|
+
// Overriding any non-variable SASS must be done after the fact.
|
|
15
|
+
// For example, to change the default status-tag color:
|
|
16
|
+
//
|
|
17
|
+
// .status_tag { background: #6090DB; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#= require active_admin/base
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Generators
|
|
3
|
+
class Error < Rails::Generators::Error
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
class DeviseGenerator < Rails::Generators::NamedBase
|
|
7
|
+
desc "Creates an admin user and uses Devise for authentication"
|
|
8
|
+
argument :name, :type => :string, :default => "AdminUser"
|
|
9
|
+
|
|
10
|
+
class_option :registerable, :type => :boolean, :default => false,
|
|
11
|
+
:desc => "Should the generated resource be registerable?"
|
|
12
|
+
|
|
13
|
+
RESERVED_NAMES = [:active_admin_user]
|
|
14
|
+
|
|
15
|
+
def install_devise
|
|
16
|
+
require 'devise'
|
|
17
|
+
if File.exists?(File.join(destination_root, "config", "initializers", "devise.rb"))
|
|
18
|
+
log :generate, "No need to install devise, already done."
|
|
19
|
+
else
|
|
20
|
+
log :generate, "devise:install"
|
|
21
|
+
invoke "devise:install"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def create_admin_user
|
|
26
|
+
if RESERVED_NAMES.include?(name.underscore)
|
|
27
|
+
raise Error, "The name #{name} is reserved by Active Admin"
|
|
28
|
+
end
|
|
29
|
+
invoke "devise", [name]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def remove_registerable_from_model
|
|
33
|
+
unless options[:registerable]
|
|
34
|
+
model_file = File.join(destination_root, "app", "models", "#{file_path}.rb")
|
|
35
|
+
gsub_file model_file, /\:registerable([.]*,)?/, ""
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# This fixes a bug in the 3.0.0 release of Devise. For more info:
|
|
40
|
+
# https://github.com/plataformatec/devise/issues/2515
|
|
41
|
+
def add_attr_accessible_if_missing
|
|
42
|
+
require 'devise/version'
|
|
43
|
+
if ::Devise::VERSION == '3.0.0'
|
|
44
|
+
if Rails::VERSION::MAJOR == 3 && !defined?(ActionController::StrongParameters)
|
|
45
|
+
model = File.join(destination_root, "app", "models", "#{file_path}.rb")
|
|
46
|
+
inject_into_file model, "\n attr_accessible :email, :password, :password_confirmation, :remember_me\n",
|
|
47
|
+
:before => /end\s*\z/
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def add_attr_accessible_if_needed
|
|
53
|
+
unless Rails::VERSION::MAJOR > 3 && !defined? ProtectedAttributes
|
|
54
|
+
model_file = File.join(destination_root, "app", "models", "#{file_path}.rb")
|
|
55
|
+
inject_into_file model_file, " attr_accessible :email, :password, :password_confirmation, :remember_me\n", before: /end\n*\z/
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def set_namespace_for_path
|
|
60
|
+
routes_file = File.join(destination_root, "config", "routes.rb")
|
|
61
|
+
gsub_file routes_file, /devise_for :#{plural_table_name}$/, "devise_for :#{plural_table_name}, ActiveAdmin::Devise.config"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def add_default_user_to_migration
|
|
65
|
+
# Don't assume that we have a migration!
|
|
66
|
+
devise_migration_file = Dir["db/migrate/*_devise_create_#{table_name}.rb"].first
|
|
67
|
+
return if devise_migration_file.nil?
|
|
68
|
+
|
|
69
|
+
devise_migration_content = File.read(devise_migration_file)
|
|
70
|
+
|
|
71
|
+
if devise_migration_content["def change"]
|
|
72
|
+
inject_into_file devise_migration_file,
|
|
73
|
+
"def migrate(direction)\n super\n # Create a default user\n #{class_name}.create!(:email => 'admin@example.com', :password => 'password', :password_confirmation => 'password') if direction == :up\n end\n\n ",
|
|
74
|
+
:before => "def change"
|
|
75
|
+
elsif devise_migration_content[/def (self.)?up/]
|
|
76
|
+
inject_into_file devise_migration_file,
|
|
77
|
+
"# Create a default user\n #{class_name}.create!(:email => 'admin@example.com', :password => 'password', :password_confirmation => 'password')\n\n ",
|
|
78
|
+
:before => "add_index :#{table_name}, :email"
|
|
79
|
+
else
|
|
80
|
+
puts devise_migration_content
|
|
81
|
+
raise "Failed to add default admin user to migration."
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'rails/generators/active_record'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
module Generators
|
|
5
|
+
class InstallGenerator < ActiveRecord::Generators::Base
|
|
6
|
+
desc "Installs Active Admin and generates the necessary migrations"
|
|
7
|
+
argument :name, :type => :string, :default => "AdminUser"
|
|
8
|
+
|
|
9
|
+
hook_for :users, :default => "devise", :desc => "Admin user generator to run. Skip with --skip-users"
|
|
10
|
+
|
|
11
|
+
def self.source_root
|
|
12
|
+
@_active_admin_source_root ||= File.expand_path("../templates", __FILE__)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def copy_initializer
|
|
16
|
+
@underscored_user_name = name.underscore
|
|
17
|
+
template 'active_admin.rb.erb', 'config/initializers/active_admin.rb'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def setup_directory
|
|
21
|
+
empty_directory "app/admin"
|
|
22
|
+
template 'dashboard.rb', 'app/admin/dashboard.rb'
|
|
23
|
+
if options[:users].present?
|
|
24
|
+
@user_class = name
|
|
25
|
+
template 'admin_user.rb.erb', "app/admin/#{name.underscore}.rb"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def setup_routes
|
|
30
|
+
if ARGV.include? "--skip-users"
|
|
31
|
+
route "ActiveAdmin.routes(self)"
|
|
32
|
+
else # Ensure Active Admin routes occur after Devise routes so that Devise has higher priority
|
|
33
|
+
inject_into_file "config/routes.rb", "\n ActiveAdmin.routes(self)", :after => /devise_for.*/
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def create_assets
|
|
38
|
+
generate "active_admin:assets"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def create_migrations
|
|
42
|
+
migration_template 'migrations/create_active_admin_comments.rb', 'db/migrate/create_active_admin_comments.rb'
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|