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,36 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
|
|
4
|
+
# This module deals with scoping entire controllers to a relation
|
|
5
|
+
module Scoping
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
protected
|
|
9
|
+
|
|
10
|
+
# Override the default InheritedResource #begin_of_association_chain to allow
|
|
11
|
+
# the scope to be defined in the active admin configuration.
|
|
12
|
+
#
|
|
13
|
+
# If scope_to is a proc, we eval it, otherwise we call the method on the controller.
|
|
14
|
+
def begin_of_association_chain
|
|
15
|
+
return nil unless active_admin_config.scope_to
|
|
16
|
+
case active_admin_config.scope_to
|
|
17
|
+
when Proc
|
|
18
|
+
instance_eval &active_admin_config.scope_to
|
|
19
|
+
when Symbol
|
|
20
|
+
send active_admin_config.scope_to
|
|
21
|
+
else
|
|
22
|
+
raise ArgumentError, "#scope_to accepts a symbol or a block"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Overriding from InheritedResources::BaseHelpers
|
|
27
|
+
#
|
|
28
|
+
# Returns the method for the association chain when using
|
|
29
|
+
# the scope_to option
|
|
30
|
+
def method_for_association_chain
|
|
31
|
+
active_admin_config.scope_to_association_method || super
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Router
|
|
3
|
+
|
|
4
|
+
def initialize(application)
|
|
5
|
+
@application = application
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# Creates all the necessary routes for the ActiveAdmin configurations
|
|
9
|
+
#
|
|
10
|
+
# Use this within the routes.rb file:
|
|
11
|
+
#
|
|
12
|
+
# Application.routes.draw do |map|
|
|
13
|
+
# ActiveAdmin.routes(self)
|
|
14
|
+
# end
|
|
15
|
+
#
|
|
16
|
+
def apply(router)
|
|
17
|
+
# Define any necessary dashboard routes
|
|
18
|
+
router.instance_exec(@application.namespaces.values) do |namespaces|
|
|
19
|
+
namespaces.each do |namespace|
|
|
20
|
+
if namespace.root?
|
|
21
|
+
match '/' => 'dashboard#index', :as => 'dashboard'
|
|
22
|
+
else
|
|
23
|
+
name = namespace.name
|
|
24
|
+
match name.to_s => "#{name}/dashboard#index", :as => "#{name.to_s}_dashboard"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Now define the routes for each resource
|
|
30
|
+
router.instance_exec(@application.namespaces) do |namespaces|
|
|
31
|
+
resources = namespaces.values.collect{|n| n.resources.values }.flatten
|
|
32
|
+
resources.each do |config|
|
|
33
|
+
|
|
34
|
+
# Define the block the will get eval'd within the namespace
|
|
35
|
+
route_definition_block = Proc.new do
|
|
36
|
+
resources config.underscored_resource_name.pluralize do
|
|
37
|
+
|
|
38
|
+
# Define any member actions
|
|
39
|
+
member do
|
|
40
|
+
config.member_actions.each do |action|
|
|
41
|
+
# eg: get :comment
|
|
42
|
+
send(action.http_verb, action.name)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Define any collection actions
|
|
47
|
+
collection do
|
|
48
|
+
config.collection_actions.each do |action|
|
|
49
|
+
send(action.http_verb, action.name)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Add in the parent if it exists
|
|
56
|
+
if config.belongs_to?
|
|
57
|
+
routes_for_belongs_to = route_definition_block.dup
|
|
58
|
+
route_definition_block = Proc.new do
|
|
59
|
+
# If its optional, make the normal resource routes
|
|
60
|
+
instance_eval &routes_for_belongs_to if config.belongs_to_config.optional?
|
|
61
|
+
|
|
62
|
+
# Make the nested belongs_to routes
|
|
63
|
+
resources config.belongs_to_config.target.underscored_resource_name.pluralize do
|
|
64
|
+
instance_eval &routes_for_belongs_to
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Add on the namespace if required
|
|
70
|
+
if !config.namespace.root?
|
|
71
|
+
routes_in_namespace = route_definition_block.dup
|
|
72
|
+
route_definition_block = Proc.new do
|
|
73
|
+
namespace config.namespace.name do
|
|
74
|
+
instance_eval(&routes_in_namespace)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
instance_eval &route_definition_block
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'sass/importers'
|
|
2
|
+
|
|
3
|
+
# This monkey patches the SASS filesystem importer to work with files
|
|
4
|
+
# that are named *.css.scss. This allows us to be compatible with both
|
|
5
|
+
# Rails 3.0.* and Rails 3.1
|
|
6
|
+
#
|
|
7
|
+
# This should only be loaded in Rails 3.0 apps.
|
|
8
|
+
class Sass::Importers::Filesystem
|
|
9
|
+
|
|
10
|
+
# We want to ensure that all *.css.scss files are loaded as scss files
|
|
11
|
+
def extensions_with_css
|
|
12
|
+
extensions_without_css.merge('css.scss' => :scss)
|
|
13
|
+
end
|
|
14
|
+
alias_method_chain :extensions, :css
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'sass'
|
|
2
|
+
require 'sass/script/functions'
|
|
3
|
+
|
|
4
|
+
module ActiveAdmin
|
|
5
|
+
module Sass
|
|
6
|
+
module Helpers
|
|
7
|
+
|
|
8
|
+
# Provides a helper in SASS to ensure that the paths to image
|
|
9
|
+
# assets are always correct across Rails versions.
|
|
10
|
+
#
|
|
11
|
+
# Example:
|
|
12
|
+
#
|
|
13
|
+
# background: url(active_admin_image_path('some_image.png')) 0 0 repeat-x;
|
|
14
|
+
#
|
|
15
|
+
# Will result in:
|
|
16
|
+
#
|
|
17
|
+
# background: url("/images/active_admin/some_image.png") 0 0 repeat-x;
|
|
18
|
+
#
|
|
19
|
+
# Or in Rails 3.1 with asset pipeline enebaled:
|
|
20
|
+
#
|
|
21
|
+
# background: url("/assets/active_admin/some_image.png") 0 0 repeat-x;
|
|
22
|
+
#
|
|
23
|
+
# @param [Sass::Script::String] asset the path to the image after */active_admin/
|
|
24
|
+
#
|
|
25
|
+
# @return [Sass::Script::String] path to the image
|
|
26
|
+
#
|
|
27
|
+
def active_admin_image_path(asset)
|
|
28
|
+
if ActiveAdmin.use_asset_pipeline?
|
|
29
|
+
asset_path(::Sass::Script::String.new("active_admin/#{asset.value}"), ::Sass::Script::String.new('image'))
|
|
30
|
+
else
|
|
31
|
+
::Sass::Script::String.new("/images/active_admin/#{asset.value}", true)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Install for use in Sass
|
|
40
|
+
Sass::Script::Functions.send :include, ActiveAdmin::Sass::Helpers
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Scope
|
|
3
|
+
|
|
4
|
+
attr_reader :name, :scope_method, :id, :scope_block
|
|
5
|
+
|
|
6
|
+
def initialize(name, method = nil, &block)
|
|
7
|
+
@name = name.to_s.titleize
|
|
8
|
+
@scope_method = method || name.to_sym
|
|
9
|
+
@id = @name.gsub(' ', '').underscore
|
|
10
|
+
if block_given?
|
|
11
|
+
@scope_method = nil
|
|
12
|
+
@scope_block = block
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
|
|
3
|
+
class SidebarSection
|
|
4
|
+
include ActiveAdmin::OptionalDisplay
|
|
5
|
+
|
|
6
|
+
attr_accessor :name, :options, :block
|
|
7
|
+
|
|
8
|
+
def initialize(name, options = {}, &block)
|
|
9
|
+
@name, @options, @block = name, options, block
|
|
10
|
+
normalize_display_options!
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# The id gets used for the div in the view
|
|
14
|
+
def id
|
|
15
|
+
name.to_s.downcase.underscore + '_sidebar_section'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def icon?
|
|
19
|
+
options[:icon]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def icon
|
|
23
|
+
options[:icon] if icon?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# The title gets displayed within the section in the view
|
|
27
|
+
def title
|
|
28
|
+
begin
|
|
29
|
+
I18n.t!("active_admin.sidebars.#{name.to_s}")
|
|
30
|
+
rescue I18n::MissingTranslationData
|
|
31
|
+
name.to_s.titlecase
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# If a block is not passed in, the name of the partial to render
|
|
36
|
+
def partial_name
|
|
37
|
+
options[:partial] || "#{name.to_s.downcase.gsub(' ', '_')}_sidebar"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'active_admin/abstract_view_factory'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
class ViewFactory < AbstractViewFactory
|
|
5
|
+
|
|
6
|
+
# Register Helper Renderers
|
|
7
|
+
register :global_navigation => ActiveAdmin::Views::TabsRenderer,
|
|
8
|
+
:action_items => ActiveAdmin::Views::ActionItems,
|
|
9
|
+
:header => ActiveAdmin::Views::HeaderRenderer,
|
|
10
|
+
:dashboard_section => ActiveAdmin::Views::DashboardSection,
|
|
11
|
+
:index_scopes => ActiveAdmin::Views::Scopes,
|
|
12
|
+
:blank_slate => ActiveAdmin::Views::BlankSlate
|
|
13
|
+
|
|
14
|
+
# Register All The Pages
|
|
15
|
+
register :dashboard_page => ActiveAdmin::Views::Pages::Dashboard,
|
|
16
|
+
:index_page => ActiveAdmin::Views::Pages::Index,
|
|
17
|
+
:show_page => ActiveAdmin::Views::Pages::Show,
|
|
18
|
+
:new_page => ActiveAdmin::Views::Pages::New,
|
|
19
|
+
:edit_page => ActiveAdmin::Views::Pages::Edit,
|
|
20
|
+
:layout => ActiveAdmin::Views::Pages::Layout
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
|
|
4
|
+
# Require all ruby files in the view helpers dir
|
|
5
|
+
Dir[File.expand_path('../view_helpers', __FILE__) + "/*.rb"].each{|f| require f }
|
|
6
|
+
|
|
7
|
+
include AssignsWithIndifferentAccessHelper
|
|
8
|
+
include ActiveAdminApplicationHelper
|
|
9
|
+
include RendererHelper
|
|
10
|
+
include AutoLinkHelper
|
|
11
|
+
include BreadcrumbHelper
|
|
12
|
+
include DisplayHelper
|
|
13
|
+
include IconHelper
|
|
14
|
+
include MethodOrProcHelper
|
|
15
|
+
include SidebarHelper
|
|
16
|
+
include FormHelper
|
|
17
|
+
include FilterFormHelper
|
|
18
|
+
include TitleHelper
|
|
19
|
+
include ViewFactoryHelper
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module AutoLinkHelper
|
|
4
|
+
|
|
5
|
+
# Automatically links objects to their resource controllers. If
|
|
6
|
+
# the resource has not been registered, a string representation of
|
|
7
|
+
# the object is returned.
|
|
8
|
+
#
|
|
9
|
+
# The default content in the link is returned from ActiveAdmin::ViewHelpers::DisplayHelper#display_name
|
|
10
|
+
#
|
|
11
|
+
# You can pass in the content to display
|
|
12
|
+
# eg: auto_link(@post, "My Link Content")
|
|
13
|
+
#
|
|
14
|
+
def auto_link(resource, link_content = nil)
|
|
15
|
+
content = link_content || display_name(resource)
|
|
16
|
+
if registration = active_admin_resource_for(resource.class)
|
|
17
|
+
begin
|
|
18
|
+
content = link_to(content, send(registration.route_instance_path, resource))
|
|
19
|
+
rescue
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
content
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Returns the ActiveAdmin::Resource instance for a class
|
|
26
|
+
def active_admin_resource_for(klass)
|
|
27
|
+
active_admin_namespace.resource_for(klass)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Returns the current Active Admin namespace
|
|
31
|
+
def active_admin_namespace
|
|
32
|
+
if respond_to?(:active_admin_config) && active_admin_config
|
|
33
|
+
active_admin_config.namespace
|
|
34
|
+
else
|
|
35
|
+
# Return a default namespace if none exists
|
|
36
|
+
active_admin_application.find_or_create_namespace(active_admin_application.default_namespace)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module BreadcrumbHelper
|
|
4
|
+
|
|
5
|
+
# Returns an array of links to use in a breadcrumb
|
|
6
|
+
def breadcrumb_links(path = nil)
|
|
7
|
+
path ||= request.fullpath
|
|
8
|
+
parts = path.gsub(/^\//, '').split('/')
|
|
9
|
+
parts.pop unless %w{ create update }.include?(params[:action])
|
|
10
|
+
crumbs = []
|
|
11
|
+
parts.each_with_index do |part, index|
|
|
12
|
+
name = ""
|
|
13
|
+
if part =~ /^\d/ && parent = parts[index - 1]
|
|
14
|
+
begin
|
|
15
|
+
parent_class = parent.singularize.camelcase.constantize
|
|
16
|
+
obj = parent_class.find(part.to_i)
|
|
17
|
+
name = obj.display_name if obj.respond_to?(:display_name)
|
|
18
|
+
rescue
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
name = part.titlecase if name == ""
|
|
22
|
+
crumbs << link_to(name, "/" + parts[0..index].join('/'))
|
|
23
|
+
end
|
|
24
|
+
crumbs
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module ViewHelpers
|
|
3
|
+
module DisplayHelper
|
|
4
|
+
|
|
5
|
+
def display_name_method_for(resource)
|
|
6
|
+
@@display_name_methods_cache ||= {}
|
|
7
|
+
@@display_name_methods_cache[resource.class] ||=
|
|
8
|
+
active_admin_application.display_name_methods.find{|method| resource.respond_to? method }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Tries to display an object with as friendly of output
|
|
12
|
+
# as possible.
|
|
13
|
+
def display_name(resource)
|
|
14
|
+
resource.send(display_name_method_for(resource))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Return a pretty string for any object
|
|
18
|
+
# Date Time are formatted via #localize with :format => :long
|
|
19
|
+
# ActiveRecord objects are formatted via #auto_link
|
|
20
|
+
# We attempt to #display_name of any other objects
|
|
21
|
+
def pretty_format(object)
|
|
22
|
+
case object
|
|
23
|
+
when String
|
|
24
|
+
object
|
|
25
|
+
when Arbre::HTML::Element
|
|
26
|
+
object
|
|
27
|
+
when Date, Time
|
|
28
|
+
localize(object, :format => :long)
|
|
29
|
+
when ActiveRecord::Base
|
|
30
|
+
auto_link(object)
|
|
31
|
+
else
|
|
32
|
+
display_name(object)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|