andrewroth_activeadmin 0.3.4
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 +35 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +301 -0
- data/Gemfile +40 -0
- data/Guardfile +8 -0
- data/LICENSE +25 -0
- data/README.rdoc +113 -0
- data/Rakefile +18 -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 +363 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -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/_utilities.scss +17 -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/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -0
- data/docs/2-resource-customization.md +114 -0
- data/docs/3-index-pages.md +55 -0
- data/docs/3-index-pages/index-as-block.md +16 -0
- data/docs/3-index-pages/index-as-blog.md +61 -0
- data/docs/3-index-pages/index-as-grid.md +21 -0
- data/docs/3-index-pages/index-as-table.md +90 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +36 -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/filters.feature +35 -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 +56 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +37 -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 +96 -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 +82 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +231 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/builder.rb +111 -0
- data/lib/active_admin/arbre/context.rb +45 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/html/attributes.rb +20 -0
- data/lib/active_admin/arbre/html/class_list.rb +28 -0
- data/lib/active_admin/arbre/html/collection.rb +27 -0
- data/lib/active_admin/arbre/html/document.rb +42 -0
- data/lib/active_admin/arbre/html/element.rb +151 -0
- data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/html/tag.rb +137 -0
- data/lib/active_admin/arbre/html/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/dependency_checker.rb +30 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +54 -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 +118 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/bg.yml +40 -0
- data/lib/active_admin/locales/cs.yml +34 -0
- data/lib/active_admin/locales/da.yml +28 -0
- data/lib/active_admin/locales/en.yml +40 -0
- data/lib/active_admin/locales/es.yml +40 -0
- data/lib/active_admin/locales/fr.yml +40 -0
- data/lib/active_admin/locales/it.yml +40 -0
- data/lib/active_admin/locales/ja.yml +40 -0
- data/lib/active_admin/locales/pl.yml +34 -0
- data/lib/active_admin/locales/pt-BR.yml +41 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/sv-SE.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 +64 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +159 -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 +50 -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 +105 -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 +138 -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 +45 -0
- data/lib/active_admin/scope.rb +31 -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 +17 -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 +69 -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 +57 -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 +164 -0
- data/lib/active_admin/views/pages/base.rb +167 -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 +91 -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/tabbed_navigation.rb +94 -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 +103 -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 +46 -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/memory_spec.rb +38 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +167 -0
- data/spec/support/detect_rails_version.rb +10 -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/active_admin_spec.rb +17 -0
- data/spec/unit/application_spec.rb +87 -0
- data/spec/unit/arbre/context_spec.rb +35 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +223 -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 +209 -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/devise_spec.rb +66 -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 +256 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_item_spec.rb +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 +80 -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 +75 -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 +269 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +41 -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 +15 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +29 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/views/components/table_for_spec.rb +131 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +57 -0
- data/tasks/yard.rake +6 -0
- metadata +646 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<div id="login">
|
|
2
|
+
<h2><%= title "#{active_admin_application.site_title} Login" %></h2>
|
|
3
|
+
|
|
4
|
+
<% scope = Devise::Mapping.find_scope!(resource_name) %>
|
|
5
|
+
<%= active_admin_form_for(resource, :as => resource_name, :url => send(:"#{scope}_session_path"), :html => { :id => "session_new" }) do |f|
|
|
6
|
+
f.inputs do
|
|
7
|
+
Devise.authentication_keys.each { |key| f.input key }
|
|
8
|
+
f.input :password
|
|
9
|
+
f.input :remember_me, :as => :boolean, :if => false #devise_mapping.rememberable? }
|
|
10
|
+
end
|
|
11
|
+
f.buttons do
|
|
12
|
+
f.commit_button "Login"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
%>
|
|
16
|
+
|
|
17
|
+
<%= render :partial => "devise/shared/links" %>
|
|
18
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<%- if controller_name != 'sessions' %>
|
|
2
|
+
<% scope = Devise::Mapping.find_scope!(resource_name) %>
|
|
3
|
+
<%= link_to "Sign in", send(:"new_#{scope}_session_path") }")br />
|
|
4
|
+
<% end -%>
|
|
5
|
+
|
|
6
|
+
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
|
|
7
|
+
<%= link_to "Sign up", new_registration_path(resource_name) %><br />
|
|
8
|
+
<% end -%>
|
|
9
|
+
|
|
10
|
+
<%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
|
|
11
|
+
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
|
|
12
|
+
<% end -%>
|
|
13
|
+
|
|
14
|
+
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
|
|
15
|
+
<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
|
|
16
|
+
<% end -%>
|
|
17
|
+
|
|
18
|
+
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
|
|
19
|
+
<%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
|
|
20
|
+
<% end -%>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<h2>Resend unlock instructions</h2>
|
|
2
|
+
|
|
3
|
+
<%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %>
|
|
4
|
+
<%= devise_error_messages! %>
|
|
5
|
+
|
|
6
|
+
<p><%= f.label :email %><br />
|
|
7
|
+
<%= f.text_field :email %></p>
|
|
8
|
+
|
|
9
|
+
<p><%= f.submit "Resend unlock instructions" %></p>
|
|
10
|
+
<% end %>
|
|
11
|
+
|
|
12
|
+
<%= render :partial => "devise/shared/links" %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render renderer_for(:edit)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<%-
|
|
2
|
+
csv_lib = if RUBY_VERSION =~ /^1.8/
|
|
3
|
+
require 'fastercsv'
|
|
4
|
+
FasterCSV
|
|
5
|
+
else
|
|
6
|
+
require 'csv'
|
|
7
|
+
CSV
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
csv_output = csv_lib.generate do |csv|
|
|
11
|
+
columns = active_admin_config.csv_builder.columns
|
|
12
|
+
csv << columns.map(&:name)
|
|
13
|
+
collection.each do |resource|
|
|
14
|
+
csv << columns.map do |column|
|
|
15
|
+
call_method_or_proc_on resource, column.data
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
%>
|
|
20
|
+
<%= csv_output.html_safe %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render renderer_for(:index)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render renderer_for(:new)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render renderer_for(:show)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
render view_factory.layout
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
|
5
|
+
|
|
6
|
+
<title><%= [@page_title, active_admin_application.site_title].compact.join(" | ") %></title>
|
|
7
|
+
|
|
8
|
+
<% ActiveAdmin.application.stylesheets.each do |path| %>
|
|
9
|
+
<%= stylesheet_link_tag path %>
|
|
10
|
+
<% end %>
|
|
11
|
+
<% ActiveAdmin.application.javascripts.each do |path| %>
|
|
12
|
+
<%= javascript_include_tag path %>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<%= csrf_meta_tag %>
|
|
16
|
+
</head>
|
|
17
|
+
<body class="logged_out <%= controller.action_name %>">
|
|
18
|
+
<div id="wrapper">
|
|
19
|
+
|
|
20
|
+
<div id="content_wrapper">
|
|
21
|
+
<% if flash.keys.any? %>
|
|
22
|
+
<% flash.each do |type, message| %>
|
|
23
|
+
<%= content_tag :div, message, :class => "flash flash_#{type}" %>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
26
|
+
<div id="active_admin_content">
|
|
27
|
+
<%= yield %>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<div id="footer">
|
|
31
|
+
<%= yield :footer %>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</body>
|
|
35
|
+
</html>
|
data/cucumber.yml
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
Installing Active Admin in a Rails application is as easy as adding the gem to
|
|
4
|
+
your Gemfile:
|
|
5
|
+
|
|
6
|
+
# Gemfile
|
|
7
|
+
gem 'activeadmin'
|
|
8
|
+
|
|
9
|
+
If you are using Rails >= 3.1, you must also include a beta version of
|
|
10
|
+
MetaSearch and sass-rails:
|
|
11
|
+
|
|
12
|
+
# Gemfile in Rails >= 3.1
|
|
13
|
+
gem 'activeadmin'
|
|
14
|
+
gem 'sass-rails'
|
|
15
|
+
gem "meta_search", '>= 1.1.0.pre'
|
|
16
|
+
|
|
17
|
+
## Running the Generator
|
|
18
|
+
|
|
19
|
+
Once you have added the gem to your Gemfile (and any other dependencies), you
|
|
20
|
+
need to run the Active Admin install generator.
|
|
21
|
+
|
|
22
|
+
$> rails generate active_admin:install
|
|
23
|
+
|
|
24
|
+
This will install Active Admin the default settings. By default it will create a
|
|
25
|
+
new Devise user / model called AdminUser. To change the name of the user class,
|
|
26
|
+
simply pass the class as the last argument:
|
|
27
|
+
|
|
28
|
+
$> rails generate active_admin:install User
|
|
29
|
+
|
|
30
|
+
Instead of generating an AdminUser class, this command will create a User class.
|
|
31
|
+
|
|
32
|
+
You can skip the Devise user class all together by using the `skip-users` flag:
|
|
33
|
+
|
|
34
|
+
$> rails generate active_admin:install --skip-users
|
|
35
|
+
|
|
36
|
+
NOTE: If you don't use the default user settings, you will need to configure the
|
|
37
|
+
settings in `config/intializers/active_admin.rb` to suite your needs.
|
|
38
|
+
|
|
39
|
+
After running the installer, run `rake db:migrate` to ensure that all db tables
|
|
40
|
+
are created.
|
|
41
|
+
|
|
42
|
+
## Upgrading
|
|
43
|
+
|
|
44
|
+
To upgrade Active Admin, simply update the version number in your Gemfile, then
|
|
45
|
+
run the assets generator:
|
|
46
|
+
|
|
47
|
+
$> rails generate active_admin:assets
|
|
48
|
+
|
|
49
|
+
This command makes sure you have all the latest assets and your installation is
|
|
50
|
+
up to date. Each time you upgrade Active Admin, you should run this command.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# General Configuration
|
|
2
|
+
|
|
3
|
+
Below are some common settings you'll find in
|
|
4
|
+
`config/initializers/active_admin.rb`.
|
|
5
|
+
|
|
6
|
+
## Authentication
|
|
7
|
+
|
|
8
|
+
Active Admin requires two settings to authenticate and use the current user
|
|
9
|
+
within your application. Both are set in
|
|
10
|
+
<tt>config/initializers/active_admin.rb</tt>. By default they are setup for use
|
|
11
|
+
with Devise and a model named AdminUser. If you chose a different model name,
|
|
12
|
+
you will need to update these settings.
|
|
13
|
+
|
|
14
|
+
Set the method that controllers should call to authenticate the current user
|
|
15
|
+
with:
|
|
16
|
+
|
|
17
|
+
# config/initializers/active_admin.rb
|
|
18
|
+
config.authentication_method = :authenticate_admin_user!
|
|
19
|
+
|
|
20
|
+
Set the method to call within the view to access the current admin user
|
|
21
|
+
|
|
22
|
+
# config/initializers/active_admin.rb
|
|
23
|
+
config.current_user_method = :current_admin_user
|
|
24
|
+
|
|
25
|
+
Both of these settings can be set to false to turn off authentication.
|
|
26
|
+
|
|
27
|
+
# Turn off authentication all together
|
|
28
|
+
config.authentication_method = false
|
|
29
|
+
config.current_user_method = false
|
|
30
|
+
|
|
31
|
+
## Site Title
|
|
32
|
+
|
|
33
|
+
You can update the title used for the site in the initializer also. By default
|
|
34
|
+
it is set to the name of your Rails.application class name.
|
|
35
|
+
|
|
36
|
+
# config/initializers/active_admin.rb
|
|
37
|
+
config.site_title = "My Admin Site"
|
|
38
|
+
|
|
39
|
+
## Internationalization (I18n)
|
|
40
|
+
|
|
41
|
+
To internationalize Active Admin or to change default strings, you can copy
|
|
42
|
+
lib/active_admin/locales/en.yml to your application config/locales directory and
|
|
43
|
+
change its content. You can contribute to the project with your translations too!
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Customize The Resource
|
|
2
|
+
|
|
3
|
+
## Rename the Resource
|
|
4
|
+
|
|
5
|
+
By default, any references to the resource (menu, routes, buttons, etc) in the
|
|
6
|
+
interface will use the name of the class. You can rename the resource by using
|
|
7
|
+
the <tt>:as</tt> option.
|
|
8
|
+
|
|
9
|
+
ActiveAdmin.register Post, :as => "Article"
|
|
10
|
+
|
|
11
|
+
The resource will then be available as /admin/articles
|
|
12
|
+
|
|
13
|
+
## Customize the Menu
|
|
14
|
+
|
|
15
|
+
The resource will be displayed in the global navigation by default. To disable
|
|
16
|
+
the resource from being displayed in the global navigation, pass `false` to the
|
|
17
|
+
`menu` method:
|
|
18
|
+
|
|
19
|
+
ActiveAdmin.register Post do
|
|
20
|
+
menu false
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
The menu method accepts a hash with the following options:
|
|
24
|
+
|
|
25
|
+
* `:label` - The string label to display in the menu
|
|
26
|
+
* `:parent` - The string label of the parent to set for this menu
|
|
27
|
+
* `:if` - A block or a symbol of a method to call to decide if the menu item
|
|
28
|
+
should be displayed
|
|
29
|
+
* `:priority` - The integer value of the priority. Defaults to 10
|
|
30
|
+
|
|
31
|
+
### Labels
|
|
32
|
+
|
|
33
|
+
To change the name of the label in the menu:
|
|
34
|
+
|
|
35
|
+
ActiveAdmin.register Post do
|
|
36
|
+
menu :label => "My Posts"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
By default the menu uses a pluralized version of your resource name.
|
|
40
|
+
|
|
41
|
+
### Drop Down Menus
|
|
42
|
+
|
|
43
|
+
In many cases, a single level navigation will not be enough for the
|
|
44
|
+
administration of a production application. In that case, you can categorize
|
|
45
|
+
your resources and creating drop down menus to access them.
|
|
46
|
+
|
|
47
|
+
To add the menu as a child of another menu:
|
|
48
|
+
|
|
49
|
+
ActiveAdmin.register Post do
|
|
50
|
+
menu :parent => "Blog"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
Note, the "Blog" menu does not even have to exist yet. It will be generated on
|
|
54
|
+
the fly as a drop down list for you.
|
|
55
|
+
|
|
56
|
+
### Menu Priority
|
|
57
|
+
|
|
58
|
+
By default Active Admin sorts menus alphabetically. Some times you want specific
|
|
59
|
+
resources to show up at the beginning or the end of your menu.
|
|
60
|
+
|
|
61
|
+
Each menu item is given an integer priority value (default 10). You can set it
|
|
62
|
+
to edit the location of the menu item.
|
|
63
|
+
|
|
64
|
+
ActiveAdmin.register Post do
|
|
65
|
+
menu :priority => 1
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
This would ensure that the Post menu item, is at the beginning of the menu.
|
|
69
|
+
|
|
70
|
+
### Conditionally Showing / Hiding Menu Items
|
|
71
|
+
|
|
72
|
+
Menu items can be shown or hidden at runtime using the `:if` option.
|
|
73
|
+
|
|
74
|
+
ActiveAdmin.register Post do
|
|
75
|
+
menu :if => proc{ current_admin_user.can_edit_posts? }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
The `proc` will be called in the context of the view, so you have access to all
|
|
79
|
+
your helpers and current user session information.
|
|
80
|
+
|
|
81
|
+
## Scoping the queries
|
|
82
|
+
|
|
83
|
+
If your administrators have different access levels, you may sometimes want to
|
|
84
|
+
scope what they have access to. Assuming your User model has the proper
|
|
85
|
+
has_many relationships, you can simply scope the listings and finders like so:
|
|
86
|
+
|
|
87
|
+
ActiveAdmin.register Post do
|
|
88
|
+
scope_to :current_user
|
|
89
|
+
|
|
90
|
+
# or if the association doesn't have the default name.
|
|
91
|
+
# scope_to :current_user, :association_method => :blog_posts
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
That approach limits the posts an admin can access to ```current_user.posts```.
|
|
95
|
+
|
|
96
|
+
If you want to do something fancier, for example override a default scope, you can
|
|
97
|
+
also use :association_method parameter with a normal method on your User model.
|
|
98
|
+
The only requirement is that your method returns an instance of ActiveRecord::Relation.
|
|
99
|
+
|
|
100
|
+
class Ad < ActiveRecord::Base
|
|
101
|
+
default_scope lambda { where :published => true }
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
class User < ActiveRecord::Base
|
|
105
|
+
def managed_ads
|
|
106
|
+
# Overrides Ad's default_scope
|
|
107
|
+
Ad.unscoped
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
ActiveAdmin.register Ad do
|
|
112
|
+
scope_to :current_user, :association_method => :managed_ads
|
|
113
|
+
end
|
|
114
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Customizing the Index Page
|
|
2
|
+
|
|
3
|
+
Filtering and listing resources is one of the most important tasks for
|
|
4
|
+
administering a web application. Active Admin provides many different tools for
|
|
5
|
+
you to build a compelling interface into your data for the admin staff.
|
|
6
|
+
|
|
7
|
+
Built in, Active Admin has the following index renderers:
|
|
8
|
+
|
|
9
|
+
* *Table*: A table drawn with each row being a resource ([View Table Docs](3-index-pages/index-as-table.md))
|
|
10
|
+
* *Grid*: A set of rows and columns each cell being a resource ([View Grid Docs](3-index-pages/index-as-grid.md))
|
|
11
|
+
* *Blocks*: A set of rows (not tabular) each row being a resource ([View Blocks Docs](3-index-pages/index-as-block.md))
|
|
12
|
+
* *Blog*: A title and body content, similar to a blog index ([View Blog Docs](3-index-pages/index-as-blog.md))
|
|
13
|
+
|
|
14
|
+
All index pages also support scopes, filters, pagination, action items, and
|
|
15
|
+
sidebar sections.
|
|
16
|
+
|
|
17
|
+
## Index Filters
|
|
18
|
+
|
|
19
|
+
By default the index screen includes a "Filters" sidebar on the right hand side
|
|
20
|
+
with a filter for each attribute of the registered model. You can customize the
|
|
21
|
+
filters that are displayed as well as the type of widgets they use.
|
|
22
|
+
|
|
23
|
+
To display a filter for an attribute, use the filter method
|
|
24
|
+
|
|
25
|
+
ActiveAdmin.register Post do
|
|
26
|
+
filter :title
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
Out of the box, Active Admin supports the following filter types:
|
|
30
|
+
|
|
31
|
+
* *:string* - A search field
|
|
32
|
+
* *:date_range* - A start and end date field with calendar inputs
|
|
33
|
+
* *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
|
|
34
|
+
Than" and an input for a value.
|
|
35
|
+
* *:select* - A drop down which filters based on a selected item in a collection
|
|
36
|
+
or all.
|
|
37
|
+
* *:check_boxes* - A list of check boxes users can turn on and off to filter
|
|
38
|
+
|
|
39
|
+
By default, Active Admin will pick the most relevant filter based on the
|
|
40
|
+
attribute type. You can force the type by passing the :as option.
|
|
41
|
+
|
|
42
|
+
filter :author, :as => :check_boxes
|
|
43
|
+
|
|
44
|
+
The :check_boxes and :select types accept options for the collection. By default
|
|
45
|
+
it attempts to create a collection based on an association. But you can pass in
|
|
46
|
+
the collection as a proc to be called at render time.
|
|
47
|
+
|
|
48
|
+
# Will call available
|
|
49
|
+
filter :author, :as => :check_boxes, :collection => proc { Author.all }
|
|
50
|
+
|
|
51
|
+
You can change the filter label by passing a label option:
|
|
52
|
+
|
|
53
|
+
filter :author, :label => 'Author'
|
|
54
|
+
|
|
55
|
+
By default, Active Admin will try to use ActiveModel I18n to determine the label.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- Please don't edit this file. It will be clobbered. -->
|
|
2
|
+
|
|
3
|
+
# Index as a Block
|
|
4
|
+
|
|
5
|
+
If you want to fully customize the display of your resources on the index
|
|
6
|
+
screen, Index as a Block allows you to render a block of content for each
|
|
7
|
+
resource.
|
|
8
|
+
|
|
9
|
+
index :as => :block do |product|
|
|
10
|
+
div :for => product do
|
|
11
|
+
h2 auto_link(product.title)
|
|
12
|
+
div do
|
|
13
|
+
simple_format product.description
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<!-- Please don't edit this file. It will be clobbered. -->
|
|
2
|
+
|
|
3
|
+
# Index as Blog
|
|
4
|
+
|
|
5
|
+
Render your index page as a set of posts. The post has two main options:
|
|
6
|
+
title and body.
|
|
7
|
+
|
|
8
|
+
index :as => :blog do
|
|
9
|
+
title :my_title # Calls #my_title on each resource
|
|
10
|
+
body :my_body # Calls #my_body on each resource
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
## Post Title
|
|
14
|
+
|
|
15
|
+
The title is the content that will be rendered within a link to the
|
|
16
|
+
resource. There are two main ways to set the content for the title
|
|
17
|
+
|
|
18
|
+
First, you can pass in a method to be called on your
|
|
19
|
+
resource. For example:
|
|
20
|
+
|
|
21
|
+
index :as => :blog do
|
|
22
|
+
title :a_method_to_call
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
This will result in the title of the post being the return value of
|
|
26
|
+
Resource#a_method_to_call
|
|
27
|
+
|
|
28
|
+
Second, you can pass a block to the tile option which will then be
|
|
29
|
+
used as the contents fo the title. The resource being rendered
|
|
30
|
+
is passed in to the block. For Example:
|
|
31
|
+
|
|
32
|
+
index :as => :blog do
|
|
33
|
+
title do |post|
|
|
34
|
+
span post.title, :class => 'title'
|
|
35
|
+
span post.created_at, :class => 'created_at'
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
## Post Body
|
|
40
|
+
|
|
41
|
+
The body is rendered underneath the title of each post. The same two
|
|
42
|
+
style of options work as the Post Title above.
|
|
43
|
+
|
|
44
|
+
Call a method on the resource as the body:
|
|
45
|
+
|
|
46
|
+
index :as => :blog do
|
|
47
|
+
title :my_title
|
|
48
|
+
body :my_body # Return value of #my_body will be the body
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
Or, render a block as the body:
|
|
52
|
+
|
|
53
|
+
index :as => :blog do
|
|
54
|
+
title :my_title
|
|
55
|
+
body do |post|
|
|
56
|
+
div truncate(post.title)
|
|
57
|
+
div :class => 'meta' do
|
|
58
|
+
span "Post in #{post.categories.join(', ')}"
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|