andrewroth_activeadmin 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. data/.document +5 -0
  2. data/.gitignore +35 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.md +301 -0
  6. data/Gemfile +40 -0
  7. data/Guardfile +8 -0
  8. data/LICENSE +25 -0
  9. data/README.rdoc +113 -0
  10. data/Rakefile +18 -0
  11. data/activeadmin.gemspec +28 -0
  12. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  17. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  18. data/app/assets/images/active_admin/loading.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  20. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  21. data/app/assets/images/active_admin/orderable.png +0 -0
  22. data/app/assets/javascripts/active_admin/base.js +12 -0
  23. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  24. data/app/assets/stylesheets/active_admin/_base.css.scss +363 -0
  25. data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
  26. data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
  27. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  28. data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
  29. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
  30. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
  31. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
  32. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  40. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  41. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
  42. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  43. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  44. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  45. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  46. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  47. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  48. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  49. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  50. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  51. data/app/views/active_admin/resource/edit.html.arb +1 -0
  52. data/app/views/active_admin/resource/index.csv.erb +20 -0
  53. data/app/views/active_admin/resource/index.html.arb +1 -0
  54. data/app/views/active_admin/resource/new.html.arb +1 -0
  55. data/app/views/active_admin/resource/show.html.arb +1 -0
  56. data/app/views/layouts/active_admin.html.arb +1 -0
  57. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  58. data/cucumber.yml +2 -0
  59. data/docs/0-installation.md +50 -0
  60. data/docs/1-general-configuration.md +43 -0
  61. data/docs/2-resource-customization.md +114 -0
  62. data/docs/3-index-pages.md +55 -0
  63. data/docs/3-index-pages/index-as-block.md +16 -0
  64. data/docs/3-index-pages/index-as-blog.md +61 -0
  65. data/docs/3-index-pages/index-as-grid.md +21 -0
  66. data/docs/3-index-pages/index-as-table.md +90 -0
  67. data/docs/4-csv-format.md +14 -0
  68. data/docs/5-forms.md +39 -0
  69. data/docs/6-show-screens.md +36 -0
  70. data/docs/7-sidebars.md +35 -0
  71. data/docs/8-custom-actions.md +123 -0
  72. data/features/comments/commenting.feature +112 -0
  73. data/features/comments/viewing_index.feature +19 -0
  74. data/features/dashboard.feature +26 -0
  75. data/features/edit_page.feature +106 -0
  76. data/features/first_boot.feature +16 -0
  77. data/features/global_navigation.feature +30 -0
  78. data/features/index/filters.feature +35 -0
  79. data/features/index/format_as_csv.feature +46 -0
  80. data/features/index/formats.feature +12 -0
  81. data/features/index/index_as_block.feature +15 -0
  82. data/features/index/index_as_blog.feature +50 -0
  83. data/features/index/index_as_grid.feature +45 -0
  84. data/features/index/index_as_table.feature +81 -0
  85. data/features/index/index_blank_slate.feature +56 -0
  86. data/features/index/index_scopes.feature +52 -0
  87. data/features/index/pagination.feature +17 -0
  88. data/features/menu.feature +37 -0
  89. data/features/new_page.feature +75 -0
  90. data/features/registering_assets.feature +35 -0
  91. data/features/registering_resources.feature +33 -0
  92. data/features/show/default_content.feature +43 -0
  93. data/features/show/page_title.feature +33 -0
  94. data/features/sidebar_sections.feature +127 -0
  95. data/features/specifying_actions.feature +87 -0
  96. data/features/step_definitions/action_item_steps.rb +7 -0
  97. data/features/step_definitions/additional_web_steps.rb +77 -0
  98. data/features/step_definitions/asset_steps.rb +7 -0
  99. data/features/step_definitions/attribute_steps.rb +13 -0
  100. data/features/step_definitions/comment_steps.rb +8 -0
  101. data/features/step_definitions/configuration_steps.rb +31 -0
  102. data/features/step_definitions/dashboard_steps.rb +11 -0
  103. data/features/step_definitions/factory_steps.rb +29 -0
  104. data/features/step_definitions/flash_steps.rb +3 -0
  105. data/features/step_definitions/format_steps.rb +35 -0
  106. data/features/step_definitions/index_scope_steps.rb +20 -0
  107. data/features/step_definitions/layout_steps.rb +3 -0
  108. data/features/step_definitions/menu_steps.rb +7 -0
  109. data/features/step_definitions/pagination_steps.rb +8 -0
  110. data/features/step_definitions/sidebar_steps.rb +7 -0
  111. data/features/step_definitions/tab_steps.rb +3 -0
  112. data/features/step_definitions/user_steps.rb +26 -0
  113. data/features/step_definitions/web_steps.rb +211 -0
  114. data/features/sti_resource.feature +61 -0
  115. data/features/support/env.rb +96 -0
  116. data/features/support/paths.rb +50 -0
  117. data/features/support/selectors.rb +45 -0
  118. data/features/users/logging_in.feature +34 -0
  119. data/features/users/logging_out.feature +13 -0
  120. data/lib/active_admin.rb +82 -0
  121. data/lib/active_admin/abstract_view_factory.rb +95 -0
  122. data/lib/active_admin/application.rb +231 -0
  123. data/lib/active_admin/arbre.rb +23 -0
  124. data/lib/active_admin/arbre/builder.rb +111 -0
  125. data/lib/active_admin/arbre/context.rb +45 -0
  126. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  127. data/lib/active_admin/arbre/html/attributes.rb +20 -0
  128. data/lib/active_admin/arbre/html/class_list.rb +28 -0
  129. data/lib/active_admin/arbre/html/collection.rb +27 -0
  130. data/lib/active_admin/arbre/html/document.rb +42 -0
  131. data/lib/active_admin/arbre/html/element.rb +151 -0
  132. data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
  133. data/lib/active_admin/arbre/html/tag.rb +137 -0
  134. data/lib/active_admin/arbre/html/text_node.rb +35 -0
  135. data/lib/active_admin/asset_registration.rb +34 -0
  136. data/lib/active_admin/callbacks.rb +89 -0
  137. data/lib/active_admin/comments.rb +88 -0
  138. data/lib/active_admin/comments/comment.rb +21 -0
  139. data/lib/active_admin/comments/configuration.rb +18 -0
  140. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  141. data/lib/active_admin/comments/resource_helper.rb +17 -0
  142. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  143. data/lib/active_admin/comments/views.rb +3 -0
  144. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  145. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  146. data/lib/active_admin/component.rb +22 -0
  147. data/lib/active_admin/controller_action.rb +12 -0
  148. data/lib/active_admin/csv_builder.rb +45 -0
  149. data/lib/active_admin/dashboards.rb +48 -0
  150. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  151. data/lib/active_admin/dashboards/section.rb +34 -0
  152. data/lib/active_admin/dependency_checker.rb +30 -0
  153. data/lib/active_admin/deprecation.rb +36 -0
  154. data/lib/active_admin/devise.rb +54 -0
  155. data/lib/active_admin/dsl.rb +224 -0
  156. data/lib/active_admin/engine.rb +4 -0
  157. data/lib/active_admin/event.rb +31 -0
  158. data/lib/active_admin/form_builder.rb +118 -0
  159. data/lib/active_admin/helpers/optional_display.rb +34 -0
  160. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  161. data/lib/active_admin/helpers/settings.rb +70 -0
  162. data/lib/active_admin/iconic.rb +51 -0
  163. data/lib/active_admin/iconic/icons.rb +142 -0
  164. data/lib/active_admin/locales/bg.yml +40 -0
  165. data/lib/active_admin/locales/cs.yml +34 -0
  166. data/lib/active_admin/locales/da.yml +28 -0
  167. data/lib/active_admin/locales/en.yml +40 -0
  168. data/lib/active_admin/locales/es.yml +40 -0
  169. data/lib/active_admin/locales/fr.yml +40 -0
  170. data/lib/active_admin/locales/it.yml +40 -0
  171. data/lib/active_admin/locales/ja.yml +40 -0
  172. data/lib/active_admin/locales/pl.yml +34 -0
  173. data/lib/active_admin/locales/pt-BR.yml +41 -0
  174. data/lib/active_admin/locales/ru.yml +40 -0
  175. data/lib/active_admin/locales/sv-SE.yml +40 -0
  176. data/lib/active_admin/locales/zh_cn.yml +40 -0
  177. data/lib/active_admin/menu.rb +42 -0
  178. data/lib/active_admin/menu_item.rb +73 -0
  179. data/lib/active_admin/namespace.rb +206 -0
  180. data/lib/active_admin/page_config.rb +15 -0
  181. data/lib/active_admin/reloader.rb +64 -0
  182. data/lib/active_admin/renderer.rb +87 -0
  183. data/lib/active_admin/resource.rb +159 -0
  184. data/lib/active_admin/resource/action_items.rb +88 -0
  185. data/lib/active_admin/resource/belongs_to.rb +31 -0
  186. data/lib/active_admin/resource/menu.rb +45 -0
  187. data/lib/active_admin/resource/naming.rb +50 -0
  188. data/lib/active_admin/resource/scopes.rb +33 -0
  189. data/lib/active_admin/resource/sidebars.rb +36 -0
  190. data/lib/active_admin/resource_controller.rb +105 -0
  191. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  192. data/lib/active_admin/resource_controller/actions.rb +79 -0
  193. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  194. data/lib/active_admin/resource_controller/collection.rb +138 -0
  195. data/lib/active_admin/resource_controller/filters.rb +58 -0
  196. data/lib/active_admin/resource_controller/form.rb +42 -0
  197. data/lib/active_admin/resource_controller/menu.rb +29 -0
  198. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  199. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  200. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  201. data/lib/active_admin/router.rb +85 -0
  202. data/lib/active_admin/sass/active_admin.scss +3 -0
  203. data/lib/active_admin/sass/css_loader.rb +16 -0
  204. data/lib/active_admin/sass/helpers.rb +45 -0
  205. data/lib/active_admin/scope.rb +31 -0
  206. data/lib/active_admin/sidebar_section.rb +41 -0
  207. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  208. data/lib/active_admin/version.rb +3 -0
  209. data/lib/active_admin/view_factory.rb +23 -0
  210. data/lib/active_admin/view_helpers.rb +22 -0
  211. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  212. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  213. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  214. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  215. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  216. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  217. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  218. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  219. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  220. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  221. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  222. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  223. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  224. data/lib/active_admin/views.rb +8 -0
  225. data/lib/active_admin/views/action_items.rb +17 -0
  226. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  227. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  228. data/lib/active_admin/views/components/columns.rb +47 -0
  229. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  230. data/lib/active_admin/views/components/panel.rb +26 -0
  231. data/lib/active_admin/views/components/scopes.rb +69 -0
  232. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  233. data/lib/active_admin/views/components/status_tag.rb +55 -0
  234. data/lib/active_admin/views/components/table_for.rb +193 -0
  235. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  236. data/lib/active_admin/views/header_renderer.rb +57 -0
  237. data/lib/active_admin/views/index_as_block.rb +29 -0
  238. data/lib/active_admin/views/index_as_blog.rb +129 -0
  239. data/lib/active_admin/views/index_as_grid.rb +70 -0
  240. data/lib/active_admin/views/index_as_table.rb +164 -0
  241. data/lib/active_admin/views/pages/base.rb +167 -0
  242. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  243. data/lib/active_admin/views/pages/edit.rb +28 -0
  244. data/lib/active_admin/views/pages/index.rb +91 -0
  245. data/lib/active_admin/views/pages/layout.rb +26 -0
  246. data/lib/active_admin/views/pages/new.rb +28 -0
  247. data/lib/active_admin/views/pages/show.rb +56 -0
  248. data/lib/active_admin/views/tabbed_navigation.rb +94 -0
  249. data/lib/activeadmin.rb +1 -0
  250. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  251. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  252. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  253. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  254. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  255. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  256. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  257. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +103 -0
  258. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  259. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  260. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  261. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  262. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  263. data/script/local +44 -0
  264. data/script/use_rails +46 -0
  265. data/spec/integration/belongs_to_spec.rb +42 -0
  266. data/spec/integration/default_namespace.rb +77 -0
  267. data/spec/integration/javascript_spec.rb +20 -0
  268. data/spec/integration/memory_spec.rb +38 -0
  269. data/spec/integration/stylesheets_spec.rb +41 -0
  270. data/spec/spec_helper.rb +167 -0
  271. data/spec/support/detect_rails_version.rb +10 -0
  272. data/spec/support/integration_example_group.rb +33 -0
  273. data/spec/support/jslint.yml +80 -0
  274. data/spec/support/rails_template.rb +32 -0
  275. data/spec/support/rails_template_with_data.rb +33 -0
  276. data/spec/support/templates/cucumber.rb +24 -0
  277. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  278. data/spec/unit/action_builder_spec.rb +88 -0
  279. data/spec/unit/active_admin_spec.rb +17 -0
  280. data/spec/unit/application_spec.rb +87 -0
  281. data/spec/unit/arbre/context_spec.rb +35 -0
  282. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  283. data/spec/unit/arbre/html/element_spec.rb +223 -0
  284. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  285. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  286. data/spec/unit/arbre/html_spec.rb +209 -0
  287. data/spec/unit/asset_registration_spec.rb +37 -0
  288. data/spec/unit/auto_link_spec.rb +39 -0
  289. data/spec/unit/belongs_to_spec.rb +45 -0
  290. data/spec/unit/breadcrumbs_spec.rb +110 -0
  291. data/spec/unit/comments_spec.rb +57 -0
  292. data/spec/unit/component_spec.rb +18 -0
  293. data/spec/unit/controller_filters_spec.rb +34 -0
  294. data/spec/unit/csv_builder_spec.rb +83 -0
  295. data/spec/unit/dashboard_controller_spec.rb +26 -0
  296. data/spec/unit/dashboard_section_spec.rb +56 -0
  297. data/spec/unit/dashboards_spec.rb +59 -0
  298. data/spec/unit/devise_spec.rb +66 -0
  299. data/spec/unit/display_name_spec.rb +29 -0
  300. data/spec/unit/event_spec.rb +41 -0
  301. data/spec/unit/filter_form_builder_spec.rb +182 -0
  302. data/spec/unit/form_builder_spec.rb +256 -0
  303. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  304. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  305. data/spec/unit/helpers/settings_spec.rb +30 -0
  306. data/spec/unit/menu_item_spec.rb +143 -0
  307. data/spec/unit/menu_spec.rb +53 -0
  308. data/spec/unit/namespace_spec.rb +214 -0
  309. data/spec/unit/pretty_format_spec.rb +35 -0
  310. data/spec/unit/rails_spec.rb +43 -0
  311. data/spec/unit/registration_spec.rb +76 -0
  312. data/spec/unit/reloader_spec.rb +80 -0
  313. data/spec/unit/renderer_spec.rb +108 -0
  314. data/spec/unit/resource/action_items_spec.rb +62 -0
  315. data/spec/unit/resource/menu_spec.rb +80 -0
  316. data/spec/unit/resource/naming_spec.rb +75 -0
  317. data/spec/unit/resource/scopes_spec.rb +30 -0
  318. data/spec/unit/resource/sidebars_spec.rb +50 -0
  319. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  320. data/spec/unit/resource_controller_spec.rb +152 -0
  321. data/spec/unit/resource_spec.rb +269 -0
  322. data/spec/unit/routing_spec.rb +88 -0
  323. data/spec/unit/sass/helpers_spec.rb +47 -0
  324. data/spec/unit/scope_spec.rb +41 -0
  325. data/spec/unit/view_factory_spec.rb +19 -0
  326. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  327. data/spec/unit/views/components/blank_slate_spec.rb +15 -0
  328. data/spec/unit/views/components/columns_spec.rb +75 -0
  329. data/spec/unit/views/components/panel_spec.rb +29 -0
  330. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  331. data/spec/unit/views/components/status_tag_spec.rb +79 -0
  332. data/spec/unit/views/components/table_for_spec.rb +131 -0
  333. data/spec/unit/views/pages/layout_spec.rb +22 -0
  334. data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
  335. data/tasks/docs.rake +39 -0
  336. data/tasks/test.rake +57 -0
  337. data/tasks/yard.rake +6 -0
  338. metadata +646 -0
