nsm-activeadmin 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +34 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.rdoc +76 -0
  6. data/Gemfile +39 -0
  7. data/LICENSE +25 -0
  8. data/README.rdoc +487 -0
  9. data/Rakefile +27 -0
  10. data/activeadmin.gemspec +28 -0
  11. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/loading.gif +0 -0
  18. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  20. data/app/assets/images/active_admin/orderable.png +0 -0
  21. data/app/assets/javascripts/active_admin/base.js +12 -0
  22. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  23. data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
  24. data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
  25. data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
  26. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  27. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  28. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -0
  29. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  30. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  31. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  40. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  41. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  42. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  43. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  44. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  45. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  46. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  47. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  48. data/app/views/active_admin/resource/edit.html.arb +1 -0
  49. data/app/views/active_admin/resource/index.csv.erb +20 -0
  50. data/app/views/active_admin/resource/index.html.arb +1 -0
  51. data/app/views/active_admin/resource/new.html.arb +1 -0
  52. data/app/views/active_admin/resource/show.html.arb +1 -0
  53. data/app/views/layouts/active_admin.html.arb +1 -0
  54. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  55. data/cucumber.yml +2 -0
  56. data/docs/1-general-configuration.md +52 -0
  57. data/docs/2-resource-customization.md +35 -0
  58. data/docs/3-index-pages.md +55 -0
  59. data/docs/3-index-pages/index-as-block.md +16 -0
  60. data/docs/3-index-pages/index-as-blog.md +61 -0
  61. data/docs/3-index-pages/index-as-grid.md +21 -0
  62. data/docs/3-index-pages/index-as-table.md +74 -0
  63. data/docs/4-csv-format.md +14 -0
  64. data/docs/5-forms.md +39 -0
  65. data/docs/6-show-screens.md +22 -0
  66. data/docs/7-sidebars.md +35 -0
  67. data/docs/8-custom-actions.md +123 -0
  68. data/features/comments/commenting.feature +112 -0
  69. data/features/comments/viewing_index.feature +19 -0
  70. data/features/dashboard.feature +26 -0
  71. data/features/edit_page.feature +106 -0
  72. data/features/first_boot.feature +16 -0
  73. data/features/global_navigation.feature +30 -0
  74. data/features/index/format_as_csv.feature +46 -0
  75. data/features/index/formats.feature +12 -0
  76. data/features/index/index_as_block.feature +15 -0
  77. data/features/index/index_as_blog.feature +50 -0
  78. data/features/index/index_as_grid.feature +45 -0
  79. data/features/index/index_as_table.feature +81 -0
  80. data/features/index/index_blank_slate.feature +55 -0
  81. data/features/index/index_scopes.feature +52 -0
  82. data/features/index/pagination.feature +17 -0
  83. data/features/menu.feature +26 -0
  84. data/features/new_page.feature +75 -0
  85. data/features/registering_assets.feature +35 -0
  86. data/features/registering_resources.feature +33 -0
  87. data/features/show/default_content.feature +43 -0
  88. data/features/show/page_title.feature +33 -0
  89. data/features/sidebar_sections.feature +127 -0
  90. data/features/specifying_actions.feature +87 -0
  91. data/features/step_definitions/action_item_steps.rb +7 -0
  92. data/features/step_definitions/additional_web_steps.rb +77 -0
  93. data/features/step_definitions/asset_steps.rb +7 -0
  94. data/features/step_definitions/attribute_steps.rb +13 -0
  95. data/features/step_definitions/comment_steps.rb +8 -0
  96. data/features/step_definitions/configuration_steps.rb +31 -0
  97. data/features/step_definitions/dashboard_steps.rb +11 -0
  98. data/features/step_definitions/factory_steps.rb +29 -0
  99. data/features/step_definitions/flash_steps.rb +3 -0
  100. data/features/step_definitions/format_steps.rb +35 -0
  101. data/features/step_definitions/index_scope_steps.rb +20 -0
  102. data/features/step_definitions/layout_steps.rb +3 -0
  103. data/features/step_definitions/menu_steps.rb +7 -0
  104. data/features/step_definitions/pagination_steps.rb +8 -0
  105. data/features/step_definitions/sidebar_steps.rb +7 -0
  106. data/features/step_definitions/tab_steps.rb +3 -0
  107. data/features/step_definitions/user_steps.rb +26 -0
  108. data/features/step_definitions/web_steps.rb +211 -0
  109. data/features/sti_resource.feature +61 -0
  110. data/features/support/env.rb +90 -0
  111. data/features/support/paths.rb +50 -0
  112. data/features/support/selectors.rb +45 -0
  113. data/features/users/logging_in.feature +34 -0
  114. data/features/users/logging_out.feature +13 -0
  115. data/lib/active_admin.rb +74 -0
  116. data/lib/active_admin/abstract_view_factory.rb +95 -0
  117. data/lib/active_admin/application.rb +228 -0
  118. data/lib/active_admin/arbre.rb +23 -0
  119. data/lib/active_admin/arbre/attributes.rb +20 -0
  120. data/lib/active_admin/arbre/class_list.rb +28 -0
  121. data/lib/active_admin/arbre/collection.rb +27 -0
  122. data/lib/active_admin/arbre/context.rb +14 -0
  123. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  124. data/lib/active_admin/arbre/document.rb +42 -0
  125. data/lib/active_admin/arbre/element.rb +151 -0
  126. data/lib/active_admin/arbre/html.rb +84 -0
  127. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  128. data/lib/active_admin/arbre/tag.rb +137 -0
  129. data/lib/active_admin/arbre/text_node.rb +35 -0
  130. data/lib/active_admin/asset_registration.rb +34 -0
  131. data/lib/active_admin/callbacks.rb +89 -0
  132. data/lib/active_admin/comments.rb +88 -0
  133. data/lib/active_admin/comments/comment.rb +21 -0
  134. data/lib/active_admin/comments/configuration.rb +18 -0
  135. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  136. data/lib/active_admin/comments/resource_helper.rb +17 -0
  137. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  138. data/lib/active_admin/comments/views.rb +3 -0
  139. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  140. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  141. data/lib/active_admin/component.rb +22 -0
  142. data/lib/active_admin/controller_action.rb +12 -0
  143. data/lib/active_admin/csv_builder.rb +45 -0
  144. data/lib/active_admin/dashboards.rb +48 -0
  145. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  146. data/lib/active_admin/dashboards/section.rb +34 -0
  147. data/lib/active_admin/deprecation.rb +36 -0
  148. data/lib/active_admin/devise.rb +43 -0
  149. data/lib/active_admin/dsl.rb +224 -0
  150. data/lib/active_admin/engine.rb +4 -0
  151. data/lib/active_admin/event.rb +31 -0
  152. data/lib/active_admin/form_builder.rb +109 -0
  153. data/lib/active_admin/helpers/optional_display.rb +34 -0
  154. data/lib/active_admin/helpers/settings.rb +63 -0
  155. data/lib/active_admin/iconic.rb +51 -0
  156. data/lib/active_admin/iconic/icons.rb +142 -0
  157. data/lib/active_admin/locales/da.yml +28 -0
  158. data/lib/active_admin/locales/en.yml +40 -0
  159. data/lib/active_admin/locales/es.yml +39 -0
  160. data/lib/active_admin/locales/it.yml +39 -0
  161. data/lib/active_admin/locales/pt-BR.yml +36 -0
  162. data/lib/active_admin/locales/ru.yml +40 -0
  163. data/lib/active_admin/locales/zh_cn.yml +40 -0
  164. data/lib/active_admin/menu.rb +42 -0
  165. data/lib/active_admin/menu_item.rb +73 -0
  166. data/lib/active_admin/namespace.rb +206 -0
  167. data/lib/active_admin/page_config.rb +15 -0
  168. data/lib/active_admin/reloader.rb +30 -0
  169. data/lib/active_admin/renderer.rb +87 -0
  170. data/lib/active_admin/resource.rb +151 -0
  171. data/lib/active_admin/resource/action_items.rb +88 -0
  172. data/lib/active_admin/resource/belongs_to.rb +31 -0
  173. data/lib/active_admin/resource/menu.rb +45 -0
  174. data/lib/active_admin/resource/naming.rb +36 -0
  175. data/lib/active_admin/resource/scopes.rb +33 -0
  176. data/lib/active_admin/resource/sidebars.rb +36 -0
  177. data/lib/active_admin/resource_controller.rb +103 -0
  178. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  179. data/lib/active_admin/resource_controller/actions.rb +79 -0
  180. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  181. data/lib/active_admin/resource_controller/collection.rb +144 -0
  182. data/lib/active_admin/resource_controller/filters.rb +58 -0
  183. data/lib/active_admin/resource_controller/form.rb +42 -0
  184. data/lib/active_admin/resource_controller/menu.rb +29 -0
  185. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  186. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  187. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  188. data/lib/active_admin/router.rb +85 -0
  189. data/lib/active_admin/sass/active_admin.scss +3 -0
  190. data/lib/active_admin/sass/css_loader.rb +16 -0
  191. data/lib/active_admin/sass/helpers.rb +40 -0
  192. data/lib/active_admin/scope.rb +17 -0
  193. data/lib/active_admin/sidebar_section.rb +41 -0
  194. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  195. data/lib/active_admin/version.rb +3 -0
  196. data/lib/active_admin/view_factory.rb +23 -0
  197. data/lib/active_admin/view_helpers.rb +22 -0
  198. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  199. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  200. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  201. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  202. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  203. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  204. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  205. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  206. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  207. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  208. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  209. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  210. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  211. data/lib/active_admin/views.rb +8 -0
  212. data/lib/active_admin/views/action_items.rb +17 -0
  213. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  214. data/lib/active_admin/views/components/blank_slate.rb +33 -0
  215. data/lib/active_admin/views/components/columns.rb +47 -0
  216. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  217. data/lib/active_admin/views/components/panel.rb +26 -0
  218. data/lib/active_admin/views/components/scopes.rb +70 -0
  219. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  220. data/lib/active_admin/views/components/status_tag.rb +55 -0
  221. data/lib/active_admin/views/components/table_for.rb +193 -0
  222. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  223. data/lib/active_admin/views/header_renderer.rb +53 -0
  224. data/lib/active_admin/views/index_as_block.rb +29 -0
  225. data/lib/active_admin/views/index_as_blog.rb +129 -0
  226. data/lib/active_admin/views/index_as_grid.rb +70 -0
  227. data/lib/active_admin/views/index_as_table.rb +148 -0
  228. data/lib/active_admin/views/pages/base.rb +155 -0
  229. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  230. data/lib/active_admin/views/pages/edit.rb +28 -0
  231. data/lib/active_admin/views/pages/index.rb +74 -0
  232. data/lib/active_admin/views/pages/layout.rb +26 -0
  233. data/lib/active_admin/views/pages/new.rb +28 -0
  234. data/lib/active_admin/views/pages/show.rb +56 -0
  235. data/lib/active_admin/views/tabs_renderer.rb +58 -0
  236. data/lib/activeadmin.rb +1 -0
  237. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  238. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  239. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  240. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  241. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  242. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  243. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  244. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
  245. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  246. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  247. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  248. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  249. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  250. data/script/local +44 -0
  251. data/script/use_rails +45 -0
  252. data/spec/integration/belongs_to_spec.rb +42 -0
  253. data/spec/integration/default_namespace.rb +77 -0
  254. data/spec/integration/javascript_spec.rb +20 -0
  255. data/spec/integration/stylesheets_spec.rb +41 -0
  256. data/spec/spec_helper.rb +157 -0
  257. data/spec/support/detect_rails_version.rb +11 -0
  258. data/spec/support/integration_example_group.rb +33 -0
  259. data/spec/support/jslint.yml +80 -0
  260. data/spec/support/rails_template.rb +32 -0
  261. data/spec/support/rails_template_with_data.rb +33 -0
  262. data/spec/support/templates/cucumber.rb +24 -0
  263. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  264. data/spec/unit/action_builder_spec.rb +88 -0
  265. data/spec/unit/application_spec.rb +78 -0
  266. data/spec/unit/arbre/html/context_spec.rb +22 -0
  267. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  268. data/spec/unit/arbre/html/element_spec.rb +224 -0
  269. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  270. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  271. data/spec/unit/arbre/html_spec.rb +210 -0
  272. data/spec/unit/asset_registration_spec.rb +37 -0
  273. data/spec/unit/auto_link_spec.rb +39 -0
  274. data/spec/unit/belongs_to_spec.rb +45 -0
  275. data/spec/unit/breadcrumbs_spec.rb +110 -0
  276. data/spec/unit/comments_spec.rb +57 -0
  277. data/spec/unit/component_spec.rb +18 -0
  278. data/spec/unit/controller_filters_spec.rb +34 -0
  279. data/spec/unit/csv_builder_spec.rb +83 -0
  280. data/spec/unit/dashboard_controller_spec.rb +26 -0
  281. data/spec/unit/dashboard_section_spec.rb +56 -0
  282. data/spec/unit/dashboards_spec.rb +59 -0
  283. data/spec/unit/display_name_spec.rb +29 -0
  284. data/spec/unit/event_spec.rb +41 -0
  285. data/spec/unit/filter_form_builder_spec.rb +182 -0
  286. data/spec/unit/form_builder_spec.rb +239 -0
  287. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  288. data/spec/unit/helpers/settings_spec.rb +30 -0
  289. data/spec/unit/menu_item_spec.rb +143 -0
  290. data/spec/unit/menu_spec.rb +53 -0
  291. data/spec/unit/namespace_spec.rb +214 -0
  292. data/spec/unit/pretty_format_spec.rb +35 -0
  293. data/spec/unit/rails_spec.rb +43 -0
  294. data/spec/unit/registration_spec.rb +76 -0
  295. data/spec/unit/reloader_spec.rb +28 -0
  296. data/spec/unit/renderer_spec.rb +108 -0
  297. data/spec/unit/resource/action_items_spec.rb +62 -0
  298. data/spec/unit/resource/menu_spec.rb +80 -0
  299. data/spec/unit/resource/naming_spec.rb +56 -0
  300. data/spec/unit/resource/scopes_spec.rb +30 -0
  301. data/spec/unit/resource/sidebars_spec.rb +50 -0
  302. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  303. data/spec/unit/resource_controller_spec.rb +152 -0
  304. data/spec/unit/resource_spec.rb +260 -0
  305. data/spec/unit/routing_spec.rb +88 -0
  306. data/spec/unit/sass/helpers_spec.rb +47 -0
  307. data/spec/unit/scope_spec.rb +31 -0
  308. data/spec/unit/tabs_renderer_spec.rb +85 -0
  309. data/spec/unit/view_factory_spec.rb +19 -0
  310. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  311. data/spec/unit/views/components/blank_slate_spec.rb +31 -0
  312. data/spec/unit/views/components/columns_spec.rb +75 -0
  313. data/spec/unit/views/components/panel_spec.rb +31 -0
  314. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  315. data/spec/unit/views/components/status_tag_spec.rb +81 -0
  316. data/spec/unit/views/components/table_for_spec.rb +130 -0
  317. data/spec/unit/views/pages/layout_spec.rb +22 -0
  318. data/tasks/docs.rake +39 -0
  319. data/tasks/test.rake +49 -0
  320. data/tasks/yard.rake +6 -0
  321. metadata +510 -0
