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.

Files changed (255) hide show
  1. data/CHANGELOG.rdoc +15 -1
  2. data/Gemfile +41 -11
  3. data/LICENSE +5 -0
  4. data/README.rdoc +202 -87
  5. data/Rakefile +51 -15
  6. data/activeadmin.gemspec +310 -131
  7. data/cucumber.yml +1 -0
  8. data/features/comments/commenting.feature +81 -0
  9. data/features/comments/viewing_index.feature +19 -0
  10. data/features/edit_page.feature +77 -0
  11. data/features/first_boot.feature +16 -0
  12. data/features/global_navigation.feature +30 -0
  13. data/features/index/formats.feature +10 -0
  14. data/features/index/index_as_block.feature +15 -0
  15. data/features/index/index_as_blog.feature +50 -0
  16. data/features/index/index_as_grid.feature +45 -0
  17. data/features/index/index_as_table.feature +79 -0
  18. data/features/index/index_scopes.feature +52 -0
  19. data/features/index/pagination.feature +23 -0
  20. data/features/new_page.feature +75 -0
  21. data/features/registering_assets.feature +35 -0
  22. data/features/registering_resources.feature +33 -0
  23. data/features/show/default_content.feature +43 -0
  24. data/features/show/page_title.feature +33 -0
  25. data/features/sidebar_sections.feature +128 -0
  26. data/features/specifying_actions.feature +16 -0
  27. data/features/step_definitions/action_item_steps.rb +7 -0
  28. data/features/step_definitions/additional_web_steps.rb +67 -0
  29. data/features/step_definitions/asset_steps.rb +7 -0
  30. data/features/step_definitions/attribute_steps.rb +15 -0
  31. data/features/step_definitions/comment_steps.rb +8 -0
  32. data/features/step_definitions/configuration_steps.rb +31 -0
  33. data/features/step_definitions/factory_steps.rb +28 -0
  34. data/features/step_definitions/flash_steps.rb +3 -0
  35. data/features/step_definitions/format_steps.rb +7 -0
  36. data/features/step_definitions/index_scope_steps.rb +20 -0
  37. data/features/step_definitions/pagination_steps.rb +8 -0
  38. data/features/step_definitions/sidebar_steps.rb +11 -0
  39. data/features/step_definitions/tab_steps.rb +3 -0
  40. data/features/step_definitions/user_steps.rb +20 -0
  41. data/features/step_definitions/web_steps.rb +219 -0
  42. data/features/support/env.rb +88 -0
  43. data/features/support/paths.rb +48 -0
  44. data/features/users/logging_in.feature +34 -0
  45. data/features/users/logging_out.feature +13 -0
  46. data/lib/active_admin.rb +155 -79
  47. data/lib/active_admin/abstract_view_factory.rb +95 -0
  48. data/lib/active_admin/action_items.rb +4 -15
  49. data/lib/active_admin/arbre.rb +23 -0
  50. data/lib/active_admin/arbre/attributes.rb +20 -0
  51. data/lib/active_admin/arbre/class_list.rb +28 -0
  52. data/lib/active_admin/arbre/collection.rb +27 -0
  53. data/lib/active_admin/arbre/context.rb +8 -0
  54. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  55. data/lib/active_admin/arbre/document.rb +42 -0
  56. data/lib/active_admin/arbre/element.rb +151 -0
  57. data/lib/active_admin/arbre/html.rb +84 -0
  58. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  59. data/lib/active_admin/arbre/tag.rb +129 -0
  60. data/lib/active_admin/arbre/text_node.rb +35 -0
  61. data/lib/active_admin/callbacks.rb +87 -0
  62. data/lib/active_admin/comments.rb +73 -0
  63. data/lib/active_admin/comments/comment.rb +15 -0
  64. data/lib/active_admin/comments/configuration.rb +16 -0
  65. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  66. data/lib/active_admin/comments/resource_helper.rb +17 -0
  67. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  68. data/lib/active_admin/comments/views.rb +3 -0
  69. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  70. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  71. data/lib/active_admin/component.rb +22 -0
  72. data/lib/active_admin/controller_action.rb +12 -0
  73. data/lib/active_admin/dashboards.rb +0 -2
  74. data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
  75. data/lib/active_admin/dashboards/section.rb +5 -14
  76. data/lib/active_admin/devise.rb +43 -0
  77. data/lib/active_admin/dsl.rb +202 -0
  78. data/lib/active_admin/event.rb +31 -0
  79. data/lib/active_admin/form_builder.rb +68 -50
  80. data/lib/active_admin/iconic.rb +51 -0
  81. data/lib/active_admin/iconic/icons.rb +142 -0
  82. data/lib/active_admin/namespace.rb +102 -16
  83. data/lib/active_admin/renderer.rb +18 -3
  84. data/lib/active_admin/resource.rb +110 -9
  85. data/lib/active_admin/resource/belongs_to.rb +31 -0
  86. data/lib/active_admin/resource_controller.rb +45 -260
  87. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  88. data/lib/active_admin/resource_controller/actions.rb +53 -0
  89. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  90. data/lib/active_admin/resource_controller/collection.rb +142 -0
  91. data/lib/active_admin/resource_controller/filters.rb +58 -0
  92. data/lib/active_admin/resource_controller/form.rb +42 -0
  93. data/lib/active_admin/resource_controller/menu.rb +29 -0
  94. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  95. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  96. data/lib/active_admin/resource_controller/sidebars.rb +38 -0
  97. data/lib/active_admin/scope.rb +17 -0
  98. data/lib/active_admin/sidebar.rb +8 -47
  99. data/lib/active_admin/stylesheets/active_admin.scss +418 -0
  100. data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
  101. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
  102. data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
  103. data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
  104. data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
  105. data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
  106. data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
  107. data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
  108. data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
  109. data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
  110. data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
  111. data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
  112. data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
  113. data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
  114. data/lib/active_admin/version.rb +1 -1
  115. data/lib/active_admin/view_factory.rb +21 -0
  116. data/lib/active_admin/view_helpers.rb +17 -100
  117. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  118. data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
  119. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  120. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  121. data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
  122. data/lib/active_admin/view_helpers/form_helper.rb +12 -0
  123. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  124. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  125. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  126. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  127. data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
  128. data/lib/active_admin/view_helpers/table_helper.rb +12 -0
  129. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  130. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  131. data/lib/active_admin/views.rb +8 -0
  132. data/lib/active_admin/views/action_items.rb +17 -0
  133. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  134. data/lib/active_admin/views/components/columns.rb +49 -0
  135. data/lib/active_admin/views/components/paginated_collection.rb +74 -0
  136. data/lib/active_admin/views/components/panel.rb +26 -0
  137. data/lib/active_admin/views/components/scopes.rb +64 -0
  138. data/lib/active_admin/views/components/sidebar_section.rb +30 -0
  139. data/lib/active_admin/views/components/table_for.rb +174 -0
  140. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  141. data/lib/active_admin/views/header_renderer.rb +37 -0
  142. data/lib/active_admin/views/index_as_block.rb +24 -0
  143. data/lib/active_admin/views/index_as_blog.rb +89 -0
  144. data/lib/active_admin/views/index_as_grid.rb +49 -0
  145. data/lib/active_admin/views/index_as_table.rb +73 -0
  146. data/lib/active_admin/views/pages/base.rb +138 -0
  147. data/lib/active_admin/views/pages/dashboard.rb +61 -0
  148. data/lib/active_admin/views/pages/edit.rb +27 -0
  149. data/lib/active_admin/views/pages/index.rb +64 -0
  150. data/lib/active_admin/views/pages/new.rb +27 -0
  151. data/lib/active_admin/views/pages/show.rb +56 -0
  152. data/lib/active_admin/views/tabs_renderer.rb +52 -0
  153. data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  154. data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  155. data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
  156. data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
  157. data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
  158. data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
  159. data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
  160. data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
  161. data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
  162. data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
  163. data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
  164. data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
  165. data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
  166. data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
  167. data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
  168. data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
  169. data/lib/generators/active_admin/install/install_generator.rb +18 -3
  170. data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
  171. data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
  172. data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
  173. data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
  174. data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
  175. data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
  176. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
  177. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
  178. data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
  179. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  180. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  181. data/spec/integration/belongs_to_spec.rb +42 -0
  182. data/spec/integration/index_as_table_spec.rb +0 -119
  183. data/spec/integration/layout_spec.rb +3 -37
  184. data/spec/spec_helper.rb +89 -50
  185. data/spec/support/integration_example_group.rb +37 -0
  186. data/spec/support/rails_template.rb +21 -9
  187. data/spec/support/rails_template_with_data.rb +32 -0
  188. data/spec/support/templates/cucumber.rb +28 -0
  189. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  190. data/spec/unit/action_builder_spec.rb +19 -7
  191. data/spec/unit/action_items_spec.rb +16 -30
  192. data/spec/unit/active_admin_spec.rb +10 -22
  193. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  194. data/spec/unit/arbre/html/element_spec.rb +224 -0
  195. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  196. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  197. data/spec/unit/arbre/html_spec.rb +185 -0
  198. data/spec/unit/auto_link_spec.rb +38 -0
  199. data/spec/unit/belongs_to_spec.rb +44 -0
  200. data/spec/unit/breadcrumbs_spec.rb +110 -0
  201. data/spec/unit/comments_spec.rb +53 -0
  202. data/spec/unit/component_spec.rb +18 -0
  203. data/spec/unit/components/attributes_table_spec.rb +100 -0
  204. data/spec/unit/components/columns_spec.rb +75 -0
  205. data/spec/unit/components/panel_spec.rb +31 -0
  206. data/spec/unit/components/sidebar_section_spec.rb +37 -0
  207. data/spec/unit/components/table_for_spec.rb +130 -0
  208. data/spec/unit/dashboard_controller_spec.rb +26 -0
  209. data/spec/unit/dashboard_section_spec.rb +10 -17
  210. data/spec/unit/display_name_spec.rb +29 -0
  211. data/spec/unit/event_spec.rb +41 -0
  212. data/spec/unit/filter_form_builder_spec.rb +99 -77
  213. data/spec/unit/form_builder_spec.rb +69 -69
  214. data/spec/unit/namespace_spec.rb +61 -3
  215. data/spec/unit/pretty_format_spec.rb +35 -0
  216. data/spec/unit/registration_spec.rb +40 -1
  217. data/spec/unit/renderer_spec.rb +8 -0
  218. data/spec/unit/resource_controller_spec.rb +105 -6
  219. data/spec/unit/resource_spec.rb +78 -11
  220. data/spec/unit/routing_spec.rb +82 -6
  221. data/spec/unit/scope_spec.rb +31 -0
  222. data/spec/unit/tabs_renderer_spec.rb +24 -2
  223. data/spec/unit/view_factory_spec.rb +16 -0
  224. metadata +268 -82
  225. data/.gitignore +0 -25
  226. data/active_admin.gemspec +0 -22
  227. data/lib/active_admin/action_builder.rb +0 -60
  228. data/lib/active_admin/breadcrumbs.rb +0 -26
  229. data/lib/active_admin/dashboards/renderer.rb +0 -45
  230. data/lib/active_admin/dashboards/section_renderer.rb +0 -28
  231. data/lib/active_admin/filters.rb +0 -189
  232. data/lib/active_admin/pages.rb +0 -11
  233. data/lib/active_admin/pages/base.rb +0 -92
  234. data/lib/active_admin/pages/edit.rb +0 -21
  235. data/lib/active_admin/pages/index.rb +0 -58
  236. data/lib/active_admin/pages/index/blog.rb +0 -65
  237. data/lib/active_admin/pages/index/table.rb +0 -48
  238. data/lib/active_admin/pages/index/thumbnails.rb +0 -40
  239. data/lib/active_admin/pages/new.rb +0 -21
  240. data/lib/active_admin/pages/show.rb +0 -54
  241. data/lib/active_admin/table_builder.rb +0 -162
  242. data/lib/active_admin/tabs_renderer.rb +0 -39
  243. data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
  244. data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
  245. data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
  246. data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
  247. data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
  248. data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
  249. data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
  250. data/spec/integration/index_as_blog_spec.rb +0 -65
  251. data/spec/integration/index_as_thumbnails_spec.rb +0 -43
  252. data/spec/integration/new_view_spec.rb +0 -52
  253. data/spec/integration/show_view_spec.rb +0 -91
  254. data/spec/unit/sidebar_spec.rb +0 -96
  255. 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)
@@ -0,0 +1 @@
1
+ render renderer_for(:index)
@@ -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
- <h1 id="site_title"><%= ActiveAdmin.site_title %></h1>
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
- <%= yield :flash_messages %>
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