nsm-activeadmin 0.2.2
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 +34 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.rdoc +76 -0
- data/Gemfile +39 -0
- data/LICENSE +25 -0
- data/README.rdoc +487 -0
- data/Rakefile +27 -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 +400 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +110 -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/_comments.css.scss +40 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -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/_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/1-general-configuration.md +52 -0
- data/docs/2-resource-customization.md +35 -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 +74 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +22 -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/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 +55 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +26 -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 +90 -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 +74 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +228 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/attributes.rb +20 -0
- data/lib/active_admin/arbre/class_list.rb +28 -0
- data/lib/active_admin/arbre/collection.rb +27 -0
- data/lib/active_admin/arbre/context.rb +14 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/document.rb +42 -0
- data/lib/active_admin/arbre/element.rb +151 -0
- data/lib/active_admin/arbre/html.rb +84 -0
- data/lib/active_admin/arbre/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/tag.rb +137 -0
- data/lib/active_admin/arbre/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/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +43 -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 +109 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/settings.rb +63 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -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 +39 -0
- data/lib/active_admin/locales/it.yml +39 -0
- data/lib/active_admin/locales/pt-BR.yml +36 -0
- data/lib/active_admin/locales/ru.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 +30 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +151 -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 +36 -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 +103 -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 +144 -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 +40 -0
- data/lib/active_admin/scope.rb +17 -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 +33 -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 +70 -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 +53 -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 +148 -0
- data/lib/active_admin/views/pages/base.rb +155 -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 +74 -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/tabs_renderer.rb +58 -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 +93 -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 +45 -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/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +157 -0
- data/spec/support/detect_rails_version.rb +11 -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/application_spec.rb +78 -0
- data/spec/unit/arbre/html/context_spec.rb +22 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +224 -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 +210 -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/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 +239 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -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 +28 -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 +56 -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 +260 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +85 -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 +31 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +31 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +81 -0
- data/spec/unit/views/components/table_for_spec.rb +130 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +49 -0
- data/tasks/yard.rake +6 -0
- metadata +510 -0
|
@@ -0,0 +1,228 @@
|
|
|
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
|
+
# Load paths for admin configurations. Add folders to this load path
|
|
25
|
+
# to load up other resources for administration. External gems can
|
|
26
|
+
# include their paths in this load path to provide active_admin UIs
|
|
27
|
+
setting :load_paths, [File.expand_path('app/admin', Rails.root)]
|
|
28
|
+
|
|
29
|
+
# The view factory to use to generate all the view classes. Take
|
|
30
|
+
# a look at ActiveAdmin::ViewFactory
|
|
31
|
+
setting :view_factory, ActiveAdmin::ViewFactory.new
|
|
32
|
+
|
|
33
|
+
# The method to call in controllers to get the current user
|
|
34
|
+
setting :current_user_method, false
|
|
35
|
+
|
|
36
|
+
# The method to call in the controllers to ensure that there
|
|
37
|
+
# is a currently authenticated admin user
|
|
38
|
+
setting :authentication_method, false
|
|
39
|
+
|
|
40
|
+
# The path to log user's out with. If set to a symbol, we assume
|
|
41
|
+
# that it's a method to call which returns the path
|
|
42
|
+
setting :logout_link_path, :destroy_admin_user_session_path
|
|
43
|
+
|
|
44
|
+
# The method to use when generating the link for user logout
|
|
45
|
+
setting :logout_link_method, :delete
|
|
46
|
+
|
|
47
|
+
# Active Admin makes educated guesses when displaying objects, this is
|
|
48
|
+
# the list of methods it tries calling in order
|
|
49
|
+
setting :display_name_methods, [ :display_name,
|
|
50
|
+
:full_name,
|
|
51
|
+
:name,
|
|
52
|
+
:username,
|
|
53
|
+
:login,
|
|
54
|
+
:title,
|
|
55
|
+
:email,
|
|
56
|
+
:to_s ]
|
|
57
|
+
|
|
58
|
+
# == Deprecated Settings
|
|
59
|
+
|
|
60
|
+
# @deprecated The default sort order for index pages
|
|
61
|
+
deprecated_setting :default_sort_order, 'id_desc'
|
|
62
|
+
|
|
63
|
+
# DEPRECATED: This option is deprecated and will be removed. Use
|
|
64
|
+
# the #allow_comments_in option instead
|
|
65
|
+
attr_accessor :admin_notes
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
include AssetRegistration
|
|
69
|
+
|
|
70
|
+
def initialize
|
|
71
|
+
register_default_assets
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def prepare!
|
|
75
|
+
remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
|
76
|
+
attach_reloader
|
|
77
|
+
generate_stylesheets
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Registers a brand new configuration for the given resource.
|
|
81
|
+
def register(resource, options = {}, &block)
|
|
82
|
+
namespace_name = options.has_key?(:namespace) ? options[:namespace] : default_namespace
|
|
83
|
+
namespace = find_or_create_namespace(namespace_name)
|
|
84
|
+
namespace.register(resource, options, &block)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Creates a namespace for the given name
|
|
88
|
+
def find_or_create_namespace(name)
|
|
89
|
+
name ||= :root
|
|
90
|
+
return namespaces[name] if namespaces[name]
|
|
91
|
+
namespace = Namespace.new(self, name)
|
|
92
|
+
ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace
|
|
93
|
+
namespaces[name] = namespace
|
|
94
|
+
namespace
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
# Stores if everything has been loaded or we need to reload
|
|
99
|
+
@@loaded = false
|
|
100
|
+
|
|
101
|
+
# Returns true if all the configuration files have been loaded.
|
|
102
|
+
def loaded?
|
|
103
|
+
@@loaded
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Removes all the controllers that were defined by registering
|
|
107
|
+
# resources for administration.
|
|
108
|
+
#
|
|
109
|
+
# We remove them, then load them on each request in development
|
|
110
|
+
# to allow for changes without having to restart the server.
|
|
111
|
+
def unload!
|
|
112
|
+
namespaces.values.each{|namespace| namespace.unload! }
|
|
113
|
+
self.namespaces = {}
|
|
114
|
+
@@loaded = false
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Loads all of the ruby files that are within the load path of
|
|
118
|
+
# ActiveAdmin.load_paths. This should load all of the administration
|
|
119
|
+
# UIs so that they are available for the router to proceed.
|
|
120
|
+
#
|
|
121
|
+
# The files are only loaded if we haven't already loaded all the files
|
|
122
|
+
# and they aren't marked for re-loading. To mark the files for re-loading
|
|
123
|
+
# you must first call ActiveAdmin.unload!
|
|
124
|
+
def load!
|
|
125
|
+
# No work to do if we've already loaded
|
|
126
|
+
return false if loaded?
|
|
127
|
+
|
|
128
|
+
# Load files
|
|
129
|
+
files_in_load_path.each{|file| load file }
|
|
130
|
+
|
|
131
|
+
# If no configurations, let's make sure you can still login
|
|
132
|
+
load_default_namespace if namespaces.values.empty?
|
|
133
|
+
|
|
134
|
+
# Load Menus
|
|
135
|
+
namespaces.values.each{|namespace| namespace.load_menu! }
|
|
136
|
+
|
|
137
|
+
@@loaded = true
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Returns ALL the files to load from all the load paths
|
|
141
|
+
def files_in_load_path
|
|
142
|
+
load_paths.flatten.compact.uniq.collect{|path| Dir["#{path}/**/*.rb"] }.flatten
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def router
|
|
146
|
+
@router ||= Router.new(self)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def routes(rails_router)
|
|
150
|
+
# Ensure that all the configurations (which define the routes)
|
|
151
|
+
# are all loaded
|
|
152
|
+
load!
|
|
153
|
+
|
|
154
|
+
router.apply(rails_router)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def load_default_namespace
|
|
158
|
+
find_or_create_namespace(default_namespace)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
#
|
|
162
|
+
# Add before, around and after filters to each registered resource.
|
|
163
|
+
#
|
|
164
|
+
# eg:
|
|
165
|
+
#
|
|
166
|
+
# ActiveAdmin.before_filter :authenticate_admin!
|
|
167
|
+
#
|
|
168
|
+
def before_filter(*args, &block)
|
|
169
|
+
ResourceController.before_filter(*args, &block)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def skip_before_filter(*args, &block)
|
|
173
|
+
ResourceController.skip_before_filter(*args, &block)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def after_filter(*args, &block)
|
|
177
|
+
ResourceController.after_filter(*args, &block)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def around_filter(*args, &block)
|
|
181
|
+
ResourceController.around_filter(*args, &block)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Helper method to add a dashboard section
|
|
185
|
+
def dashboard_section(name, options = {}, &block)
|
|
186
|
+
ActiveAdmin::Dashboards.add_section(name, options, &block)
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
private
|
|
190
|
+
|
|
191
|
+
def register_default_assets
|
|
192
|
+
register_stylesheet 'active_admin.css'
|
|
193
|
+
register_javascript 'active_admin.js'
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# Since we're dealing with all our own file loading, we need
|
|
197
|
+
# to remove our paths from the ActiveSupport autoload paths.
|
|
198
|
+
# If not, file naming becomes very important and can cause clashes.
|
|
199
|
+
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
|
200
|
+
ActiveSupport::Dependencies.autoload_paths.reject!{|path| load_paths.include?(path) }
|
|
201
|
+
# Don't eagerload our configs, we'll deal with them ourselves
|
|
202
|
+
Rails.application.config.eager_load_paths = Rails.application.config.eager_load_paths.reject do |path|
|
|
203
|
+
load_paths.include?(path)
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def attach_reloader
|
|
208
|
+
ActiveAdmin::Reloader.new(Rails.version).attach!
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
def generate_stylesheets
|
|
213
|
+
# This must be required after initialization
|
|
214
|
+
require 'sass/plugin'
|
|
215
|
+
require 'active_admin/sass/helpers'
|
|
216
|
+
|
|
217
|
+
# Create our own asset pipeline in Rails 3.0
|
|
218
|
+
if ActiveAdmin.use_asset_pipeline?
|
|
219
|
+
# Add our mixins to the load path for SASS
|
|
220
|
+
::Sass::Engine::DEFAULT_OPTIONS[:load_paths] << File.expand_path("../../../app/assets/stylesheets", __FILE__)
|
|
221
|
+
else
|
|
222
|
+
require 'active_admin/sass/css_loader'
|
|
223
|
+
::Sass::Plugin.add_template_location(File.expand_path("../../../app/assets/stylesheets", __FILE__))
|
|
224
|
+
::Sass::Plugin.add_template_location(File.expand_path("../sass", __FILE__))
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require "active_admin/arbre/html"
|
|
2
|
+
require "active_admin/arbre/attributes"
|
|
3
|
+
require "active_admin/arbre/core_extensions"
|
|
4
|
+
require "active_admin/arbre/element"
|
|
5
|
+
require "active_admin/arbre/context"
|
|
6
|
+
require "active_admin/arbre/collection"
|
|
7
|
+
require "active_admin/arbre/class_list"
|
|
8
|
+
require "active_admin/arbre/tag"
|
|
9
|
+
require "active_admin/arbre/document"
|
|
10
|
+
require "active_admin/arbre/html5_elements"
|
|
11
|
+
require "active_admin/arbre/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::HTML; @_helpers = self; @__current_dom_element__ = Arbre::Context.new(assigns, self); begin; #{template.source}; end; current_dom_context"
|
|
23
|
+
}
|
|
@@ -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
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Arbre
|
|
2
|
+
module HTML
|
|
3
|
+
|
|
4
|
+
# Stores a collection of Element objects
|
|
5
|
+
class Collection < Array
|
|
6
|
+
|
|
7
|
+
def +(other)
|
|
8
|
+
self.class.new(super)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def -(other)
|
|
12
|
+
self.class.new(super)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def &(other)
|
|
16
|
+
self.class.new(super)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def to_html
|
|
20
|
+
self.collect do |element|
|
|
21
|
+
element.to_html
|
|
22
|
+
end.join.html_safe
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Arbre
|
|
2
|
+
module HTML
|
|
3
|
+
|
|
4
|
+
class Document < Tag
|
|
5
|
+
|
|
6
|
+
def build(*args)
|
|
7
|
+
super
|
|
8
|
+
build_head
|
|
9
|
+
build_body
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def document
|
|
13
|
+
self
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def tag_name
|
|
17
|
+
'html'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def doctype
|
|
21
|
+
'<!DOCTYPE html>'.html_safe
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def to_html
|
|
25
|
+
doctype + super
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
protected
|
|
29
|
+
|
|
30
|
+
def build_head
|
|
31
|
+
@head = head do
|
|
32
|
+
meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def build_body
|
|
37
|
+
@body = body
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
module Arbre
|
|
2
|
+
module HTML
|
|
3
|
+
|
|
4
|
+
class Element
|
|
5
|
+
include ::Arbre::HTML
|
|
6
|
+
include ::Arbre::HTML::BuilderMethods
|
|
7
|
+
|
|
8
|
+
attr_accessor :parent
|
|
9
|
+
attr_reader :children
|
|
10
|
+
|
|
11
|
+
def self.builder_method(method_name)
|
|
12
|
+
::Arbre::HTML::BuilderMethods.class_eval <<-EOF, __FILE__, __LINE__
|
|
13
|
+
def #{method_name}(*args, &block)
|
|
14
|
+
insert_tag #{self.name}, *args, &block
|
|
15
|
+
end
|
|
16
|
+
EOF
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def initialize(assigns = {}, helpers = nil)
|
|
20
|
+
@_assigns, @_helpers = assigns, helpers
|
|
21
|
+
@children = Collection.new
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def assigns
|
|
25
|
+
@_assigns
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def helpers
|
|
29
|
+
@_helpers
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def tag_name
|
|
33
|
+
@tag_name ||= self.class.name.demodulize.downcase
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def build(*args, &block)
|
|
37
|
+
# Render the block passing ourselves in
|
|
38
|
+
insert_text_node_if_string(block.call(self)) if block
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def add_child(child)
|
|
42
|
+
return unless child
|
|
43
|
+
|
|
44
|
+
if child.is_a?(Array)
|
|
45
|
+
child.each{|item| add_child(item) }
|
|
46
|
+
return @children
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# If its not an element, wrap it in a TextNode
|
|
50
|
+
unless child.is_a?(Element)
|
|
51
|
+
child = TextNode.from_string(child)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
if child.respond_to?(:parent)
|
|
55
|
+
# Remove the child
|
|
56
|
+
child.parent.remove_child(child) if child.parent
|
|
57
|
+
# Set ourselves as the parent
|
|
58
|
+
child.parent = self
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
@children << child
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def remove_child(child)
|
|
65
|
+
child.parent = nil if child.respond_to?(:parent=)
|
|
66
|
+
@children.delete(child)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def <<(child)
|
|
70
|
+
add_child(child)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def parent=(parent)
|
|
74
|
+
@parent = parent
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def parent?
|
|
78
|
+
!@parent.nil?
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def document
|
|
82
|
+
parent.document if parent?
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def content=(contents)
|
|
86
|
+
clear_children!
|
|
87
|
+
add_child(contents)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def get_elements_by_tag_name(tag_name)
|
|
91
|
+
elements = Collection.new
|
|
92
|
+
children.each do |child|
|
|
93
|
+
elements << child if child.tag_name == tag_name
|
|
94
|
+
elements.concat(child.get_elements_by_tag_name(tag_name))
|
|
95
|
+
end
|
|
96
|
+
elements
|
|
97
|
+
end
|
|
98
|
+
alias_method :find_by_tag, :get_elements_by_tag_name
|
|
99
|
+
|
|
100
|
+
def content
|
|
101
|
+
children.to_html
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def html_safe
|
|
105
|
+
to_html
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def indent_level
|
|
109
|
+
parent? ? parent.indent_level + 1 : 0
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def each(&block)
|
|
113
|
+
[to_html].each(&block)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def to_s
|
|
117
|
+
to_html
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def to_str
|
|
121
|
+
to_s
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def to_html
|
|
125
|
+
content
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def +(element)
|
|
129
|
+
case element
|
|
130
|
+
when Element, Collection
|
|
131
|
+
else
|
|
132
|
+
element = TextNode.from_string(element)
|
|
133
|
+
end
|
|
134
|
+
Collection.new([self]) + element
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def to_ary
|
|
138
|
+
Collection.new [self]
|
|
139
|
+
end
|
|
140
|
+
alias_method :to_a, :to_ary
|
|
141
|
+
|
|
142
|
+
private
|
|
143
|
+
|
|
144
|
+
# Resets the Elements children
|
|
145
|
+
def clear_children!
|
|
146
|
+
@children.clear
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
end
|
|
151
|
+
end
|