andrewroth_activeadmin 0.3.4
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.
- data/.document +5 -0
- data/.gitignore +35 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +301 -0
- data/Gemfile +40 -0
- data/Guardfile +8 -0
- data/LICENSE +25 -0
- data/README.rdoc +113 -0
- data/Rakefile +18 -0
- data/activeadmin.gemspec +28 -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/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/base.js +12 -0
- data/app/assets/javascripts/active_admin/vendor.js +382 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +363 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -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 +34 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -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 +16 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
- data/app/views/active_admin/devise/shared/_links.erb +20 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -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 +35 -0
- data/cucumber.yml +2 -0
- data/docs/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -0
- data/docs/2-resource-customization.md +114 -0
- data/docs/3-index-pages.md +55 -0
- data/docs/3-index-pages/index-as-block.md +16 -0
- data/docs/3-index-pages/index-as-blog.md +61 -0
- data/docs/3-index-pages/index-as-grid.md +21 -0
- data/docs/3-index-pages/index-as-table.md +90 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +36 -0
- data/docs/7-sidebars.md +35 -0
- data/docs/8-custom-actions.md +123 -0
- data/features/comments/commenting.feature +112 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +26 -0
- data/features/edit_page.feature +106 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/filters.feature +35 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +12 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +50 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +81 -0
- data/features/index/index_blank_slate.feature +56 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +37 -0
- data/features/new_page.feature +75 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_resources.feature +33 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +33 -0
- data/features/sidebar_sections.feature +127 -0
- data/features/specifying_actions.feature +87 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +77 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/dashboard_steps.rb +11 -0
- data/features/step_definitions/factory_steps.rb +29 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +35 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +7 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +7 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +26 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/sti_resource.feature +61 -0
- data/features/support/env.rb +96 -0
- data/features/support/paths.rb +50 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +82 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +231 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/builder.rb +111 -0
- data/lib/active_admin/arbre/context.rb +45 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/html/attributes.rb +20 -0
- data/lib/active_admin/arbre/html/class_list.rb +28 -0
- data/lib/active_admin/arbre/html/collection.rb +27 -0
- data/lib/active_admin/arbre/html/document.rb +42 -0
- data/lib/active_admin/arbre/html/element.rb +151 -0
- data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/html/tag.rb +137 -0
- data/lib/active_admin/arbre/html/text_node.rb +35 -0
- data/lib/active_admin/asset_registration.rb +34 -0
- data/lib/active_admin/callbacks.rb +89 -0
- data/lib/active_admin/comments.rb +88 -0
- data/lib/active_admin/comments/comment.rb +21 -0
- data/lib/active_admin/comments/configuration.rb +18 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +48 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
- data/lib/active_admin/dashboards/section.rb +34 -0
- data/lib/active_admin/dependency_checker.rb +30 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +54 -0
- data/lib/active_admin/dsl.rb +224 -0
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +118 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/bg.yml +40 -0
- data/lib/active_admin/locales/cs.yml +34 -0
- data/lib/active_admin/locales/da.yml +28 -0
- data/lib/active_admin/locales/en.yml +40 -0
- data/lib/active_admin/locales/es.yml +40 -0
- data/lib/active_admin/locales/fr.yml +40 -0
- data/lib/active_admin/locales/it.yml +40 -0
- data/lib/active_admin/locales/ja.yml +40 -0
- data/lib/active_admin/locales/pl.yml +34 -0
- data/lib/active_admin/locales/pt-BR.yml +41 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/sv-SE.yml +40 -0
- data/lib/active_admin/locales/zh_cn.yml +40 -0
- data/lib/active_admin/menu.rb +42 -0
- data/lib/active_admin/menu_item.rb +73 -0
- data/lib/active_admin/namespace.rb +206 -0
- data/lib/active_admin/page_config.rb +15 -0
- data/lib/active_admin/reloader.rb +64 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +159 -0
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +50 -0
- data/lib/active_admin/resource/scopes.rb +33 -0
- data/lib/active_admin/resource/sidebars.rb +36 -0
- data/lib/active_admin/resource_controller.rb +105 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +79 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +138 -0
- data/lib/active_admin/resource_controller/filters.rb +58 -0
- data/lib/active_admin/resource_controller/form.rb +42 -0
- data/lib/active_admin/resource_controller/menu.rb +29 -0
- data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
- data/lib/active_admin/resource_controller/scoping.rb +36 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/router.rb +85 -0
- data/lib/active_admin/sass/active_admin.scss +3 -0
- data/lib/active_admin/sass/css_loader.rb +16 -0
- data/lib/active_admin/sass/helpers.rb +45 -0
- data/lib/active_admin/scope.rb +31 -0
- data/lib/active_admin/sidebar_section.rb +41 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +23 -0
- data/lib/active_admin/view_helpers.rb +22 -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 +42 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
- data/lib/active_admin/view_helpers/display_helper.rb +38 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
- data/lib/active_admin/view_helpers/form_helper.rb +13 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
- data/lib/active_admin/view_helpers/renderer_helper.rb +29 -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/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/attributes_table.rb +66 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +47 -0
- data/lib/active_admin/views/components/paginated_collection.rb +92 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +69 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +193 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +57 -0
- data/lib/active_admin/views/index_as_block.rb +29 -0
- data/lib/active_admin/views/index_as_blog.rb +129 -0
- data/lib/active_admin/views/index_as_grid.rb +70 -0
- data/lib/active_admin/views/index_as_table.rb +164 -0
- data/lib/active_admin/views/pages/base.rb +167 -0
- data/lib/active_admin/views/pages/dashboard.rb +62 -0
- data/lib/active_admin/views/pages/edit.rb +28 -0
- data/lib/active_admin/views/pages/index.rb +91 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +28 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabbed_navigation.rb +94 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
- data/lib/generators/active_admin/install/install_generator.rb +44 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +103 -0
- data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/script/local +44 -0
- data/script/use_rails +46 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/default_namespace.rb +77 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/memory_spec.rb +38 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +167 -0
- data/spec/support/detect_rails_version.rb +10 -0
- data/spec/support/integration_example_group.rb +33 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +32 -0
- data/spec/support/rails_template_with_data.rb +33 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +88 -0
- data/spec/unit/active_admin_spec.rb +17 -0
- data/spec/unit/application_spec.rb +87 -0
- data/spec/unit/arbre/context_spec.rb +35 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +223 -0
- data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
- data/spec/unit/arbre/html/tag_spec.rb +63 -0
- data/spec/unit/arbre/html_spec.rb +209 -0
- data/spec/unit/asset_registration_spec.rb +37 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/belongs_to_spec.rb +45 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +57 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/controller_filters_spec.rb +34 -0
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +56 -0
- data/spec/unit/dashboards_spec.rb +59 -0
- data/spec/unit/devise_spec.rb +66 -0
- data/spec/unit/display_name_spec.rb +29 -0
- data/spec/unit/event_spec.rb +41 -0
- data/spec/unit/filter_form_builder_spec.rb +182 -0
- data/spec/unit/form_builder_spec.rb +256 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +53 -0
- data/spec/unit/namespace_spec.rb +214 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +76 -0
- data/spec/unit/reloader_spec.rb +80 -0
- data/spec/unit/renderer_spec.rb +108 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +80 -0
- data/spec/unit/resource/naming_spec.rb +75 -0
- data/spec/unit/resource/scopes_spec.rb +30 -0
- data/spec/unit/resource/sidebars_spec.rb +50 -0
- data/spec/unit/resource_controller/collection_spec.rb +34 -0
- data/spec/unit/resource_controller_spec.rb +152 -0
- data/spec/unit/resource_spec.rb +269 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +41 -0
- data/spec/unit/view_factory_spec.rb +19 -0
- data/spec/unit/views/components/attributes_table_spec.rb +100 -0
- data/spec/unit/views/components/blank_slate_spec.rb +15 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +29 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/views/components/table_for_spec.rb +131 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +57 -0
- data/tasks/yard.rake +6 -0
- metadata +646 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
require 'active_admin/router'
|
|
2
|
+
require 'active_admin/helpers/settings'
|
|
3
|
+
|
|
4
|
+
module ActiveAdmin
|
|
5
|
+
class Application
|
|
6
|
+
include Settings
|
|
7
|
+
|
|
8
|
+
# The default namespace to put controllers and routes inside. Set this
|
|
9
|
+
# in config/initializers/active_admin.rb using:
|
|
10
|
+
#
|
|
11
|
+
# config.default_namespace = :super_admin
|
|
12
|
+
#
|
|
13
|
+
setting :default_namespace, :admin
|
|
14
|
+
|
|
15
|
+
# The default number of resources to display on index pages
|
|
16
|
+
setting :default_per_page, 30
|
|
17
|
+
|
|
18
|
+
# A hash of all the registered namespaces
|
|
19
|
+
setting :namespaces, {}
|
|
20
|
+
|
|
21
|
+
# The title which gets displayed in the main layout
|
|
22
|
+
setting :site_title, ""
|
|
23
|
+
|
|
24
|
+
# Set the site title link href (defaults to AA dashboard)
|
|
25
|
+
setting :site_title_link, ""
|
|
26
|
+
|
|
27
|
+
# Load paths for admin configurations. Add folders to this load path
|
|
28
|
+
# to load up other resources for administration. External gems can
|
|
29
|
+
# include their paths in this load path to provide active_admin UIs
|
|
30
|
+
setting :load_paths, [File.expand_path('app/admin', Rails.root)]
|
|
31
|
+
|
|
32
|
+
# The view factory to use to generate all the view classes. Take
|
|
33
|
+
# a look at ActiveAdmin::ViewFactory
|
|
34
|
+
setting :view_factory, ActiveAdmin::ViewFactory.new
|
|
35
|
+
|
|
36
|
+
# The method to call in controllers to get the current user
|
|
37
|
+
setting :current_user_method, false
|
|
38
|
+
|
|
39
|
+
# The method to call in the controllers to ensure that there
|
|
40
|
+
# is a currently authenticated admin user
|
|
41
|
+
setting :authentication_method, false
|
|
42
|
+
|
|
43
|
+
# The path to log user's out with. If set to a symbol, we assume
|
|
44
|
+
# that it's a method to call which returns the path
|
|
45
|
+
setting :logout_link_path, :destroy_admin_user_session_path
|
|
46
|
+
|
|
47
|
+
# The method to use when generating the link for user logout
|
|
48
|
+
setting :logout_link_method, :get
|
|
49
|
+
|
|
50
|
+
# Active Admin makes educated guesses when displaying objects, this is
|
|
51
|
+
# the list of methods it tries calling in order
|
|
52
|
+
setting :display_name_methods, [ :display_name,
|
|
53
|
+
:full_name,
|
|
54
|
+
:name,
|
|
55
|
+
:username,
|
|
56
|
+
:login,
|
|
57
|
+
:title,
|
|
58
|
+
:email,
|
|
59
|
+
:to_s ]
|
|
60
|
+
|
|
61
|
+
# == Deprecated Settings
|
|
62
|
+
|
|
63
|
+
# @deprecated The default sort order for index pages
|
|
64
|
+
deprecated_setting :default_sort_order, 'id_desc'
|
|
65
|
+
|
|
66
|
+
# DEPRECATED: This option is deprecated and will be removed. Use
|
|
67
|
+
# the #allow_comments_in option instead
|
|
68
|
+
attr_accessor :admin_notes
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
include AssetRegistration
|
|
72
|
+
|
|
73
|
+
def initialize
|
|
74
|
+
register_default_assets
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def prepare!
|
|
78
|
+
remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
|
79
|
+
attach_reloader
|
|
80
|
+
generate_stylesheets
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Registers a brand new configuration for the given resource.
|
|
84
|
+
def register(resource, options = {}, &block)
|
|
85
|
+
namespace_name = options.has_key?(:namespace) ? options[:namespace] : default_namespace
|
|
86
|
+
namespace = find_or_create_namespace(namespace_name)
|
|
87
|
+
namespace.register(resource, options, &block)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Creates a namespace for the given name
|
|
91
|
+
def find_or_create_namespace(name)
|
|
92
|
+
name ||= :root
|
|
93
|
+
return namespaces[name] if namespaces[name]
|
|
94
|
+
namespace = Namespace.new(self, name)
|
|
95
|
+
ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace
|
|
96
|
+
namespaces[name] = namespace
|
|
97
|
+
namespace
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# Stores if everything has been loaded or we need to reload
|
|
102
|
+
@@loaded = false
|
|
103
|
+
|
|
104
|
+
# Returns true if all the configuration files have been loaded.
|
|
105
|
+
def loaded?
|
|
106
|
+
@@loaded
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Removes all the controllers that were defined by registering
|
|
110
|
+
# resources for administration.
|
|
111
|
+
#
|
|
112
|
+
# We remove them, then load them on each request in development
|
|
113
|
+
# to allow for changes without having to restart the server.
|
|
114
|
+
def unload!
|
|
115
|
+
namespaces.values.each{|namespace| namespace.unload! }
|
|
116
|
+
self.namespaces = {}
|
|
117
|
+
@@loaded = false
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Loads all of the ruby files that are within the load path of
|
|
121
|
+
# ActiveAdmin.load_paths. This should load all of the administration
|
|
122
|
+
# UIs so that they are available for the router to proceed.
|
|
123
|
+
#
|
|
124
|
+
# The files are only loaded if we haven't already loaded all the files
|
|
125
|
+
# and they aren't marked for re-loading. To mark the files for re-loading
|
|
126
|
+
# you must first call ActiveAdmin.unload!
|
|
127
|
+
def load!
|
|
128
|
+
# No work to do if we've already loaded
|
|
129
|
+
return false if loaded?
|
|
130
|
+
|
|
131
|
+
# Load files
|
|
132
|
+
files_in_load_path.each{|file| load file }
|
|
133
|
+
|
|
134
|
+
# If no configurations, let's make sure you can still login
|
|
135
|
+
load_default_namespace if namespaces.values.empty?
|
|
136
|
+
|
|
137
|
+
# Load Menus
|
|
138
|
+
namespaces.values.each{|namespace| namespace.load_menu! }
|
|
139
|
+
|
|
140
|
+
@@loaded = true
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Returns ALL the files to load from all the load paths
|
|
144
|
+
def files_in_load_path
|
|
145
|
+
load_paths.flatten.compact.uniq.collect{|path| Dir["#{path}/**/*.rb"] }.flatten
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def router
|
|
149
|
+
@router ||= Router.new(self)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def routes(rails_router)
|
|
153
|
+
# Ensure that all the configurations (which define the routes)
|
|
154
|
+
# are all loaded
|
|
155
|
+
load!
|
|
156
|
+
|
|
157
|
+
router.apply(rails_router)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def load_default_namespace
|
|
161
|
+
find_or_create_namespace(default_namespace)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
#
|
|
165
|
+
# Add before, around and after filters to each registered resource.
|
|
166
|
+
#
|
|
167
|
+
# eg:
|
|
168
|
+
#
|
|
169
|
+
# ActiveAdmin.before_filter :authenticate_admin!
|
|
170
|
+
#
|
|
171
|
+
def before_filter(*args, &block)
|
|
172
|
+
ResourceController.before_filter(*args, &block)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def skip_before_filter(*args, &block)
|
|
176
|
+
ResourceController.skip_before_filter(*args, &block)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def after_filter(*args, &block)
|
|
180
|
+
ResourceController.after_filter(*args, &block)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def around_filter(*args, &block)
|
|
184
|
+
ResourceController.around_filter(*args, &block)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Helper method to add a dashboard section
|
|
188
|
+
def dashboard_section(name, options = {}, &block)
|
|
189
|
+
ActiveAdmin::Dashboards.add_section(name, options, &block)
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
private
|
|
193
|
+
|
|
194
|
+
def register_default_assets
|
|
195
|
+
register_stylesheet 'active_admin.css'
|
|
196
|
+
register_javascript 'active_admin.js'
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Since we're dealing with all our own file loading, we need
|
|
200
|
+
# to remove our paths from the ActiveSupport autoload paths.
|
|
201
|
+
# If not, file naming becomes very important and can cause clashes.
|
|
202
|
+
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
|
203
|
+
ActiveSupport::Dependencies.autoload_paths.reject!{|path| load_paths.include?(path) }
|
|
204
|
+
# Don't eagerload our configs, we'll deal with them ourselves
|
|
205
|
+
Rails.application.config.eager_load_paths = Rails.application.config.eager_load_paths.reject do |path|
|
|
206
|
+
load_paths.include?(path)
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def attach_reloader
|
|
211
|
+
ActiveAdmin::Reloader.new(Rails.application, self, Rails.version).attach!
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def generate_stylesheets
|
|
216
|
+
# This must be required after initialization
|
|
217
|
+
require 'sass/plugin'
|
|
218
|
+
require 'active_admin/sass/helpers'
|
|
219
|
+
|
|
220
|
+
# Create our own asset pipeline in Rails 3.0
|
|
221
|
+
if ActiveAdmin.use_asset_pipeline?
|
|
222
|
+
# Add our mixins to the load path for SASS
|
|
223
|
+
::Sass::Engine::DEFAULT_OPTIONS[:load_paths] << File.expand_path("../../../app/assets/stylesheets", __FILE__)
|
|
224
|
+
else
|
|
225
|
+
require 'active_admin/sass/css_loader'
|
|
226
|
+
::Sass::Plugin.add_template_location(File.expand_path("../../../app/assets/stylesheets", __FILE__))
|
|
227
|
+
::Sass::Plugin.add_template_location(File.expand_path("../sass", __FILE__))
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require "active_admin/arbre/builder"
|
|
2
|
+
require "active_admin/arbre/core_extensions"
|
|
3
|
+
require "active_admin/arbre/context"
|
|
4
|
+
require "active_admin/arbre/html/element"
|
|
5
|
+
require "active_admin/arbre/html/attributes"
|
|
6
|
+
require "active_admin/arbre/html/collection"
|
|
7
|
+
require "active_admin/arbre/html/class_list"
|
|
8
|
+
require "active_admin/arbre/html/tag"
|
|
9
|
+
require "active_admin/arbre/html/document"
|
|
10
|
+
require "active_admin/arbre/html/html5_elements"
|
|
11
|
+
require "active_admin/arbre/html/text_node"
|
|
12
|
+
|
|
13
|
+
# Arbre - The DOM Tree in Ruby
|
|
14
|
+
#
|
|
15
|
+
# Arbre is a ruby library for building HTML in pure Object Oriented Ruby
|
|
16
|
+
module Arbre
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
require 'action_view'
|
|
20
|
+
|
|
21
|
+
ActionView::Template.register_template_handler :arb, lambda { |template|
|
|
22
|
+
"self.class.send :include, Arbre::Builder; @_helpers = self; @__current_dom_element__ = Arbre::Context.new(assigns, self); begin; #{template.source}; end; current_dom_context"
|
|
23
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
module Arbre
|
|
2
|
+
|
|
3
|
+
# Include this module in any context to start building html.
|
|
4
|
+
#
|
|
5
|
+
# assigns = {}
|
|
6
|
+
# include Arbre::Builder
|
|
7
|
+
# span("foo").to_s #=> "<span>foo</span>
|
|
8
|
+
#
|
|
9
|
+
# When you include the module, you are required to setup 2 variables:
|
|
10
|
+
#
|
|
11
|
+
# * assigns: This is a hash that includes local variables
|
|
12
|
+
# * helpers: This is an object that provides helper methods to all
|
|
13
|
+
# objects within the context.
|
|
14
|
+
module Builder
|
|
15
|
+
|
|
16
|
+
# Retrieve the current DOM context.
|
|
17
|
+
#
|
|
18
|
+
# If no `@__current_dom_element__` has been set, this method will
|
|
19
|
+
# setup the initial context.
|
|
20
|
+
#
|
|
21
|
+
# @return [Arbre::Element] the current element that is in context
|
|
22
|
+
def current_dom_context
|
|
23
|
+
@__current_dom_element__ ||= Arbre::Context.new(assigns, helpers)
|
|
24
|
+
@__current_dom_element__.current_dom_context
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def helpers
|
|
28
|
+
@_helpers
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Implements the method lookup chain. When you call a method that
|
|
32
|
+
# doesn't exist, we:
|
|
33
|
+
#
|
|
34
|
+
# 1. Try to call the method on the current DOM context
|
|
35
|
+
# 2. Return an assigned variable of the same name
|
|
36
|
+
# 3. Call the method on the helper object
|
|
37
|
+
# 4. Call super
|
|
38
|
+
#
|
|
39
|
+
def method_missing(name, *args, &block)
|
|
40
|
+
if current_dom_context.respond_to?(name)
|
|
41
|
+
current_dom_context.send name, *args, &block
|
|
42
|
+
elsif assigns && assigns.has_key?(name)
|
|
43
|
+
assigns[name]
|
|
44
|
+
elsif helpers.respond_to?(name)
|
|
45
|
+
helpers.send(name, *args, &block)
|
|
46
|
+
else
|
|
47
|
+
super
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
module BuilderMethods
|
|
52
|
+
def build_tag(klass, *args, &block)
|
|
53
|
+
tag = klass.new(assigns, helpers)
|
|
54
|
+
|
|
55
|
+
# If you passed in a block and want the object
|
|
56
|
+
if block_given? && block.arity > 0
|
|
57
|
+
# Set out context to the tag, and pass responsibility to the tag
|
|
58
|
+
with_current_dom_context tag do
|
|
59
|
+
tag.build(*args, &block)
|
|
60
|
+
end
|
|
61
|
+
else
|
|
62
|
+
# Build the tag
|
|
63
|
+
tag.build(*args)
|
|
64
|
+
|
|
65
|
+
# Render the blocks contents
|
|
66
|
+
if block_given?
|
|
67
|
+
with_current_dom_context tag do
|
|
68
|
+
insert_text_node_if_string(yield)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
tag
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def insert_tag(klass, *args, &block)
|
|
77
|
+
tag = build_tag(klass, *args, &block)
|
|
78
|
+
current_dom_context.add_child(tag)
|
|
79
|
+
tag
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def current_dom_context
|
|
83
|
+
@__current_dom_element_buffer__ ||= [self]
|
|
84
|
+
current_element = @__current_dom_element_buffer__.last
|
|
85
|
+
if current_element == self
|
|
86
|
+
self
|
|
87
|
+
else
|
|
88
|
+
current_element.current_dom_context
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def with_current_dom_context(tag)
|
|
93
|
+
raise ArgumentError, "Can't be in the context of nil. #{@__current_dom_element_buffer__.inspect}" unless tag
|
|
94
|
+
current_dom_context # Ensure a context is setup
|
|
95
|
+
@__current_dom_element_buffer__.push tag
|
|
96
|
+
yield
|
|
97
|
+
@__current_dom_element_buffer__.pop
|
|
98
|
+
end
|
|
99
|
+
alias_method :within, :with_current_dom_context
|
|
100
|
+
|
|
101
|
+
# Inserts a text node if the tag is a string
|
|
102
|
+
def insert_text_node_if_string(tag)
|
|
103
|
+
if tag.is_a?(String)
|
|
104
|
+
current_dom_context << Arbre::HTML::TextNode.from_string(tag)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'active_admin/arbre/html/element'
|
|
2
|
+
|
|
3
|
+
module Arbre
|
|
4
|
+
class Context < Arbre::HTML::Element
|
|
5
|
+
def indent_level
|
|
6
|
+
# A context does not increment the indent_level
|
|
7
|
+
super - 1
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def bytesize
|
|
11
|
+
cached_html.bytesize
|
|
12
|
+
end
|
|
13
|
+
alias :length :bytesize
|
|
14
|
+
|
|
15
|
+
def respond_to?(method)
|
|
16
|
+
super || cached_html.respond_to?(method)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Webservers treat Arbre::Context as a string. We override
|
|
20
|
+
# method_missing to delegate to the string representation
|
|
21
|
+
# of the html.
|
|
22
|
+
def method_missing(method, *args, &block)
|
|
23
|
+
if cached_html.respond_to? method
|
|
24
|
+
cached_html.send method, *args, &block
|
|
25
|
+
else
|
|
26
|
+
super
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
# Caches the rendered HTML so that we don't re-render just to
|
|
33
|
+
# get the content lenght or to delegate a method to the HTML
|
|
34
|
+
def cached_html
|
|
35
|
+
if defined?(@cached_html)
|
|
36
|
+
@cached_html
|
|
37
|
+
else
|
|
38
|
+
html = to_html
|
|
39
|
+
@cached_html = html if html.length > 0
|
|
40
|
+
html
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Arbre
|
|
2
|
+
module HTML
|
|
3
|
+
|
|
4
|
+
class Attributes < Hash
|
|
5
|
+
|
|
6
|
+
def to_html
|
|
7
|
+
self.collect do |name, value|
|
|
8
|
+
"#{html_escape(name)}=\"#{html_escape(value)}\""
|
|
9
|
+
end.join(" ")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
protected
|
|
13
|
+
|
|
14
|
+
def html_escape(s)
|
|
15
|
+
ERB::Util.html_escape(s)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'set'
|
|
2
|
+
|
|
3
|
+
module Arbre
|
|
4
|
+
module HTML
|
|
5
|
+
|
|
6
|
+
# Holds a set of classes
|
|
7
|
+
class ClassList < Set
|
|
8
|
+
|
|
9
|
+
def add(class_names)
|
|
10
|
+
class_names.to_s.split(" ").each do |class_name|
|
|
11
|
+
super(class_name)
|
|
12
|
+
end
|
|
13
|
+
self
|
|
14
|
+
end
|
|
15
|
+
alias :<< :add
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
to_html
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def to_html
|
|
22
|
+
to_a.join(" ")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|