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,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
|
data/lib/active_admin/scope.rb
CHANGED
@@ -3,15 +3,29 @@ module ActiveAdmin
|
|
3
3
|
|
4
4
|
attr_reader :name, :scope_method, :id, :scope_block
|
5
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
|
+
#
|
6
19
|
def initialize(name, method = nil, &block)
|
7
20
|
@name = name.to_s.titleize
|
8
|
-
@scope_method = method
|
21
|
+
@scope_method = method
|
22
|
+
# Scope ':all' means no scoping
|
23
|
+
@scope_method ||= name.to_sym unless name.to_sym == :all
|
9
24
|
@id = @name.gsub(' ', '').underscore
|
10
25
|
if block_given?
|
11
26
|
@scope_method = nil
|
12
27
|
@scope_block = block
|
13
28
|
end
|
14
29
|
end
|
15
|
-
|
16
30
|
end
|
17
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
|
File without changes
|
data/lib/active_admin/version.rb
CHANGED
@@ -4,18 +4,20 @@ module ActiveAdmin
|
|
4
4
|
class ViewFactory < AbstractViewFactory
|
5
5
|
|
6
6
|
# Register Helper Renderers
|
7
|
-
register :global_navigation => ActiveAdmin::Views::
|
7
|
+
register :global_navigation => ActiveAdmin::Views::TabbedNavigation,
|
8
8
|
:action_items => ActiveAdmin::Views::ActionItems,
|
9
9
|
:header => ActiveAdmin::Views::HeaderRenderer,
|
10
10
|
:dashboard_section => ActiveAdmin::Views::DashboardSection,
|
11
|
-
:index_scopes => ActiveAdmin::Views::Scopes
|
11
|
+
:index_scopes => ActiveAdmin::Views::Scopes,
|
12
|
+
:blank_slate => ActiveAdmin::Views::BlankSlate
|
12
13
|
|
13
14
|
# Register All The Pages
|
14
15
|
register :dashboard_page => ActiveAdmin::Views::Pages::Dashboard,
|
15
16
|
:index_page => ActiveAdmin::Views::Pages::Index,
|
16
17
|
:show_page => ActiveAdmin::Views::Pages::Show,
|
17
18
|
:new_page => ActiveAdmin::Views::Pages::New,
|
18
|
-
:edit_page => ActiveAdmin::Views::Pages::Edit
|
19
|
+
:edit_page => ActiveAdmin::Views::Pages::Edit,
|
20
|
+
:layout => ActiveAdmin::Views::Pages::Layout
|
19
21
|
|
20
22
|
end
|
21
23
|
end
|
@@ -5,6 +5,7 @@ module ActiveAdmin
|
|
5
5
|
Dir[File.expand_path('../view_helpers', __FILE__) + "/*.rb"].each{|f| require f }
|
6
6
|
|
7
7
|
include AssignsWithIndifferentAccessHelper
|
8
|
+
include ActiveAdminApplicationHelper
|
8
9
|
include RendererHelper
|
9
10
|
include AutoLinkHelper
|
10
11
|
include BreadcrumbHelper
|
@@ -12,9 +13,7 @@ module ActiveAdmin
|
|
12
13
|
include IconHelper
|
13
14
|
include MethodOrProcHelper
|
14
15
|
include SidebarHelper
|
15
|
-
include TableHelper
|
16
16
|
include FormHelper
|
17
|
-
include StatusTagHelper
|
18
17
|
include FilterFormHelper
|
19
18
|
include TitleHelper
|
20
19
|
include ViewFactoryHelper
|
@@ -32,7 +32,8 @@ module ActiveAdmin
|
|
32
32
|
if respond_to?(:active_admin_config) && active_admin_config
|
33
33
|
active_admin_config.namespace
|
34
34
|
else
|
35
|
-
|
35
|
+
# Return a default namespace if none exists
|
36
|
+
active_admin_application.find_or_create_namespace(active_admin_application.default_namespace)
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
@@ -5,7 +5,7 @@ module ActiveAdmin
|
|
5
5
|
def display_name_method_for(resource)
|
6
6
|
@@display_name_methods_cache ||= {}
|
7
7
|
@@display_name_methods_cache[resource.class] ||=
|
8
|
-
|
8
|
+
active_admin_application.display_name_methods.find{|method| resource.respond_to? method }
|
9
9
|
end
|
10
10
|
|
11
11
|
# Tries to display an object with as friendly of output
|
@@ -9,8 +9,9 @@ module ActiveAdmin
|
|
9
9
|
options[:url] ||= collection_path
|
10
10
|
options[:html] ||= {}
|
11
11
|
options[:html][:method] = :get
|
12
|
+
options[:html][:class] ||= "filter_form"
|
12
13
|
options[:as] = :q
|
13
|
-
clear_link = link_to(
|
14
|
+
clear_link = link_to(I18n.t('active_admin.clear_filters'), "#", :class => "clear_filters_btn")
|
14
15
|
form_for search, options do |f|
|
15
16
|
filters.each do |filter_options|
|
16
17
|
filter_options = filter_options.dup
|
@@ -19,8 +20,8 @@ module ActiveAdmin
|
|
19
20
|
end
|
20
21
|
|
21
22
|
buttons = content_tag :div, :class => "buttons" do
|
22
|
-
f.submit(
|
23
|
-
clear_link +
|
23
|
+
f.submit(I18n.t('active_admin.filter')) +
|
24
|
+
clear_link +
|
24
25
|
hidden_field_tag("order", params[:order]) +
|
25
26
|
hidden_field_tag("scope", params[:scope])
|
26
27
|
end
|
@@ -35,12 +36,13 @@ module ActiveAdmin
|
|
35
36
|
# This form builder defines methods to build filter forms such
|
36
37
|
# as the one found in the sidebar of the index page of a standard resource.
|
37
38
|
class FilterFormBuilder < FormBuilder
|
38
|
-
|
39
|
+
|
39
40
|
def filter(method, options = {})
|
40
41
|
return "" if method.nil? || method == ""
|
41
42
|
options[:as] ||= default_filter_type(method)
|
42
43
|
return "" unless options[:as]
|
43
44
|
field_type = options.delete(:as)
|
45
|
+
options[:label] ||= default_filter_label(method)
|
44
46
|
content = with_new_form_buffer do
|
45
47
|
send("filter_#{field_type}_input", method, options)
|
46
48
|
end
|
@@ -52,7 +54,7 @@ module ActiveAdmin
|
|
52
54
|
def filter_string_input(method, options = {})
|
53
55
|
field_name = "#{method}_contains"
|
54
56
|
|
55
|
-
[ label(field_name,
|
57
|
+
[ label(field_name, I18n.t('active_admin.search_field', :field => options[:label])),
|
56
58
|
text_field(field_name)
|
57
59
|
].join("\n").html_safe
|
58
60
|
end
|
@@ -61,9 +63,9 @@ module ActiveAdmin
|
|
61
63
|
gt_field_name = "#{method}_gte"
|
62
64
|
lt_field_name = "#{method}_lte"
|
63
65
|
|
64
|
-
[ label(gt_field_name,
|
66
|
+
[ label(gt_field_name, options[:label]),
|
65
67
|
filter_date_text_field(gt_field_name),
|
66
|
-
"
|
68
|
+
template.content_tag(:span, "-", :class => "seperator"),
|
67
69
|
filter_date_text_field(lt_field_name)
|
68
70
|
].join("\n").html_safe
|
69
71
|
end
|
@@ -76,7 +78,7 @@ module ActiveAdmin
|
|
76
78
|
def filter_numeric_input(method, options = {})
|
77
79
|
filters = numeric_filters_for_method(method, options.delete(:filters) || default_numeric_filters)
|
78
80
|
current_filter = current_numeric_scope(filters)
|
79
|
-
filter_select = @template.select_tag '', @template.options_for_select(filters, current_filter),
|
81
|
+
filter_select = @template.select_tag '', @template.options_for_select(filters, current_filter),
|
80
82
|
:onchange => "document.getElementById('#{method}_numeric').name = 'q[' + this.value + ']';"
|
81
83
|
filter_input = text_field current_filter, :size => 10, :id => "#{method}_numeric"
|
82
84
|
|
@@ -86,7 +88,7 @@ module ActiveAdmin
|
|
86
88
|
filter_input
|
87
89
|
].join("\n").html_safe
|
88
90
|
end
|
89
|
-
|
91
|
+
|
90
92
|
def numeric_filters_for_method(method, filters)
|
91
93
|
filters.collect{|scope| [scope[0], [method,scope[1]].join("_") ] }
|
92
94
|
end
|
@@ -98,7 +100,7 @@ module ActiveAdmin
|
|
98
100
|
end
|
99
101
|
|
100
102
|
def default_numeric_filters
|
101
|
-
[['
|
103
|
+
[[I18n.t('active_admin.equal_to'), 'eq'], [I18n.t('active_admin.greater_than'), 'gt'], [I18n.t('active_admin.less_than'), 'lt']]
|
102
104
|
end
|
103
105
|
|
104
106
|
def filter_select_input(method, options = {})
|
@@ -106,8 +108,8 @@ module ActiveAdmin
|
|
106
108
|
input_name = (generate_association_input_name(method).to_s + "_eq").to_sym
|
107
109
|
collection = find_collection_for_column(association_name, options)
|
108
110
|
|
109
|
-
[ label(input_name,
|
110
|
-
select(input_name, collection, options.merge(:include_blank => '
|
111
|
+
[ label(input_name, options[:label]),
|
112
|
+
select(input_name, collection, options.merge(:include_blank => I18n.t('active_admin.any')))
|
111
113
|
].join("\n").html_safe
|
112
114
|
end
|
113
115
|
|
@@ -123,7 +125,7 @@ module ActiveAdmin
|
|
123
125
|
end.join("\n").html_safe
|
124
126
|
end
|
125
127
|
|
126
|
-
[ label(input_name,
|
128
|
+
[ label(input_name, options[:label]),
|
127
129
|
checkboxes
|
128
130
|
].join("\n").html_safe
|
129
131
|
end
|
@@ -159,6 +161,16 @@ module ActiveAdmin
|
|
159
161
|
end
|
160
162
|
end
|
161
163
|
|
164
|
+
# Returns the default label for a given attribute
|
165
|
+
# Will use ActiveModel I18n if possible
|
166
|
+
def default_filter_label(method)
|
167
|
+
if @object.base.respond_to?(:human_attribute_name)
|
168
|
+
@object.base.human_attribute_name(method)
|
169
|
+
else
|
170
|
+
method.to_s.titlecase
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
162
174
|
# Returns the column for an attribute on the object being searched
|
163
175
|
# if it exists. Otherwise returns nil
|
164
176
|
def column_for(method)
|
@@ -170,5 +182,5 @@ module ActiveAdmin
|
|
170
182
|
@object.base.reflect_on_association(method) if @object.base.respond_to?(:reflect_on_association)
|
171
183
|
end
|
172
184
|
|
173
|
-
end
|
185
|
+
end
|
174
186
|
end
|
@@ -35,11 +35,11 @@ module ActiveAdmin
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def header_content_for(attr)
|
38
|
-
attr.to_s.titleize
|
38
|
+
@record.class.respond_to?(:human_attribute_name) ? @record.class.human_attribute_name(attr).titleize : attr.to_s.titleize
|
39
39
|
end
|
40
40
|
|
41
41
|
def empty_value
|
42
|
-
span
|
42
|
+
span I18n.t('active_admin.empty'), :class => "empty"
|
43
43
|
end
|
44
44
|
|
45
45
|
def content_for(attr_or_proc)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
# Build a Blank Slate
|
4
|
+
class BlankSlate < ActiveAdmin::Component
|
5
|
+
builder_method :blank_slate
|
6
|
+
|
7
|
+
def default_class_name
|
8
|
+
'blank_slate_container'
|
9
|
+
end
|
10
|
+
|
11
|
+
def build(content)
|
12
|
+
super(span(content.html_safe, :class => "blank_slate"))
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -7,7 +7,7 @@ module ActiveAdmin
|
|
7
7
|
#
|
8
8
|
# paginated_collection collection, :entry_name => "Post" do
|
9
9
|
# div do
|
10
|
-
# h2 "Inside the
|
10
|
+
# h2 "Inside the
|
11
11
|
# end
|
12
12
|
# end
|
13
13
|
#
|
@@ -26,14 +26,14 @@ module ActiveAdmin
|
|
26
26
|
|
27
27
|
# Builds a new paginated collection component
|
28
28
|
#
|
29
|
-
# @param [Array] collection A "paginated" collection from
|
29
|
+
# @param [Array] collection A "paginated" collection from kaminari
|
30
30
|
# @param [Hash] options These options will be passed on to the page_entries_info
|
31
|
-
# method
|
31
|
+
# method.
|
32
32
|
# Useful keys:
|
33
|
-
# :entry_name - The name to
|
33
|
+
# :entry_name - The name to display for this resource collection
|
34
34
|
def build(collection, options = {})
|
35
35
|
@collection = collection
|
36
|
-
div(page_entries_info(
|
36
|
+
div(page_entries_info(options).html_safe, :class => "pagination_information")
|
37
37
|
@contents = div(:class => "paginated_collection_contents")
|
38
38
|
build_pagination_with_formats
|
39
39
|
@built = true
|
@@ -58,15 +58,33 @@ module ActiveAdmin
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def build_pagination
|
61
|
-
text_node
|
61
|
+
text_node paginate(collection)
|
62
62
|
end
|
63
63
|
|
64
64
|
# TODO: Refactor to new HTML DSL
|
65
65
|
def build_download_format_links(formats = [:csv, :xml, :json])
|
66
66
|
links = formats.collect do |format|
|
67
|
-
link_to format.to_s.upcase, { :format => format}.merge(request.query_parameters.except(:commit, :format))
|
67
|
+
link_to format.to_s.upcase, { :format => format}.merge(request.query_parameters.except(:commit, :format))
|
68
|
+
end
|
69
|
+
text_node [I18n.t('active_admin.download'), links].flatten.join(" ").html_safe
|
70
|
+
end
|
71
|
+
|
72
|
+
# modified from will_paginate
|
73
|
+
def page_entries_info(options = {})
|
74
|
+
entry_name = options[:entry_name] ||
|
75
|
+
(collection.empty?? 'entry' : collection.first.class.name.underscore.sub('_', ' '))
|
76
|
+
|
77
|
+
if collection.num_pages < 2
|
78
|
+
case collection.size
|
79
|
+
when 0; I18n.t('active_admin.pagination.empty', :model => entry_name.pluralize)
|
80
|
+
when 1; I18n.t('active_admin.pagination.one', :model => entry_name)
|
81
|
+
else; I18n.t('active_admin.pagination.one_page', :model => entry_name.pluralize, :n => collection.size)
|
82
|
+
end
|
83
|
+
else
|
84
|
+
offset = collection.current_page * active_admin_application.default_per_page
|
85
|
+
total = collection.total_count
|
86
|
+
I18n.t('active_admin.pagination.multiple', :model => entry_name.pluralize, :from => (offset - active_admin_application.default_per_page + 1), :to => offset > total ? total : offset, :total => total)
|
68
87
|
end
|
69
|
-
text_node ["Download:", links].flatten.join(" ").html_safe
|
70
88
|
end
|
71
89
|
|
72
90
|
end
|