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,58 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
|
|
4
|
+
module Filters
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
included do
|
|
8
|
+
helper_method :filters_config
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
module ClassMethods
|
|
12
|
+
def filter(attribute, options = {})
|
|
13
|
+
return false if attribute.nil?
|
|
14
|
+
@filters ||= []
|
|
15
|
+
@filters << options.merge(:attribute => attribute)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def filters_config
|
|
19
|
+
@filters && @filters.any? ? @filters : default_filters_config
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def reset_filters!
|
|
23
|
+
@filters = []
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Returns a sane set of filters by default for the object
|
|
27
|
+
def default_filters_config
|
|
28
|
+
default_association_filters + default_content_filters
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Returns a default set of filters for the associations
|
|
32
|
+
def default_association_filters
|
|
33
|
+
if resource_class.respond_to?(:reflections)
|
|
34
|
+
resource_class.reflections.collect{|name, r| { :attribute => name }}
|
|
35
|
+
else
|
|
36
|
+
[]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Returns a default set of filters for the content columns
|
|
41
|
+
def default_content_filters
|
|
42
|
+
if resource_class.respond_to?(:content_columns)
|
|
43
|
+
resource_class.content_columns.collect{|c| { :attribute => c.name.to_sym } }
|
|
44
|
+
else
|
|
45
|
+
[]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
protected
|
|
51
|
+
|
|
52
|
+
def filters_config
|
|
53
|
+
self.class.filters_config
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
module Form
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
helper_method :form_config
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
module ClassMethods
|
|
11
|
+
|
|
12
|
+
def form_config=(config)
|
|
13
|
+
@form_config = config
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def form_config
|
|
17
|
+
@form_config ||= default_form_config
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def reset_form_config!
|
|
21
|
+
@form_config = nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def default_form_config
|
|
25
|
+
config = {}
|
|
26
|
+
config[:block] = lambda do |f|
|
|
27
|
+
f.inputs
|
|
28
|
+
f.buttons
|
|
29
|
+
end
|
|
30
|
+
config
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
protected
|
|
35
|
+
|
|
36
|
+
def form_config
|
|
37
|
+
@form_config ||= self.class.form_config
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
module Menu
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
before_filter :set_current_tab
|
|
8
|
+
helper_method :current_menu
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
protected
|
|
12
|
+
|
|
13
|
+
def current_menu
|
|
14
|
+
active_admin_config.namespace.menu
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Set's @current_tab to be name of the tab to mark as current
|
|
18
|
+
# Get's called through a before filter
|
|
19
|
+
def set_current_tab
|
|
20
|
+
@current_tab = if active_admin_config.belongs_to? && parent?
|
|
21
|
+
active_admin_config.belongs_to_config.target.menu_item_name
|
|
22
|
+
else
|
|
23
|
+
[active_admin_config.parent_menu_item_name, active_admin_config.menu_item_name].compact.join("/")
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
|
|
4
|
+
module PageConfigurations
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
included do
|
|
8
|
+
helper_method :index_config
|
|
9
|
+
helper_method :show_config
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
module ClassMethods
|
|
13
|
+
|
|
14
|
+
def set_page_config(page, options, &block)
|
|
15
|
+
active_admin_config.page_configs[page] = ActiveAdmin::PageConfig.new(options, &block)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_page_config(page)
|
|
19
|
+
active_admin_config.page_configs[page]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def reset_page_config!(page)
|
|
23
|
+
active_admin_config.page_configs[page] = nil
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Define the getting and re-setter for each configurable page
|
|
27
|
+
[:index, :show].each do |page|
|
|
28
|
+
# eg: index_config
|
|
29
|
+
define_method :"#{page}_config" do
|
|
30
|
+
get_page_config(page)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# eg: reset_index_config!
|
|
34
|
+
define_method :"reset_#{page}_config!" do
|
|
35
|
+
reset_page_config! page
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
protected
|
|
42
|
+
|
|
43
|
+
def index_config
|
|
44
|
+
@index_config ||= self.class.index_config
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def show_config
|
|
48
|
+
@show_config ||= self.class.show_config
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -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,45 @@
|
|
|
1
|
+
require 'sass'
|
|
2
|
+
require 'sass/script/functions'
|
|
3
|
+
require 'sass-rails' if ActiveAdmin::DependencyChecker.rails_3_1?
|
|
4
|
+
|
|
5
|
+
module ActiveAdmin
|
|
6
|
+
module Sass
|
|
7
|
+
module Helpers
|
|
8
|
+
|
|
9
|
+
if ActiveAdmin::DependencyChecker.rails_3_1?
|
|
10
|
+
include ::Sass::Rails::Helpers
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Provides a helper in SASS to ensure that the paths to image
|
|
14
|
+
# assets are always correct across Rails versions.
|
|
15
|
+
#
|
|
16
|
+
# Example:
|
|
17
|
+
#
|
|
18
|
+
# background: url(active_admin_image_path('some_image.png')) 0 0 repeat-x;
|
|
19
|
+
#
|
|
20
|
+
# Will result in:
|
|
21
|
+
#
|
|
22
|
+
# background: url("/images/active_admin/some_image.png") 0 0 repeat-x;
|
|
23
|
+
#
|
|
24
|
+
# Or in Rails 3.1 with asset pipeline enebaled:
|
|
25
|
+
#
|
|
26
|
+
# background: url("/assets/active_admin/some_image.png") 0 0 repeat-x;
|
|
27
|
+
#
|
|
28
|
+
# @param [Sass::Script::String] asset the path to the image after */active_admin/
|
|
29
|
+
#
|
|
30
|
+
# @return [Sass::Script::String] path to the image
|
|
31
|
+
#
|
|
32
|
+
def active_admin_image_path(asset)
|
|
33
|
+
if ActiveAdmin.use_asset_pipeline?
|
|
34
|
+
asset_path(::Sass::Script::String.new("active_admin/#{asset.value}"), ::Sass::Script::String.new('image'))
|
|
35
|
+
else
|
|
36
|
+
::Sass::Script::String.new("/images/active_admin/#{asset.value}", true)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Install for use in Sass
|
|
45
|
+
Sass::Script::Functions.send :include, ActiveAdmin::Sass::Helpers
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class Scope
|
|
3
|
+
|
|
4
|
+
attr_reader :name, :scope_method, :id, :scope_block
|
|
5
|
+
|
|
6
|
+
# Create a Scope
|
|
7
|
+
#
|
|
8
|
+
# Examples:
|
|
9
|
+
#
|
|
10
|
+
# Scope.new(:published)
|
|
11
|
+
# # => Scope with name 'Published' and scope method :published
|
|
12
|
+
#
|
|
13
|
+
# Scope.new('Published', :public)
|
|
14
|
+
# # => Scope with name 'Published' and scope method :public
|
|
15
|
+
#
|
|
16
|
+
# Scope.new('Published') { |articles| articles.where(:published => true) }
|
|
17
|
+
# # => Scope with name 'Published' using a block to scope
|
|
18
|
+
#
|
|
19
|
+
def initialize(name, method = nil, &block)
|
|
20
|
+
@name = name.to_s.titleize
|
|
21
|
+
@scope_method = method
|
|
22
|
+
# Scope ':all' means no scoping
|
|
23
|
+
@scope_method ||= name.to_sym unless name.to_sym == :all
|
|
24
|
+
@id = @name.gsub(' ', '').underscore
|
|
25
|
+
if block_given?
|
|
26
|
+
@scope_method = nil
|
|
27
|
+
@scope_block = block
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
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
|