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,21 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
|
|
4
|
+
module ActionBuilder
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
module ClassMethods
|
|
8
|
+
|
|
9
|
+
def clear_member_actions!
|
|
10
|
+
active_admin_config.clear_member_actions!
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def clear_collection_actions!
|
|
14
|
+
active_admin_config.clear_collection_actions!
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
|
|
4
|
+
# Override the InheritedResources actions to use the
|
|
5
|
+
# Active Admin templates.
|
|
6
|
+
#
|
|
7
|
+
# We ensure that the functionality provided by Inherited
|
|
8
|
+
# Resources is still available within any ResourceController
|
|
9
|
+
|
|
10
|
+
def index(options={}, &block)
|
|
11
|
+
super(options) do |format|
|
|
12
|
+
block.call(format) if block
|
|
13
|
+
format.html { render active_admin_template('index.html.arb') }
|
|
14
|
+
format.csv do
|
|
15
|
+
headers['Content-Type'] = 'text/csv; charset=utf-8'
|
|
16
|
+
headers['Content-Disposition'] = %{attachment; filename="#{csv_filename}"}
|
|
17
|
+
render active_admin_template('index.csv.erb')
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
alias :index! :index
|
|
22
|
+
|
|
23
|
+
def show(options={}, &block)
|
|
24
|
+
super do |format|
|
|
25
|
+
block.call(format) if block
|
|
26
|
+
format.html { render active_admin_template('show.html.arb') }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
alias :show! :show
|
|
30
|
+
|
|
31
|
+
def new(options={}, &block)
|
|
32
|
+
super do |format|
|
|
33
|
+
block.call(format) if block
|
|
34
|
+
format.html { render active_admin_template('new.html.arb') }
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
alias :new! :new
|
|
38
|
+
|
|
39
|
+
def edit(options={}, &block)
|
|
40
|
+
super do |format|
|
|
41
|
+
block.call(format) if block
|
|
42
|
+
format.html { render active_admin_template('edit.html.arb') }
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
alias :edit! :edit
|
|
46
|
+
|
|
47
|
+
def create(options={}, &block)
|
|
48
|
+
super(options) do |success, failure|
|
|
49
|
+
block.call(success, failure) if block
|
|
50
|
+
failure.html { render active_admin_template('new.html.arb') }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
alias :create! :create
|
|
54
|
+
|
|
55
|
+
def update(options={}, &block)
|
|
56
|
+
super do |success, failure|
|
|
57
|
+
block.call(success, failure) if block
|
|
58
|
+
failure.html { render active_admin_template('edit.html.arb') }
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
alias :update! :update
|
|
62
|
+
|
|
63
|
+
# Make aliases protected
|
|
64
|
+
protected :index!, :show!, :new!, :create!, :edit!, :update!
|
|
65
|
+
|
|
66
|
+
protected
|
|
67
|
+
|
|
68
|
+
# Returns the full location to the Active Admin template path
|
|
69
|
+
def active_admin_template(template)
|
|
70
|
+
"active_admin/resource/#{template}"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Returns a filename for the csv file using the collection_name
|
|
74
|
+
# and current date such as 'my-articles-2011-06-24.csv'.
|
|
75
|
+
def csv_filename
|
|
76
|
+
"#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.now.strftime("%Y-%m-%d")}.csv"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
|
|
4
|
+
module Callbacks
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
include ::ActiveAdmin::Callbacks
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
define_active_admin_callbacks :build, :create, :update, :save, :destroy
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
protected
|
|
13
|
+
|
|
14
|
+
def build_resource
|
|
15
|
+
object = super
|
|
16
|
+
run_build_callbacks object
|
|
17
|
+
object
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create_resource(object)
|
|
21
|
+
run_create_callbacks object do
|
|
22
|
+
save_resource(object)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def save_resource(object)
|
|
27
|
+
run_save_callbacks object do
|
|
28
|
+
object.save
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def update_resource(object, attributes)
|
|
33
|
+
object.attributes = attributes
|
|
34
|
+
run_update_callbacks object do
|
|
35
|
+
save_resource(object)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def destroy_resource(object)
|
|
40
|
+
run_destroy_callbacks object do
|
|
41
|
+
object.destroy
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
class ResourceController < ::InheritedResources::Base
|
|
3
|
+
|
|
4
|
+
# This module deals with the retrieval of collections for resources
|
|
5
|
+
# within the resource controller.
|
|
6
|
+
module Collection
|
|
7
|
+
extend ActiveSupport::Concern
|
|
8
|
+
|
|
9
|
+
included do
|
|
10
|
+
before_filter :setup_pagination_for_csv
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
module BaseCollection
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
def collection
|
|
17
|
+
get_collection_ivar || set_collection_ivar(active_admin_collection)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def active_admin_collection
|
|
21
|
+
scoped_collection
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# Override this method in your controllers to modify the start point
|
|
26
|
+
# of our searches and index.
|
|
27
|
+
#
|
|
28
|
+
# This method should return an ActiveRecord::Relation object so that
|
|
29
|
+
# the searching and filtering can be applied on top
|
|
30
|
+
#
|
|
31
|
+
# Note, unless you are doing something special, you should use the
|
|
32
|
+
# scope_to method from the Scoping module instead of overriding this
|
|
33
|
+
# method.
|
|
34
|
+
def scoped_collection
|
|
35
|
+
end_of_association_chain
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
module Sorting
|
|
41
|
+
protected
|
|
42
|
+
|
|
43
|
+
def active_admin_collection
|
|
44
|
+
sort_order(super)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def sort_order(chain)
|
|
48
|
+
params[:order] ||= active_admin_config.sort_order
|
|
49
|
+
table_name = active_admin_config.resource_table_name
|
|
50
|
+
if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
|
|
51
|
+
chain.order("#{table_name}.#{$1} #{$2}")
|
|
52
|
+
else
|
|
53
|
+
chain # just return the chain
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
module Search
|
|
60
|
+
protected
|
|
61
|
+
|
|
62
|
+
def active_admin_collection
|
|
63
|
+
search(super)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def search(chain)
|
|
67
|
+
@search = chain.metasearch(clean_search_params(params[:q]))
|
|
68
|
+
@search.relation
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def clean_search_params(search_params)
|
|
72
|
+
return {} unless search_params.is_a?(Hash)
|
|
73
|
+
search_params = search_params.dup
|
|
74
|
+
search_params.delete_if do |key, value|
|
|
75
|
+
value == ""
|
|
76
|
+
end
|
|
77
|
+
search_params
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
module Scoping
|
|
83
|
+
protected
|
|
84
|
+
|
|
85
|
+
def active_admin_collection
|
|
86
|
+
scope_collection(super)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def scope_collection(chain)
|
|
90
|
+
if current_scope
|
|
91
|
+
@before_scope_collection = chain
|
|
92
|
+
|
|
93
|
+
# ActiveRecord::Base isn't a relation, so let's help you out
|
|
94
|
+
return chain if current_scope.scope_method == :all
|
|
95
|
+
|
|
96
|
+
if current_scope.scope_method
|
|
97
|
+
chain.send(current_scope.scope_method)
|
|
98
|
+
else
|
|
99
|
+
instance_exec chain, ¤t_scope.scope_block
|
|
100
|
+
end
|
|
101
|
+
else
|
|
102
|
+
chain
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def current_scope
|
|
107
|
+
@current_scope ||= if params[:scope]
|
|
108
|
+
active_admin_config.get_scope_by_id(params[:scope]) if params[:scope]
|
|
109
|
+
else
|
|
110
|
+
active_admin_config.default_scope
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
module Pagination
|
|
117
|
+
protected
|
|
118
|
+
|
|
119
|
+
def active_admin_collection
|
|
120
|
+
paginate(super)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Allow more records for csv files
|
|
124
|
+
def setup_pagination_for_csv
|
|
125
|
+
@per_page = 10_000 if request.format == 'text/csv'
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def paginate(chain)
|
|
129
|
+
chain.page(params[:page]).per(@per_page || active_admin_application.default_per_page)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Include all the Modules. BaseCollection must be first
|
|
134
|
+
# and pagination should be last
|
|
135
|
+
include BaseCollection
|
|
136
|
+
include Sorting
|
|
137
|
+
include Search
|
|
138
|
+
include Scoping
|
|
139
|
+
include Pagination
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
@@ -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
|