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
@@ -47,3 +47,15 @@ Feature: STI Resource
|
|
47
47
|
|
48
48
|
When I follow "Delete User"
|
49
49
|
Then I should see "User was successfully destroyed"
|
50
|
+
|
51
|
+
Scenario: Update and delete a child STI when the parent is registered
|
52
|
+
Given a publisher named "Terry Fox" exists
|
53
|
+
And I am on the index page for users
|
54
|
+
When I follow "Edit"
|
55
|
+
And I fill in "First name" with "Joe"
|
56
|
+
And I press "Update Publisher"
|
57
|
+
Then I should see "Publisher was successfully updated"
|
58
|
+
And I should see "Joe"
|
59
|
+
|
60
|
+
When I follow "Delete User"
|
61
|
+
Then I should see "Publisher was successfully destroyed"
|
data/features/support/env.rb
CHANGED
@@ -6,11 +6,13 @@
|
|
6
6
|
|
7
7
|
ENV['BUNDLE_GEMFILE'] = File.expand_path('../../../Gemfile', __FILE__)
|
8
8
|
|
9
|
+
require File.expand_path('../../../spec/support/detect_rails_version', __FILE__)
|
10
|
+
ENV["RAILS"] = detect_rails_version
|
11
|
+
|
9
12
|
require 'rubygems'
|
10
13
|
require "bundler"
|
11
14
|
Bundler.setup
|
12
15
|
|
13
|
-
ENV["RAILS"] ||= "3.0.0"
|
14
16
|
ENV["RAILS_ENV"] ||= "cucumber"
|
15
17
|
ENV['RAILS_ROOT'] = File.expand_path("../../../spec/rails/rails-#{ENV["RAILS"]}", __FILE__)
|
16
18
|
|
@@ -25,15 +27,11 @@ require ENV['RAILS_ROOT'] + '/config/environment'
|
|
25
27
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
26
28
|
autoload :ActiveAdmin, 'active_admin'
|
27
29
|
|
28
|
-
require 'cucumber/
|
29
|
-
require 'cucumber/rails/world'
|
30
|
-
require 'cucumber/rails/active_record'
|
31
|
-
require 'cucumber/web/tableish'
|
30
|
+
require 'cucumber/rails'
|
32
31
|
|
33
32
|
require 'capybara/rails'
|
34
33
|
require 'capybara/cucumber'
|
35
34
|
require 'capybara/session'
|
36
|
-
require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
|
37
35
|
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
|
38
36
|
# order to ease the transition to Capybara we set the default here. If you'd
|
39
37
|
# prefer to use XPath just remove this line and adjust any selectors in your
|
@@ -80,9 +78,13 @@ unless File.exists?(ENV['RAILS_ROOT'])
|
|
80
78
|
system 'rake setup'
|
81
79
|
end
|
82
80
|
|
83
|
-
|
81
|
+
# Remove all our constants
|
82
|
+
Before do
|
83
|
+
# We are cachine classes, but need to manually clear references to
|
84
|
+
# the controllers. If they aren't clear, the router stores references
|
85
|
+
ActiveSupport::Dependencies.clear
|
84
86
|
|
85
|
-
|
86
|
-
|
87
|
-
|
87
|
+
# Reload Active Admin
|
88
|
+
ActiveAdmin.unload!
|
89
|
+
ActiveAdmin.load!
|
88
90
|
end
|
data/features/support/paths.rb
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
module HtmlSelectorsHelpers
|
2
|
+
# Maps a name to a selector. Used primarily by the
|
3
|
+
#
|
4
|
+
# When /^(.+) within (.+)$/ do |step, scope|
|
5
|
+
#
|
6
|
+
# step definitions in web_steps.rb
|
7
|
+
#
|
8
|
+
def selector_for(locator)
|
9
|
+
case locator
|
10
|
+
|
11
|
+
when "the page"
|
12
|
+
"html > body"
|
13
|
+
|
14
|
+
# Add more mappings here.
|
15
|
+
# Here is an example that pulls values out of the Regexp:
|
16
|
+
#
|
17
|
+
# when /^the (notice|error|info) flash$/
|
18
|
+
# ".flash.#{$1}"
|
19
|
+
|
20
|
+
# You can also return an array to use a different selector
|
21
|
+
# type, like:
|
22
|
+
#
|
23
|
+
# when /the header/
|
24
|
+
# [:xpath, "//header"]
|
25
|
+
|
26
|
+
when "index grid"
|
27
|
+
[:css, "table.index_grid"]
|
28
|
+
|
29
|
+
when /^the "([^"]*)" sidebar$/
|
30
|
+
[:css, "##{$1.gsub(" ", '').underscore}_sidebar_section"]
|
31
|
+
|
32
|
+
# This allows you to provide a quoted selector as the scope
|
33
|
+
# for "within" steps as was previously the default for the
|
34
|
+
# web steps:
|
35
|
+
when /^"(.+)"$/
|
36
|
+
$1
|
37
|
+
|
38
|
+
else
|
39
|
+
raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
|
40
|
+
"Now, go and add a mapping in #{__FILE__}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
World(HtmlSelectorsHelpers)
|
data/lib/active_admin.rb
CHANGED
@@ -1,19 +1,23 @@
|
|
1
1
|
require 'meta_search'
|
2
2
|
require 'devise'
|
3
|
-
require '
|
3
|
+
require 'kaminari'
|
4
4
|
require 'sass'
|
5
5
|
require 'active_admin/arbre'
|
6
|
+
require 'active_admin/engine'
|
6
7
|
|
7
8
|
module ActiveAdmin
|
8
9
|
|
9
10
|
autoload :VERSION, 'active_admin/version'
|
10
|
-
autoload :
|
11
|
+
autoload :Application, 'active_admin/application'
|
11
12
|
autoload :AssetRegistration, 'active_admin/asset_registration'
|
12
13
|
autoload :Breadcrumbs, 'active_admin/breadcrumbs'
|
13
14
|
autoload :Callbacks, 'active_admin/callbacks'
|
14
15
|
autoload :Component, 'active_admin/component'
|
15
16
|
autoload :ControllerAction, 'active_admin/controller_action'
|
17
|
+
autoload :CSVBuilder, 'active_admin/csv_builder'
|
16
18
|
autoload :Dashboards, 'active_admin/dashboards'
|
19
|
+
autoload :DependencyChecker, 'active_admin/dependency_checker'
|
20
|
+
autoload :Deprecation, 'active_admin/deprecation'
|
17
21
|
autoload :Devise, 'active_admin/devise'
|
18
22
|
autoload :DSL, 'active_admin/dsl'
|
19
23
|
autoload :Event, 'active_admin/event'
|
@@ -23,290 +27,56 @@ module ActiveAdmin
|
|
23
27
|
autoload :MenuItem, 'active_admin/menu_item'
|
24
28
|
autoload :Namespace, 'active_admin/namespace'
|
25
29
|
autoload :PageConfig, 'active_admin/page_config'
|
30
|
+
autoload :Reloader, 'active_admin/reloader'
|
26
31
|
autoload :Resource, 'active_admin/resource'
|
27
32
|
autoload :ResourceController, 'active_admin/resource_controller'
|
28
33
|
autoload :Renderer, 'active_admin/renderer'
|
29
34
|
autoload :Scope, 'active_admin/scope'
|
30
|
-
autoload :
|
35
|
+
autoload :ScopeChain, 'active_admin/helpers/scope_chain'
|
36
|
+
autoload :SidebarSection, 'active_admin/sidebar_section'
|
31
37
|
autoload :TableBuilder, 'active_admin/table_builder'
|
32
38
|
autoload :ViewFactory, 'active_admin/view_factory'
|
33
39
|
autoload :ViewHelpers, 'active_admin/view_helpers'
|
34
40
|
autoload :Views, 'active_admin/views'
|
35
41
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
#
|
41
|
-
# config.default_namespace = :super_admin
|
42
|
-
#
|
43
|
-
@@default_namespace = :admin
|
44
|
-
mattr_accessor :default_namespace
|
45
|
-
|
46
|
-
# The default number of resources to display on index pages
|
47
|
-
@@default_per_page = 30
|
48
|
-
mattr_accessor :default_per_page
|
49
|
-
|
50
|
-
# The default sort order for index pages
|
51
|
-
@@default_sort_order = 'id_desc'
|
52
|
-
mattr_accessor :default_sort_order
|
53
|
-
|
54
|
-
# A hash of all the registered namespaces
|
55
|
-
@@namespaces = {}
|
56
|
-
mattr_accessor :namespaces
|
57
|
-
|
58
|
-
# The title which gets displayed in the main layout
|
59
|
-
@@site_title = ""
|
60
|
-
mattr_accessor :site_title
|
61
|
-
|
62
|
-
# Load paths for admin configurations. Add folders to this load path
|
63
|
-
# to load up other resources for administration. External gems can
|
64
|
-
# include their paths in this load path to provide active_admin UIs
|
65
|
-
@@load_paths = [File.expand_path('app/admin', Rails.root)]
|
66
|
-
mattr_accessor :load_paths
|
67
|
-
|
68
|
-
# The view factory to use to generate all the view classes. Take
|
69
|
-
# a look at ActiveAdmin::ViewFactory
|
70
|
-
@@view_factory = ActiveAdmin::ViewFactory.new
|
71
|
-
mattr_accessor :view_factory
|
72
|
-
|
73
|
-
# DEPRECATED: This option is deprecated and will be removed. Use
|
74
|
-
# the #allow_comments_in option instead
|
75
|
-
mattr_accessor :admin_notes
|
76
|
-
|
77
|
-
# The method to call in controllers to get the current user
|
78
|
-
@@current_user_method = :current_admin_user
|
79
|
-
mattr_accessor :current_user_method
|
80
|
-
|
81
|
-
# The method to call in the controllers to ensure that there
|
82
|
-
# is a currently authenticated admin user
|
83
|
-
@@authentication_method = :authenticate_admin_user!
|
84
|
-
mattr_accessor :authentication_method
|
85
|
-
|
86
|
-
# Active Admin makes educated guesses when displaying objects, this is
|
87
|
-
# the list of methods it tries calling in order
|
88
|
-
@@display_name_methods = [:display_name, :full_name, :name, :username, :login, :title, :email, :to_s]
|
89
|
-
mattr_accessor :display_name_methods
|
90
|
-
|
42
|
+
class Railtie < ::Rails::Railtie
|
43
|
+
# Add load paths straight to I18n, so engines and application can overwrite it.
|
44
|
+
require 'active_support/i18n'
|
45
|
+
I18n.load_path += Dir[File.expand_path('../active_admin/locales/*.yml', __FILE__)]
|
91
46
|
end
|
92
47
|
|
93
|
-
|
94
|
-
|
48
|
+
# The instance of the configured application
|
49
|
+
@@application = ::ActiveAdmin::Application.new
|
50
|
+
mattr_accessor :application
|
95
51
|
|
96
52
|
class << self
|
97
53
|
|
98
|
-
|
99
54
|
# Gets called within the initializer
|
100
55
|
def setup
|
101
|
-
|
102
|
-
|
103
|
-
register_javascript 'active_admin_vendor.js'
|
104
|
-
register_javascript 'active_admin.js'
|
105
|
-
|
106
|
-
# Since we're dealing with all our own file loading, we need
|
107
|
-
# to remove our paths from the ActiveSupport autoload paths.
|
108
|
-
# If not, file naming becomes very important and can cause clashes.
|
109
|
-
ActiveSupport::Dependencies.autoload_paths.reject!{|path| load_paths.include?(path) }
|
110
|
-
|
111
|
-
# Add the Active Admin view path to the rails view path
|
112
|
-
ActionController::Base.append_view_path File.expand_path('../active_admin/views/templates', __FILE__)
|
113
|
-
|
114
|
-
# Don't eagerload our configs, we'll deal with them ourselves
|
115
|
-
Rails.application.config.eager_load_paths = Rails.application.config.eager_load_paths.reject do |path|
|
116
|
-
load_paths.include?(path)
|
117
|
-
end
|
118
|
-
|
119
|
-
# Dispatch request which gets triggered once in production
|
120
|
-
# and on every require in development mode
|
121
|
-
ActionDispatch::Callbacks.to_prepare :active_admin do
|
122
|
-
ActiveAdmin.unload!
|
123
|
-
Rails.application.reload_routes!
|
124
|
-
end
|
125
|
-
|
126
|
-
yield self
|
127
|
-
|
128
|
-
generate_stylesheets
|
129
|
-
end
|
130
|
-
|
131
|
-
def generate_stylesheets
|
132
|
-
# Setup SASS
|
133
|
-
require 'sass/plugin' # This must be required after initialization
|
134
|
-
Sass::Plugin.add_template_location(File.expand_path("../active_admin/stylesheets/", __FILE__), File.join(Sass::Plugin.options[:css_location], 'admin'))
|
135
|
-
end
|
136
|
-
|
137
|
-
# Registers a brand new configuration for the given resource.
|
138
|
-
def register(resource, options = {}, &block)
|
139
|
-
namespace_name = options[:namespace] == false ? :root : (options[:namespace] || default_namespace || :root)
|
140
|
-
namespace = find_or_create_namespace(namespace_name)
|
141
|
-
namespace.register(resource, options, &block)
|
142
|
-
end
|
143
|
-
|
144
|
-
# Creates a namespace for the given name
|
145
|
-
def find_or_create_namespace(name)
|
146
|
-
return namespaces[name] if namespaces[name]
|
147
|
-
namespace = Namespace.new(name)
|
148
|
-
ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace
|
149
|
-
namespaces[name] = namespace
|
150
|
-
namespace
|
56
|
+
yield(application)
|
57
|
+
application.prepare!
|
151
58
|
end
|
152
59
|
|
60
|
+
delegate :register, :to => :application
|
61
|
+
delegate :unload!, :to => :application
|
62
|
+
delegate :load!, :to => :application
|
63
|
+
delegate :routes, :to => :application
|
153
64
|
|
154
|
-
#
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
def loaded?
|
159
|
-
@@loaded
|
65
|
+
# Returns true if this rails application has the asset
|
66
|
+
# pipeline enabled.
|
67
|
+
def use_asset_pipeline?
|
68
|
+
DependencyChecker.rails_3_1? && Rails.application.config.assets.enabled
|
160
69
|
end
|
161
70
|
|
162
|
-
#
|
163
|
-
#
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
def unload!
|
168
|
-
namespaces.values.each{|namespace| namespace.unload! }
|
169
|
-
self.namespaces = {}
|
170
|
-
@@loaded = false
|
171
|
-
end
|
172
|
-
|
173
|
-
# Loads all of the ruby files that are within the load path of
|
174
|
-
# ActiveAdmin.load_paths. This should load all of the administration
|
175
|
-
# UIs so that they are available for the router to proceed.
|
176
|
-
#
|
177
|
-
# The files are only loaded if we haven't already loaded all the files
|
178
|
-
# and they aren't marked for re-loading. To mark the files for re-loading
|
179
|
-
# you must first call ActiveAdmin.unload!
|
180
|
-
def load!
|
181
|
-
# No work to do if we've already loaded
|
182
|
-
return false if loaded?
|
183
|
-
|
184
|
-
# Load files
|
185
|
-
files_in_load_path.each{|file| load file }
|
186
|
-
|
187
|
-
# If no configurations, let's make sure you can still login
|
188
|
-
load_default_namespace if namespaces.values.empty?
|
189
|
-
|
190
|
-
# Load Menus
|
191
|
-
namespaces.values.each{|namespace| namespace.load_menu! }
|
192
|
-
|
193
|
-
@@loaded = true
|
194
|
-
end
|
195
|
-
|
196
|
-
# Returns ALL the files to load from all the load paths
|
197
|
-
def files_in_load_path
|
198
|
-
load_paths.flatten.compact.uniq.collect{|path| Dir["#{path}/**/*.rb"] }.flatten
|
199
|
-
end
|
200
|
-
|
201
|
-
# Creates all the necessary routes for the ActiveAdmin configurations
|
202
|
-
#
|
203
|
-
# Use this within the routes.rb file:
|
204
|
-
#
|
205
|
-
# Application.routes.draw do |map|
|
206
|
-
# ActiveAdmin.routes(self)
|
207
|
-
# end
|
208
|
-
#
|
209
|
-
def routes(router)
|
210
|
-
# Ensure that all the configurations (which define the routes)
|
211
|
-
# are all loaded
|
212
|
-
load!
|
213
|
-
|
214
|
-
# Define any necessary dashboard routes
|
215
|
-
router.instance_exec(namespaces.values) do |namespaces|
|
216
|
-
namespaces.each do |namespace|
|
217
|
-
if namespace.root?
|
218
|
-
match '/' => 'dashboard#index', :as => 'dashboard'
|
219
|
-
else
|
220
|
-
name = namespace.name
|
221
|
-
match name.to_s => "#{name}/dashboard#index", :as => "#{name.to_s}_dashboard"
|
222
|
-
end
|
223
|
-
end
|
224
|
-
end
|
225
|
-
|
226
|
-
# Now define the routes for each resource
|
227
|
-
router.instance_exec(namespaces) do |namespaces|
|
228
|
-
resources = namespaces.values.collect{|n| n.resources.values }.flatten
|
229
|
-
resources.each do |config|
|
230
|
-
|
231
|
-
# Define the block the will get eval'd within the namespace
|
232
|
-
route_definition_block = Proc.new do
|
233
|
-
resources config.underscored_resource_name.pluralize do
|
234
|
-
|
235
|
-
# Define any member actions
|
236
|
-
member do
|
237
|
-
config.member_actions.each do |action|
|
238
|
-
# eg: get :comment
|
239
|
-
send(action.http_verb, action.name)
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
# Define any collection actions
|
244
|
-
collection do
|
245
|
-
config.collection_actions.each do |action|
|
246
|
-
send(action.http_verb, action.name)
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
251
|
-
|
252
|
-
# Add in the parent if it exists
|
253
|
-
if config.belongs_to?
|
254
|
-
routes_for_belongs_to = route_definition_block.dup
|
255
|
-
route_definition_block = Proc.new do
|
256
|
-
# If its optional, make the normal resource routes
|
257
|
-
instance_eval &routes_for_belongs_to if config.belongs_to_config.optional?
|
258
|
-
|
259
|
-
# Make the nested belongs_to routes
|
260
|
-
resources config.belongs_to_config.target.underscored_resource_name.pluralize do
|
261
|
-
instance_eval &routes_for_belongs_to
|
262
|
-
end
|
263
|
-
end
|
264
|
-
end
|
265
|
-
|
266
|
-
# Add on the namespace if required
|
267
|
-
if !config.namespace.root?
|
268
|
-
routes_in_namespace = route_definition_block.dup
|
269
|
-
route_definition_block = Proc.new do
|
270
|
-
namespace config.namespace.name do
|
271
|
-
instance_eval(&routes_in_namespace)
|
272
|
-
end
|
273
|
-
end
|
274
|
-
end
|
275
|
-
|
276
|
-
instance_eval &route_definition_block
|
277
|
-
end
|
278
|
-
end
|
279
|
-
end
|
280
|
-
|
281
|
-
def load_default_namespace
|
282
|
-
find_or_create_namespace(default_namespace)
|
283
|
-
end
|
284
|
-
|
285
|
-
#
|
286
|
-
# Add before, around and after filters to each registered resource.
|
287
|
-
#
|
288
|
-
# eg:
|
289
|
-
#
|
290
|
-
# ActiveAdmin.before_filter :authenticate_admin!
|
291
|
-
#
|
292
|
-
def before_filter(*args, &block)
|
293
|
-
ResourceController.before_filter(*args, &block)
|
294
|
-
end
|
295
|
-
|
296
|
-
def after_filter(*args, &block)
|
297
|
-
ResourceController.after_filter(*args, &block)
|
298
|
-
end
|
299
|
-
|
300
|
-
def around_filter(*args, &block)
|
301
|
-
ResourceController.around_filter(*args, &block)
|
302
|
-
end
|
303
|
-
|
304
|
-
# Helper method to add a dashboard section
|
305
|
-
def dashboard_section(name, options = {}, &block)
|
306
|
-
ActiveAdmin::Dashboards.add_section(name, options, &block)
|
307
|
-
end
|
71
|
+
# Migration MoveAdminNotesToComments generated with version 0.2.2 might reference
|
72
|
+
# to ActiveAdmin.default_namespace.
|
73
|
+
delegate :default_namespace, :to => :application
|
74
|
+
ActiveAdmin::Deprecation.deprecate self, :default_namespace,
|
75
|
+
"ActiveAdmin.default_namespace is deprecated. Please use ActiveAdmin.application.default_namespace"
|
308
76
|
|
309
77
|
end
|
310
78
|
end
|
311
79
|
|
80
|
+
ActiveAdmin::DependencyChecker.check!
|
81
|
+
|
312
82
|
require 'active_admin/comments'
|