@@ -0,0 +1,18 @@
1
+ <div id="login">
2
+ <h2><%= title "#{active_admin_application.site_title} Login" %></h2>
3
+
4
+ <% scope = Devise::Mapping.find_scope!(resource_name) %>
5
+ <%= active_admin_form_for(resource, :as => resource_name, :url => send(:"#{scope}_session_path"), :html => { :id => "session_new" }) do |f|
6
+ f.inputs do
7
+ Devise.authentication_keys.each { |key| f.input key }
8
+ f.input :password
9
+ f.input :remember_me, :as => :boolean, :if => false #devise_mapping.rememberable? }
10
+ end
11
+ f.buttons do
12
+ f.commit_button "Login"
13
+ end
14
+ end
15
+ %>
16
+
17
+ <%= render :partial => "devise/shared/links" %>
18
+ </div>
@@ -0,0 +1,20 @@
1
+ <%- if controller_name != 'sessions' %>
2
+ <% scope = Devise::Mapping.find_scope!(resource_name) %>
3
+ <%= link_to "Sign in", send(:"new_#{scope}_session_path") }")br />
4
+ <% end -%>
5
+
6
+ <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
7
+ <%= link_to "Sign up", new_registration_path(resource_name) %><br />
8
+ <% end -%>
9
+
10
+ <%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
11
+ <%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
12
+ <% end -%>
13
+
14
+ <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
15
+ <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
16
+ <% end -%>
17
+
18
+ <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
19
+ <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
20
+ <% end -%>
@@ -0,0 +1,12 @@
1
+ <h2>Resend unlock instructions</h2>
2
+
3
+ <%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %>
4
+ <%= devise_error_messages! %>
5
+
6
+ <p><%= f.label :email %><br />
7
+ <%= f.text_field :email %></p>
8
+
9
+ <p><%= f.submit "Resend unlock instructions" %></p>
10
+ <% end %>
11
+
12
+ <%= render :partial => "devise/shared/links" %>
@@ -0,0 +1 @@
1
+ render renderer_for(:edit)
@@ -0,0 +1,20 @@
1
+ <%-
2
+ csv_lib = if RUBY_VERSION =~ /^1.8/
3
+ require 'fastercsv'
4
+ FasterCSV
5
+ else
6
+ require 'csv'
7
+ CSV
8
+ end
9
+
10
+ csv_output = csv_lib.generate do |csv|
11
+ columns = active_admin_config.csv_builder.columns
12
+ csv << columns.map(&:name)
13
+ collection.each do |resource|
14
+ csv << columns.map do |column|
15
+ call_method_or_proc_on resource, column.data
16
+ end
17
+ end
18
+ end
19
+ %>
20
+ <%= csv_output.html_safe %>
@@ -0,0 +1 @@
1
+ render renderer_for(:index)
@@ -0,0 +1 @@
1
+ render renderer_for(:new)
@@ -0,0 +1 @@
1
+ render renderer_for(:show)
@@ -0,0 +1 @@
1
+ render view_factory.layout
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+
6
+ <title><%= [@page_title, active_admin_application.site_title].compact.join(" | ") %></title>
7
+
8
+ <% ActiveAdmin.application.stylesheets.each do |path| %>
9
+ <%= stylesheet_link_tag path %>
10
+ <% end %>
11
+ <% ActiveAdmin.application.javascripts.each do |path| %>
12
+ <%= javascript_include_tag path %>
13
+ <% end %>
14
+
15
+ <%= csrf_meta_tag %>
16
+ </head>
17
+ <body class="logged_out <%= controller.action_name %>">
18
+ <div id="wrapper">
19
+
20
+ <div id="content_wrapper">
21
+ <% if flash.keys.any? %>
22
+ <% flash.each do |type, message| %>
23
+ <%= content_tag :div, message, :class => "flash flash_#{type}" %>
24
+ <% end %>
25
+ <% end %>
26
+ <div id="active_admin_content">
27
+ <%= yield %>
28
+ </div>
29
+ </div>
30
+ <div id="footer">
31
+ <%= yield :footer %>
32
+ </div>
33
+ </div>
34
+ </body>
35
+ </html>
data/cucumber.yml ADDED
@@ -0,0 +1,2 @@
1
+ default: --format 'progress' --require features/support/env.rb --require features/step_definitions features
2
+ wip: --format 'progress' --require features/support/env.rb --require features/step_definitions features --tags @wip:3 --wip features
@@ -0,0 +1,50 @@
1
+ # Installation
2
+
3
+ Installing Active Admin in a Rails application is as easy as adding the gem to
4
+ your Gemfile:
5
+
6
+ # Gemfile
7
+ gem 'activeadmin'
8
+
9
+ If you are using Rails >= 3.1, you must also include a beta version of
10
+ MetaSearch and sass-rails:
11
+
12
+ # Gemfile in Rails >= 3.1
13
+ gem 'activeadmin'
14
+ gem 'sass-rails'
15
+ gem "meta_search", '>= 1.1.0.pre'
16
+
17
+ ## Running the Generator
18
+
19
+ Once you have added the gem to your Gemfile (and any other dependencies), you
20
+ need to run the Active Admin install generator.
21
+
22
+ $> rails generate active_admin:install
23
+
24
+ This will install Active Admin the default settings. By default it will create a
25
+ new Devise user / model called AdminUser. To change the name of the user class,
26
+ simply pass the class as the last argument:
27
+
28
+ $> rails generate active_admin:install User
29
+
30
+ Instead of generating an AdminUser class, this command will create a User class.
31
+
32
+ You can skip the Devise user class all together by using the `skip-users` flag:
33
+
34
+ $> rails generate active_admin:install --skip-users
35
+
36
+ NOTE: If you don't use the default user settings, you will need to configure the
37
+ settings in `config/intializers/active_admin.rb` to suite your needs.
38
+
39
+ After running the installer, run `rake db:migrate` to ensure that all db tables
40
+ are created.
41
+
42
+ ## Upgrading
43
+
44
+ To upgrade Active Admin, simply update the version number in your Gemfile, then
45
+ run the assets generator:
46
+
47
+ $> rails generate active_admin:assets
48
+
49
+ This command makes sure you have all the latest assets and your installation is
50
+ up to date. Each time you upgrade Active Admin, you should run this command.
@@ -0,0 +1,43 @@
1
+ # General Configuration
2
+
3
+ Below are some common settings you'll find in
4
+ `config/initializers/active_admin.rb`.
5
+
6
+ ## Authentication
7
+
8
+ Active Admin requires two settings to authenticate and use the current user
9
+ within your application. Both are set in
10
+ <tt>config/initializers/active_admin.rb</tt>. By default they are setup for use
11
+ with Devise and a model named AdminUser. If you chose a different model name,
12
+ you will need to update these settings.
13
+
14
+ Set the method that controllers should call to authenticate the current user
15
+ with:
16
+
17
+ # config/initializers/active_admin.rb
18
+ config.authentication_method = :authenticate_admin_user!
19
+
20
+ Set the method to call within the view to access the current admin user
21
+
22
+ # config/initializers/active_admin.rb
23
+ config.current_user_method = :current_admin_user
24
+
25
+ Both of these settings can be set to false to turn off authentication.
26
+
27
+ # Turn off authentication all together
28
+ config.authentication_method = false
29
+ config.current_user_method = false
30
+
31
+ ## Site Title
32
+
33
+ You can update the title used for the site in the initializer also. By default
34
+ it is set to the name of your Rails.application class name.
35
+
36
+ # config/initializers/active_admin.rb
37
+ config.site_title = "My Admin Site"
38
+
39
+ ## Internationalization (I18n)
40
+
41
+ To internationalize Active Admin or to change default strings, you can copy
42
+ lib/active_admin/locales/en.yml to your application config/locales directory and
43
+ change its content. You can contribute to the project with your translations too!
@@ -0,0 +1,114 @@
1
+ # Customize The Resource
2
+
3
+ ## Rename the Resource
4
+
5
+ By default, any references to the resource (menu, routes, buttons, etc) in the
6
+ interface will use the name of the class. You can rename the resource by using
7
+ the <tt>:as</tt> option.
8
+
9
+ ActiveAdmin.register Post, :as => "Article"
10
+
11
+ The resource will then be available as /admin/articles
12
+
13
+ ## Customize the Menu
14
+
15
+ The resource will be displayed in the global navigation by default. To disable
16
+ the resource from being displayed in the global navigation, pass `false` to the
17
+ `menu` method:
18
+
19
+ ActiveAdmin.register Post do
20
+ menu false
21
+ end
22
+
23
+ The menu method accepts a hash with the following options:
24
+
25
+ * `:label` - The string label to display in the menu
26
+ * `:parent` - The string label of the parent to set for this menu
27
+ * `:if` - A block or a symbol of a method to call to decide if the menu item
28
+ should be displayed
29
+ * `:priority` - The integer value of the priority. Defaults to 10
30
+
31
+ ### Labels
32
+
33
+ To change the name of the label in the menu:
34
+
35
+ ActiveAdmin.register Post do
36
+ menu :label => "My Posts"
37
+ end
38
+
39
+ By default the menu uses a pluralized version of your resource name.
40
+
41
+ ### Drop Down Menus
42
+
43
+ In many cases, a single level navigation will not be enough for the
44
+ administration of a production application. In that case, you can categorize
45
+ your resources and creating drop down menus to access them.
46
+
47
+ To add the menu as a child of another menu:
48
+
49
+ ActiveAdmin.register Post do
50
+ menu :parent => "Blog"
51
+ end
52
+
53
+ Note, the "Blog" menu does not even have to exist yet. It will be generated on
54
+ the fly as a drop down list for you.
55
+
56
+ ### Menu Priority
57
+
58
+ By default Active Admin sorts menus alphabetically. Some times you want specific
59
+ resources to show up at the beginning or the end of your menu.
60
+
61
+ Each menu item is given an integer priority value (default 10). You can set it
62
+ to edit the location of the menu item.
63
+
64
+ ActiveAdmin.register Post do
65
+ menu :priority => 1
66
+ end
67
+
68
+ This would ensure that the Post menu item, is at the beginning of the menu.
69
+
70
+ ### Conditionally Showing / Hiding Menu Items
71
+
72
+ Menu items can be shown or hidden at runtime using the `:if` option.
73
+
74
+ ActiveAdmin.register Post do
75
+ menu :if => proc{ current_admin_user.can_edit_posts? }
76
+ end
77
+
78
+ The `proc` will be called in the context of the view, so you have access to all
79
+ your helpers and current user session information.
80
+
81
+ ## Scoping the queries
82
+
83
+ If your administrators have different access levels, you may sometimes want to
84
+ scope what they have access to. Assuming your User model has the proper
85
+ has_many relationships, you can simply scope the listings and finders like so:
86
+
87
+ ActiveAdmin.register Post do
88
+ scope_to :current_user
89
+
90
+ # or if the association doesn't have the default name.
91
+ # scope_to :current_user, :association_method => :blog_posts
92
+ end
93
+
94
+ That approach limits the posts an admin can access to ```current_user.posts```.
95
+
96
+ If you want to do something fancier, for example override a default scope, you can
97
+ also use :association_method parameter with a normal method on your User model.
98
+ The only requirement is that your method returns an instance of ActiveRecord::Relation.
99
+
100
+ class Ad < ActiveRecord::Base
101
+ default_scope lambda { where :published => true }
102
+ end
103
+
104
+ class User < ActiveRecord::Base
105
+ def managed_ads
106
+ # Overrides Ad's default_scope
107
+ Ad.unscoped
108
+ end
109
+ end
110
+
111
+ ActiveAdmin.register Ad do
112
+ scope_to :current_user, :association_method => :managed_ads
113
+ end
114
+
@@ -0,0 +1,55 @@
1
+ # Customizing the Index Page
2
+
3
+ Filtering and listing resources is one of the most important tasks for
4
+ administering a web application. Active Admin provides many different tools for
5
+ you to build a compelling interface into your data for the admin staff.
6
+
7
+ Built in, Active Admin has the following index renderers:
8
+
9
+ * *Table*: A table drawn with each row being a resource ([View Table Docs](3-index-pages/index-as-table.md))
10
+ * *Grid*: A set of rows and columns each cell being a resource ([View Grid Docs](3-index-pages/index-as-grid.md))
11
+ * *Blocks*: A set of rows (not tabular) each row being a resource ([View Blocks Docs](3-index-pages/index-as-block.md))
12
+ * *Blog*: A title and body content, similar to a blog index ([View Blog Docs](3-index-pages/index-as-blog.md))
13
+
14
+ All index pages also support scopes, filters, pagination, action items, and
15
+ sidebar sections.
16
+
17
+ ## Index Filters
18
+
19
+ By default the index screen includes a "Filters" sidebar on the right hand side
20
+ with a filter for each attribute of the registered model. You can customize the
21
+ filters that are displayed as well as the type of widgets they use.
22
+
23
+ To display a filter for an attribute, use the filter method
24
+
25
+ ActiveAdmin.register Post do
26
+ filter :title
27
+ end
28
+
29
+ Out of the box, Active Admin supports the following filter types:
30
+
31
+ * *:string* - A search field
32
+ * *:date_range* - A start and end date field with calendar inputs
33
+ * *:numeric* - A drop down for selecting "Equal To", "Greater Than" or "Less
34
+ Than" and an input for a value.
35
+ * *:select* - A drop down which filters based on a selected item in a collection
36
+ or all.
37
+ * *:check_boxes* - A list of check boxes users can turn on and off to filter
38
+
39
+ By default, Active Admin will pick the most relevant filter based on the
40
+ attribute type. You can force the type by passing the :as option.
41
+
42
+ filter :author, :as => :check_boxes
43
+
44
+ The :check_boxes and :select types accept options for the collection. By default
45
+ it attempts to create a collection based on an association. But you can pass in
46
+ the collection as a proc to be called at render time.
47
+
48
+ # Will call available
49
+ filter :author, :as => :check_boxes, :collection => proc { Author.all }
50
+
51
+ You can change the filter label by passing a label option:
52
+
53
+ filter :author, :label => 'Author'
54
+
55
+ By default, Active Admin will try to use ActiveModel I18n to determine the label.
@@ -0,0 +1,16 @@
1
+ <!-- Please don't edit this file. It will be clobbered. -->
2
+
3
+ # Index as a Block
4
+
5
+ If you want to fully customize the display of your resources on the index
6
+ screen, Index as a Block allows you to render a block of content for each
7
+ resource.
8
+
9
+ index :as => :block do |product|
10
+ div :for => product do
11
+ h2 auto_link(product.title)
12
+ div do
13
+ simple_format product.description
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,61 @@
1
+ <!-- Please don't edit this file. It will be clobbered. -->
2
+
3
+ # Index as Blog
4
+
5
+ Render your index page as a set of posts. The post has two main options:
6
+ title and body.
7
+
8
+ index :as => :blog do
9
+ title :my_title # Calls #my_title on each resource
10
+ body :my_body # Calls #my_body on each resource
11
+ end
12
+
13
+ ## Post Title
14
+
15
+ The title is the content that will be rendered within a link to the
16
+ resource. There are two main ways to set the content for the title
17
+
18
+ First, you can pass in a method to be called on your
19
+ resource. For example:
20
+
21
+ index :as => :blog do
22
+ title :a_method_to_call
23
+ end
24
+
25
+ This will result in the title of the post being the return value of
26
+ Resource#a_method_to_call
27
+
28
+ Second, you can pass a block to the tile option which will then be
29
+ used as the contents fo the title. The resource being rendered
30
+ is passed in to the block. For Example:
31
+
32
+ index :as => :blog do
33
+ title do |post|
34
+ span post.title, :class => 'title'
35
+ span post.created_at, :class => 'created_at'
36
+ end
37
+ end
38
+
39
+ ## Post Body
40
+
41
+ The body is rendered underneath the title of each post. The same two
42
+ style of options work as the Post Title above.
43
+
44
+ Call a method on the resource as the body:
45
+
46
+ index :as => :blog do
47
+ title :my_title
48
+ body :my_body # Return value of #my_body will be the body
49
+ end
50
+
51
+ Or, render a block as the body:
52
+
53
+ index :as => :blog do
54
+ title :my_title
55
+ body do |post|
56
+ div truncate(post.title)
57
+ div :class => 'meta' do
58
+ span "Post in #{post.categories.join(', ')}"
59
+ end
60
+ end
61
+ end