@@ -0,0 +1,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,144 @@
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_collection(super)
87
+ end
88
+
89
+ def scope_collection(chain)
90
+ if current_scope
91
+ @before_scope_collection = chain
92
+
93
+ # ActiveRecord::Base isn't a relation, so let's help you out
94
+ return chain if current_scope.scope_method == :all
95
+
96
+ if current_scope.scope_method
97
+ chain.send(current_scope.scope_method)
98
+ else
99
+ instance_exec chain, &current_scope.scope_block
100
+ end
101
+ else
102
+ chain
103
+ end
104
+ end
105
+
106
+ def current_scope
107
+ @current_scope ||= if params[:scope]
108
+ active_admin_config.get_scope_by_id(params[:scope]) if params[:scope]
109
+ else
110
+ active_admin_config.default_scope
111
+ end
112
+ end
113
+ end
114
+
115
+
116
+ module Pagination
117
+ protected
118
+
119
+ def active_admin_collection
120
+ paginate(super)
121
+ end
122
+
123
+ # Allow more records for csv files
124
+ def setup_pagination_for_csv
125
+ @per_page = 10_000 if request.format == 'text/csv'
126
+ end
127
+
128
+ def paginate(chain)
129
+ chain.page(params[:page]).per(@per_page || active_admin_application.default_per_page)
130
+ end
131
+ end
132
+
133
+ # Include all the Modules. BaseCollection must be first
134
+ # and pagination should be last
135
+ include BaseCollection
136
+ include Sorting
137
+ include Search
138
+ include Scoping
139
+ include Pagination
140
+
141
+ end
142
+ end
143
+ end
144
+
@@ -0,0 +1,58 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ module Filters
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ helper_method :filters_config
9
+ end
10
+
11
+ module ClassMethods
12
+ def filter(attribute, options = {})
13
+ return false if attribute.nil?
14
+ @filters ||= []
15
+ @filters << options.merge(:attribute => attribute)
16
+ end
17
+
18
+ def filters_config
19
+ @filters && @filters.any? ? @filters : default_filters_config
20
+ end
21
+
22
+ def reset_filters!
23
+ @filters = []
24
+ end
25
+
26
+ # Returns a sane set of filters by default for the object
27
+ def default_filters_config
28
+ default_association_filters + default_content_filters
29
+ end
30
+
31
+ # Returns a default set of filters for the associations
32
+ def default_association_filters
33
+ if resource_class.respond_to?(:reflections)
34
+ resource_class.reflections.collect{|name, r| { :attribute => name }}
35
+ else
36
+ []
37
+ end
38
+ end
39
+
40
+ # Returns a default set of filters for the content columns
41
+ def default_content_filters
42
+ if resource_class.respond_to?(:content_columns)
43
+ resource_class.content_columns.collect{|c| { :attribute => c.name.to_sym } }
44
+ else
45
+ []
46
+ end
47
+ end
48
+ end
49
+
50
+ protected
51
+
52
+ def filters_config
53
+ self.class.filters_config
54
+ end
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,42 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+ module Form
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ helper_method :form_config
8
+ end
9
+
10
+ module ClassMethods
11
+
12
+ def form_config=(config)
13
+ @form_config = config
14
+ end
15
+
16
+ def form_config
17
+ @form_config ||= default_form_config
18
+ end
19
+
20
+ def reset_form_config!
21
+ @form_config = nil
22
+ end
23
+
24
+ def default_form_config
25
+ config = {}
26
+ config[:block] = lambda do |f|
27
+ f.inputs
28
+ f.buttons
29
+ end
30
+ config
31
+ end
32
+ end
33
+
34
+ protected
35
+
36
+ def form_config
37
+ @form_config ||= self.class.form_config
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,29 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+ module Menu
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ before_filter :set_current_tab
8
+ helper_method :current_menu
9
+ end
10
+
11
+ protected
12
+
13
+ def current_menu
14
+ active_admin_config.namespace.menu
15
+ end
16
+
17
+ # Set's @current_tab to be name of the tab to mark as current
18
+ # Get's called through a before filter
19
+ def set_current_tab
20
+ @current_tab = if active_admin_config.belongs_to? && parent?
21
+ active_admin_config.belongs_to_config.target.menu_item_name
22
+ else
23
+ [active_admin_config.parent_menu_item_name, active_admin_config.menu_item_name].compact.join("/")
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,53 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ module PageConfigurations
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ helper_method :index_config
9
+ helper_method :show_config
10
+ end
11
+
12
+ module ClassMethods
13
+
14
+ def set_page_config(page, options, &block)
15
+ active_admin_config.page_configs[page] = ActiveAdmin::PageConfig.new(options, &block)
16
+ end
17
+
18
+ def get_page_config(page)
19
+ active_admin_config.page_configs[page]
20
+ end
21
+
22
+ def reset_page_config!(page)
23
+ active_admin_config.page_configs[page] = nil
24
+ end
25
+
26
+ # Define the getting and re-setter for each configurable page
27
+ [:index, :show].each do |page|
28
+ # eg: index_config
29
+ define_method :"#{page}_config" do
30
+ get_page_config(page)
31
+ end
32
+
33
+ # eg: reset_index_config!
34
+ define_method :"reset_#{page}_config!" do
35
+ reset_page_config! page
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+ protected
42
+
43
+ def index_config
44
+ @index_config ||= self.class.index_config
45
+ end
46
+
47
+ def show_config
48
+ @show_config ||= self.class.show_config
49
+ end
50
+
51
+ end
52
+ end
53
+ end