activeadmin 0.4.4 → 0.5.0.pre
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 +3 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +50 -0
- data/CONTRIBUTING.md +2 -4
- data/Gemfile +10 -4
- data/Guardfile +0 -1
- data/LICENSE +1 -1
- data/README.rdoc +19 -8
- data/Rakefile +10 -1
- data/activeadmin.gemspec +2 -1
- data/app/assets/javascripts/active_admin/application.js +3 -9
- data/app/assets/javascripts/active_admin/base.js +1 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +64 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +107 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +100 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +27 -0
- data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
- data/app/assets/javascripts/active_admin/pages/application.js.coffee +13 -0
- data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +32 -26
- data/app/assets/stylesheets/active_admin/_forms.css.scss +12 -5
- data/app/assets/stylesheets/active_admin/_header.css.scss +1 -2
- data/app/assets/stylesheets/active_admin/_typography.css.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +3 -3
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +20 -27
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +38 -36
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +5 -5
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +7 -3
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +19 -17
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +2 -2
- data/app/assets/stylesheets/active_admin/print.css.scss +290 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +17 -14
- data/app/views/active_admin/devise/passwords/new.html.erb +4 -4
- data/app/views/active_admin/devise/sessions/new.html.erb +6 -6
- data/app/views/active_admin/devise/shared/_links.erb +6 -6
- data/app/views/active_admin/page/index.html.arb +1 -1
- data/app/views/active_admin/resource/edit.html.arb +1 -1
- data/app/views/active_admin/resource/index.csv.erb +1 -1
- data/app/views/active_admin/resource/index.html.arb +1 -1
- data/app/views/active_admin/resource/new.html.arb +1 -1
- data/app/views/active_admin/resource/show.html.arb +1 -1
- data/app/views/layouts/active_admin.html.arb +1 -1
- data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
- data/cucumber.yml +1 -1
- data/docs/0-installation.md +10 -1
- data/docs/{9-custom-pages.md → 10-custom-pages.md} +0 -0
- data/docs/2-resource-customization.md +19 -1
- data/docs/3-index-pages.md +31 -0
- data/docs/4-csv-format.md +9 -0
- data/docs/6-show-screens.md +1 -1
- data/docs/9-batch-actions.md +161 -0
- data/features/dashboard.feature +31 -8
- data/features/development_reloading.feature +1 -1
- data/features/edit_page.feature +3 -3
- data/features/i18n.feature +35 -0
- data/features/index/batch_actions.feature +98 -0
- data/features/index/filters.feature +26 -0
- data/features/index/format_as_csv.feature +35 -0
- data/features/index/index_as_table.feature +30 -2
- data/features/index/index_blank_slate.feature +8 -3
- data/features/index/index_scopes.feature +130 -24
- data/features/index/page_title.feature +12 -0
- data/features/new_page.feature +3 -3
- data/features/registering_pages.feature +61 -0
- data/features/root_to.feature +17 -0
- data/features/show/default_content.feature +1 -1
- data/features/show/page_title.feature +14 -0
- data/features/sidebar_sections.feature +26 -0
- data/features/site_title.feature +1 -1
- data/features/specifying_actions.feature +7 -6
- data/features/step_definitions/action_link_steps.rb +1 -1
- data/features/step_definitions/additional_web_steps.rb +7 -1
- data/features/step_definitions/batch_action_steps.rb +94 -0
- data/features/step_definitions/configuration_steps.rb +30 -8
- data/features/step_definitions/factory_steps.rb +12 -0
- data/features/step_definitions/format_steps.rb +6 -2
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/table_steps.rb +114 -0
- data/features/step_definitions/user_steps.rb +30 -4
- data/features/support/env.rb +54 -15
- data/features/support/paths.rb +2 -0
- data/features/users/logging_in.feature +1 -1
- data/features/users/logging_out.feature +2 -1
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin.rb +46 -7
- data/lib/active_admin/application.rb +30 -15
- data/lib/active_admin/base_controller/menu.rb +3 -3
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/batch_actions/controller.rb +25 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +126 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +63 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/comments.rb +5 -2
- data/lib/active_admin/comments/comment.rb +4 -3
- data/lib/active_admin/comments/views/active_admin_comments.rb +5 -5
- data/lib/active_admin/component.rb +1 -18
- data/lib/active_admin/csv_builder.rb +8 -3
- data/lib/active_admin/dashboards.rb +21 -4
- data/lib/active_admin/dashboards/dashboard_controller.rb +1 -5
- data/lib/active_admin/dependency_checker.rb +1 -1
- data/lib/active_admin/dsl.rb +61 -4
- data/lib/active_admin/engine.rb +1 -1
- data/lib/active_admin/filters.rb +8 -0
- data/lib/active_admin/filters/dsl.rb +12 -0
- data/lib/active_admin/filters/forms.rb +93 -0
- data/lib/active_admin/filters/resource_extension.rb +92 -0
- data/lib/active_admin/form_builder.rb +88 -33
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/optional_display.rb +1 -1
- data/lib/active_admin/inputs/filter_select_input.rb +1 -1
- data/lib/active_admin/locales/bg.yml +37 -1
- data/lib/active_admin/locales/ca.yml +36 -0
- data/lib/active_admin/locales/cs.yml +36 -0
- data/lib/active_admin/locales/da.yml +36 -0
- data/lib/active_admin/locales/de.yml +42 -0
- data/lib/active_admin/locales/en.yml +27 -2
- data/lib/active_admin/locales/es.yml +45 -4
- data/lib/active_admin/locales/fr.yml +22 -0
- data/lib/active_admin/locales/{he_il.yml → he.yml} +37 -2
- data/lib/active_admin/locales/hr.yml +49 -5
- data/lib/active_admin/locales/hu.yml +21 -0
- data/lib/active_admin/locales/it.yml +36 -1
- data/lib/active_admin/locales/ja.yml +36 -0
- data/lib/active_admin/locales/ko.yml +36 -1
- data/lib/active_admin/locales/lv.yml +28 -2
- data/lib/active_admin/locales/nl.yml +42 -1
- data/lib/active_admin/locales/no-NB.yml +15 -0
- data/lib/active_admin/locales/pl.yml +45 -1
- data/lib/active_admin/locales/pt-BR.yml +36 -1
- data/lib/active_admin/locales/ro.yml +67 -0
- data/lib/active_admin/locales/ru.yml +43 -3
- data/lib/active_admin/locales/sv-SE.yml +41 -1
- data/lib/active_admin/locales/tr.yml +80 -0
- data/lib/active_admin/locales/vi.yml +80 -0
- data/lib/active_admin/locales/{zh_cn.yml → zh-CN.yml} +42 -2
- data/lib/active_admin/locales/zh-TW.yml +36 -1
- data/lib/active_admin/menu.rb +55 -30
- data/lib/active_admin/menu_builder.rb +65 -0
- data/lib/active_admin/menu_item.rb +55 -14
- data/lib/active_admin/namespace.rb +25 -55
- data/lib/active_admin/page.rb +15 -10
- data/lib/active_admin/resource.rb +9 -0
- data/lib/active_admin/resource/action_items.rb +4 -4
- data/lib/active_admin/resource/controllers.rb +1 -1
- data/lib/active_admin/resource/menu.rb +19 -21
- data/lib/active_admin/resource/naming.rb +55 -45
- data/lib/active_admin/resource/sidebars.rb +0 -13
- data/lib/active_admin/resource_collection.rb +10 -10
- data/lib/active_admin/resource_controller.rb +5 -5
- data/lib/active_admin/resource_controller/actions.rb +2 -0
- data/lib/active_admin/resource_controller/collection.rb +13 -4
- data/lib/active_admin/resource_dsl.rb +12 -6
- data/lib/active_admin/router.rb +27 -8
- data/lib/active_admin/scope.rb +1 -0
- data/lib/active_admin/sidebar_section.rb +2 -6
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +18 -13
- data/lib/active_admin/view_helpers.rb +0 -2
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +24 -25
- data/lib/active_admin/view_helpers/display_helper.rb +1 -1
- data/lib/active_admin/view_helpers/fields_for.rb +44 -0
- data/lib/active_admin/view_helpers/form_helper.rb +6 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +6 -2
- data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
- data/lib/active_admin/views/components/paginated_collection.rb +13 -14
- data/lib/active_admin/views/components/popover.rb +27 -0
- data/lib/active_admin/views/components/scopes.rb +8 -13
- data/lib/active_admin/views/components/sidebar_section.rb +1 -1
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +4 -4
- data/lib/active_admin/views/components/table_for.rb +18 -18
- data/lib/active_admin/views/dashboard_section_renderer.rb +1 -1
- data/lib/active_admin/views/footer.rb +18 -0
- data/lib/active_admin/views/header.rb +31 -0
- data/lib/active_admin/views/index_as_block.rb +3 -0
- data/lib/active_admin/views/index_as_blog.rb +4 -0
- data/lib/active_admin/views/index_as_grid.rb +2 -0
- data/lib/active_admin/views/index_as_table.rb +19 -6
- data/lib/active_admin/views/pages/base.rb +14 -48
- data/lib/active_admin/views/pages/form.rb +3 -3
- data/lib/active_admin/views/pages/index.rb +56 -24
- data/lib/active_admin/views/pages/layout.rb +2 -2
- data/lib/active_admin/views/pages/page.rb +10 -4
- data/lib/active_admin/views/pages/show.rb +11 -8
- data/lib/active_admin/views/tabbed_navigation.rb +3 -3
- data/lib/active_admin/views/title_bar.rb +50 -0
- data/lib/active_admin/views/utility_nav.rb +41 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +1 -1
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +26 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
- data/lib/generators/active_admin/install/install_generator.rb +10 -10
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +20 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
- data/spec/integration/memory_spec.rb +1 -11
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
- data/spec/javascripts/support/jquery.min.js +4 -0
- data/spec/spec_helper.rb +13 -13
- data/spec/spec_helper_without_rails.rb +2 -3
- data/spec/support/detect_rails_version.rb +16 -10
- data/spec/support/rails_template.rb +13 -1
- data/spec/support/templates/admin/stores.rb +1 -0
- data/spec/support/templates/en.yml +6 -0
- data/spec/unit/action_builder_spec.rb +38 -0
- data/spec/unit/application_spec.rb +12 -16
- data/spec/unit/base_controller_shared_examples.rb +3 -6
- data/spec/unit/batch_actions/resource_spec.rb +91 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/breadcrumbs_spec.rb +33 -0
- data/spec/unit/comments_spec.rb +6 -0
- data/spec/unit/config_shared_examples.rb +17 -64
- data/spec/unit/csv_builder_spec.rb +12 -2
- data/spec/unit/dashboard_controller_spec.rb +11 -5
- data/spec/unit/dsl_include_spec.rb +20 -0
- data/spec/unit/{filter_form_builder_spec.rb → filters/filter_form_builder_spec.rb} +10 -7
- data/spec/unit/filters/resource_spec.rb +60 -0
- data/spec/unit/form_builder_spec.rb +180 -28
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/menu_item_spec.rb +48 -53
- data/spec/unit/menu_spec.rb +46 -32
- data/spec/unit/namespace/register_page_spec.rb +0 -6
- data/spec/unit/namespace/register_resource_spec.rb +1 -8
- data/spec/unit/namespace_spec.rb +8 -2
- data/spec/unit/page_spec.rb +20 -8
- data/spec/unit/resource/naming_spec.rb +27 -26
- data/spec/unit/resource/sidebars_spec.rb +0 -7
- data/spec/unit/resource_collection_spec.rb +11 -11
- data/spec/unit/resource_controller/collection_spec.rb +23 -1
- data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
- data/spec/unit/resource_controller_spec.rb +43 -0
- data/spec/unit/resource_registration_spec.rb +2 -13
- data/spec/unit/resource_spec.rb +0 -42
- data/spec/unit/routing_spec.rb +60 -14
- data/spec/unit/scope_spec.rb +7 -0
- data/spec/unit/view_factory_spec.rb +9 -6
- data/spec/unit/view_helpers/fields_for_spec.rb +41 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +18 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
- data/spec/unit/views/components/attributes_table_spec.rb +32 -20
- data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
- data/spec/unit/views/components/blank_slate_spec.rb +5 -3
- data/spec/unit/views/components/columns_spec.rb +32 -22
- data/spec/unit/views/components/paginated_collection_spec.rb +54 -12
- data/spec/unit/views/components/panel_spec.rb +11 -6
- data/spec/unit/views/components/popover_spec.rb +33 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +6 -6
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +17 -10
- data/spec/unit/views/components/table_for_spec.rb +37 -17
- data/spec/unit/views/pages/layout_spec.rb +51 -10
- data/spec/unit/views/tabbed_navigation_spec.rb +44 -23
- data/tasks/js.rake +32 -0
- data/tasks/test.rake +1 -1
- metadata +233 -200
- data/lib/active_admin/arbre.rb +0 -22
- data/lib/active_admin/arbre/builder.rb +0 -125
- data/lib/active_admin/arbre/context.rb +0 -45
- data/lib/active_admin/arbre/html/attributes.rb +0 -20
- data/lib/active_admin/arbre/html/class_list.rb +0 -24
- data/lib/active_admin/arbre/html/collection.rb +0 -27
- data/lib/active_admin/arbre/html/document.rb +0 -42
- data/lib/active_admin/arbre/html/element.rb +0 -161
- data/lib/active_admin/arbre/html/html5_elements.rb +0 -47
- data/lib/active_admin/arbre/html/tag.rb +0 -145
- data/lib/active_admin/arbre/html/text_node.rb +0 -35
- data/lib/active_admin/filter_form_builder.rb +0 -53
- data/lib/active_admin/renderer.rb +0 -87
- data/lib/active_admin/resource_controller/filters.rb +0 -58
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -36
- data/lib/active_admin/view_helpers/renderer_helper.rb +0 -29
- data/lib/active_admin/views/header_renderer.rb +0 -82
- data/lib/generators/active_admin/assets/templates/dashboards.rb +0 -36
- data/lib/generators/active_admin/install/templates/dashboards.rb +0 -44
- data/spec/unit/arbre/context_spec.rb +0 -35
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +0 -110
- data/spec/unit/arbre/html/element_spec.rb +0 -236
- data/spec/unit/arbre/html/tag_attributes_spec.rb +0 -61
- data/spec/unit/arbre/html/tag_spec.rb +0 -63
- data/spec/unit/arbre/html_spec.rb +0 -228
- data/spec/unit/renderer_spec.rb +0 -126
@@ -0,0 +1,12 @@
|
|
1
|
+
Feature: Index - Page Title
|
2
|
+
|
3
|
+
Modifying the page title on the index screen
|
4
|
+
|
5
|
+
Scenario: Set a string as the title
|
6
|
+
Given an index configuration of:
|
7
|
+
"""
|
8
|
+
ActiveAdmin.register Post do
|
9
|
+
index :title => "Awesome Title"
|
10
|
+
end
|
11
|
+
"""
|
12
|
+
Then I should see the page title "Awesome Title"
|
data/features/new_page.feature
CHANGED
@@ -37,7 +37,7 @@ Feature: New Page
|
|
37
37
|
f.inputs "Publishing" do
|
38
38
|
f.input :published_at
|
39
39
|
end
|
40
|
-
f.
|
40
|
+
f.actions
|
41
41
|
end
|
42
42
|
end
|
43
43
|
"""
|
@@ -57,7 +57,7 @@ Feature: New Page
|
|
57
57
|
<% url = @post.new_record? ? admin_posts_path : admin_post_path(@post) %>
|
58
58
|
<%= active_admin_form_for @post, :url => url do |f|
|
59
59
|
f.inputs :title, :body
|
60
|
-
f.
|
60
|
+
f.actions
|
61
61
|
end %>
|
62
62
|
"""
|
63
63
|
Given a configuration of:
|
@@ -89,7 +89,7 @@ Feature: New Page
|
|
89
89
|
f.inputs "Publishing" do
|
90
90
|
f.input :published_at
|
91
91
|
end
|
92
|
-
f.
|
92
|
+
f.actions
|
93
93
|
end
|
94
94
|
end
|
95
95
|
"""
|
@@ -20,6 +20,21 @@ Feature: Registering Pages
|
|
20
20
|
And I should see the Active Admin layout
|
21
21
|
And I should see the content "I love chocolate."
|
22
22
|
|
23
|
+
Scenario: Registering a page with a complex name
|
24
|
+
Given a configuration of:
|
25
|
+
"""
|
26
|
+
ActiveAdmin.register_page "Chocolate I lØve You!" do
|
27
|
+
content do
|
28
|
+
"I love chocolate."
|
29
|
+
end
|
30
|
+
end
|
31
|
+
"""
|
32
|
+
When I go to the dashboard
|
33
|
+
And I follow "Chocolate I lØve You!"
|
34
|
+
Then I should see the page title "Chocolate I lØve You!"
|
35
|
+
And I should see the Active Admin layout
|
36
|
+
And I should see the content "I love chocolate."
|
37
|
+
|
23
38
|
Scenario: Registering an empty page
|
24
39
|
Given a configuration of:
|
25
40
|
"""
|
@@ -30,6 +45,32 @@ Feature: Registering Pages
|
|
30
45
|
Then I should see the page title "Status"
|
31
46
|
And I should see the Active Admin layout
|
32
47
|
|
48
|
+
Scenario: Registering a page with a custom title as a string
|
49
|
+
Given a configuration of:
|
50
|
+
"""
|
51
|
+
ActiveAdmin.register_page "Status" do
|
52
|
+
content :title => "Custom Page Title" do
|
53
|
+
"I love chocolate."
|
54
|
+
end
|
55
|
+
end
|
56
|
+
"""
|
57
|
+
When I go to the dashboard
|
58
|
+
And I follow "Status"
|
59
|
+
Then I should see the page title "Custom Page Title"
|
60
|
+
|
61
|
+
Scenario: Registering a page with a custom title as a proc
|
62
|
+
Given a configuration of:
|
63
|
+
"""
|
64
|
+
ActiveAdmin.register_page "Status" do
|
65
|
+
content :title => proc{ "Custom Page Title from Proc" } do
|
66
|
+
"I love chocolate."
|
67
|
+
end
|
68
|
+
end
|
69
|
+
"""
|
70
|
+
When I go to the dashboard
|
71
|
+
And I follow "Status"
|
72
|
+
Then I should see the page title "Custom Page Title from Proc"
|
73
|
+
|
33
74
|
Scenario: Adding a sidebar section to a page
|
34
75
|
Given a configuration of:
|
35
76
|
"""
|
@@ -64,3 +105,23 @@ Feature: Registering Pages
|
|
64
105
|
When I go to the dashboard
|
65
106
|
And I follow "Status"
|
66
107
|
Then I should see an action item link to "Visit"
|
108
|
+
|
109
|
+
Scenario: Adding a page action to a page
|
110
|
+
Given a configuration of:
|
111
|
+
"""
|
112
|
+
ActiveAdmin.register_page "Status" do
|
113
|
+
page_action :check do
|
114
|
+
redirect_to admin_status_path
|
115
|
+
end
|
116
|
+
|
117
|
+
content do
|
118
|
+
("Chocolate I lØve You!" + link_to("Check", admin_status_check_path)).html_safe
|
119
|
+
end
|
120
|
+
end
|
121
|
+
"""
|
122
|
+
When I go to the dashboard
|
123
|
+
And I follow "Status"
|
124
|
+
And I follow "Check"
|
125
|
+
Then I should see the content "Chocolate I lØve You!"
|
126
|
+
|
127
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Feature: Namespace root
|
2
|
+
|
3
|
+
As a developer
|
4
|
+
In order to customize the welcome page
|
5
|
+
I want to set it in the configuration
|
6
|
+
|
7
|
+
Scenario: Default root is the Dashboard
|
8
|
+
Given I am logged in with capybara
|
9
|
+
Then I should be on the dashboard
|
10
|
+
|
11
|
+
Scenario: Set root to "stores#index"
|
12
|
+
Given a configuration of:
|
13
|
+
"""
|
14
|
+
ActiveAdmin.application.root_to = 'stores#index'
|
15
|
+
"""
|
16
|
+
Given I am logged in with capybara
|
17
|
+
Then I should see the page title "Bookstores"
|
@@ -20,8 +20,8 @@ Feature: Show - Default Content
|
|
20
20
|
Scenario: Attributes should link when linked resource is registered
|
21
21
|
Given a show configuration of:
|
22
22
|
"""
|
23
|
-
ActiveAdmin.register User
|
24
23
|
ActiveAdmin.register Post
|
24
|
+
ActiveAdmin.register User
|
25
25
|
"""
|
26
26
|
Then I should see the attribute "Author" with "jane_doe"
|
27
27
|
And I should see a link to "jane_doe"
|
@@ -31,3 +31,17 @@ Feature: Show - Page Title
|
|
31
31
|
end
|
32
32
|
"""
|
33
33
|
Then I should see the page title "Title: Hello World"
|
34
|
+
|
35
|
+
Scenario: Default title
|
36
|
+
Given a show configuration of:
|
37
|
+
"""
|
38
|
+
ActiveAdmin.register Post
|
39
|
+
"""
|
40
|
+
Then I should see the page title "Hello World"
|
41
|
+
|
42
|
+
Scenario: Default title with no display name method candidate
|
43
|
+
Given a show configuration of:
|
44
|
+
"""
|
45
|
+
ActiveAdmin.register Tag
|
46
|
+
"""
|
47
|
+
Then I should see the page title "Tag #"
|
@@ -98,6 +98,32 @@ Feature: Sidebar Sections
|
|
98
98
|
When I follow "New Post"
|
99
99
|
Then I should not see a sidebar titled "Help"
|
100
100
|
|
101
|
+
Scenario: Create a sidebar for only one action with if clause with method symbol
|
102
|
+
Given a configuration of:
|
103
|
+
"""
|
104
|
+
module SidebarHelper
|
105
|
+
def can_sidebar?; false; end
|
106
|
+
end
|
107
|
+
ActiveAdmin.register Post do
|
108
|
+
controller { helper SidebarHelper }
|
109
|
+
sidebar :help, :only => :index, :if => :can_sidebar? do
|
110
|
+
"Need help? Email us at help@example.com"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
"""
|
114
|
+
When I am on the index page for posts
|
115
|
+
Then I should not see a sidebar titled "Help"
|
116
|
+
|
117
|
+
When I follow "View"
|
118
|
+
Then I should not see a sidebar titled "Help"
|
119
|
+
|
120
|
+
When I follow "Edit Post"
|
121
|
+
Then I should not see a sidebar titled "Help"
|
122
|
+
|
123
|
+
When I am on the index page for posts
|
124
|
+
When I follow "New Post"
|
125
|
+
Then I should not see a sidebar titled "Help"
|
126
|
+
|
101
127
|
Scenario: Create a sidebar for only one action with if clause that returns true
|
102
128
|
Given a configuration of:
|
103
129
|
"""
|
data/features/site_title.feature
CHANGED
@@ -41,7 +41,7 @@ Feature: Site title
|
|
41
41
|
Given a configuration of:
|
42
42
|
"""
|
43
43
|
ActiveAdmin.application.site_title_image = nil # Configuration is not reset between scenarios
|
44
|
-
ActiveAdmin.application.site_title = proc { "Hello #{controller.current_admin_user.email}" }
|
44
|
+
ActiveAdmin.application.site_title = proc { "Hello #{controller.current_admin_user.try(:email) || 'you!'}" }
|
45
45
|
"""
|
46
46
|
When I am on the dashboard
|
47
47
|
And I should see the site title "Hello admin@example.com"
|
@@ -9,15 +9,15 @@ Feature: Specifying Actions
|
|
9
9
|
actions :index
|
10
10
|
index do
|
11
11
|
column do |post|
|
12
|
-
link_to "View",
|
12
|
+
link_to "View", "/admin/posts/1"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
16
|
"""
|
17
|
-
|
17
|
+
And I am logged in
|
18
18
|
And a post with the title "Hello World" exists
|
19
19
|
When I am on the index page for posts
|
20
|
-
Then an "
|
20
|
+
Then an "ActionController::RoutingError" exception should be raised when I follow "View"
|
21
21
|
|
22
22
|
Scenario: Specify a custom collection action with template
|
23
23
|
Given a configuration of:
|
@@ -30,9 +30,9 @@ Feature: Specifying Actions
|
|
30
30
|
collection_action :import
|
31
31
|
end
|
32
32
|
"""
|
33
|
-
Given "app/views/admin/posts/import.html.
|
33
|
+
Given "app/views/admin/posts/import.html.arb" contains:
|
34
34
|
"""
|
35
|
-
|
35
|
+
para "We are currently working on this feature..."
|
36
36
|
"""
|
37
37
|
And I am logged in
|
38
38
|
When I am on the index page for posts
|
@@ -46,7 +46,7 @@ Feature: Specifying Actions
|
|
46
46
|
action_item(:only => :show) do
|
47
47
|
link_to('Review', review_admin_post_path)
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
member_action :review do
|
51
51
|
@post = Post.find(params[:id])
|
52
52
|
end
|
@@ -90,3 +90,4 @@ Feature: Specifying Actions
|
|
90
90
|
Then I should see "Review: Hello World"
|
91
91
|
And I should see the page title "Review"
|
92
92
|
And I should see the Active Admin layout
|
93
|
+
|
@@ -10,6 +10,10 @@ Then /^I should see a sortable table header with "([^"]*)"$/ do |content|
|
|
10
10
|
page.should have_css('th.sortable', :text => content)
|
11
11
|
end
|
12
12
|
|
13
|
+
Then /^I should not see a sortable table header with "([^"]*)"$/ do |content|
|
14
|
+
page.should_not have_css('th.sortable', :text => content)
|
15
|
+
end
|
16
|
+
|
13
17
|
Then /^I should not see a sortable table header$/ do
|
14
18
|
step "I should not see \"th.sortable\""
|
15
19
|
end
|
@@ -64,7 +68,9 @@ Then /^I should wait and see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selecto
|
|
64
68
|
end
|
65
69
|
|
66
70
|
Then /^I should see the page title "([^"]*)"$/ do |title|
|
67
|
-
|
71
|
+
within('h2#page_title') do
|
72
|
+
page.should have_content(title)
|
73
|
+
end
|
68
74
|
end
|
69
75
|
|
70
76
|
Then /^I should see a fieldset titled "([^"]*)"$/ do |title|
|
@@ -0,0 +1,94 @@
|
|
1
|
+
Then /^I (should|should not) see the batch action "([^"]*)"$/ do |maybe, title|
|
2
|
+
%{Then I #{maybe} see the batch action :#{title.gsub(' ','').gsub(" Selected", "").underscore} "#{title}"}
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^I (should|should not) be asked to confirm "([^"]*)" for "([^"]*)"$/ do |maybe, confirmation, title|
|
6
|
+
within "#batch_actions_popover" do
|
7
|
+
unless maybe == "should not"
|
8
|
+
link = page.find "a.batch_action", :text => title
|
9
|
+
link["data-confirm"].should match( confirmation )
|
10
|
+
else
|
11
|
+
page.should_not have_css("a.batch_action", :text => title)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Then /^I (should|should not) see the batch action :([^\s]*) "([^"]*)"$/ do |maybe, sym, title|
|
17
|
+
within "#batch_actions_selector" do
|
18
|
+
unless maybe == "should not"
|
19
|
+
link = page.find "a.batch_action", :text => title
|
20
|
+
link["data-action"].should match( sym )
|
21
|
+
link[:href].should match( "#" )
|
22
|
+
else
|
23
|
+
page.should_not have_css("a.batch_action", :text => title)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Then /^the (\d+)(?:st|nd|rd|th) batch action should be "([^"]*)"$/ do |index, title|
|
29
|
+
within "#batch_actions_selector" do
|
30
|
+
page.all( "a.batch_action" )[index.to_i - 1].text.should match( title )
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
When /^I check the (\d+)(?:st|nd|rd|th) record$/ do |index|
|
35
|
+
page.all( "table.index_table input[type=checkbox]" )[index.to_i].set( true )
|
36
|
+
end
|
37
|
+
|
38
|
+
When /^I uncheck the (\d+)(?:st|nd|rd|th) record$/ do |index|
|
39
|
+
page.all( "table.index_table input[type='checkbox']" )[index.to_i].set( false )
|
40
|
+
end
|
41
|
+
|
42
|
+
When /^I toggle the collection selection$/ do
|
43
|
+
toggle_box = page.find( "#collection_selection_toggle_all" )
|
44
|
+
toggle_box.click
|
45
|
+
end
|
46
|
+
|
47
|
+
Then /^I should see (\d+) record(?:s)? selected$/ do |count|
|
48
|
+
within "table.index_table" do
|
49
|
+
unless count.to_i == 0
|
50
|
+
page.should have_xpath(".//input[@type='checkbox' and @checked='checked']", :count => count)
|
51
|
+
else
|
52
|
+
page.should have_no_xpath(".//input[@type='checkbox' and @checked='checked']")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
Then /^I should see that the batch action button is disabled$/ do
|
58
|
+
page.should have_css("#batch_actions_selector .dropdown_menu_button.disabled")
|
59
|
+
end
|
60
|
+
|
61
|
+
Then /^I (should|should not) see the batch action button$/ do |maybe|
|
62
|
+
if maybe == "should not"
|
63
|
+
page.should_not have_css("div.table_tools #batch_actions_selector .dropdown_menu_button")
|
64
|
+
else
|
65
|
+
page.should have_css("div.table_tools #batch_actions_selector .dropdown_menu_button")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
Then "I should not see the batch actions selector" do
|
70
|
+
page.should_not have_css("div.table_tools #batch_actions_selector")
|
71
|
+
end
|
72
|
+
|
73
|
+
Then /^I should see the batch action popover exists$/ do
|
74
|
+
page.should have_css("#batch_actions_selector")
|
75
|
+
end
|
76
|
+
|
77
|
+
Given /^I submit the batch action form with "([^"]*)"$/ do |action|
|
78
|
+
page.find(:css, "#batch_action").set(action)
|
79
|
+
|
80
|
+
within("#main_content") do
|
81
|
+
@params = page.all("input").reduce({}) do |acc, input|
|
82
|
+
acc.store(input['name'], input['value'])
|
83
|
+
acc
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
form = page.find("#collection_selection")
|
88
|
+
|
89
|
+
page.driver.submit(form['method'].to_sym, form['action'], @params)
|
90
|
+
end
|
91
|
+
|
92
|
+
Then /^I should not see checkboxes in the table$/ do
|
93
|
+
page.should_not have_css( ".paginated_collection table input[type=checkbox]" )
|
94
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
module ActiveAdminReloading
|
2
2
|
|
3
3
|
def load_active_admin_configuration(configuration_content)
|
4
|
+
ActiveAdmin::Event.dispatch ActiveAdmin::Application::BeforeLoadEvent, ActiveAdmin.application
|
4
5
|
eval(configuration_content)
|
5
|
-
ActiveAdmin::Event.dispatch ActiveAdmin::Application::
|
6
|
+
ActiveAdmin::Event.dispatch ActiveAdmin::Application::AfterLoadEvent, ActiveAdmin.application
|
6
7
|
Rails.application.reload_routes!
|
7
|
-
ActiveAdmin.application.namespaces.values.each{|n| n.
|
8
|
+
ActiveAdmin.application.namespaces.values.each{|n| n.reset_menu! }
|
8
9
|
end
|
9
10
|
|
10
11
|
end
|
@@ -26,10 +27,22 @@ module ActiveAdminContentsRollback
|
|
26
27
|
def self.rollback!
|
27
28
|
recorded_files.each do |filename, contents|
|
28
29
|
# contents will be nil if the file didin't exist
|
29
|
-
if contents
|
30
|
-
File.open(filename, "w
|
30
|
+
if contents.present?
|
31
|
+
File.open(filename, "w") {|f| f << contents }
|
31
32
|
else
|
32
33
|
File.delete(filename)
|
34
|
+
|
35
|
+
# Delete parent directories
|
36
|
+
begin
|
37
|
+
dir = File.dirname(filename)
|
38
|
+
until dir == Rails.root
|
39
|
+
Dir.rmdir(dir)
|
40
|
+
dir = dir.split('/')[0..-2].join('/')
|
41
|
+
end
|
42
|
+
rescue Errno::ENOTEMPTY
|
43
|
+
# Directory not empty
|
44
|
+
end
|
45
|
+
|
33
46
|
end
|
34
47
|
end
|
35
48
|
|
@@ -46,7 +59,6 @@ end
|
|
46
59
|
|
47
60
|
Given /^a configuration of:$/ do |configuration_content|
|
48
61
|
load_active_admin_configuration(configuration_content)
|
49
|
-
ActiveAdmin.application.namespaces.values.each{|n| n.load_menu! }
|
50
62
|
end
|
51
63
|
|
52
64
|
Given /^an index configuration of:$/ do |configuration_content|
|
@@ -57,11 +69,21 @@ Given /^an index configuration of:$/ do |configuration_content|
|
|
57
69
|
end
|
58
70
|
|
59
71
|
Given /^a show configuration of:$/ do |configuration_content|
|
72
|
+
resource = configuration_content.match(/ActiveAdmin\.register (\w+)/)[1]
|
60
73
|
load_active_admin_configuration(configuration_content)
|
61
74
|
|
62
|
-
|
63
|
-
|
64
|
-
|
75
|
+
case resource
|
76
|
+
when "Post"
|
77
|
+
step 'I am logged in'
|
78
|
+
step "I am on the index page for posts"
|
79
|
+
step 'I follow "View"'
|
80
|
+
when "Tag"
|
81
|
+
step 'I am logged in'
|
82
|
+
Tag.create!
|
83
|
+
visit admin_tag_path(Tag.last)
|
84
|
+
else
|
85
|
+
raise "#{resource} is not supported"
|
86
|
+
end
|
65
87
|
end
|
66
88
|
|
67
89
|
Given /^"([^"]*)" contains:$/ do |filename, contents|
|