nsm-activeadmin 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +34 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.rdoc +76 -0
  6. data/Gemfile +39 -0
  7. data/LICENSE +25 -0
  8. data/README.rdoc +487 -0
  9. data/Rakefile +27 -0
  10. data/activeadmin.gemspec +28 -0
  11. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/loading.gif +0 -0
  18. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  20. data/app/assets/images/active_admin/orderable.png +0 -0
  21. data/app/assets/javascripts/active_admin/base.js +12 -0
  22. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  23. data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
  24. data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
  25. data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
  26. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  27. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  28. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -0
  29. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  30. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  31. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  40. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  41. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  42. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  43. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  44. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  45. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  46. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  47. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  48. data/app/views/active_admin/resource/edit.html.arb +1 -0
  49. data/app/views/active_admin/resource/index.csv.erb +20 -0
  50. data/app/views/active_admin/resource/index.html.arb +1 -0
  51. data/app/views/active_admin/resource/new.html.arb +1 -0
  52. data/app/views/active_admin/resource/show.html.arb +1 -0
  53. data/app/views/layouts/active_admin.html.arb +1 -0
  54. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  55. data/cucumber.yml +2 -0
  56. data/docs/1-general-configuration.md +52 -0
  57. data/docs/2-resource-customization.md +35 -0
  58. data/docs/3-index-pages.md +55 -0
  59. data/docs/3-index-pages/index-as-block.md +16 -0
  60. data/docs/3-index-pages/index-as-blog.md +61 -0
  61. data/docs/3-index-pages/index-as-grid.md +21 -0
  62. data/docs/3-index-pages/index-as-table.md +74 -0
  63. data/docs/4-csv-format.md +14 -0
  64. data/docs/5-forms.md +39 -0
  65. data/docs/6-show-screens.md +22 -0
  66. data/docs/7-sidebars.md +35 -0
  67. data/docs/8-custom-actions.md +123 -0
  68. data/features/comments/commenting.feature +112 -0
  69. data/features/comments/viewing_index.feature +19 -0
  70. data/features/dashboard.feature +26 -0
  71. data/features/edit_page.feature +106 -0
  72. data/features/first_boot.feature +16 -0
  73. data/features/global_navigation.feature +30 -0
  74. data/features/index/format_as_csv.feature +46 -0
  75. data/features/index/formats.feature +12 -0
  76. data/features/index/index_as_block.feature +15 -0
  77. data/features/index/index_as_blog.feature +50 -0
  78. data/features/index/index_as_grid.feature +45 -0
  79. data/features/index/index_as_table.feature +81 -0
  80. data/features/index/index_blank_slate.feature +55 -0
  81. data/features/index/index_scopes.feature +52 -0
  82. data/features/index/pagination.feature +17 -0
  83. data/features/menu.feature +26 -0
  84. data/features/new_page.feature +75 -0
  85. data/features/registering_assets.feature +35 -0
  86. data/features/registering_resources.feature +33 -0
  87. data/features/show/default_content.feature +43 -0
  88. data/features/show/page_title.feature +33 -0
  89. data/features/sidebar_sections.feature +127 -0
  90. data/features/specifying_actions.feature +87 -0
  91. data/features/step_definitions/action_item_steps.rb +7 -0
  92. data/features/step_definitions/additional_web_steps.rb +77 -0
  93. data/features/step_definitions/asset_steps.rb +7 -0
  94. data/features/step_definitions/attribute_steps.rb +13 -0
  95. data/features/step_definitions/comment_steps.rb +8 -0
  96. data/features/step_definitions/configuration_steps.rb +31 -0
  97. data/features/step_definitions/dashboard_steps.rb +11 -0
  98. data/features/step_definitions/factory_steps.rb +29 -0
  99. data/features/step_definitions/flash_steps.rb +3 -0
  100. data/features/step_definitions/format_steps.rb +35 -0
  101. data/features/step_definitions/index_scope_steps.rb +20 -0
  102. data/features/step_definitions/layout_steps.rb +3 -0
  103. data/features/step_definitions/menu_steps.rb +7 -0
  104. data/features/step_definitions/pagination_steps.rb +8 -0
  105. data/features/step_definitions/sidebar_steps.rb +7 -0
  106. data/features/step_definitions/tab_steps.rb +3 -0
  107. data/features/step_definitions/user_steps.rb +26 -0
  108. data/features/step_definitions/web_steps.rb +211 -0
  109. data/features/sti_resource.feature +61 -0
  110. data/features/support/env.rb +90 -0
  111. data/features/support/paths.rb +50 -0
  112. data/features/support/selectors.rb +45 -0
  113. data/features/users/logging_in.feature +34 -0
  114. data/features/users/logging_out.feature +13 -0
  115. data/lib/active_admin.rb +74 -0
  116. data/lib/active_admin/abstract_view_factory.rb +95 -0
  117. data/lib/active_admin/application.rb +228 -0
  118. data/lib/active_admin/arbre.rb +23 -0
  119. data/lib/active_admin/arbre/attributes.rb +20 -0
  120. data/lib/active_admin/arbre/class_list.rb +28 -0
  121. data/lib/active_admin/arbre/collection.rb +27 -0
  122. data/lib/active_admin/arbre/context.rb +14 -0
  123. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  124. data/lib/active_admin/arbre/document.rb +42 -0
  125. data/lib/active_admin/arbre/element.rb +151 -0
  126. data/lib/active_admin/arbre/html.rb +84 -0
  127. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  128. data/lib/active_admin/arbre/tag.rb +137 -0
  129. data/lib/active_admin/arbre/text_node.rb +35 -0
  130. data/lib/active_admin/asset_registration.rb +34 -0
  131. data/lib/active_admin/callbacks.rb +89 -0
  132. data/lib/active_admin/comments.rb +88 -0
  133. data/lib/active_admin/comments/comment.rb +21 -0
  134. data/lib/active_admin/comments/configuration.rb +18 -0
  135. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  136. data/lib/active_admin/comments/resource_helper.rb +17 -0
  137. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  138. data/lib/active_admin/comments/views.rb +3 -0
  139. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  140. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  141. data/lib/active_admin/component.rb +22 -0
  142. data/lib/active_admin/controller_action.rb +12 -0
  143. data/lib/active_admin/csv_builder.rb +45 -0
  144. data/lib/active_admin/dashboards.rb +48 -0
  145. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  146. data/lib/active_admin/dashboards/section.rb +34 -0
  147. data/lib/active_admin/deprecation.rb +36 -0
  148. data/lib/active_admin/devise.rb +43 -0
  149. data/lib/active_admin/dsl.rb +224 -0
  150. data/lib/active_admin/engine.rb +4 -0
  151. data/lib/active_admin/event.rb +31 -0
  152. data/lib/active_admin/form_builder.rb +109 -0
  153. data/lib/active_admin/helpers/optional_display.rb +34 -0
  154. data/lib/active_admin/helpers/settings.rb +63 -0
  155. data/lib/active_admin/iconic.rb +51 -0
  156. data/lib/active_admin/iconic/icons.rb +142 -0
  157. data/lib/active_admin/locales/da.yml +28 -0
  158. data/lib/active_admin/locales/en.yml +40 -0
  159. data/lib/active_admin/locales/es.yml +39 -0
  160. data/lib/active_admin/locales/it.yml +39 -0
  161. data/lib/active_admin/locales/pt-BR.yml +36 -0
  162. data/lib/active_admin/locales/ru.yml +40 -0
  163. data/lib/active_admin/locales/zh_cn.yml +40 -0
  164. data/lib/active_admin/menu.rb +42 -0
  165. data/lib/active_admin/menu_item.rb +73 -0
  166. data/lib/active_admin/namespace.rb +206 -0
  167. data/lib/active_admin/page_config.rb +15 -0
  168. data/lib/active_admin/reloader.rb +30 -0
  169. data/lib/active_admin/renderer.rb +87 -0
  170. data/lib/active_admin/resource.rb +151 -0
  171. data/lib/active_admin/resource/action_items.rb +88 -0
  172. data/lib/active_admin/resource/belongs_to.rb +31 -0
  173. data/lib/active_admin/resource/menu.rb +45 -0
  174. data/lib/active_admin/resource/naming.rb +36 -0
  175. data/lib/active_admin/resource/scopes.rb +33 -0
  176. data/lib/active_admin/resource/sidebars.rb +36 -0
  177. data/lib/active_admin/resource_controller.rb +103 -0
  178. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  179. data/lib/active_admin/resource_controller/actions.rb +79 -0
  180. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  181. data/lib/active_admin/resource_controller/collection.rb +144 -0
  182. data/lib/active_admin/resource_controller/filters.rb +58 -0
  183. data/lib/active_admin/resource_controller/form.rb +42 -0
  184. data/lib/active_admin/resource_controller/menu.rb +29 -0
  185. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  186. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  187. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  188. data/lib/active_admin/router.rb +85 -0
  189. data/lib/active_admin/sass/active_admin.scss +3 -0
  190. data/lib/active_admin/sass/css_loader.rb +16 -0
  191. data/lib/active_admin/sass/helpers.rb +40 -0
  192. data/lib/active_admin/scope.rb +17 -0
  193. data/lib/active_admin/sidebar_section.rb +41 -0
  194. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  195. data/lib/active_admin/version.rb +3 -0
  196. data/lib/active_admin/view_factory.rb +23 -0
  197. data/lib/active_admin/view_helpers.rb +22 -0
  198. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  199. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  200. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  201. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  202. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  203. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  204. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  205. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  206. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  207. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  208. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  209. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  210. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  211. data/lib/active_admin/views.rb +8 -0
  212. data/lib/active_admin/views/action_items.rb +17 -0
  213. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  214. data/lib/active_admin/views/components/blank_slate.rb +33 -0
  215. data/lib/active_admin/views/components/columns.rb +47 -0
  216. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  217. data/lib/active_admin/views/components/panel.rb +26 -0
  218. data/lib/active_admin/views/components/scopes.rb +70 -0
  219. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  220. data/lib/active_admin/views/components/status_tag.rb +55 -0
  221. data/lib/active_admin/views/components/table_for.rb +193 -0
  222. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  223. data/lib/active_admin/views/header_renderer.rb +53 -0
  224. data/lib/active_admin/views/index_as_block.rb +29 -0
  225. data/lib/active_admin/views/index_as_blog.rb +129 -0
  226. data/lib/active_admin/views/index_as_grid.rb +70 -0
  227. data/lib/active_admin/views/index_as_table.rb +148 -0
  228. data/lib/active_admin/views/pages/base.rb +155 -0
  229. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  230. data/lib/active_admin/views/pages/edit.rb +28 -0
  231. data/lib/active_admin/views/pages/index.rb +74 -0
  232. data/lib/active_admin/views/pages/layout.rb +26 -0
  233. data/lib/active_admin/views/pages/new.rb +28 -0
  234. data/lib/active_admin/views/pages/show.rb +56 -0
  235. data/lib/active_admin/views/tabs_renderer.rb +58 -0
  236. data/lib/activeadmin.rb +1 -0
  237. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  238. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  239. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  240. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  241. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  242. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  243. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  244. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
  245. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  246. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  247. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  248. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  249. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  250. data/script/local +44 -0
  251. data/script/use_rails +45 -0
  252. data/spec/integration/belongs_to_spec.rb +42 -0
  253. data/spec/integration/default_namespace.rb +77 -0
  254. data/spec/integration/javascript_spec.rb +20 -0
  255. data/spec/integration/stylesheets_spec.rb +41 -0
  256. data/spec/spec_helper.rb +157 -0
  257. data/spec/support/detect_rails_version.rb +11 -0
  258. data/spec/support/integration_example_group.rb +33 -0
  259. data/spec/support/jslint.yml +80 -0
  260. data/spec/support/rails_template.rb +32 -0
  261. data/spec/support/rails_template_with_data.rb +33 -0
  262. data/spec/support/templates/cucumber.rb +24 -0
  263. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  264. data/spec/unit/action_builder_spec.rb +88 -0
  265. data/spec/unit/application_spec.rb +78 -0
  266. data/spec/unit/arbre/html/context_spec.rb +22 -0
  267. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  268. data/spec/unit/arbre/html/element_spec.rb +224 -0
  269. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  270. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  271. data/spec/unit/arbre/html_spec.rb +210 -0
  272. data/spec/unit/asset_registration_spec.rb +37 -0
  273. data/spec/unit/auto_link_spec.rb +39 -0
  274. data/spec/unit/belongs_to_spec.rb +45 -0
  275. data/spec/unit/breadcrumbs_spec.rb +110 -0
  276. data/spec/unit/comments_spec.rb +57 -0
  277. data/spec/unit/component_spec.rb +18 -0
  278. data/spec/unit/controller_filters_spec.rb +34 -0
  279. data/spec/unit/csv_builder_spec.rb +83 -0
  280. data/spec/unit/dashboard_controller_spec.rb +26 -0
  281. data/spec/unit/dashboard_section_spec.rb +56 -0
  282. data/spec/unit/dashboards_spec.rb +59 -0
  283. data/spec/unit/display_name_spec.rb +29 -0
  284. data/spec/unit/event_spec.rb +41 -0
  285. data/spec/unit/filter_form_builder_spec.rb +182 -0
  286. data/spec/unit/form_builder_spec.rb +239 -0
  287. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  288. data/spec/unit/helpers/settings_spec.rb +30 -0
  289. data/spec/unit/menu_item_spec.rb +143 -0
  290. data/spec/unit/menu_spec.rb +53 -0
  291. data/spec/unit/namespace_spec.rb +214 -0
  292. data/spec/unit/pretty_format_spec.rb +35 -0
  293. data/spec/unit/rails_spec.rb +43 -0
  294. data/spec/unit/registration_spec.rb +76 -0
  295. data/spec/unit/reloader_spec.rb +28 -0
  296. data/spec/unit/renderer_spec.rb +108 -0
  297. data/spec/unit/resource/action_items_spec.rb +62 -0
  298. data/spec/unit/resource/menu_spec.rb +80 -0
  299. data/spec/unit/resource/naming_spec.rb +56 -0
  300. data/spec/unit/resource/scopes_spec.rb +30 -0
  301. data/spec/unit/resource/sidebars_spec.rb +50 -0
  302. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  303. data/spec/unit/resource_controller_spec.rb +152 -0
  304. data/spec/unit/resource_spec.rb +260 -0
  305. data/spec/unit/routing_spec.rb +88 -0
  306. data/spec/unit/sass/helpers_spec.rb +47 -0
  307. data/spec/unit/scope_spec.rb +31 -0
  308. data/spec/unit/tabs_renderer_spec.rb +85 -0
  309. data/spec/unit/view_factory_spec.rb +19 -0
  310. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  311. data/spec/unit/views/components/blank_slate_spec.rb +31 -0
  312. data/spec/unit/views/components/columns_spec.rb +75 -0
  313. data/spec/unit/views/components/panel_spec.rb +31 -0
  314. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  315. data/spec/unit/views/components/status_tag_spec.rb +81 -0
  316. data/spec/unit/views/components/table_for_spec.rb +130 -0
  317. data/spec/unit/views/pages/layout_spec.rb +22 -0
  318. data/tasks/docs.rake +39 -0
  319. data/tasks/test.rake +49 -0
  320. data/tasks/yard.rake +6 -0
  321. metadata +510 -0
