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
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,34 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ tags
18
+ coverage
19
+ rdoc
20
+ doc
21
+ .yardoc
22
+ pkg
23
+
24
+ ## PROJECT::SPECIFIC
25
+ .bundle
26
+ spec/rails
27
+ *.sqlite3-journal
28
+ Gemfile.lock
29
+ Gemfile-*.lock
30
+ capybara*
31
+ viewcumber
32
+ test-rails*
33
+ public
34
+ .rvmrc
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ script: bundle exec rake
2
+ rvm:
3
+ - ree
4
+ - 1.9.2
data/.yardopts ADDED
@@ -0,0 +1,8 @@
1
+ lib/**/*.rb
2
+ --protected
3
+ --no-private
4
+ --asset docs/images:images
5
+ -
6
+ README.rdoc
7
+ CHANGELOG.rdoc
8
+ docs/**/*.md
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,76 @@
1
+ == 0.2.2 (2011-05-26)
2
+
3
+ 68 Commits by 13 Contributors
4
+
5
+ === Features & Enhancements
6
+
7
+ * Arbre includes self closing tags (#100)
8
+ * Controller class & action added to body as CSS classes (#99)
9
+ * HAML is not required by default (#92)
10
+ * Devise login now respects Devise.authentication_keys (#69)
11
+ * Active Admin no longer uses <tt>ActiveRecord::Base#search</tt> (#28)
12
+ * Resource's can now override the label in the menu (#48)
13
+ * Subdirectories are now loaded in the Active Admin load path
14
+
15
+ === Bug Fixes
16
+
17
+ * Sort order now includes table name (#38)
18
+ * Fixed table_for 'odd', 'even' row classes (#96)
19
+ * Fixed Devise installation if AdminUser already exists (#95)
20
+ * Fixed issues when ActiveAdmin.default_namespaces is false (#32)
21
+ * Added styles for missing HTML 5 inputs (#31)
22
+ * Fixed issue if adding empty Active Admin Comment (#21)
23
+ * Fixed layout issues in FF 4 (#22)
24
+ * Use Sass::Plugin.options[:css_location] instead of Rails.root (#55)
25
+
26
+ === Test Suite
27
+
28
+ * Update RSpec to latest & fix specs (Thanks Ben Marini & Jeremt Ruppel!) (#100)
29
+ * Added tests for STI models (#52)
30
+
31
+ === Contributors
32
+
33
+ * Ben Marini
34
+ * Bookis Smuin
35
+ * Caley Woods
36
+ * Doug Puchalski
37
+ * Federico Romero
38
+ * Greg Bell
39
+ * Ian MacLeod
40
+ * Jeremy Ruppel
41
+ * Jordan Sitkin
42
+ * Juha Suuraho
43
+ * Mathieu Martin
44
+ * Paul Annesley
45
+ * Philippe Creux
46
+
47
+ == 0.2.1 (2011-05-12)
48
+
49
+ === Bug Fixes
50
+ * Fixed issue with dashboard rendering a sidebar
51
+
52
+ == 0.2.0 (2011-05-12)
53
+
54
+ 0.2.0 is essentially an entire re-write of Active Admin. Here are some
55
+ of the highlights. 250 commits. Enough said.
56
+
57
+ === Features & Enhancements
58
+
59
+ * Full visual redesign
60
+ * Integrated Devise for authentication
61
+ * Brand new view and component layer called Arbre (Project coming soon)
62
+ * Added ActiveAdmin::Comments
63
+
64
+ === Bug Fixes
65
+
66
+ * Too many to list! Been in production for close to a year
67
+
68
+ == 0.1.1 (2010-09-15)
69
+
70
+ === Bug Fixes
71
+
72
+ * Fixed issues running on Ruby 1.9.2
73
+
74
+ == 0.1.0
75
+
76
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,39 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ require File.expand_path('../spec/support/detect_rails_version', __FILE__)
6
+
7
+ case detect_rails_version
8
+ when /3.0.(\d)*/
9
+ gem 'rails', "= 3.0.#{$1}"
10
+ gem "meta_search", '~> 1.0.0'
11
+ when /3.1.(.*)/
12
+ gem 'rails', "= 3.1.#{$1}"
13
+ gem "meta_search", '>= 1.1.0.pre'
14
+ gem "uglifier"
15
+ gem 'sass-rails', "~> 3.1.0.rc"
16
+ gem 'coffee-script'
17
+ gem 'execjs'
18
+ gem 'therubyracer'
19
+ end
20
+
21
+ group :development, :test do
22
+ gem 'sqlite3-ruby', :require => 'sqlite3'
23
+ gem 'rake', '0.8.7', :require => false
24
+ gem 'haml', '~> 3.1.1', :require => false
25
+ gem 'yard'
26
+ gem 'rdiscount' # For yard
27
+ end
28
+
29
+ group :test do
30
+ gem 'rspec', '~> 2.6.0'
31
+ gem 'rspec-rails', '~> 2.6.0'
32
+ gem 'capybara', '1.0.0'
33
+ gem 'cucumber', '0.10.6'
34
+ gem 'cucumber-rails', '0.5.2'
35
+ gem 'database_cleaner'
36
+ gem 'shoulda', '2.11.2', :require => nil
37
+ gem 'launchy'
38
+ gem 'jslint_on_rails', '~> 1.0.6'
39
+ end
data/LICENSE ADDED
@@ -0,0 +1,25 @@
1
+ Copyright (c) 2010 Greg Bell, VersaPay Corporation
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ Iconic Icons are designed by P.J. Onori and are shared under
23
+ the Creative Commons Attribution-Share Alike 3.0 license:
24
+ http://creativecommons.org/licenses/by-sa/3.0/us
25
+ http://somerandomdude.com/projects/iconic/
data/README.rdoc ADDED
@@ -0,0 +1,487 @@
1
+ = Active Admin
2
+
3
+ Active Admin is a framework for creating administration style interfaces. It
4
+ abstracts common business application patterns to make it simple for developers
5
+ to implement beautiful and elegant interfaces with very little effort.
6
+
7
+ == Help / Support / Demo
8
+ * Mailing list: http://groups.google.com/group/activeadmin
9
+ * Bug reports: https://github.com/gregbell/active_admin/issues
10
+ * RDoc: http://rubydoc.info/github/gregbell/active_admin/master/frames
11
+ * Guides: http://activeadmin.info/documentation.html
12
+ * Live demo: http://demo.activeadmin.info/admin
13
+ * Website: http://www.activeadmin.info
14
+
15
+
16
+ == Goals
17
+
18
+ 1. Allow developers to quickly create gorgeous administration interfaces
19
+ <strong>(Not Just CRUD)</strong>
20
+ 2. Build a DSL for developers and an interface for businesses.
21
+ 3. Ensure that developers can easily customize every nook and cranny of the interface.
22
+ 4. Build common interfaces as shareable gems so that the entire community benefits.
23
+
24
+
25
+ == Getting Started
26
+
27
+ Active Admin is released as a Ruby Gem. The gem is to be installed within a Ruby
28
+ on Rails 3 application. To install, simply add the following to your Gemfile:
29
+
30
+ # Gemfile
31
+ gem 'activeadmin'
32
+
33
+ After updating your bundle, run the installer
34
+
35
+ $> rails generate active_admin:install
36
+
37
+ The installer creates an initializer used for configuring defaults used by Active Admin as well
38
+ as a new folder at <tt>app/admin</tt> to put all your admin configurations.
39
+
40
+ Migrate your db and start the server:
41
+
42
+ $> rake db:migrate
43
+ $> rails server
44
+
45
+ Visit http://localhost:3000/admin and log in using:
46
+
47
+ * *User*: admin@example.com
48
+ * *Password*: password
49
+
50
+ Voila! You're on your brand new Active Admin dashboard.
51
+
52
+ To register your first model, run:
53
+
54
+ $> rails generate active_admin:resource [MyModelName]
55
+
56
+ This creates a file at <tt>app/admin/my_model_names.rb</tt> for configuring the resource.
57
+ Refresh your web browser to see the interface.
58
+
59
+ To learn how to further configure your admin section, keep on reading!
60
+
61
+ == General Configuration
62
+
63
+ === Admin Users
64
+
65
+ By default Active Admin will include Devise and create a new model called
66
+ AdminUser. If you would like to use another name, you can pass it in to the
67
+ installer through the user option:
68
+
69
+ $> rails generate active_admin:install UserClassName
70
+
71
+ If you don't want the generator to create any user classes:
72
+
73
+ $> rails generate active_admin:install --skip-users
74
+
75
+ === Authentication
76
+
77
+ Active Admin requires two settings to authenticate and use the current user
78
+ within your application. Both are set in
79
+ <tt>config/initializers/active_admin.rb</tt>. By default they are setup for use
80
+ with Devise and a model named AdminUser. If you chose a different model name,
81
+ you will need to update these settings.
82
+
83
+ Set the method that controllers should call to authenticate the current user
84
+ with:
85
+
86
+ # config/initializers/active_admin.rb
87
+ config.authentication_method = :authenticate_admin_user!
88
+
89
+ Set the method to call within the view to access the current admin user
90
+
91
+ # config/initializers/active_admin.rb
92
+ config.current_user_method = :current_admin_user
93
+
94
+ Both of these settings can be set to false to turn off authentication.
95
+
96
+ # Turn off authentication all together
97
+ config.authentication_method = false
98
+ config.current_user_method = false
99
+
100
+ === Site Title
101
+
102
+ You can update the title used for the site in the initializer also. By default
103
+ it is set to the name of your Rails.application class name.
104
+
105
+ # config/initializers/active_admin.rb
106
+ config.site_title = "My Admin Site"
107
+
108
+ == Customize The Resource
109
+
110
+ === Rename the Resource
111
+
112
+ By default, any references to the resource (menu, routes, buttons, etc) in the
113
+ interface will use the name of the class. You can rename the resource by using
114
+ the <tt>:as</tt> option.
115
+
116
+ ActiveAdmin.register Post, :as => "Article"
117
+
118
+ The resource will then be available as /admin/articles
119
+
120
+ === Customize the Navigation
121
+
122
+ The resource will be displayed in the global navigation by default.
123
+
124
+ To disable the resource from being displayed in the global navigation:
125
+
126
+ ActiveAdmin.register Post do
127
+ menu false
128
+ end
129
+
130
+ To change the name of the label in the menu:
131
+
132
+ ActiveAdmin.register Post do
133
+ menu :label => "My Posts"
134
+ end
135
+
136
+ To add the menu as a child of another menu:
137
+
138
+ ActiveAdmin.register Post do
139
+ menu :parent => "Blog"
140
+ end
141
+
142
+ This will create the menu item if it doesn't exist yet.
143
+
144
+ == Customizing the Index Page
145
+
146
+ Filtering and listing resources is one of the most important tasks for
147
+ administering a web application. Active Admin provides many different tools for
148
+ you to build a compelling interface into your data for the admin staff.
149
+
150
+ Built in, Active Admin has the following index renderers:
151
+
152
+ * *Table*: A table drawn with each row being a resource
153
+ * *Grid*: A set of rows and columns each cell being a resource
154
+ * *Blocks*: A set of rows (not tabular) each row being a resource
155
+ * *Blog*: A title and body content, similar to a blog index
156
+
157
+ All index pages also support scopes, filters, pagination, action items, and
158
+ sidebar sections.
159
+
160
+ === Index as a Table
161
+
162
+ By default, the index page is a table with each of the models content columns and links to
163
+ show, edit and delete the object. There are many ways to customize what gets
164
+ displayed.
165
+
166
+ ==== Defining Columns
167
+
168
+ To display an attribute or a method on a resource, simply pass a symbol into the
169
+ column method:
170
+
171
+ index do
172
+ column :title
173
+ end
174
+
175
+ If the default title does not work for you, pass it as the first argument:
176
+
177
+ index do
178
+ column "My Custom Title", :title
179
+ end
180
+
181
+ Sometimes calling methods just isn't enough and you need to write some view
182
+ specific code. For example, say we wanted a colum called Title which holds a
183
+ link to the posts admin screen.
184
+
185
+ The column method accepts a block as an argument which will then be rendered
186
+ within the context of the view for each of the objects in the collection.
187
+
188
+ index do
189
+ column "Title" do |post|
190
+ link_to post.title, admin_post_path(post)
191
+ end
192
+ end
193
+
194
+ The block gets called once for each resource in the collection. The resource gets passed into
195
+ the block as an argument.
196
+
197
+
198
+ ==== Sorting
199
+
200
+ When a column is generated from an Active Record attribute, the table is
201
+ sortable by default. If you are creating a custom column, you may need to give
202
+ Active Admin a hint for how to sort the table.
203
+
204
+ If a column is defined using a block, you must pass the key to turn on sorting. The key
205
+ is the attribute which gets used to sort objects using Active Record.
206
+
207
+ index do
208
+ column "Title", :sortable => :title do |post|
209
+ link_to post.title, admin_post_path(post)
210
+ end
211
+ end
212
+
213
+ You can turn off sorting on any column by passing false:
214
+
215
+ index do
216
+ column :title, :sortable => false
217
+ end
218
+
219
+ ==== Showing and Hiding Columns
220
+
221
+ The entire index block is rendered within the context of the view, so you can
222
+ easily do things that show or hide columns based on the current context.
223
+
224
+ For example, if you were using CanCan:
225
+
226
+ index do
227
+ column :title, :sortable => false
228
+ if can? :manage, Post
229
+ column :some_secret_data
230
+ end
231
+ end
232
+
233
+ === Index as a Grid
234
+
235
+ Sometimes you want to display the index screen for a set of resources as a grid
236
+ (possibly a grid of thumbnail images). To do so, use the :grid option for the
237
+ index block.
238
+
239
+ index :as => :grid do |product|
240
+ link_to(image_tag(product.image_path), admin_products_path(product))
241
+ end
242
+
243
+ The block is rendered within a cell in the grid once for each resource in the
244
+ collection. The resource is passed into the block for you to use in the view.
245
+
246
+ You can customize the number of colums that are rendered using the columns
247
+ option:
248
+
249
+ index :as => :grid, :columns => 5 do |product|
250
+ link_to(image_tag(product.image_path), admin_products_path(product))
251
+ end
252
+
253
+
254
+ === Index as a Block
255
+
256
+ If you want to fully customize the display of your resources on the index
257
+ screen, Index as a Block allows you to render a block of content for each
258
+ resource.
259
+
260
+ index :as => :block do |product|
261
+ div :for => product do
262
+ h2 auto_link(product.title)
263
+ div do
264
+ simple_format product.description
265
+ end
266
+ end
267
+ end
268
+
269
+ === Index Filters
270
+
271
+ By default the index screen includes a "Filters" sidebar on the right hand side
272
+ with a filter for each attribute of the registered model. You can customize the
273
+ filters that are displayed as well as the type of widgets they use.
274
+
275
+ To display a filter for an attribute, use the filter method
276
+
277
+ ActiveAdmin.register Post do
278
+ filter :title
279
+ end
280
+
281
+ Out of the box, Active Admin supports the following filter types:
282
+
283
+ * *:string* - A search field
284
+ * *:date_range* - A start and end date field with calendar inputs
285
+ * *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
286
+ Than" and an input for a value.
287
+ * *:select* - A drop down which filters based on a selected item in a collection
288
+ or all.
289
+ * *:check_boxes* - A list of check boxes users can turn on and off to filter
290
+
291
+ By default, Active Admin will pick the most relevant filter based on the
292
+ attribute type. You can force the type by passing the :as option.
293
+
294
+ filter :author, :as => :check_boxes
295
+
296
+ The :check_boxes and :select types accept options for the collection. By default
297
+ it attempts to create a collection based on an association. But you can pass in
298
+ the collection as a proc to be called at render time.
299
+
300
+ # Will call available
301
+ filter :author, :as => :check_boxes, :collection => proc { Author.all }
302
+
303
+ You can change the filter label by passing a label option:
304
+
305
+ filter :author, :label => 'Author'
306
+
307
+ By default, Active Admin will try to use ActiveModel I18n to determine the label.
308
+
309
+ == Customizing the CSV format
310
+
311
+ Customizing the CSV format is as simple as customizing the index page.
312
+
313
+ csv do
314
+ column :name
315
+ column("Author") { |post| post.author.full_name }
316
+ end
317
+
318
+ == Customizing the Form
319
+
320
+ Active Admin gives complete control over the output of the form by creating a thin DSL on top of
321
+ the fabulous DSL created by Formtastic (http://github.com/justinfrench/formtastic).
322
+
323
+ ActiveAdmin.register Post do
324
+
325
+ form do |f|
326
+ f.inputs "Details" do
327
+ f.input :title
328
+ f.input :published_at, :label => "Publish Post At"
329
+ f.input :category
330
+ end
331
+ f.inputs "Content" do
332
+ f.input :body
333
+ end
334
+ f.buttons
335
+ end
336
+
337
+ end
338
+
339
+ Please view the documentation for Formtastic to see all the wonderful things you can do:
340
+ http://github.com/justinfrench/formtastic
341
+
342
+ If you require a more custom form than can be provided through the DSL, you can pass
343
+ a partial in to render the form yourself.
344
+
345
+ For example:
346
+
347
+ ActiveAdmin.register Post do
348
+ form :partial => "form"
349
+ end
350
+
351
+ Then implement app/views/admin/posts/_form.html.erb:
352
+
353
+ <%= semantic_form_for [:admin, @post] do |f| %>
354
+ <%= f.inputs :title, :body %>
355
+ <%= f.buttons :commit %>
356
+ <% end %>
357
+
358
+
359
+ == Customizing the Show Screen
360
+
361
+ Customizing the show screen is as simple as implementing the show block:
362
+
363
+ ActiveAdmin.register Post do
364
+ show do
365
+ h3 post.title
366
+ div do
367
+ simple_format post.body
368
+ end
369
+ end
370
+ end
371
+
372
+ The show block is rendered within the context of the view and uses the Arbre HTML DSL. You
373
+ can also render a partial at any point.
374
+
375
+ ActiveAdmin.register Post do
376
+ show do
377
+ # renders app/views/admin/posts/_some_partial.html.erb
378
+ render "some_partial"
379
+ end
380
+ end
381
+
382
+
383
+ == Sidebar Sections
384
+
385
+ To add a sidebar section to all the screen within a section, use the sidebar method:
386
+
387
+ sidebar :help do
388
+ "Need help? Email us at help@example.com"
389
+ end
390
+
391
+ This will generate a sidebar section on each screen of the resource. With the block as
392
+ the contents of the section. The first argument is the section title.
393
+
394
+ You can also use Arbre syntax to define the content.
395
+
396
+ sidebar :help do
397
+ ul do
398
+ li "Second List First Item"
399
+ li "Second List Second Item"
400
+ end
401
+ end
402
+
403
+ Sidebar sections can be rendered on a specific action by using the :only or :except
404
+ options.
405
+
406
+ sidebar :help, :only => :index do
407
+ "Need help? Email us at help@example.com"
408
+ end
409
+
410
+ If you only pass a symbol, Active Admin will attempt to locate a partial to render.
411
+
412
+ # Will render app/views/admin/posts/_help_sidebar.html.erb
413
+ sidebar :help
414
+
415
+ Or you can pass your own custom partial to render.
416
+
417
+ sidebar :help, :partial => "custom_help_partial"
418
+
419
+ == Add collection and member actions
420
+
421
+ To add a collection action, use the collection_action method:
422
+
423
+ collection_action :import_csv do
424
+ # do csv import
425
+ redirect_to :action => :index, :notice => "CSV imported successfully!"
426
+ end
427
+
428
+ To add a member action, use the member_action method:
429
+
430
+ member_action :lock, :method => :post do
431
+ resource.lock!
432
+ redirect_to :action => :show, :notice => "Locked!"
433
+ end
434
+
435
+ == Internationalization (I18n)
436
+
437
+ To internationalize Active Admin or to change default strings, you can copy
438
+ lib/active_admin/locales/en.yml to your application config/locales directory and
439
+ change its content. You can contribute to the project with your translations to!
440
+
441
+ == Tools Being Used
442
+
443
+ We believe strongly in not writing code unless we have to, so Active Admin is built using many
444
+ other open source projects:
445
+
446
+ InheritedResources::
447
+ Inherited Resources speeds up development by making your controllers inherit all restful
448
+ actions so you just have to focus on what is important.
449
+ InheritedViews::
450
+ Inherited Views is a thin addition to Inherited Resources which adds in html views to the mix
451
+ Formtastic::
452
+ A DSL for semantically building amazing forms.
453
+ Devise::
454
+ User authentication is done using Devise
455
+ Kaminari::
456
+ Pagination for rails apps
457
+ Iconic Icons::
458
+ Excellent SVG icon set designed by P.J. Onori: http://somerandomdude.com/projects/iconic
459
+
460
+
461
+ == Contributors
462
+
463
+ * Greg Bell http://github.com/gregbell
464
+ * Philippe Creux http://github.com/pcreux
465
+ * Sam Vincent http://github.com/samvincent
466
+ * Matt Vague http://github.com/mattvague
467
+ * Dan Kubb http://github.com/dkubb
468
+ * Sam Reh http://github.com/samuelreh
469
+
470
+
471
+ == Roadmap & Issue Tracking
472
+
473
+ We are using the awesome Github issues!
474
+
475
+ == Note on Patches/Pull Requests
476
+
477
+ * Fork the project.
478
+ * Make your feature addition or bug fix on a new topic branch
479
+ * Add specs and cukes for it. This is important so I don't break it in a
480
+ future version unintentionally.
481
+ * Commit, do not mess with rakefile, version, or history.
482
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
483
+ * Send me a pull request.
484
+
485
+ == Copyright
486
+
487
+ Copyright (c) 2010 Greg Bell, VersaPay Corporation. See LICENSE for details.