nsm-activeadmin 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +34 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.rdoc +76 -0
- data/Gemfile +39 -0
- data/LICENSE +25 -0
- data/README.rdoc +487 -0
- data/Rakefile +27 -0
- data/activeadmin.gemspec +28 -0
- data/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/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/app/assets/javascripts/active_admin/vendor.js +382 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -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/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
- data/app/views/active_admin/devise/shared/_links.erb +20 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
- data/cucumber.yml +2 -0
- data/docs/1-general-configuration.md +52 -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 +74 -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 +112 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +26 -0
- data/features/edit_page.feature +106 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +12 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +50 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +81 -0
- data/features/index/index_blank_slate.feature +55 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +26 -0
- data/features/new_page.feature +75 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_resources.feature +33 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +33 -0
- data/features/sidebar_sections.feature +127 -0
- data/features/specifying_actions.feature +87 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +77 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/dashboard_steps.rb +11 -0
- data/features/step_definitions/factory_steps.rb +29 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +35 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +7 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +7 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +26 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/sti_resource.feature +61 -0
- data/features/support/env.rb +90 -0
- data/features/support/paths.rb +50 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +74 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +228 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/attributes.rb +20 -0
- data/lib/active_admin/arbre/class_list.rb +28 -0
- data/lib/active_admin/arbre/collection.rb +27 -0
- data/lib/active_admin/arbre/context.rb +14 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/document.rb +42 -0
- data/lib/active_admin/arbre/element.rb +151 -0
- data/lib/active_admin/arbre/html.rb +84 -0
- data/lib/active_admin/arbre/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/tag.rb +137 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/asset_registration.rb +34 -0
- data/lib/active_admin/callbacks.rb +89 -0
- data/lib/active_admin/comments.rb +88 -0
- data/lib/active_admin/comments/comment.rb +21 -0
- data/lib/active_admin/comments/configuration.rb +18 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +48 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
- data/lib/active_admin/dashboards/section.rb +34 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +224 -0
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +109 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/settings.rb +63 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -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 +39 -0
- data/lib/active_admin/locales/it.yml +39 -0
- data/lib/active_admin/locales/pt-BR.yml +36 -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.rb +42 -0
- data/lib/active_admin/menu_item.rb +73 -0
- data/lib/active_admin/namespace.rb +206 -0
- data/lib/active_admin/page_config.rb +15 -0
- data/lib/active_admin/reloader.rb +30 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +151 -0
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +36 -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 +103 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +79 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +144 -0
- data/lib/active_admin/resource_controller/filters.rb +58 -0
- data/lib/active_admin/resource_controller/form.rb +42 -0
- data/lib/active_admin/resource_controller/menu.rb +29 -0
- data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
- data/lib/active_admin/resource_controller/scoping.rb +36 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- 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 +40 -0
- data/lib/active_admin/scope.rb +17 -0
- 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 +3 -0
- data/lib/active_admin/view_factory.rb +23 -0
- data/lib/active_admin/view_helpers.rb +22 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
- data/lib/active_admin/view_helpers/display_helper.rb +38 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
- data/lib/active_admin/view_helpers/form_helper.rb +13 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
- data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/attributes_table.rb +66 -0
- data/lib/active_admin/views/components/blank_slate.rb +33 -0
- data/lib/active_admin/views/components/columns.rb +47 -0
- data/lib/active_admin/views/components/paginated_collection.rb +92 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +70 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +193 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +53 -0
- data/lib/active_admin/views/index_as_block.rb +29 -0
- data/lib/active_admin/views/index_as_blog.rb +129 -0
- data/lib/active_admin/views/index_as_grid.rb +70 -0
- data/lib/active_admin/views/index_as_table.rb +148 -0
- data/lib/active_admin/views/pages/base.rb +155 -0
- data/lib/active_admin/views/pages/dashboard.rb +62 -0
- data/lib/active_admin/views/pages/edit.rb +28 -0
- data/lib/active_admin/views/pages/index.rb +74 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +28 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabs_renderer.rb +58 -0
- data/lib/activeadmin.rb +1 -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/devise/devise_generator.rb +49 -0
- data/lib/generators/active_admin/install/install_generator.rb +44 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
- data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/script/local +44 -0
- data/script/use_rails +45 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- 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 +157 -0
- data/spec/support/detect_rails_version.rb +11 -0
- data/spec/support/integration_example_group.rb +33 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +32 -0
- data/spec/support/rails_template_with_data.rb +33 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +88 -0
- data/spec/unit/application_spec.rb +78 -0
- data/spec/unit/arbre/html/context_spec.rb +22 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +224 -0
- data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
- data/spec/unit/arbre/html/tag_spec.rb +63 -0
- data/spec/unit/arbre/html_spec.rb +210 -0
- data/spec/unit/asset_registration_spec.rb +37 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/belongs_to_spec.rb +45 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +57 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/controller_filters_spec.rb +34 -0
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +56 -0
- data/spec/unit/dashboards_spec.rb +59 -0
- data/spec/unit/display_name_spec.rb +29 -0
- data/spec/unit/event_spec.rb +41 -0
- data/spec/unit/filter_form_builder_spec.rb +182 -0
- data/spec/unit/form_builder_spec.rb +239 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +53 -0
- data/spec/unit/namespace_spec.rb +214 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +76 -0
- data/spec/unit/reloader_spec.rb +28 -0
- data/spec/unit/renderer_spec.rb +108 -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 +56 -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 +34 -0
- data/spec/unit/resource_controller_spec.rb +152 -0
- data/spec/unit/resource_spec.rb +260 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +85 -0
- data/spec/unit/view_factory_spec.rb +19 -0
- data/spec/unit/views/components/attributes_table_spec.rb +100 -0
- data/spec/unit/views/components/blank_slate_spec.rb +31 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +31 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +81 -0
- data/spec/unit/views/components/table_for_spec.rb +130 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +49 -0
- data/tasks/yard.rake +6 -0
- metadata +510 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Base < Arbre::HTML::Document
|
|
5
|
+
|
|
6
|
+
def build(*args)
|
|
7
|
+
super
|
|
8
|
+
add_classes_to_body
|
|
9
|
+
build_active_admin_head
|
|
10
|
+
build_page
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def add_classes_to_body
|
|
17
|
+
@body.add_class(params[:action])
|
|
18
|
+
@body.add_class(params[:controller].gsub('/', '_'))
|
|
19
|
+
@body.add_class("logged_in")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def build_active_admin_head
|
|
23
|
+
within @head do
|
|
24
|
+
meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
|
|
25
|
+
insert_tag Arbre::HTML::Title, [title, active_admin_application.site_title].join(" | ")
|
|
26
|
+
active_admin_application.stylesheets.each do |path|
|
|
27
|
+
link :href => stylesheet_path(path), :media => "screen", :rel => "stylesheet", :type => "text/css"
|
|
28
|
+
end
|
|
29
|
+
active_admin_application.javascripts.each do |path|
|
|
30
|
+
script :src => javascript_path(path), :type => "text/javascript"
|
|
31
|
+
end
|
|
32
|
+
text_node csrf_meta_tag
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def build_page
|
|
37
|
+
within @body do
|
|
38
|
+
div :id => "wrapper" do
|
|
39
|
+
build_header
|
|
40
|
+
build_title_bar
|
|
41
|
+
build_page_content
|
|
42
|
+
build_footer
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def build_header
|
|
48
|
+
div :id => "header" do
|
|
49
|
+
render view_factory.header
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def build_title_bar
|
|
54
|
+
div :id => "title_bar" do
|
|
55
|
+
build_breadcrumb
|
|
56
|
+
build_title_tag
|
|
57
|
+
build_action_items
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def build_breadcrumb(separator = "/")
|
|
62
|
+
links = breadcrumb_links
|
|
63
|
+
return if links.empty?
|
|
64
|
+
span :class => "breadcrumb" do
|
|
65
|
+
links.each do |link|
|
|
66
|
+
text_node link
|
|
67
|
+
span(separator, :class => "breadcrumb_sep")
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def build_title_tag
|
|
73
|
+
h2(title, :id => 'page_title')
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def build_action_items
|
|
77
|
+
if active_admin_config
|
|
78
|
+
items = active_admin_config.action_items_for(params[:action])
|
|
79
|
+
insert_tag view_factory.action_items, items
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def build_page_content
|
|
84
|
+
build_flash_messages
|
|
85
|
+
div :id => "active_admin_content", :class => (skip_sidebar? ? "without_sidebar" : "with_sidebar") do
|
|
86
|
+
build_main_content_wrapper
|
|
87
|
+
build_sidebar unless skip_sidebar?
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def build_flash_messages
|
|
92
|
+
if flash.keys.any?
|
|
93
|
+
div :class => 'flashes' do
|
|
94
|
+
flash.each do |type, message|
|
|
95
|
+
div message, :class => "flash flash_#{type}"
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def build_main_content_wrapper
|
|
102
|
+
div :id => "main_content_wrapper" do
|
|
103
|
+
div :id => "main_content" do
|
|
104
|
+
main_content
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def main_content
|
|
110
|
+
I18n.t('active_admin.main_content', :model => self.class.name).html_safe
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def title
|
|
114
|
+
self.class.name
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Set's the page title for the layout to render
|
|
118
|
+
def set_page_title
|
|
119
|
+
set_ivar_on_view "@page_title", title
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
# Returns the sidebar sections to render for the current action
|
|
124
|
+
def sidebar_sections_for_action
|
|
125
|
+
if active_admin_config
|
|
126
|
+
active_admin_config.sidebar_sections_for(params[:action])
|
|
127
|
+
else
|
|
128
|
+
[]
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Renders the sidebar
|
|
133
|
+
def build_sidebar
|
|
134
|
+
div :id => "sidebar" do
|
|
135
|
+
sidebar_sections_for_action.collect do |section|
|
|
136
|
+
sidebar_section(section)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def skip_sidebar?
|
|
142
|
+
sidebar_sections_for_action.empty? || assigns[:skip_sidebar] == true
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Renders the content for the footer
|
|
146
|
+
def build_footer
|
|
147
|
+
div :id => "footer" do
|
|
148
|
+
para "Powered by #{link_to("Active Admin", "http://www.activeadmin.info")} #{ActiveAdmin::VERSION}".html_safe
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Dashboard < Base
|
|
5
|
+
|
|
6
|
+
def main_content
|
|
7
|
+
if assigns[:dashboard_sections] && assigns[:dashboard_sections].any?
|
|
8
|
+
render_sections(assigns[:dashboard_sections])
|
|
9
|
+
else
|
|
10
|
+
default_welcome_section
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
# Dashboards don't have a sidebar
|
|
17
|
+
def build_sidebar; end
|
|
18
|
+
|
|
19
|
+
def title
|
|
20
|
+
I18n.t("active_admin.dashboard")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def render_sections(sections)
|
|
24
|
+
table :class => "dashboard" do
|
|
25
|
+
sections.in_groups_of(3, false).each do |row|
|
|
26
|
+
tr do
|
|
27
|
+
row.each do |section|
|
|
28
|
+
td do
|
|
29
|
+
render_section(section)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Renders each section using their renderer
|
|
38
|
+
def render_section(section)
|
|
39
|
+
insert_tag section_renderer(section), section
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def section_renderer(section)
|
|
43
|
+
if section.options[:as]
|
|
44
|
+
view_factory["dashboard_section_as_#{section.options[:as]}"]
|
|
45
|
+
else
|
|
46
|
+
view_factory.dashboard_section
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def default_welcome_section
|
|
51
|
+
div :class => "blank_slate_container", :id => "dashboard_default_message" do
|
|
52
|
+
span :class => "blank_slate" do
|
|
53
|
+
span I18n.t('active_admin.dashboard_welcome.welcome')
|
|
54
|
+
small I18n.t('active_admin.dashboard_welcome.call_to_action')
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Edit < Base
|
|
5
|
+
|
|
6
|
+
def title
|
|
7
|
+
I18n.t('active_admin.edit_model', :model => active_admin_config.resource_name)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def main_content
|
|
11
|
+
config = self.form_config.dup
|
|
12
|
+
config.delete(:block)
|
|
13
|
+
config.reverse_merge!({
|
|
14
|
+
:url => resource_path(resource),
|
|
15
|
+
:as => active_admin_config.underscored_resource_name
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
if form_config[:partial]
|
|
19
|
+
render form_config[:partial]
|
|
20
|
+
else
|
|
21
|
+
active_admin_form_for resource, config, &form_config[:block]
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
|
|
5
|
+
class Index < Base
|
|
6
|
+
|
|
7
|
+
def title
|
|
8
|
+
active_admin_config.plural_resource_name
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def config
|
|
12
|
+
index_config || default_index_config
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# Render's the index configuration that was set in the
|
|
17
|
+
# controller. Defaults to rendering the ActiveAdmin::Pages::Index::Table
|
|
18
|
+
def main_content
|
|
19
|
+
build_scopes
|
|
20
|
+
renderer_class = find_index_renderer_class(config[:as])
|
|
21
|
+
|
|
22
|
+
if collection.any?
|
|
23
|
+
paginated_collection(collection, :entry_name => active_admin_config.resource_name) do
|
|
24
|
+
div :class => 'index_content' do
|
|
25
|
+
insert_tag(renderer_class, config, collection)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
else
|
|
29
|
+
if controller.action_methods.include?('new')
|
|
30
|
+
insert_tag(view_factory.blank_slate, active_admin_config.resource_name.pluralize, new_resource_path)
|
|
31
|
+
else
|
|
32
|
+
insert_tag(view_factory.blank_slate, active_admin_config.resource_name.pluralize)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
protected
|
|
38
|
+
|
|
39
|
+
def build_scopes
|
|
40
|
+
if active_admin_config.scopes.any?
|
|
41
|
+
scopes_renderer active_admin_config.scopes
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Creates a default configuration for the resource class. This is a table
|
|
46
|
+
# with each column displayed as well as all the default actions
|
|
47
|
+
def default_index_config
|
|
48
|
+
@default_index_config ||= ::ActiveAdmin::PageConfig.new(:as => :table) do |display|
|
|
49
|
+
id_column
|
|
50
|
+
resource_class.content_columns.each do |col|
|
|
51
|
+
column col.name.to_sym
|
|
52
|
+
end
|
|
53
|
+
default_actions
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Returns the actual class for renderering the main content on the index
|
|
58
|
+
# page. To set this, use the :as option in the page_config block.
|
|
59
|
+
def find_index_renderer_class(symbol_or_class)
|
|
60
|
+
case symbol_or_class
|
|
61
|
+
when Symbol
|
|
62
|
+
::ActiveAdmin::Views.const_get("IndexAs" + symbol_or_class.to_s.camelcase)
|
|
63
|
+
when Class
|
|
64
|
+
symbol_or_class
|
|
65
|
+
else
|
|
66
|
+
raise ArgumentError, "'as' requires a class or a symbol"
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
|
|
5
|
+
# Acts as a standard rails Layout for use when logged
|
|
6
|
+
# out or when rendering custom actions.
|
|
7
|
+
class Layout < Base
|
|
8
|
+
|
|
9
|
+
def title
|
|
10
|
+
assigns[:page_title] || I18n.t("active_admin.#{params[:action]}", :default => params[:action].to_s.titleize)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Render the content_for(:layout) into the main content area
|
|
14
|
+
def main_content
|
|
15
|
+
content_for_layout = content_for(:layout)
|
|
16
|
+
if content_for_layout.is_a?(Arbre::HTML::Element)
|
|
17
|
+
current_dom_context.add_child content_for_layout.children
|
|
18
|
+
else
|
|
19
|
+
text_node content_for_layout
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class New < Base
|
|
5
|
+
|
|
6
|
+
def title
|
|
7
|
+
I18n.t('active_admin.new_model', :model => active_admin_config.resource_name)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def main_content
|
|
11
|
+
config = self.form_config.dup
|
|
12
|
+
config.delete(:block)
|
|
13
|
+
config.reverse_merge!({
|
|
14
|
+
:url => collection_path,
|
|
15
|
+
:as => active_admin_config.underscored_resource_name
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
if form_config[:partial]
|
|
19
|
+
render(form_config[:partial])
|
|
20
|
+
else
|
|
21
|
+
active_admin_form_for(resource, config, &form_config[:block])
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
module Pages
|
|
4
|
+
class Show < Base
|
|
5
|
+
|
|
6
|
+
def config
|
|
7
|
+
active_admin_config.page_configs[:show] || ::ActiveAdmin::PageConfig.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def title
|
|
11
|
+
case config[:title]
|
|
12
|
+
when Symbol, Proc
|
|
13
|
+
call_method_or_proc_on(resource, config[:title])
|
|
14
|
+
when String
|
|
15
|
+
config[:title]
|
|
16
|
+
else
|
|
17
|
+
default_title
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def main_content
|
|
22
|
+
if config.block
|
|
23
|
+
# Eval the show config from the controller
|
|
24
|
+
instance_exec resource, &config.block
|
|
25
|
+
else
|
|
26
|
+
default_main_content
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def attributes_table(*args, &block)
|
|
31
|
+
panel(I18n.t('active_admin.details', :model => active_admin_config.resource_name)) do
|
|
32
|
+
attributes_table_for resource, *args, &block
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
protected
|
|
37
|
+
|
|
38
|
+
def default_title
|
|
39
|
+
"#{active_admin_config.resource_name} ##{resource.id}"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
module DefaultMainContent
|
|
43
|
+
def default_main_content
|
|
44
|
+
attributes_table *default_attribute_table_rows
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def default_attribute_table_rows
|
|
48
|
+
resource.class.columns.collect{|column| column.name.to_sym }
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
include DefaultMainContent
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module ActiveAdmin
|
|
2
|
+
module Views
|
|
3
|
+
|
|
4
|
+
# Renders out a horizontal list of tabs.
|
|
5
|
+
class TabsRenderer < Renderer
|
|
6
|
+
|
|
7
|
+
# Pass in an ActiveAdmin::Menu and it will display the first level
|
|
8
|
+
# of navigation as a horizontal list of tabs
|
|
9
|
+
def to_html(menu, options = {})
|
|
10
|
+
@options = default_options.merge(options)
|
|
11
|
+
render_menu(menu)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
def render_menu(menu)
|
|
17
|
+
content_tag :ul, :id => @options[:id] do
|
|
18
|
+
menu.items.collect do |item|
|
|
19
|
+
render_item(item)
|
|
20
|
+
end.join.html_safe
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def render_item(item)
|
|
25
|
+
if !call_method_or_proc_on(self, item.display_if_block)
|
|
26
|
+
return
|
|
27
|
+
elsif (!item.url or item.url == '#') and item.children.any? and (item.children.detect {|child| call_method_or_proc_on(self, child.display_if_block)}).nil?
|
|
28
|
+
return
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
content_tag :li, :id => item.dom_id, :class => [("current" if current?(item)), ("has_nested" unless item.children.blank?)].compact.join(" ") do
|
|
32
|
+
unless item.children.blank?
|
|
33
|
+
link_to(item.name, item.url || "#") + render_nested_menu(item)
|
|
34
|
+
else
|
|
35
|
+
link_to item.name, item.url
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def render_nested_menu(item)
|
|
41
|
+
content_tag :ul do
|
|
42
|
+
item.children.collect {|child| render_item(child)}.join.html_safe
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Returns true if the menu item name is @current_tab
|
|
47
|
+
def current?(menu_item)
|
|
48
|
+
@current_tab.split("/").include?(menu_item.name) unless @current_tab.blank?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def default_options
|
|
52
|
+
{ :id => "tabs" }
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|