@@ -0,0 +1,6 @@
1
+ // Active Admin CSS Styles
2
+ @import "active_admin/mixins";
3
+ @import "active_admin/base";
4
+
5
+ // To customize the Active Admin interfaces, add your
6
+ // styles here:
@@ -0,0 +1 @@
1
+ //= require active_admin/base
@@ -0,0 +1,36 @@
1
+ ActiveAdmin::Dashboards.build do
2
+
3
+ # Define your dashboard sections here. Each block will be
4
+ # rendered on the dashboard in the context of the view. So just
5
+ # return the content which you would like to display.
6
+
7
+ # == Simple Dashboard Section
8
+ # Here is an example of a simple dashboard section
9
+ #
10
+ # section "Recent Posts" do
11
+ # ul do
12
+ # Post.recent(5).collect do |post|
13
+ # li link_to(post.title, admin_post_path(post))
14
+ # end
15
+ # end
16
+ # end
17
+
18
+ # == Render Partial Section
19
+ # The block is rendererd within the context of the view, so you can
20
+ # easily render a partial rather than build content in ruby.
21
+ #
22
+ # section "Recent Posts" do
23
+ # render 'recent_posts' # => this will render /app/views/admin/dashboard/_recent_posts.html.erb
24
+ # end
25
+
26
+ # == Section Ordering
27
+ # The dashboard sections are ordered by a given priority from top left to
28
+ # bottom right. The default priority is 10. By giving a section numerically lower
29
+ # priority it will be sorted higher. For example:
30
+ #
31
+ # section "Recent Posts", :priority => 10
32
+ # section "Recent User", :priority => 1
33
+ #
34
+ # Will render the "Recent Users" then the "Recent Posts" sections on the dashboard.
35
+
36
+ end
@@ -0,0 +1,49 @@
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
+ # Don't assume that we have a migration!
39
+ devise_migrations = Dir["db/migrate/*_devise_create_#{table_name}.rb"]
40
+ if devise_migrations.size > 0
41
+ inject_into_file Dir["db/migrate/*_devise_create_#{table_name}.rb"].first,
42
+ "# Create a default user\n #{class_name}.create!(:email => 'admin@example.com', :password => 'password', :password_confirmation => 'password')\n\n ",
43
+ :before => "add_index :#{table_name}, :email"
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,44 @@
1
+ module ActiveAdmin
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ desc "Installs Active Admin and generats the necessary migrations"
5
+
6
+ hook_for :users, :default => "devise", :desc => "Admin user generator to run. Skip with --skip-users"
7
+
8
+ include Rails::Generators::Migration
9
+
10
+ def self.source_root
11
+ @_active_admin_source_root ||= File.expand_path("../templates", __FILE__)
12
+ end
13
+
14
+ def self.next_migration_number(dirname)
15
+ Time.now.strftime("%Y%m%d%H%M%S")
16
+ end
17
+
18
+ def copy_initializer
19
+ template 'active_admin.rb.erb', 'config/initializers/active_admin.rb'
20
+ end
21
+
22
+ def setup_directory
23
+ empty_directory "app/admin"
24
+ template 'dashboards.rb', 'app/admin/dashboards.rb'
25
+ end
26
+
27
+ def setup_routes
28
+ route "ActiveAdmin.routes(self)"
29
+ end
30
+
31
+ def create_assets
32
+ generate "active_admin:assets"
33
+ end
34
+
35
+ def create_migrations
36
+ Dir["#{self.class.source_root}/migrations/*.rb"].sort.each do |filepath|
37
+ name = File.basename(filepath)
38
+ migration_template "migrations/#{name}", "db/migrate/#{name.gsub(/^\d+_/,'')}"
39
+ sleep 1
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,93 @@
1
+ ActiveAdmin.setup do |config|
2
+
3
+ # == Site Title
4
+ #
5
+ # Set the title that is displayed on the main layout
6
+ # for each of the active admin pages.
7
+ #
8
+ config.site_title = "<%= Rails.application.class.name.split("::").first.titlecase %>"
9
+
10
+
11
+ # == Default Namespace
12
+ #
13
+ # Set the default namespace each administration resource
14
+ # will be added to.
15
+ #
16
+ # eg:
17
+ # config.default_namespace = :hello_world
18
+ #
19
+ # This will create resources in the HelloWorld module and
20
+ # will namespace routes to /hello_world/*
21
+ #
22
+ # To set no namespace by default, use:
23
+ # config.default_namespace = false
24
+ config.default_namespace = :admin
25
+
26
+
27
+ # == User Authentication
28
+ #
29
+ # Active Admin will automatically call an authentication
30
+ # method in a before filter of all controller actions to
31
+ # ensure that there is a currently logged in admin user.
32
+ #
33
+ # This setting changes the method which Active Admin calls
34
+ # within the controller.
35
+ config.authentication_method = :authenticate_admin_user!
36
+
37
+
38
+ # == Current User
39
+ #
40
+ # Active Admin will associate actions with the current
41
+ # user performing them.
42
+ #
43
+ # This setting changes the method which Active Admin calls
44
+ # to return the currently logged in user.
45
+ config.current_user_method = :current_admin_user
46
+
47
+
48
+ # == Logging Out
49
+ #
50
+ # Active Admin displays a logout link on each screen. These
51
+ # settings configure the location and method used for the link.
52
+ #
53
+ # This setting changes the path where the link points to. If it's
54
+ # a string, the strings is used as the path. If it's a Symbol, we
55
+ # will call the method to return the path.
56
+ config.logout_link_path = :destroy_admin_user_session_path
57
+
58
+ # This setting changes the http method used when rendering the
59
+ # link. For example :get, :delete, :put, etc..
60
+ config.logout_link_method = :delete
61
+
62
+
63
+ # == Admin Comments
64
+ #
65
+ # Admin comments allow you to add comments to any model for admin use
66
+ #
67
+ # Admin comments are enabled by default in the default
68
+ # namespace only. You can turn them on in a namesapce
69
+ # by adding them to the comments array.
70
+ #
71
+ # config.allow_comments_in = [:admin]
72
+
73
+
74
+ # == Controller Filters
75
+ #
76
+ # You can add before, after and around filters to all of your
77
+ # Active Admin resources from here.
78
+ #
79
+ # config.before_filter :do_something_awesome
80
+
81
+
82
+ # == Register Stylesheets & Javascripts
83
+ #
84
+ # We recommend using the built in Active Admin layout and loading
85
+ # up your own stylesheets / javascripts to customize the look
86
+ # and feel.
87
+ #
88
+ # To load a stylesheet:
89
+ # config.register_stylesheet 'my_stylesheet.css'
90
+ #
91
+ # To load a javascript file:
92
+ # config.register_javascript 'my_javascript.js'
93
+ end
@@ -0,0 +1,38 @@
1
+ ActiveAdmin::Dashboards.build do
2
+
3
+ # Define your dashboard sections here. Each block will be
4
+ # rendered on the dashboard in the context of the view. So just
5
+ # return the content which you would like to display.
6
+
7
+ # == Simple Dashboard Section
8
+ # Here is an example of a simple dashboard section
9
+ #
10
+ # section "Recent Posts" do
11
+ # ul do
12
+ # Post.recent(5).collect do |post|
13
+ # li link_to(post.title, admin_post_path(post))
14
+ # end
15
+ # end
16
+ # end
17
+
18
+ # == Render Partial Section
19
+ # The block is rendered within the context of the view, so you can
20
+ # easily render a partial rather than build content in ruby.
21
+ #
22
+ # section "Recent Posts" do
23
+ # div do
24
+ # render 'recent_posts' # => this will render /app/views/admin/dashboard/_recent_posts.html.erb
25
+ # end
26
+ # end
27
+
28
+ # == Section Ordering
29
+ # The dashboard sections are ordered by a given priority from top left to
30
+ # bottom right. The default priority is 10. By giving a section numerically lower
31
+ # priority it will be sorted higher. For example:
32
+ #
33
+ # section "Recent Posts", :priority => 10
34
+ # section "Recent User", :priority => 1
35
+ #
36
+ # Will render the "Recent Users" then the "Recent Posts" sections on the dashboard.
37
+
38
+ end
@@ -0,0 +1,16 @@
1
+ class CreateAdminNotes < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :admin_notes do |t|
4
+ t.references :resource, :polymorphic => true, :null => false
5
+ t.references :admin_user, :polymorphic => true
6
+ t.text :body
7
+ t.timestamps
8
+ end
9
+ add_index :admin_notes, [:resource_type, :resource_id]
10
+ add_index :admin_notes, [:admin_user_type, :admin_user_id]
11
+ end
12
+
13
+ def self.down
14
+ drop_table :admin_notes
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ class MoveAdminNotesToComments < ActiveRecord::Migration
2
+ def self.up
3
+ remove_index :admin_notes, [:admin_user_type, :admin_user_id]
4
+ rename_table :admin_notes, :active_admin_comments
5
+ rename_column :active_admin_comments, :admin_user_type, :author_type
6
+ rename_column :active_admin_comments, :admin_user_id, :author_id
7
+ add_column :active_admin_comments, :namespace, :string
8
+ add_index :active_admin_comments, [:namespace]
9
+ add_index :active_admin_comments, [:author_type, :author_id]
10
+
11
+ # Update all the existing comments to the default namespace
12
+ say "Updating any existing comments to the #{ActiveAdmin.application.default_namespace} namespace."
13
+ execute "UPDATE active_admin_comments SET namespace='#{ActiveAdmin.application.default_namespace}'"
14
+ end
15
+
16
+ def self.down
17
+ remove_index :active_admin_comments, :column => [:author_type, :author_id]
18
+ remove_index :active_admin_comments, :column => [:namespace]
19
+ remove_column :active_admin_comments, :namespace
20
+ rename_column :active_admin_comments, :author_id, :admin_user_id
21
+ rename_column :active_admin_comments, :author_type, :admin_user_type
22
+ rename_table :active_admin_comments, :admin_notes
23
+ add_index :admin_notes, [:admin_user_type, :admin_user_id]
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ module ActiveAdmin
2
+ module Generators
3
+ class ResourceGenerator < Rails::Generators::NamedBase
4
+ desc "Installs ActiveAdmin in a rails 3 application"
5
+
6
+ def self.source_root
7
+ @_active_admin_source_root ||= File.expand_path("../templates", __FILE__)
8
+ end
9
+
10
+ def generate_config_file
11
+ template "admin.rb", "app/admin/#{file_path.gsub('/', '_').pluralize}.rb"
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ ActiveAdmin.register <%= class_name.singularize %> do
2
+
3
+ end
data/script/local ADDED
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.expand_path('../../spec/support/detect_rails_version', __FILE__)
4
+
5
+ unless ARGV[0]
6
+ puts <<-EOF
7
+ Usage: ./script/#{__FILE__} COMMAND [ARGS]
8
+
9
+ The command will be run in the context of the local rails
10
+ app stored in test-rails-app.
11
+
12
+ Examples:
13
+
14
+ ./script/local server
15
+ ./script/local c
16
+ ./script/local rake db:migrate
17
+ EOF
18
+ exit(1)
19
+ end
20
+
21
+ # Set up some variables
22
+ rails_version = detect_rails_version || '3.0.0'
23
+
24
+ test_app_dir = ".test-rails-apps"
25
+ test_app_path = "#{test_app_dir}/test-rails-app-#{rails_version}"
26
+
27
+ # Ensure .test-rails-apps is created
28
+ system "mkdir #{test_app_dir}" unless File.exists?(test_app_dir)
29
+
30
+ # Create the sample rails app if it doesn't already exist
31
+ unless File.exists? test_app_path
32
+ system "RAILS='#{rails_version}' bundle exec rails new #{test_app_path} -m spec/support/rails_template_with_data.rb"
33
+ end
34
+
35
+ # Link this rails app
36
+ system "rm test-rails-app"
37
+ system "ln -s #{test_app_path} test-rails-app"
38
+
39
+ # If it's a rails command, auto add the rails script
40
+ RAILS_COMMANDS = %w{generate console server dbconsole g c s runner}
41
+ args = RAILS_COMMANDS.include?(ARGV[0]) ? ["rails", ARGV].flatten : ARGV
42
+
43
+ # Run the command
44
+ exec "cd test-rails-app && GEMFILE=../Gemfile bundle exec #{args.join(" ")}"
data/script/use_rails ADDED
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Switches the development environment to use the given
4
+ # version of rails. Caches the Gemfile.locks so that
5
+ # switching it very fast.
6
+
7
+ def cmd(command)
8
+ puts command
9
+ system command
10
+ end
11
+
12
+ version = ARGV[0]
13
+
14
+ unless version
15
+ puts "USAGE: ./script/#{__FILE__} VERSION [OPTIONS]"
16
+ puts
17
+ puts "Options:"
18
+ puts " --clobber Add this flag to remove the existing Gemfile.lock before running"
19
+ exit(1)
20
+ end
21
+
22
+ def file_or_symlink?(path)
23
+ File.exist?(path) || File.symlink?(path)
24
+ end
25
+
26
+ gem_lock_dir = ".gemfile-locks"
27
+ gem_lock_file = "#{gem_lock_dir}/Gemfile-#{version}.lock"
28
+
29
+ # Ensure our lock dir is created
30
+ cmd "mkdir #{gem_lock_dir}" unless File.exists?(gem_lock_dir)
31
+
32
+ # --clobber passed in
33
+ if File.exists?(gem_lock_file) && ARGV.include?('--clobber')
34
+ cmd "rm #{gem_lock_file}"
35
+ end
36
+
37
+ unless File.exists?(gem_lock_file)
38
+ # Generate it
39
+ cmd "rm Gemfile.lock" if file_or_symlink?("Gemfile.lock")
40
+ cmd "export RAILS=#{version} && bundle install"
41
+ cmd "mv Gemfile.lock #{gem_lock_file}"
42
+ end
43
+
44
+ cmd("rm Gemfile.lock") if file_or_symlink?("Gemfile.lock")
45
+ cmd("ln -s #{gem_lock_file} Gemfile.lock")
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe_with_capybara "Belongs To" do
4
+
5
+ let(:user){ User.create(:first_name => "John", :last_name => "Doe", :username => "johndoe") }
6
+ let(:post){ user.posts.create :title => "Hello World", :body => "woot!"}
7
+
8
+ before do
9
+ # Make sure both are created
10
+ user
11
+ post
12
+ end
13
+
14
+ describe "the index page" do
15
+ before do
16
+ visit admin_user_posts_path(user)
17
+ end
18
+
19
+ describe "the main content" do
20
+ it "should display the default table" do
21
+ page.should have_content(post.title)
22
+ end
23
+ end
24
+
25
+ describe "the breadcrumb" do
26
+ it "should have a link to the parent's index" do
27
+ page.body.should have_tag("a", "Users", :attributes => { :href => "/admin/users" })
28
+ end
29
+ it "should have a link to the parent" do
30
+ page.body.should have_tag("a", user.id.to_s, :attributes => { :href => "/admin/users/#{user.id}" })
31
+ end
32
+ end
33
+
34
+ describe "the view links" do
35
+ it "should take you to the sub resource" do
36
+ click_link "View"
37
+ current_path.should == "/admin/users/#{user.id}/posts/#{post.id}"
38
+ end
39
+ end
40
+ end
41
+
42
+ end