activeadmin 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- data/CHANGELOG.rdoc +15 -1
- data/Gemfile +41 -11
- data/LICENSE +5 -0
- data/README.rdoc +202 -87
- data/Rakefile +51 -15
- data/activeadmin.gemspec +310 -131
- data/cucumber.yml +1 -0
- data/features/comments/commenting.feature +81 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/edit_page.feature +77 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/formats.feature +10 -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 +79 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +23 -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 +128 -0
- data/features/specifying_actions.feature +16 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +67 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +15 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/factory_steps.rb +28 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +7 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +11 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +20 -0
- data/features/step_definitions/web_steps.rb +219 -0
- data/features/support/env.rb +88 -0
- data/features/support/paths.rb +48 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +155 -79
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/action_items.rb +4 -15
- 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 +8 -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 +129 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/comments.rb +73 -0
- data/lib/active_admin/comments/comment.rb +15 -0
- data/lib/active_admin/comments/configuration.rb +16 -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/dashboards.rb +0 -2
- data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
- data/lib/active_admin/dashboards/section.rb +5 -14
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +202 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +68 -50
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/namespace.rb +102 -16
- data/lib/active_admin/renderer.rb +18 -3
- data/lib/active_admin/resource.rb +110 -9
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource_controller.rb +45 -260
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +53 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +142 -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 +38 -0
- data/lib/active_admin/scope.rb +17 -0
- data/lib/active_admin/sidebar.rb +8 -47
- data/lib/active_admin/stylesheets/active_admin.scss +418 -0
- data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
- data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
- data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
- data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
- data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +21 -0
- data/lib/active_admin/view_helpers.rb +17 -100
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -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 +174 -0
- data/lib/active_admin/view_helpers/form_helper.rb +12 -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/status_tag_helper.rb +13 -0
- data/lib/active_admin/view_helpers/table_helper.rb +12 -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/columns.rb +49 -0
- data/lib/active_admin/views/components/paginated_collection.rb +74 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +64 -0
- data/lib/active_admin/views/components/sidebar_section.rb +30 -0
- data/lib/active_admin/views/components/table_for.rb +174 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +37 -0
- data/lib/active_admin/views/index_as_block.rb +24 -0
- data/lib/active_admin/views/index_as_blog.rb +89 -0
- data/lib/active_admin/views/index_as_grid.rb +49 -0
- data/lib/active_admin/views/index_as_table.rb +73 -0
- data/lib/active_admin/views/pages/base.rb +138 -0
- data/lib/active_admin/views/pages/dashboard.rb +61 -0
- data/lib/active_admin/views/pages/edit.rb +27 -0
- data/lib/active_admin/views/pages/index.rb +64 -0
- data/lib/active_admin/views/pages/new.rb +27 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabs_renderer.rb +52 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
- data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
- data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
- data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
- data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
- data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
- data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
- data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
- data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
- data/lib/generators/active_admin/install/install_generator.rb +18 -3
- data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
- data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
- data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
- data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
- data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
- data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/orderable.png +0 -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/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/index_as_table_spec.rb +0 -119
- data/spec/integration/layout_spec.rb +3 -37
- data/spec/spec_helper.rb +89 -50
- data/spec/support/integration_example_group.rb +37 -0
- data/spec/support/rails_template.rb +21 -9
- data/spec/support/rails_template_with_data.rb +32 -0
- data/spec/support/templates/cucumber.rb +28 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +19 -7
- data/spec/unit/action_items_spec.rb +16 -30
- data/spec/unit/active_admin_spec.rb +10 -22
- 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 +185 -0
- data/spec/unit/auto_link_spec.rb +38 -0
- data/spec/unit/belongs_to_spec.rb +44 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +53 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/components/attributes_table_spec.rb +100 -0
- data/spec/unit/components/columns_spec.rb +75 -0
- data/spec/unit/components/panel_spec.rb +31 -0
- data/spec/unit/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/components/table_for_spec.rb +130 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +10 -17
- 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 +99 -77
- data/spec/unit/form_builder_spec.rb +69 -69
- data/spec/unit/namespace_spec.rb +61 -3
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/registration_spec.rb +40 -1
- data/spec/unit/renderer_spec.rb +8 -0
- data/spec/unit/resource_controller_spec.rb +105 -6
- data/spec/unit/resource_spec.rb +78 -11
- data/spec/unit/routing_spec.rb +82 -6
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +24 -2
- data/spec/unit/view_factory_spec.rb +16 -0
- metadata +268 -82
- data/.gitignore +0 -25
- data/active_admin.gemspec +0 -22
- data/lib/active_admin/action_builder.rb +0 -60
- data/lib/active_admin/breadcrumbs.rb +0 -26
- data/lib/active_admin/dashboards/renderer.rb +0 -45
- data/lib/active_admin/dashboards/section_renderer.rb +0 -28
- data/lib/active_admin/filters.rb +0 -189
- data/lib/active_admin/pages.rb +0 -11
- data/lib/active_admin/pages/base.rb +0 -92
- data/lib/active_admin/pages/edit.rb +0 -21
- data/lib/active_admin/pages/index.rb +0 -58
- data/lib/active_admin/pages/index/blog.rb +0 -65
- data/lib/active_admin/pages/index/table.rb +0 -48
- data/lib/active_admin/pages/index/thumbnails.rb +0 -40
- data/lib/active_admin/pages/new.rb +0 -21
- data/lib/active_admin/pages/show.rb +0 -54
- data/lib/active_admin/table_builder.rb +0 -162
- data/lib/active_admin/tabs_renderer.rb +0 -39
- data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
- data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
- data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
- data/spec/integration/index_as_blog_spec.rb +0 -65
- data/spec/integration/index_as_thumbnails_spec.rb +0 -43
- data/spec/integration/new_view_spec.rb +0 -52
- data/spec/integration/show_view_spec.rb +0 -91
- data/spec/unit/sidebar_spec.rb +0 -96
- data/spec/unit/table_builder_spec.rb +0 -162
@@ -0,0 +1,27 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
module Pages
|
4
|
+
class Edit < Base
|
5
|
+
|
6
|
+
def title
|
7
|
+
"Edit #{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
|
+
})
|
16
|
+
|
17
|
+
if form_config[:partial]
|
18
|
+
render form_config[:partial]
|
19
|
+
else
|
20
|
+
active_admin_form_for resource, config, &form_config[:block]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,64 @@
|
|
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
|
+
paginated_collection(collection, :entry_name => active_admin_config.resource_name) do
|
23
|
+
insert_tag(renderer_class, config, collection)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
protected
|
28
|
+
|
29
|
+
def build_scopes
|
30
|
+
if active_admin_config.scopes.any?
|
31
|
+
scopes_renderer active_admin_config.scopes
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Creates a default configuration for the resource class. This is a table
|
36
|
+
# with each column displayed as well as all the default actions
|
37
|
+
def default_index_config
|
38
|
+
@default_index_config ||= ::ActiveAdmin::PageConfig.new(:as => :table) do |display|
|
39
|
+
id_column
|
40
|
+
resource_class.content_columns.each do |col|
|
41
|
+
column col.name.to_sym
|
42
|
+
end
|
43
|
+
default_actions
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# Returns the actual class for renderering the main content on the index
|
48
|
+
# page. To set this, use the :as option in the page_config block.
|
49
|
+
def find_index_renderer_class(symbol_or_class)
|
50
|
+
case symbol_or_class
|
51
|
+
when Symbol
|
52
|
+
::ActiveAdmin::Views.const_get("IndexAs" + symbol_or_class.to_s.camelcase)
|
53
|
+
when Class
|
54
|
+
symbol_or_class
|
55
|
+
else
|
56
|
+
raise ArgumentError, "'as' requires a class or a symbol"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
module Pages
|
4
|
+
class New < Base
|
5
|
+
|
6
|
+
def title
|
7
|
+
"New #{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
|
+
})
|
16
|
+
|
17
|
+
if form_config[:partial]
|
18
|
+
render(form_config[:partial])
|
19
|
+
else
|
20
|
+
active_admin_form_for(resource, config, &form_config[:block])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
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(active_admin_config.resource_name + " Details") 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,52 @@
|
|
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
|
+
content_tag :li, :id => item.dom_id, :class => [("current" if current?(item)), ("has_nested" unless item.children.blank?)].compact.join(" ") do
|
26
|
+
unless item.children.blank?
|
27
|
+
link_to(item.name, item.url || "#") + render_nested_menu(item)
|
28
|
+
else
|
29
|
+
link_to item.name, item.url
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def render_nested_menu(item)
|
35
|
+
content_tag :ul do
|
36
|
+
item.children.collect {|child| render_item(child)}.join.html_safe
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns true if the menu item name is @current_tab
|
41
|
+
def current?(menu_item)
|
42
|
+
@current_tab.split("/").include?(menu_item.name) unless @current_tab.blank?
|
43
|
+
end
|
44
|
+
|
45
|
+
def default_options
|
46
|
+
{ :id => "tabs" }
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<p>Hello <%= @resource.email %>!</p>
|
2
|
+
|
3
|
+
<p>Someone has requested a link to change your password, and you can do this through the link below.</p>
|
4
|
+
|
5
|
+
<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>
|
6
|
+
|
7
|
+
<p>If you didn't request this, please ignore this email.</p>
|
8
|
+
<p>Your password won't change until you access the link above and create a new one.</p>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<p>Hello <%= @resource.email %>!</p>
|
2
|
+
|
3
|
+
<p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
|
4
|
+
|
5
|
+
<p>Click the link below to unlock your account:</p>
|
6
|
+
|
7
|
+
<p><%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %></p>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<h2>Change your password</h2>
|
2
|
+
|
3
|
+
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %>
|
4
|
+
<%= devise_error_messages! %>
|
5
|
+
<%= f.hidden_field :reset_password_token %>
|
6
|
+
|
7
|
+
<p><%= f.label :password %><br />
|
8
|
+
<%= f.password_field :password %></p>
|
9
|
+
|
10
|
+
<p><%= f.label :password_confirmation %><br />
|
11
|
+
<%= f.password_field :password_confirmation %></p>
|
12
|
+
|
13
|
+
<p><%= f.submit "Change my password" %></p>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<%= render :partial => "devise/shared/links" %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<div id="login">
|
2
|
+
<h2>Forgot your password?</h2>
|
3
|
+
|
4
|
+
<%= active_admin_form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f|
|
5
|
+
f.inputs do
|
6
|
+
f.input :email
|
7
|
+
end
|
8
|
+
f.buttons do
|
9
|
+
f.commit_button "Reset My Password"
|
10
|
+
end
|
11
|
+
end %>
|
12
|
+
|
13
|
+
<%= render :partial => "devise/shared/links" %>
|
14
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div id="login">
|
2
|
+
<h2><%= title "#{ActiveAdmin.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
|
+
f.input :email
|
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 view_factory.dashboard_page
|
@@ -0,0 +1 @@
|
|
1
|
+
render renderer_for(:edit)
|
data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb
RENAMED
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
render renderer_for(:index)
|
@@ -0,0 +1 @@
|
|
1
|
+
render renderer_for(:new)
|
@@ -0,0 +1 @@
|
|
1
|
+
render renderer_for(:show)
|
@@ -10,17 +10,16 @@
|
|
10
10
|
<%= csrf_meta_tag %>
|
11
11
|
|
12
12
|
</head>
|
13
|
-
<body>
|
13
|
+
<body class="<%= controller.action_name %>">
|
14
14
|
<div id="wrapper">
|
15
15
|
<div id="header">
|
16
|
-
|
17
|
-
<%= ActiveAdmin.tabs_renderer.new(self).to_html(current_menu) %>
|
16
|
+
<%= yield :header %>
|
18
17
|
</div>
|
19
18
|
<div id="title_bar">
|
20
19
|
<%= yield :title_bar %>
|
21
20
|
</div>
|
22
21
|
<div id="content" class="<%= skip_sidebar? ? 'without_sidebar' : 'with_sidebar' %>">
|
23
|
-
<%=
|
22
|
+
<%= flash_messages %>
|
24
23
|
<div id="main_content_wrapper">
|
25
24
|
<div id="main_content">
|
26
25
|
<%= yield %>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
5
|
+
|
6
|
+
<title><%= [@page_title, ActiveAdmin.site_title].join(" | ") %></title>
|
7
|
+
|
8
|
+
<%= stylesheet_link_tag *ActiveAdmin.stylesheets %>
|
9
|
+
<%= javascript_include_tag *ActiveAdmin.javascripts %>
|
10
|
+
<%= csrf_meta_tag %>
|
11
|
+
|
12
|
+
</head>
|
13
|
+
<body class="logged_out <%= controller.action_name %>">
|
14
|
+
<div id="wrapper">
|
15
|
+
|
16
|
+
<div id="content_wrapper">
|
17
|
+
<% if flash.keys.any? %>
|
18
|
+
<% flash.each do |type, message| %>
|
19
|
+
<%= content_tag :div, message, :class => "flash flash_#{type}" %>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
22
|
+
<div id="content">
|
23
|
+
<%= yield %>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<div id="footer">
|
27
|
+
<%= yield :footer %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</body>
|
31
|
+
</html>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Generators
|
3
|
+
class DeviseGenerator < Rails::Generators::NamedBase
|
4
|
+
desc "Creates an admin user and uses Devise for authentication"
|
5
|
+
|
6
|
+
argument :name, :type => :string, :default => "AdminUser"
|
7
|
+
|
8
|
+
class_option :registerable, :type => :boolean, :default => false,
|
9
|
+
:desc => "Should the generated resource be registerable?"
|
10
|
+
|
11
|
+
def install_devise
|
12
|
+
require 'devise'
|
13
|
+
if File.exists?(File.join(destination_root, "config", "initializers", "devise.rb"))
|
14
|
+
log :generate, "No need to install devise, already done."
|
15
|
+
else
|
16
|
+
log :generate, "devise:install"
|
17
|
+
invoke "devise:install"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_admin_user
|
22
|
+
invoke "devise", [name]
|
23
|
+
end
|
24
|
+
|
25
|
+
def remove_registerable_from_model
|
26
|
+
unless options[:registerable]
|
27
|
+
model_file = File.join(destination_root, "app", "models", "#{file_path}.rb")
|
28
|
+
gsub_file model_file, /\:registerable([.]*,)?/, ""
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def set_namespace_for_path
|
33
|
+
routes_file = File.join(destination_root, "config", "routes.rb")
|
34
|
+
gsub_file routes_file, /devise_for :#{table_name}/, "devise_for :#{table_name}, ActiveAdmin::Devise.config"
|
35
|
+
end
|
36
|
+
|
37
|
+
def add_default_user_to_migration
|
38
|
+
inject_into_file Dir["db/migrate/*_devise_create_#{table_name}.rb"].first,
|
39
|
+
"# Create a default user\n #{class_name}.create!(:email => 'admin@example.com', :password => 'password', :password_confirmation => 'password')\n\n ",
|
40
|
+
:before => "add_index :#{table_name}, :email"
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|