activeadmin 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- data/.gitignore +34 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +177 -0
- data/Gemfile +21 -32
- data/Guardfile +8 -0
- data/README.rdoc +75 -14
- data/Rakefile +7 -100
- data/activeadmin.gemspec +21 -353
- data/{lib/generators/active_admin/install/templates/images → 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/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/loading.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow_dark.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/{lib/generators/active_admin/install/templates/active_admin_vendor.js → app/assets/javascripts/active_admin/vendor.js} +0 -0
- data/{lib/active_admin/stylesheets/active_admin.scss → app/assets/stylesheets/active_admin/_base.css.scss} +58 -82
- data/{lib/active_admin/stylesheets/active_admin/_forms.scss → app/assets/stylesheets/active_admin/_forms.css.scss} +94 -5
- data/{lib/active_admin/stylesheets/active_admin/_header.scss → app/assets/stylesheets/active_admin/_header.css.scss} +13 -11
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/{lib/active_admin/stylesheets/active_admin/_typography.scss → app/assets/stylesheets/active_admin/_typography.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/_comments.scss → app/assets/stylesheets/active_admin/components/_comments.css.scss} +0 -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/{lib/active_admin/stylesheets/active_admin/mixins/_all.scss → app/assets/stylesheets/active_admin/mixins/_all.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss → app/assets/stylesheets/active_admin/mixins/_buttons.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss → app/assets/stylesheets/active_admin/mixins/_gradients.css.scss} +8 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_icons.scss → app/assets/stylesheets/active_admin/mixins/_icons.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_reset.scss → app/assets/stylesheets/active_admin/mixins/_reset.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss → app/assets/stylesheets/active_admin/mixins/_rounded.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_sections.scss → app/assets/stylesheets/active_admin/mixins/_sections.css.scss} +9 -2
- data/{lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss → app/assets/stylesheets/active_admin/mixins/_shadows.css.scss} +1 -1
- data/{lib/active_admin/stylesheets/active_admin/mixins/_variables.scss → app/assets/stylesheets/active_admin/mixins/_variables.css.scss} +12 -3
- data/{lib/active_admin/views/templates/active_admin_dashboard → app/views/active_admin/dashboard}/index.html.arb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/reset_password_instructions.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/unlock_instructions.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/edit.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/new.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/sessions/new.html.erb +1 -1
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/shared/_links.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/unlocks/new.html.erb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/edit.html.arb +0 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/index.html.arb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/new.html.arb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/show.html.arb +0 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/{lib/active_admin/views/templates → app/views}/layouts/active_admin_logged_out.html.erb +8 -4
- data/docs/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -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 +90 -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 +31 -4
- data/features/edit_page.feature +30 -1
- data/features/index/filters.feature +35 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +2 -0
- data/features/index/index_as_block.feature +1 -1
- data/features/index/index_as_grid.feature +1 -1
- data/features/index/index_as_table.feature +2 -0
- data/features/index/index_blank_slate.feature +56 -0
- data/features/index/pagination.feature +0 -6
- data/features/registering_assets.feature +2 -2
- data/features/sidebar_sections.feature +7 -8
- data/features/specifying_actions.feature +72 -1
- data/features/step_definitions/action_item_steps.rb +2 -2
- data/features/step_definitions/additional_web_steps.rb +26 -16
- data/features/step_definitions/attribute_steps.rb +5 -7
- data/features/step_definitions/configuration_steps.rb +9 -9
- data/features/step_definitions/factory_steps.rb +4 -3
- data/features/step_definitions/format_steps.rb +29 -1
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +2 -2
- data/features/step_definitions/sidebar_steps.rb +1 -5
- data/features/step_definitions/user_steps.rb +8 -2
- data/features/step_definitions/web_steps.rb +82 -90
- data/features/sti_resource.feature +12 -0
- data/features/support/env.rb +12 -10
- data/features/support/paths.rb +2 -0
- data/features/support/selectors.rb +45 -0
- data/lib/active_admin.rb +33 -263
- data/lib/active_admin/application.rb +228 -0
- data/lib/active_admin/arbre.rb +10 -10
- data/lib/active_admin/arbre/{html.rb → builder.rb} +29 -2
- data/lib/active_admin/arbre/context.rb +8 -0
- data/lib/active_admin/arbre/{attributes.rb → html/attributes.rb} +0 -0
- data/lib/active_admin/arbre/{class_list.rb → html/class_list.rb} +0 -0
- data/lib/active_admin/arbre/{collection.rb → html/collection.rb} +0 -0
- data/lib/active_admin/arbre/{document.rb → html/document.rb} +0 -0
- data/lib/active_admin/arbre/{element.rb → html/element.rb} +6 -6
- data/lib/active_admin/arbre/{html5_elements.rb → html/html5_elements.rb} +0 -0
- data/lib/active_admin/arbre/{tag.rb → html/tag.rb} +0 -0
- data/lib/active_admin/arbre/{text_node.rb → html/text_node.rb} +0 -0
- data/lib/active_admin/asset_registration.rb +1 -1
- data/lib/active_admin/callbacks.rb +5 -3
- data/lib/active_admin/comments.rb +3 -3
- data/lib/active_admin/comments/comment.rb +6 -0
- data/lib/active_admin/comments/configuration.rb +8 -6
- data/lib/active_admin/comments/namespace_helper.rb +1 -1
- data/lib/active_admin/comments/views/active_admin_comments.rb +1 -1
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +1 -1
- data/lib/active_admin/dashboards/dashboard_controller.rb +3 -10
- data/lib/active_admin/dependency_checker.rb +28 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +14 -3
- data/lib/active_admin/dsl.rb +26 -4
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/form_builder.rb +18 -9
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -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 +39 -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/zh_cn.yml +40 -0
- data/lib/active_admin/menu_item.rb +6 -0
- data/lib/active_admin/namespace.rb +14 -5
- data/lib/active_admin/reloader.rb +30 -0
- data/lib/active_admin/renderer.rb +1 -1
- data/lib/active_admin/resource.rb +45 -88
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +46 -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 +32 -37
- data/lib/active_admin/resource_controller/action_builder.rb +1 -1
- data/lib/active_admin/resource_controller/actions.rb +66 -40
- data/lib/active_admin/resource_controller/callbacks.rb +1 -1
- data/lib/active_admin/resource_controller/collection.rb +9 -14
- data/lib/active_admin/resource_controller/filters.rb +1 -1
- data/lib/active_admin/resource_controller/form.rb +1 -1
- data/lib/active_admin/resource_controller/menu.rb +1 -1
- data/lib/active_admin/resource_controller/page_configurations.rb +2 -2
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_controller/sidebars.rb +1 -21
- 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 +16 -2
- 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 +1 -1
- data/lib/active_admin/view_factory.rb +5 -3
- data/lib/active_admin/view_helpers.rb +1 -2
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/display_helper.rb +1 -1
- data/lib/active_admin/view_helpers/filter_form_helper.rb +26 -14
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
- data/lib/active_admin/views/components/attributes_table.rb +2 -2
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +1 -3
- data/lib/active_admin/views/components/paginated_collection.rb +26 -8
- data/lib/active_admin/views/components/scopes.rb +13 -8
- data/lib/active_admin/views/components/sidebar_section.rb +1 -3
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +25 -6
- data/lib/active_admin/views/header_renderer.rb +20 -4
- data/lib/active_admin/views/index_as_block.rb +12 -7
- data/lib/active_admin/views/index_as_blog.rb +61 -21
- data/lib/active_admin/views/index_as_grid.rb +22 -1
- data/lib/active_admin/views/index_as_table.rb +97 -6
- data/lib/active_admin/views/pages/base.rb +20 -9
- data/lib/active_admin/views/pages/dashboard.rb +7 -4
- data/lib/active_admin/views/pages/edit.rb +3 -2
- data/lib/active_admin/views/pages/index.rb +30 -5
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +3 -2
- data/lib/active_admin/views/pages/show.rb +1 -1
- data/lib/active_admin/views/tabbed_navigation.rb +94 -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/install/install_generator.rb +2 -4
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +26 -4
- data/lib/generators/active_admin/install/templates/dashboards.rb +4 -2
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +2 -2
- data/script/local +44 -0
- data/script/use_rails +46 -0
- data/spec/integration/belongs_to_spec.rb +1 -1
- 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 +21 -11
- data/spec/support/detect_rails_version.rb +10 -0
- data/spec/support/integration_example_group.rb +1 -1
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +1 -1
- data/spec/support/rails_template_with_data.rb +2 -1
- data/spec/support/templates/cucumber.rb +0 -4
- data/spec/unit/active_admin_spec.rb +8 -44
- data/spec/unit/application_spec.rb +78 -0
- data/spec/unit/arbre/context_spec.rb +22 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +2 -2
- data/spec/unit/arbre/html/element_spec.rb +2 -3
- data/spec/unit/arbre/html/tag_attributes_spec.rb +2 -2
- data/spec/unit/arbre/html/tag_spec.rb +2 -2
- data/spec/unit/arbre/html_spec.rb +2 -3
- data/spec/unit/auto_link_spec.rb +2 -1
- data/spec/unit/belongs_to_spec.rb +2 -1
- data/spec/unit/comments_spec.rb +43 -39
- data/spec/unit/controller_filters_spec.rb +11 -3
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/devise_spec.rb +66 -0
- data/spec/unit/display_name_spec.rb +2 -2
- data/spec/unit/filter_form_builder_spec.rb +6 -3
- data/spec/unit/form_builder_spec.rb +20 -2
- 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 +6 -0
- data/spec/unit/namespace_spec.rb +68 -19
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +18 -27
- data/spec/unit/reloader_spec.rb +28 -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 +64 -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 +1 -1
- data/spec/unit/resource_controller_spec.rb +29 -24
- data/spec/unit/resource_spec.rb +78 -94
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +11 -1
- data/spec/unit/view_factory_spec.rb +4 -1
- data/spec/unit/{components → views/components}/attributes_table_spec.rb +2 -2
- data/spec/unit/views/components/blank_slate_spec.rb +15 -0
- data/spec/unit/{components → views/components}/columns_spec.rb +2 -2
- data/spec/unit/{components → views/components}/panel_spec.rb +1 -3
- data/spec/unit/{components → views/components}/sidebar_section_spec.rb +3 -3
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/{components → views/components}/table_for_spec.rb +2 -1
- 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 +55 -0
- data/tasks/yard.rake +6 -0
- metadata +310 -189
- data/CHANGELOG.rdoc +0 -76
- data/lib/active_admin/action_items.rb +0 -37
- data/lib/active_admin/sidebar.rb +0 -39
- data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +0 -13
- data/lib/active_admin/view_helpers/status_tag_helper.rb +0 -13
- data/lib/active_admin/view_helpers/table_helper.rb +0 -12
- data/lib/active_admin/views/tabs_renderer.rb +0 -52
- data/lib/active_admin/views/templates/active_admin_default/index.csv.erb +0 -2
- data/lib/active_admin/views/templates/layouts/active_admin.html.erb +0 -39
- data/lib/generators/active_admin/install/templates/active_admin.js +0 -51
- data/spec/controllers/index_as_csv_spec.rb +0 -35
- data/spec/unit/action_items_spec.rb +0 -27
- data/spec/unit/tabs_renderer_spec.rb +0 -56
@@ -0,0 +1,30 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
# Deals with reloading Active Admin on each request in
|
3
|
+
# development and once in production.
|
4
|
+
class Reloader
|
5
|
+
|
6
|
+
# @param [String] rails_version
|
7
|
+
# The version of Rails we're using. We use this to switch between
|
8
|
+
# the correcr Rails reloader class.
|
9
|
+
def initialize(rails_version)
|
10
|
+
@rails_version = rails_version.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
# Attach to Rails and perform the reload on each request.
|
14
|
+
def attach!
|
15
|
+
reloader_class.to_prepare do
|
16
|
+
ActiveAdmin.application.unload!
|
17
|
+
Rails.application.reload_routes!
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def reloader_class
|
22
|
+
if @rails_version[0..2] == '3.1'
|
23
|
+
ActionDispatch::Reloader
|
24
|
+
else
|
25
|
+
ActionDispatch::Callbacks
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -1,3 +1,9 @@
|
|
1
|
+
require 'active_admin/resource/action_items'
|
2
|
+
require 'active_admin/resource/menu'
|
3
|
+
require 'active_admin/resource/naming'
|
4
|
+
require 'active_admin/resource/scopes'
|
5
|
+
require 'active_admin/resource/sidebars'
|
6
|
+
|
1
7
|
module ActiveAdmin
|
2
8
|
|
3
9
|
# Resource is the primary data storage for resource configuration in Active Admin
|
@@ -31,9 +37,6 @@ module ActiveAdmin
|
|
31
37
|
# An array of collection actions defined for this resource
|
32
38
|
attr_reader :collection_actions
|
33
39
|
|
34
|
-
# The titleized name to use for this resource
|
35
|
-
attr_accessor :resource_name
|
36
|
-
|
37
40
|
# The default sort order to use in the controller
|
38
41
|
attr_accessor :sort_order
|
39
42
|
|
@@ -46,44 +49,30 @@ module ActiveAdmin
|
|
46
49
|
# Set to false to turn off admin notes
|
47
50
|
attr_accessor :admin_notes
|
48
51
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
# An underscored safe representation internally for this resource
|
62
|
-
def underscored_resource_name
|
63
|
-
@underscored_resource_name ||= if @options[:as]
|
64
|
-
@options[:as].gsub(' ', '').underscore.singularize
|
65
|
-
else
|
66
|
-
resource.name.gsub('::','').underscore
|
52
|
+
# Set the configuration for the CSV
|
53
|
+
attr_writer :csv_builder
|
54
|
+
|
55
|
+
module Base
|
56
|
+
def initialize(namespace, resource, options = {})
|
57
|
+
@namespace = namespace
|
58
|
+
@resource = resource
|
59
|
+
@options = default_options.merge(options)
|
60
|
+
@sort_order = @options[:sort_order]
|
61
|
+
@page_configs = {}
|
62
|
+
@member_actions, @collection_actions = [], []
|
67
63
|
end
|
68
64
|
end
|
69
65
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
def resource_name
|
77
|
-
@resource_name ||= underscored_resource_name.titleize
|
78
|
-
end
|
66
|
+
include Base
|
67
|
+
include ActionItems
|
68
|
+
include Menu
|
69
|
+
include Naming
|
70
|
+
include Scopes
|
71
|
+
include Sidebars
|
79
72
|
|
80
|
-
# Returns the plural version of this resource
|
81
|
-
def plural_resource_name
|
82
|
-
@plural_resource_name ||= resource_name.pluralize
|
83
|
-
end
|
84
73
|
|
85
74
|
def resource_table_name
|
86
|
-
resource.
|
75
|
+
resource.quoted_table_name
|
87
76
|
end
|
88
77
|
|
89
78
|
# Returns a properly formatted controller name for this
|
@@ -105,7 +94,15 @@ module ActiveAdmin
|
|
105
94
|
# Returns a symbol for the route to use to get to the
|
106
95
|
# collection of this resource
|
107
96
|
def route_collection_path
|
108
|
-
[route_prefix, controller.resources_configuration[:self][:route_collection_name]
|
97
|
+
route = [route_prefix, controller.resources_configuration[:self][:route_collection_name]]
|
98
|
+
|
99
|
+
if controller.resources_configuration[:self][:route_collection_name] ==
|
100
|
+
controller.resources_configuration[:self][:route_instance_name]
|
101
|
+
route << "index"
|
102
|
+
end
|
103
|
+
|
104
|
+
route << 'path'
|
105
|
+
route.compact.join('_').to_sym
|
109
106
|
end
|
110
107
|
|
111
108
|
# Returns the named route for an instance of this resource
|
@@ -113,30 +110,6 @@ module ActiveAdmin
|
|
113
110
|
[route_prefix, controller.resources_configuration[:self][:route_instance_name], 'path'].compact.join('_').to_sym
|
114
111
|
end
|
115
112
|
|
116
|
-
# Set the menu options. To not add this resource to the menu, just
|
117
|
-
# call #menu(false)
|
118
|
-
def menu(options = {})
|
119
|
-
options = options == false ? { :display => false } : options
|
120
|
-
@menu_options = options
|
121
|
-
end
|
122
|
-
|
123
|
-
# Returns the name to put this resource under in the menu
|
124
|
-
def parent_menu_item_name
|
125
|
-
@menu_options[:parent]
|
126
|
-
end
|
127
|
-
|
128
|
-
# Returns the name to be displayed in the menu for this resource
|
129
|
-
def menu_item_name
|
130
|
-
@menu_options[:label] || plural_resource_name
|
131
|
-
end
|
132
|
-
|
133
|
-
# Should this resource be added to the menu system?
|
134
|
-
def include_in_menu?
|
135
|
-
return false if @menu_options[:display] == false
|
136
|
-
!(belongs_to? && !belongs_to_config.optional?)
|
137
|
-
end
|
138
|
-
|
139
|
-
|
140
113
|
# Clears all the member actions this resource knows about
|
141
114
|
def clear_member_actions!
|
142
115
|
@member_actions = []
|
@@ -146,30 +119,6 @@ module ActiveAdmin
|
|
146
119
|
@collection_actions = []
|
147
120
|
end
|
148
121
|
|
149
|
-
# Return an array of scopes for this resource
|
150
|
-
def scopes
|
151
|
-
@scopes
|
152
|
-
end
|
153
|
-
|
154
|
-
# Returns a scope for this object by its identifier
|
155
|
-
def get_scope_by_id(id)
|
156
|
-
id = id.to_s
|
157
|
-
@scopes.find{|s| s.id == id }
|
158
|
-
end
|
159
|
-
|
160
|
-
def default_scope
|
161
|
-
@default_scope
|
162
|
-
end
|
163
|
-
|
164
|
-
# Create a new scope object for this resource
|
165
|
-
def scope(*args, &block)
|
166
|
-
options = args.extract_options!
|
167
|
-
@scopes << ActiveAdmin::Scope.new(*args, &block)
|
168
|
-
if options[:default]
|
169
|
-
@default_scope = @scopes.last
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
122
|
# Are admin notes turned on for this resource
|
174
123
|
def admin_notes?
|
175
124
|
admin_notes.nil? ? ActiveAdmin.admin_notes : admin_notes
|
@@ -189,14 +138,22 @@ module ActiveAdmin
|
|
189
138
|
!belongs_to_config.nil?
|
190
139
|
end
|
191
140
|
|
141
|
+
# The csv builder for this resource
|
142
|
+
def csv_builder
|
143
|
+
@csv_builder || default_csv_builder
|
144
|
+
end
|
145
|
+
|
192
146
|
private
|
193
147
|
|
194
148
|
def default_options
|
195
149
|
{
|
196
|
-
:namespace => ActiveAdmin.default_namespace,
|
197
|
-
:sort_order =>
|
150
|
+
:namespace => ActiveAdmin.application.default_namespace,
|
151
|
+
:sort_order => "#{resource.respond_to?(:primary_key) ? resource.primary_key : 'id'}_desc"
|
198
152
|
}
|
199
153
|
end
|
200
154
|
|
201
|
-
|
202
|
-
|
155
|
+
def default_csv_builder
|
156
|
+
@default_csv_builder ||= CSVBuilder.default_for_resource(resource)
|
157
|
+
end
|
158
|
+
end # class Resource
|
159
|
+
end # module ActiveAdmin
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'active_admin/helpers/optional_display'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
|
5
|
+
class Resource
|
6
|
+
module ActionItems
|
7
|
+
|
8
|
+
# Add the default action items to a resource when it's
|
9
|
+
# initialized
|
10
|
+
def initialize(*args)
|
11
|
+
super
|
12
|
+
add_default_action_items
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [Array] The set of action items for this resource
|
16
|
+
def action_items
|
17
|
+
@action_items ||= []
|
18
|
+
end
|
19
|
+
|
20
|
+
# Add a new action item to a resource
|
21
|
+
#
|
22
|
+
# @param [Hash] options valid keys include:
|
23
|
+
# :only: A single or array of controller actions to display
|
24
|
+
# this action item on.
|
25
|
+
# :except: A single or array of controller actions not to
|
26
|
+
# display this action item on.
|
27
|
+
def add_action_item(options = {}, &block)
|
28
|
+
self.action_items << ActiveAdmin::ActionItem.new(options, &block)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Returns a set of action items to display for a specific controller action
|
32
|
+
#
|
33
|
+
# @param [String, Symbol] action the action to retrieve action items for
|
34
|
+
#
|
35
|
+
# @return [Array] Array of ActionItems for the controller actions
|
36
|
+
def action_items_for(action)
|
37
|
+
action_items.select{|item| item.display_on?(action) }
|
38
|
+
end
|
39
|
+
|
40
|
+
# Clears all the existing action items for this resource
|
41
|
+
def clear_action_items!
|
42
|
+
@action_items = []
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
# Adds the default action items to each resource
|
48
|
+
def add_default_action_items
|
49
|
+
# New Link on all actions except :new and :show
|
50
|
+
add_action_item :except => [:new, :show] do
|
51
|
+
if controller.action_methods.include?('new')
|
52
|
+
link_to(I18n.t('active_admin.new_model', :model => active_admin_config.resource_name), new_resource_path)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Edit link on show
|
57
|
+
add_action_item :only => :show do
|
58
|
+
if controller.action_methods.include?('edit')
|
59
|
+
link_to(I18n.t('active_admin.edit_model', :model => active_admin_config.resource_name), edit_resource_path(resource))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Destroy link on show
|
64
|
+
add_action_item :only => :show do
|
65
|
+
if controller.action_methods.include?("destroy")
|
66
|
+
link_to(I18n.t('active_admin.delete_model', :model => active_admin_config.resource_name),
|
67
|
+
resource_path(resource),
|
68
|
+
:method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'))
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# Model class to store the data for ActionItems
|
77
|
+
class ActionItem
|
78
|
+
include ActiveAdmin::OptionalDisplay
|
79
|
+
|
80
|
+
attr_accessor :block
|
81
|
+
|
82
|
+
def initialize(options = {}, &block)
|
83
|
+
@options, @block = options, block
|
84
|
+
normalize_display_options!
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class Resource
|
3
|
+
module Menu
|
4
|
+
|
5
|
+
# Set the menu options. To not add this resource to the menu, just
|
6
|
+
# call #menu(false)
|
7
|
+
def menu(options = {})
|
8
|
+
options = options == false ? { :display => false } : options
|
9
|
+
@menu_options = options
|
10
|
+
end
|
11
|
+
|
12
|
+
# The options to use for the menu
|
13
|
+
def menu_options
|
14
|
+
@menu_options ||= {}
|
15
|
+
end
|
16
|
+
|
17
|
+
# Returns the name to put this resource under in the menu
|
18
|
+
def parent_menu_item_name
|
19
|
+
menu_options[:parent]
|
20
|
+
end
|
21
|
+
|
22
|
+
# Returns the name to be displayed in the menu for this resource
|
23
|
+
def menu_item_name
|
24
|
+
menu_options[:label] || plural_resource_name
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns the items priority for altering the default sort order
|
28
|
+
def menu_item_priority
|
29
|
+
menu_options[:priority] || 10
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns a proc for deciding whether to display the menu item or not in the view
|
33
|
+
def menu_item_display_if
|
34
|
+
menu_options[:if] || proc { true }
|
35
|
+
end
|
36
|
+
|
37
|
+
# Should this resource be added to the menu system?
|
38
|
+
def include_in_menu?
|
39
|
+
return false if menu_options[:display] == false
|
40
|
+
!(belongs_to? && !belongs_to_config.optional?)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class Resource
|
3
|
+
module Naming
|
4
|
+
|
5
|
+
# An underscored safe representation internally for this resource
|
6
|
+
def underscored_resource_name
|
7
|
+
@underscored_resource_name ||= if @options[:as]
|
8
|
+
@options[:as].gsub(' ', '').underscore.singularize
|
9
|
+
else
|
10
|
+
resource.name.gsub('::','').underscore
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# A camelized safe representation for this resource
|
15
|
+
def camelized_resource_name
|
16
|
+
underscored_resource_name.camelize
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the name to call this resource.
|
20
|
+
# By default will use resource.model_name.human
|
21
|
+
def resource_name
|
22
|
+
@resource_name ||= if @options[:as] || !resource.respond_to?(:model_name)
|
23
|
+
underscored_resource_name.titleize
|
24
|
+
else
|
25
|
+
resource.model_name.human.titleize
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Returns the plural version of this resource
|
30
|
+
def plural_resource_name
|
31
|
+
@plural_resource_name ||= if @options[:as] || !resource.respond_to?(:model_name)
|
32
|
+
resource_name.pluralize
|
33
|
+
else
|
34
|
+
# Check if we have a translation available otherwise pluralize
|
35
|
+
begin
|
36
|
+
I18n.translate!("activerecord.models.#{resource.model_name.downcase}")
|
37
|
+
resource.model_name.human(:count => 3)
|
38
|
+
rescue I18n::MissingTranslationData
|
39
|
+
resource_name.pluralize
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
class Resource
|
3
|
+
module Scopes
|
4
|
+
|
5
|
+
# Return an array of scopes for this resource
|
6
|
+
def scopes
|
7
|
+
@scopes ||= []
|
8
|
+
end
|
9
|
+
|
10
|
+
# Returns a scope for this object by its identifier
|
11
|
+
def get_scope_by_id(id)
|
12
|
+
id = id.to_s
|
13
|
+
scopes.find{|s| s.id == id }
|
14
|
+
end
|
15
|
+
|
16
|
+
def default_scope
|
17
|
+
@default_scope
|
18
|
+
end
|
19
|
+
|
20
|
+
# Create a new scope object for this resource.
|
21
|
+
# If you want to internationalize the scope name, you can add
|
22
|
+
# to your i18n files a key like "active_admin.scopes.scope_method".
|
23
|
+
def scope(*args, &block)
|
24
|
+
options = args.extract_options!
|
25
|
+
self.scopes << ActiveAdmin::Scope.new(*args, &block)
|
26
|
+
if options[:default]
|
27
|
+
@default_scope = scopes.last
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'active_admin/helpers/optional_display'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
|
5
|
+
class Resource
|
6
|
+
module Sidebars
|
7
|
+
|
8
|
+
def initialize(*args)
|
9
|
+
super
|
10
|
+
add_default_sidebar_sections
|
11
|
+
end
|
12
|
+
|
13
|
+
def sidebar_sections
|
14
|
+
@sidebar_sections ||= []
|
15
|
+
end
|
16
|
+
|
17
|
+
def clear_sidebar_sections!
|
18
|
+
@sidebar_sections = []
|
19
|
+
end
|
20
|
+
|
21
|
+
def sidebar_sections_for(action)
|
22
|
+
sidebar_sections.select{|section| section.display_on?(action) }
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def add_default_sidebar_sections
|
28
|
+
self.sidebar_sections << ActiveAdmin::SidebarSection.new(:filters, :only => :index) do
|
29
|
+
active_admin_filters_form_for assigns["search"], filters_config
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|