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
@@ -1,29 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module ViewHelpers
|
3
|
-
module RendererHelper
|
4
|
-
|
5
|
-
# Adds the ability to render ActiveAdmin::Renderers using the
|
6
|
-
# standard render method.
|
7
|
-
#
|
8
|
-
# Example:
|
9
|
-
#
|
10
|
-
# render MyRendererClass, "Arg1", "Arg2"
|
11
|
-
#
|
12
|
-
# which is the same as doing
|
13
|
-
#
|
14
|
-
# MyRendererClass.new(self).to_html("Arg1", "Arg2")
|
15
|
-
def render(*args)
|
16
|
-
if args[0].is_a?(Class) && args[0].ancestors.include?(ActiveAdmin::Renderer)
|
17
|
-
renderer = args.shift
|
18
|
-
renderer.new(self).to_html(*args)
|
19
|
-
elsif args[0].is_a?(Class) && args[0].ancestors.include?(Arbre::HTML::Tag)
|
20
|
-
tag_class = args.shift
|
21
|
-
insert_tag tag_class, *args
|
22
|
-
else
|
23
|
-
super
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
module ActiveAdmin
|
2
|
-
module Views
|
3
|
-
|
4
|
-
# Renderer for the header of the application. Includes the page
|
5
|
-
# title, global navigation and utility navigation.
|
6
|
-
class HeaderRenderer < ::ActiveAdmin::Renderer
|
7
|
-
|
8
|
-
def to_html
|
9
|
-
title + global_navigation + utility_navigation
|
10
|
-
end
|
11
|
-
|
12
|
-
protected
|
13
|
-
|
14
|
-
# Renders the title/branding area for the site
|
15
|
-
def title
|
16
|
-
content_tag('h1', link_to_site_title(title_image_tag || title_text), :id => 'site_title')
|
17
|
-
end
|
18
|
-
|
19
|
-
def link_to_site_title(title_tag)
|
20
|
-
if active_admin_namespace.site_title_link.present?
|
21
|
-
link_to(title_tag, active_admin_namespace.site_title_link)
|
22
|
-
else
|
23
|
-
title_tag
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# @return [String] An HTML img tag with site_title_image. Return nil when
|
28
|
-
# site_title_image is blank.
|
29
|
-
def title_image_tag
|
30
|
-
if active_admin_namespace.site_title_image.present?
|
31
|
-
image_tag(title_image,
|
32
|
-
:id => "site_title_image",
|
33
|
-
:alt => active_admin_namespace.site_title)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# @return [String] The title image url
|
38
|
-
def title_image
|
39
|
-
render_or_call_method_or_proc_on(self, active_admin_namespace.site_title_image)
|
40
|
-
end
|
41
|
-
|
42
|
-
# @return [String] The site title
|
43
|
-
def title_text
|
44
|
-
render_or_call_method_or_proc_on(self, active_admin_namespace.site_title)
|
45
|
-
end
|
46
|
-
|
47
|
-
# Renders the global navigation returned by
|
48
|
-
# ActiveAdmin::ResourceController#current_menu
|
49
|
-
#
|
50
|
-
# It uses the ActiveAdmin.tabs_renderer option
|
51
|
-
def global_navigation
|
52
|
-
render view_factory.global_navigation, current_menu, :class => 'header-item'
|
53
|
-
end
|
54
|
-
|
55
|
-
def utility_navigation
|
56
|
-
content_tag 'p', :id => "utility_nav", :class => 'header-item' do
|
57
|
-
if current_active_admin_user?
|
58
|
-
html = content_tag(:span, display_name(current_active_admin_user), :class => "current_user")
|
59
|
-
|
60
|
-
if active_admin_namespace.logout_link_path
|
61
|
-
html << link_to(I18n.t('active_admin.logout'), active_admin_logout_path, :method => logout_method)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
# Returns the logout path from the application settings
|
68
|
-
def active_admin_logout_path
|
69
|
-
if active_admin_namespace.logout_link_path.is_a?(Symbol)
|
70
|
-
send(active_admin_namespace.logout_link_path)
|
71
|
-
else
|
72
|
-
active_admin_namespace.logout_link_path
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def logout_method
|
77
|
-
active_admin_namespace.logout_link_method || :get
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
82
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
ActiveAdmin::Dashboards.build do
|
2
|
-
|
3
|
-
# Define your dashboard sections here. Each block will be
|
4
|
-
# rendered on the dashboard in the context of the view. So just
|
5
|
-
# return the content which you would like to display.
|
6
|
-
|
7
|
-
# == Simple Dashboard Section
|
8
|
-
# Here is an example of a simple dashboard section
|
9
|
-
#
|
10
|
-
# section "Recent Posts" do
|
11
|
-
# ul do
|
12
|
-
# Post.recent(5).collect do |post|
|
13
|
-
# li link_to(post.title, admin_post_path(post))
|
14
|
-
# end
|
15
|
-
# end
|
16
|
-
# end
|
17
|
-
|
18
|
-
# == Render Partial Section
|
19
|
-
# The block is rendererd within the context of the view, so you can
|
20
|
-
# easily render a partial rather than build content in ruby.
|
21
|
-
#
|
22
|
-
# section "Recent Posts" do
|
23
|
-
# render 'recent_posts' # => this will render /app/views/admin/dashboard/_recent_posts.html.erb
|
24
|
-
# end
|
25
|
-
|
26
|
-
# == Section Ordering
|
27
|
-
# The dashboard sections are ordered by a given priority from top left to
|
28
|
-
# bottom right. The default priority is 10. By giving a section numerically lower
|
29
|
-
# priority it will be sorted higher. For example:
|
30
|
-
#
|
31
|
-
# section "Recent Posts", :priority => 10
|
32
|
-
# section "Recent User", :priority => 1
|
33
|
-
#
|
34
|
-
# Will render the "Recent Users" then the "Recent Posts" sections on the dashboard.
|
35
|
-
|
36
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
ActiveAdmin::Dashboards.build do
|
2
|
-
|
3
|
-
# Define your dashboard sections here. Each block will be
|
4
|
-
# rendered on the dashboard in the context of the view. So just
|
5
|
-
# return the content which you would like to display.
|
6
|
-
|
7
|
-
# == Simple Dashboard Section
|
8
|
-
# Here is an example of a simple dashboard section
|
9
|
-
#
|
10
|
-
# section "Recent Posts" do
|
11
|
-
# ul do
|
12
|
-
# Post.recent(5).collect do |post|
|
13
|
-
# li link_to(post.title, admin_post_path(post))
|
14
|
-
# end
|
15
|
-
# end
|
16
|
-
# end
|
17
|
-
|
18
|
-
# == Render Partial Section
|
19
|
-
# The block is rendered within the context of the view, so you can
|
20
|
-
# easily render a partial rather than build content in ruby.
|
21
|
-
#
|
22
|
-
# section "Recent Posts" do
|
23
|
-
# div do
|
24
|
-
# render 'recent_posts' # => this will render /app/views/admin/dashboard/_recent_posts.html.erb
|
25
|
-
# end
|
26
|
-
# end
|
27
|
-
|
28
|
-
# == Section Ordering
|
29
|
-
# The dashboard sections are ordered by a given priority from top left to
|
30
|
-
# bottom right. The default priority is 10. By giving a section numerically lower
|
31
|
-
# priority it will be sorted higher. For example:
|
32
|
-
#
|
33
|
-
# section "Recent Posts", :priority => 10
|
34
|
-
# section "Recent User", :priority => 1
|
35
|
-
#
|
36
|
-
# Will render the "Recent Users" then the "Recent Posts" sections on the dashboard.
|
37
|
-
|
38
|
-
# == Conditionally Display
|
39
|
-
# Provide a method name or Proc object to conditionally render a section at run time.
|
40
|
-
#
|
41
|
-
# section "Membership Summary", :if => :memberships_enabled?
|
42
|
-
# section "Membership Summary", :if => Proc.new { current_admin_user.account.memberships.any? }
|
43
|
-
|
44
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe Arbre::Context do
|
5
|
-
|
6
|
-
setup_arbre_context!
|
7
|
-
|
8
|
-
before do
|
9
|
-
h1 "札幌市北区" # Add some HTML to the context
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should not increment the indent_level" do
|
13
|
-
current_dom_context.indent_level.should == -1
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should return a bytesize" do
|
17
|
-
current_dom_context.bytesize.should == 25
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should return a length" do
|
21
|
-
current_dom_context.length.should == 25
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should delegate missing methods to the html string" do
|
25
|
-
current_dom_context.should respond_to(:index)
|
26
|
-
current_dom_context.index('<').should == 0
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should use a cached version of the HTML for method delegation" do
|
30
|
-
current_dom_context.should_receive(:to_s).once.and_return("<h1>札幌市北区</h1>")
|
31
|
-
current_dom_context.index('<').should == 0
|
32
|
-
current_dom_context.index('<').should == 0
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
@@ -1,110 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Arbre::HTML::Element, "Finder Methods" do
|
4
|
-
|
5
|
-
setup_arbre_context!
|
6
|
-
|
7
|
-
describe "finding elements by tag name" do
|
8
|
-
|
9
|
-
it "should return 0 when no elements exist" do
|
10
|
-
div.get_elements_by_tag_name("li").size.should == 0
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should return a child element" do
|
14
|
-
html = div do
|
15
|
-
ul
|
16
|
-
li
|
17
|
-
ul
|
18
|
-
end
|
19
|
-
elements = html.get_elements_by_tag_name("li")
|
20
|
-
elements.size.should == 1
|
21
|
-
elements[0].should be_instance_of(Arbre::HTML::Li)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should return multple child elements" do
|
25
|
-
html = div do
|
26
|
-
ul
|
27
|
-
li
|
28
|
-
ul
|
29
|
-
li
|
30
|
-
end
|
31
|
-
elements = html.get_elements_by_tag_name("li")
|
32
|
-
elements.size.should == 2
|
33
|
-
elements[0].should be_instance_of(Arbre::HTML::Li)
|
34
|
-
elements[1].should be_instance_of(Arbre::HTML::Li)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should return children's child elements" do
|
38
|
-
html = div do
|
39
|
-
ul
|
40
|
-
li do
|
41
|
-
li
|
42
|
-
end
|
43
|
-
end
|
44
|
-
elements = html.get_elements_by_tag_name("li")
|
45
|
-
elements.size.should == 2
|
46
|
-
elements[0].should be_instance_of(Arbre::HTML::Li)
|
47
|
-
elements[1].should be_instance_of(Arbre::HTML::Li)
|
48
|
-
elements[1].parent.should == elements[0]
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
#TODO: describe "finding an element by id"
|
53
|
-
|
54
|
-
describe "finding an element by a class name" do
|
55
|
-
it "should return 0 when no elements exist" do
|
56
|
-
div.get_elements_by_class_name("my_class").size.should == 0
|
57
|
-
end
|
58
|
-
it "should return a child element" do
|
59
|
-
html = div do
|
60
|
-
div :class => "some_class"
|
61
|
-
div :class => "my_class"
|
62
|
-
end
|
63
|
-
elements = html.get_elements_by_class_name("my_class")
|
64
|
-
elements.size.should == 1
|
65
|
-
elements[0].should be_instance_of(Arbre::HTML::Div)
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should return multple child elements" do
|
69
|
-
html = div do
|
70
|
-
div :class => "some_class"
|
71
|
-
div :class => "my_class"
|
72
|
-
div :class => "my_class"
|
73
|
-
end
|
74
|
-
elements = html.get_elements_by_class_name("my_class")
|
75
|
-
elements.size.should == 2
|
76
|
-
elements[0].should be_instance_of(Arbre::HTML::Div)
|
77
|
-
elements[1].should be_instance_of(Arbre::HTML::Div)
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should return elements that match one of several classes" do
|
81
|
-
html = div do
|
82
|
-
div :class => "some_class this_class"
|
83
|
-
div :class => "some_class"
|
84
|
-
div :class => "other_class"
|
85
|
-
|
86
|
-
end
|
87
|
-
elements = html.get_elements_by_class_name("this_class")
|
88
|
-
elements.size.should == 1
|
89
|
-
elements[0].should be_instance_of(Arbre::HTML::Div)
|
90
|
-
end
|
91
|
-
|
92
|
-
#TODO: find children's children by class name
|
93
|
-
|
94
|
-
#it "should return elements that are nested" do
|
95
|
-
# html = div do
|
96
|
-
# div :class => "my_class"
|
97
|
-
# div :class => "some_class" do
|
98
|
-
# ul :class => "other_class" do
|
99
|
-
# li :class => "special_awesome_class"
|
100
|
-
# end
|
101
|
-
# end
|
102
|
-
# end
|
103
|
-
#
|
104
|
-
# elements = html.get_elements_by_class_name("special_awesome_class")
|
105
|
-
#
|
106
|
-
# elements.size.should == 1
|
107
|
-
# elements[0].should be_instance_of(Arbre::HTML::Li)
|
108
|
-
#end
|
109
|
-
end
|
110
|
-
end
|
@@ -1,236 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Arbre::HTML::Element do
|
4
|
-
|
5
|
-
setup_arbre_context!
|
6
|
-
|
7
|
-
let(:element){ Arbre::HTML::Element.new }
|
8
|
-
|
9
|
-
context "when initialized" do
|
10
|
-
it "should have no children" do
|
11
|
-
element.children.should be_empty
|
12
|
-
end
|
13
|
-
it "should have no parent" do
|
14
|
-
element.parent.should be_nil
|
15
|
-
end
|
16
|
-
it "should have no document" do
|
17
|
-
element.document.should be_nil
|
18
|
-
end
|
19
|
-
it "should respond to the HTML builder methods" do
|
20
|
-
element.should respond_to(:span)
|
21
|
-
end
|
22
|
-
it "should have a set of local assigns" do
|
23
|
-
element = Arbre::HTML::Element.new :hello => "World"
|
24
|
-
element.assigns[:hello].should == "World"
|
25
|
-
end
|
26
|
-
it "should have an empty hash with no local assigns" do
|
27
|
-
element.assigns.should == {}
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "passing in a helper object" do
|
32
|
-
let(:element){ Arbre::HTML::Element.new(nil, action_view) }
|
33
|
-
it "should call methods on the helper object and return TextNode objects" do
|
34
|
-
element.content_tag(:div).should == "<div></div>"
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should raise a NoMethodError if not found" do
|
38
|
-
lambda {
|
39
|
-
element.a_method_that_doesnt_exist
|
40
|
-
}.should raise_error(NoMethodError)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "passing in assigns" do
|
45
|
-
let(:assigns){ {:post => Post.new(:title => "Hello")} }
|
46
|
-
it "should be accessible via a method call" do
|
47
|
-
post.should be_an_instance_of(Post)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe "adding a child" do
|
52
|
-
let(:child){ Arbre::HTML::Element.new }
|
53
|
-
before do
|
54
|
-
element.add_child child
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should add the child to the parent" do
|
58
|
-
element.children.first.should == child
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should set the parent of the child" do
|
62
|
-
child.parent.should == element
|
63
|
-
end
|
64
|
-
|
65
|
-
context "when the child is nil" do
|
66
|
-
let(:child){ nil }
|
67
|
-
it "should not add the child" do
|
68
|
-
element.children.should be_empty
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
context "when the child is a string" do
|
73
|
-
let(:child){ "Hello World" }
|
74
|
-
it "should add as a TextNode" do
|
75
|
-
element.children.first.should be_instance_of(Arbre::HTML::TextNode)
|
76
|
-
element.children.first.to_s.should == "Hello World"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
describe "#children?" do
|
82
|
-
|
83
|
-
it "returns true when a child has been added" do
|
84
|
-
element.add_child Arbre::HTML::Element.new
|
85
|
-
element.children?.should == true
|
86
|
-
end
|
87
|
-
|
88
|
-
it "returns false when no children" do
|
89
|
-
element.children?.should == false
|
90
|
-
end
|
91
|
-
|
92
|
-
end
|
93
|
-
|
94
|
-
describe "setting the content" do
|
95
|
-
|
96
|
-
context "when a string" do
|
97
|
-
before do
|
98
|
-
element.add_child "Hello World"
|
99
|
-
element.content = "Goodbye"
|
100
|
-
end
|
101
|
-
it "should clear the existing children" do
|
102
|
-
element.children.size.should == 1
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should add the string as a child" do
|
106
|
-
element.children.first.to_s.should == "Goodbye"
|
107
|
-
end
|
108
|
-
|
109
|
-
it "should html escape the string" do
|
110
|
-
string = "Goodbye <br />"
|
111
|
-
element.content = string
|
112
|
-
element.to_s.should == "Goodbye <br />"
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
context "when a tag" do
|
117
|
-
before do
|
118
|
-
element.content = h2("Hello")
|
119
|
-
end
|
120
|
-
it "should set the content tag" do
|
121
|
-
element.children.first.should be_an_instance_of(Arbre::HTML::H2)
|
122
|
-
end
|
123
|
-
it "should set the tags parent" do
|
124
|
-
element.children.first.parent.should == element
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
context "when an array of tags" do
|
129
|
-
before do
|
130
|
-
element.content = [ul,div]
|
131
|
-
end
|
132
|
-
|
133
|
-
it "should set the content tag" do
|
134
|
-
element.children.first.should be_an_instance_of(Arbre::HTML::Ul)
|
135
|
-
end
|
136
|
-
it "should set the tags parent" do
|
137
|
-
element.children.first.parent.should == element
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
end
|
142
|
-
|
143
|
-
describe "setting the parent" do
|
144
|
-
let(:parent) do
|
145
|
-
doc = Arbre::HTML::Document.new
|
146
|
-
parent = Arbre::HTML::Element.new
|
147
|
-
doc << parent
|
148
|
-
parent
|
149
|
-
end
|
150
|
-
before { element.parent = parent }
|
151
|
-
|
152
|
-
it "should set the parent" do
|
153
|
-
element.parent.should == parent
|
154
|
-
end
|
155
|
-
it "should set the document to the parent's document" do
|
156
|
-
element.document.should == parent.document
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
describe "rendering to html" do
|
161
|
-
it "should render the children collection" do
|
162
|
-
element.children.should_receive(:to_s).and_return("content")
|
163
|
-
element.to_s.should == "content"
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
describe "adding elements together" do
|
168
|
-
|
169
|
-
context "when both elements are tags" do
|
170
|
-
let(:collection){ h1 + h2}
|
171
|
-
|
172
|
-
it "should return an instance of Collection" do
|
173
|
-
collection.should be_an_instance_of(Arbre::HTML::Collection)
|
174
|
-
end
|
175
|
-
|
176
|
-
it "should return the elements in the collection" do
|
177
|
-
collection.size.should == 2
|
178
|
-
collection.first.should be_an_instance_of(Arbre::HTML::H1)
|
179
|
-
collection[1].should be_an_instance_of(Arbre::HTML::H2)
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
context "when the left is a collection and the right is a tag" do
|
184
|
-
let(:collection){ Arbre::HTML::Collection.new([h1, h2]) + h3}
|
185
|
-
|
186
|
-
it "should return an instance of Collection" do
|
187
|
-
collection.should be_an_instance_of(Arbre::HTML::Collection)
|
188
|
-
end
|
189
|
-
|
190
|
-
it "should return the elements in the collection flattened" do
|
191
|
-
collection.size.should == 3
|
192
|
-
collection[0].should be_an_instance_of(Arbre::HTML::H1)
|
193
|
-
collection[1].should be_an_instance_of(Arbre::HTML::H2)
|
194
|
-
collection[2].should be_an_instance_of(Arbre::HTML::H3)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
context "when the right is a collection and the left is a tag" do
|
199
|
-
let(:collection){ h1 + Arbre::HTML::Collection.new([h2,h3]) }
|
200
|
-
|
201
|
-
it "should return an instance of Collection" do
|
202
|
-
collection.should be_an_instance_of(Arbre::HTML::Collection)
|
203
|
-
end
|
204
|
-
|
205
|
-
it "should return the elements in the collection flattened" do
|
206
|
-
collection.size.should == 3
|
207
|
-
collection[0].should be_an_instance_of(Arbre::HTML::H1)
|
208
|
-
collection[1].should be_an_instance_of(Arbre::HTML::H2)
|
209
|
-
collection[2].should be_an_instance_of(Arbre::HTML::H3)
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
context "when the left is a tag and the right is a string" do
|
214
|
-
let(:collection){ h1 + "Hello World"}
|
215
|
-
|
216
|
-
it "should return an instance of Collection" do
|
217
|
-
collection.should be_an_instance_of(Arbre::HTML::Collection)
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should return the elements in the collection" do
|
221
|
-
collection.size.should == 2
|
222
|
-
collection[0].should be_an_instance_of(Arbre::HTML::H1)
|
223
|
-
collection[1].should be_an_instance_of(Arbre::HTML::TextNode)
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
context "when the left is a string and the right is a tag" do
|
228
|
-
let(:collection){ "hello World" + h1}
|
229
|
-
|
230
|
-
it "should return a string" do
|
231
|
-
collection.strip.chomp.should == "hello World<h1></h1>"
|
232
|
-
end
|
233
|
-
end
|
234
|
-
end
|
235
|
-
|
236
|
-
end
|