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,33 @@
1
+ module ActiveAdmin
2
+ class Resource
3
+ module Scopes
4
+
5
+ # Return an array of scopes for this resource
6
+ def scopes
7
+ @scopes ||= []
8
+ end
9
+
10
+ # Returns a scope for this object by its identifier
11
+ def get_scope_by_id(id)
12
+ id = id.to_s
13
+ scopes.find{|s| s.id == id }
14
+ end
15
+
16
+ def default_scope
17
+ @default_scope
18
+ end
19
+
20
+ # Create a new scope object for this resource.
21
+ # If you want to internationalize the scope name, you can add
22
+ # to your i18n files a key like "active_admin.scopes.scope_method".
23
+ def scope(*args, &block)
24
+ options = args.extract_options!
25
+ self.scopes << ActiveAdmin::Scope.new(*args, &block)
26
+ if options[:default]
27
+ @default_scope = scopes.last
28
+ end
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,36 @@
1
+ require 'active_admin/helpers/optional_display'
2
+
3
+ module ActiveAdmin
4
+
5
+ class Resource
6
+ module Sidebars
7
+
8
+ def initialize(*args)
9
+ super
10
+ add_default_sidebar_sections
11
+ end
12
+
13
+ def sidebar_sections
14
+ @sidebar_sections ||= []
15
+ end
16
+
17
+ def clear_sidebar_sections!
18
+ @sidebar_sections = []
19
+ end
20
+
21
+ def sidebar_sections_for(action)
22
+ sidebar_sections.select{|section| section.display_on?(action) }
23
+ end
24
+
25
+ private
26
+
27
+ def add_default_sidebar_sections
28
+ self.sidebar_sections << ActiveAdmin::SidebarSection.new(:filters, :only => :index) do
29
+ active_admin_filters_form_for assigns["search"], filters_config
30
+ end
31
+ end
32
+
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,105 @@
1
+ require 'inherited_resources'
2
+ require 'active_admin/resource_controller/actions'
3
+ require 'active_admin/resource_controller/action_builder'
4
+ require 'active_admin/resource_controller/callbacks'
5
+ require 'active_admin/resource_controller/collection'
6
+ require 'active_admin/resource_controller/filters'
7
+ require 'active_admin/resource_controller/form'
8
+ require 'active_admin/resource_controller/menu'
9
+ require 'active_admin/resource_controller/page_configurations'
10
+ require 'active_admin/resource_controller/scoping'
11
+
12
+ module ActiveAdmin
13
+ class ResourceController < ::InheritedResources::Base
14
+
15
+ helper ::ActiveAdmin::ViewHelpers
16
+
17
+ layout :determine_active_admin_layout
18
+
19
+ respond_to :html, :xml, :json
20
+ respond_to :csv, :only => :index
21
+
22
+ before_filter :only_render_implemented_actions
23
+ before_filter :authenticate_active_admin_user
24
+
25
+ ACTIVE_ADMIN_ACTIONS = [:index, :show, :new, :create, :edit, :update, :destroy]
26
+
27
+ include Actions
28
+ include ActionBuilder
29
+ include Callbacks
30
+ include Collection
31
+ include Filters
32
+ include Form
33
+ include Menu
34
+ include PageConfigurations
35
+ include Scoping
36
+
37
+ class << self
38
+ # Ensure that this method is available for the DSL
39
+ public :actions
40
+
41
+ # Reference to the Resource object which initialized
42
+ # this controller
43
+ attr_accessor :active_admin_config
44
+
45
+ def active_admin_config=(config)
46
+ @active_admin_config = config
47
+ defaults :resource_class => config.resource,
48
+ :route_prefix => config.route_prefix,
49
+ :instance_name => config.underscored_resource_name
50
+ end
51
+
52
+ public :belongs_to
53
+ end
54
+
55
+ protected
56
+
57
+ # By default Rails will render un-implemented actions when the view exists. Becuase Active
58
+ # Admin allows you to not render any of the actions by using the #actions method, we need
59
+ # to check if they are implemented.
60
+ def only_render_implemented_actions
61
+ raise AbstractController::ActionNotFound unless action_methods.include?(params[:action])
62
+ end
63
+
64
+ # Determine which layout to use.
65
+ #
66
+ # 1. If we're rendering a standard Active Admin action, we want layout(false)
67
+ # because these actions are subclasses of the Base page (which implementes
68
+ # all the required layout code)
69
+ # 2. If we're rendering a custom action, we'll use the active_admin layout so
70
+ # that users can render any template inside Active Admin.
71
+ def determine_active_admin_layout
72
+ ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : 'active_admin'
73
+ end
74
+
75
+ # Calls the authentication method as defined in ActiveAdmin.authentication_method
76
+ def authenticate_active_admin_user
77
+ send(active_admin_application.authentication_method) if active_admin_application.authentication_method
78
+ end
79
+
80
+ def current_active_admin_user
81
+ send(active_admin_application.current_user_method) if active_admin_application.current_user_method
82
+ end
83
+ helper_method :current_active_admin_user
84
+
85
+ def current_active_admin_user?
86
+ !current_active_admin_user.nil?
87
+ end
88
+ helper_method :current_active_admin_user?
89
+
90
+ def active_admin_config
91
+ self.class.active_admin_config
92
+ end
93
+ helper_method :active_admin_config
94
+
95
+ def active_admin_application
96
+ ActiveAdmin.application
97
+ end
98
+
99
+ # Returns the renderer class to use for the given action.
100
+ def renderer_for(action)
101
+ active_admin_application.view_factory["#{action}_page"]
102
+ end
103
+ helper_method :renderer_for
104
+ end
105
+ end
@@ -0,0 +1,21 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ module ActionBuilder
5
+ extend ActiveSupport::Concern
6
+
7
+ module ClassMethods
8
+
9
+ def clear_member_actions!
10
+ active_admin_config.clear_member_actions!
11
+ end
12
+
13
+ def clear_collection_actions!
14
+ active_admin_config.clear_collection_actions!
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,79 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ # Override the InheritedResources actions to use the
5
+ # Active Admin templates.
6
+ #
7
+ # We ensure that the functionality provided by Inherited
8
+ # Resources is still available within any ResourceController
9
+
10
+ def index(options={}, &block)
11
+ super(options) do |format|
12
+ block.call(format) if block
13
+ format.html { render active_admin_template('index.html.arb') }
14
+ format.csv do
15
+ headers['Content-Type'] = 'text/csv; charset=utf-8'
16
+ headers['Content-Disposition'] = %{attachment; filename="#{csv_filename}"}
17
+ render active_admin_template('index.csv.erb')
18
+ end
19
+ end
20
+ end
21
+ alias :index! :index
22
+
23
+ def show(options={}, &block)
24
+ super do |format|
25
+ block.call(format) if block
26
+ format.html { render active_admin_template('show.html.arb') }
27
+ end
28
+ end
29
+ alias :show! :show
30
+
31
+ def new(options={}, &block)
32
+ super do |format|
33
+ block.call(format) if block
34
+ format.html { render active_admin_template('new.html.arb') }
35
+ end
36
+ end
37
+ alias :new! :new
38
+
39
+ def edit(options={}, &block)
40
+ super do |format|
41
+ block.call(format) if block
42
+ format.html { render active_admin_template('edit.html.arb') }
43
+ end
44
+ end
45
+ alias :edit! :edit
46
+
47
+ def create(options={}, &block)
48
+ super(options) do |success, failure|
49
+ block.call(success, failure) if block
50
+ failure.html { render active_admin_template('new.html.arb') }
51
+ end
52
+ end
53
+ alias :create! :create
54
+
55
+ def update(options={}, &block)
56
+ super do |success, failure|
57
+ block.call(success, failure) if block
58
+ failure.html { render active_admin_template('edit.html.arb') }
59
+ end
60
+ end
61
+ alias :update! :update
62
+
63
+ # Make aliases protected
64
+ protected :index!, :show!, :new!, :create!, :edit!, :update!
65
+
66
+ protected
67
+
68
+ # Returns the full location to the Active Admin template path
69
+ def active_admin_template(template)
70
+ "active_admin/resource/#{template}"
71
+ end
72
+
73
+ # Returns a filename for the csv file using the collection_name
74
+ # and current date such as 'my-articles-2011-06-24.csv'.
75
+ def csv_filename
76
+ "#{resource_collection_name.to_s.gsub('_', '-')}-#{Time.now.strftime("%Y-%m-%d")}.csv"
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,47 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ module Callbacks
5
+ extend ActiveSupport::Concern
6
+ include ::ActiveAdmin::Callbacks
7
+
8
+ included do
9
+ define_active_admin_callbacks :build, :create, :update, :save, :destroy
10
+ end
11
+
12
+ protected
13
+
14
+ def build_resource
15
+ object = super
16
+ run_build_callbacks object
17
+ object
18
+ end
19
+
20
+ def create_resource(object)
21
+ run_create_callbacks object do
22
+ save_resource(object)
23
+ end
24
+ end
25
+
26
+ def save_resource(object)
27
+ run_save_callbacks object do
28
+ object.save
29
+ end
30
+ end
31
+
32
+ def update_resource(object, attributes)
33
+ object.attributes = attributes
34
+ run_update_callbacks object do
35
+ save_resource(object)
36
+ end
37
+ end
38
+
39
+ def destroy_resource(object)
40
+ run_destroy_callbacks object do
41
+ object.destroy
42
+ end
43
+ end
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,138 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ # This module deals with the retrieval of collections for resources
5
+ # within the resource controller.
6
+ module Collection
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ before_filter :setup_pagination_for_csv
11
+ end
12
+
13
+ module BaseCollection
14
+ protected
15
+
16
+ def collection
17
+ get_collection_ivar || set_collection_ivar(active_admin_collection)
18
+ end
19
+
20
+ def active_admin_collection
21
+ scoped_collection
22
+ end
23
+
24
+
25
+ # Override this method in your controllers to modify the start point
26
+ # of our searches and index.
27
+ #
28
+ # This method should return an ActiveRecord::Relation object so that
29
+ # the searching and filtering can be applied on top
30
+ #
31
+ # Note, unless you are doing something special, you should use the
32
+ # scope_to method from the Scoping module instead of overriding this
33
+ # method.
34
+ def scoped_collection
35
+ end_of_association_chain
36
+ end
37
+ end
38
+
39
+
40
+ module Sorting
41
+ protected
42
+
43
+ def active_admin_collection
44
+ sort_order(super)
45
+ end
46
+
47
+ def sort_order(chain)
48
+ params[:order] ||= active_admin_config.sort_order
49
+ table_name = active_admin_config.resource_table_name
50
+ if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
51
+ chain.order("#{table_name}.#{$1} #{$2}")
52
+ else
53
+ chain # just return the chain
54
+ end
55
+ end
56
+ end
57
+
58
+
59
+ module Search
60
+ protected
61
+
62
+ def active_admin_collection
63
+ search(super)
64
+ end
65
+
66
+ def search(chain)
67
+ @search = chain.metasearch(clean_search_params(params[:q]))
68
+ @search.relation
69
+ end
70
+
71
+ def clean_search_params(search_params)
72
+ return {} unless search_params.is_a?(Hash)
73
+ search_params = search_params.dup
74
+ search_params.delete_if do |key, value|
75
+ value == ""
76
+ end
77
+ search_params
78
+ end
79
+ end
80
+
81
+
82
+ module Scoping
83
+ protected
84
+
85
+ def active_admin_collection
86
+ scope_current_collection(super)
87
+ end
88
+
89
+ def scope_current_collection(chain)
90
+ if current_scope
91
+ @before_scope_collection = chain
92
+ scope_chain(current_scope, chain)
93
+ else
94
+ chain
95
+ end
96
+ end
97
+
98
+ include ActiveAdmin::ScopeChain
99
+
100
+ def current_scope
101
+ @current_scope ||= if params[:scope]
102
+ active_admin_config.get_scope_by_id(params[:scope]) if params[:scope]
103
+ else
104
+ active_admin_config.default_scope
105
+ end
106
+ end
107
+ end
108
+
109
+
110
+ module Pagination
111
+ protected
112
+
113
+ def active_admin_collection
114
+ paginate(super)
115
+ end
116
+
117
+ # Allow more records for csv files
118
+ def setup_pagination_for_csv
119
+ @per_page = 10_000 if request.format == 'text/csv'
120
+ end
121
+
122
+ def paginate(chain)
123
+ chain.page(params[:page]).per(@per_page || active_admin_application.default_per_page)
124
+ end
125
+ end
126
+
127
+ # Include all the Modules. BaseCollection must be first
128
+ # and pagination should be last
129
+ include BaseCollection
130
+ include Sorting
131
+ include Search
132
+ include Scoping
133
+ include Pagination
134
+
135
+ end
136
+ end
137
+ end
138
+