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,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
@@ -0,0 +1,36 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ # This module deals with scoping entire controllers to a relation
5
+ module Scoping
6
+ extend ActiveSupport::Concern
7
+
8
+ protected
9
+
10
+ # Override the default InheritedResource #begin_of_association_chain to allow
11
+ # the scope to be defined in the active admin configuration.
12
+ #
13
+ # If scope_to is a proc, we eval it, otherwise we call the method on the controller.
14
+ def begin_of_association_chain
15
+ return nil unless active_admin_config.scope_to
16
+ case active_admin_config.scope_to
17
+ when Proc
18
+ instance_eval &active_admin_config.scope_to
19
+ when Symbol
20
+ send active_admin_config.scope_to
21
+ else
22
+ raise ArgumentError, "#scope_to accepts a symbol or a block"
23
+ end
24
+ end
25
+
26
+ # Overriding from InheritedResources::BaseHelpers
27
+ #
28
+ # Returns the method for the association chain when using
29
+ # the scope_to option
30
+ def method_for_association_chain
31
+ active_admin_config.scope_to_association_method || super
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,18 @@
1
+ module ActiveAdmin
2
+ class ResourceController < ::InheritedResources::Base
3
+
4
+ module Sidebars
5
+
6
+ protected
7
+
8
+ def skip_sidebar!
9
+ @skip_sidebar = true
10
+ end
11
+
12
+ def skip_sidebar?
13
+ @skip_sidebar == true
14
+ end
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,85 @@
1
+ module ActiveAdmin
2
+ class Router
3
+
4
+ def initialize(application)
5
+ @application = application
6
+ end
7
+
8
+ # Creates all the necessary routes for the ActiveAdmin configurations
9
+ #
10
+ # Use this within the routes.rb file:
11
+ #
12
+ # Application.routes.draw do |map|
13
+ # ActiveAdmin.routes(self)
14
+ # end
15
+ #
16
+ def apply(router)
17
+ # Define any necessary dashboard routes
18
+ router.instance_exec(@application.namespaces.values) do |namespaces|
19
+ namespaces.each do |namespace|
20
+ if namespace.root?
21
+ match '/' => 'dashboard#index', :as => 'dashboard'
22
+ else
23
+ name = namespace.name
24
+ match name.to_s => "#{name}/dashboard#index", :as => "#{name.to_s}_dashboard"
25
+ end
26
+ end
27
+ end
28
+
29
+ # Now define the routes for each resource
30
+ router.instance_exec(@application.namespaces) do |namespaces|
31
+ resources = namespaces.values.collect{|n| n.resources.values }.flatten
32
+ resources.each do |config|
33
+
34
+ # Define the block the will get eval'd within the namespace
35
+ route_definition_block = Proc.new do
36
+ resources config.underscored_resource_name.pluralize do
37
+
38
+ # Define any member actions
39
+ member do
40
+ config.member_actions.each do |action|
41
+ # eg: get :comment
42
+ send(action.http_verb, action.name)
43
+ end
44
+ end
45
+
46
+ # Define any collection actions
47
+ collection do
48
+ config.collection_actions.each do |action|
49
+ send(action.http_verb, action.name)
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ # Add in the parent if it exists
56
+ if config.belongs_to?
57
+ routes_for_belongs_to = route_definition_block.dup
58
+ route_definition_block = Proc.new do
59
+ # If its optional, make the normal resource routes
60
+ instance_eval &routes_for_belongs_to if config.belongs_to_config.optional?
61
+
62
+ # Make the nested belongs_to routes
63
+ resources config.belongs_to_config.target.underscored_resource_name.pluralize do
64
+ instance_eval &routes_for_belongs_to
65
+ end
66
+ end
67
+ end
68
+
69
+ # Add on the namespace if required
70
+ if !config.namespace.root?
71
+ routes_in_namespace = route_definition_block.dup
72
+ route_definition_block = Proc.new do
73
+ namespace config.namespace.name do
74
+ instance_eval(&routes_in_namespace)
75
+ end
76
+ end
77
+ end
78
+
79
+ instance_eval &route_definition_block
80
+ end
81
+ end
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,3 @@
1
+ // This file is included when using Rails 3.0
2
+ @import "active_admin/mixins";
3
+ @import "active_admin/base";
@@ -0,0 +1,16 @@
1
+ require 'sass/importers'
2
+
3
+ # This monkey patches the SASS filesystem importer to work with files
4
+ # that are named *.css.scss. This allows us to be compatible with both
5
+ # Rails 3.0.* and Rails 3.1
6
+ #
7
+ # This should only be loaded in Rails 3.0 apps.
8
+ class Sass::Importers::Filesystem
9
+
10
+ # We want to ensure that all *.css.scss files are loaded as scss files
11
+ def extensions_with_css
12
+ extensions_without_css.merge('{css.,}scss' => :scss)
13
+ end
14
+ alias_method_chain :extensions, :css
15
+
16
+ end
@@ -0,0 +1,45 @@
1
+ require 'sass'
2
+ require 'sass/script/functions'
3
+ require 'sass-rails' if ActiveAdmin::DependencyChecker.rails_3_1?
4
+
5
+ module ActiveAdmin
6
+ module Sass
7
+ module Helpers
8
+
9
+ if ActiveAdmin::DependencyChecker.rails_3_1?
10
+ include ::Sass::Rails::Helpers
11
+ end
12
+
13
+ # Provides a helper in SASS to ensure that the paths to image
14
+ # assets are always correct across Rails versions.
15
+ #
16
+ # Example:
17
+ #
18
+ # background: url(active_admin_image_path('some_image.png')) 0 0 repeat-x;
19
+ #
20
+ # Will result in:
21
+ #
22
+ # background: url("/images/active_admin/some_image.png") 0 0 repeat-x;
23
+ #
24
+ # Or in Rails 3.1 with asset pipeline enebaled:
25
+ #
26
+ # background: url("/assets/active_admin/some_image.png") 0 0 repeat-x;
27
+ #
28
+ # @param [Sass::Script::String] asset the path to the image after */active_admin/
29
+ #
30
+ # @return [Sass::Script::String] path to the image
31
+ #
32
+ def active_admin_image_path(asset)
33
+ if ActiveAdmin.use_asset_pipeline?
34
+ asset_path(::Sass::Script::String.new("active_admin/#{asset.value}"), ::Sass::Script::String.new('image'))
35
+ else
36
+ ::Sass::Script::String.new("/images/active_admin/#{asset.value}", true)
37
+ end
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+
44
+ # Install for use in Sass
45
+ Sass::Script::Functions.send :include, ActiveAdmin::Sass::Helpers
@@ -0,0 +1,31 @@
1
+ module ActiveAdmin
2
+ class Scope
3
+
4
+ attr_reader :name, :scope_method, :id, :scope_block
5
+
6
+ # Create a Scope
7
+ #
8
+ # Examples:
9
+ #
10
+ # Scope.new(:published)
11
+ # # => Scope with name 'Published' and scope method :published
12
+ #
13
+ # Scope.new('Published', :public)
14
+ # # => Scope with name 'Published' and scope method :public
15
+ #
16
+ # Scope.new('Published') { |articles| articles.where(:published => true) }
17
+ # # => Scope with name 'Published' using a block to scope
18
+ #
19
+ def initialize(name, method = nil, &block)
20
+ @name = name.to_s.titleize
21
+ @scope_method = method
22
+ # Scope ':all' means no scoping
23
+ @scope_method ||= name.to_sym unless name.to_sym == :all
24
+ @id = @name.gsub(' ', '').underscore
25
+ if block_given?
26
+ @scope_method = nil
27
+ @scope_block = block
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,41 @@
1
+ module ActiveAdmin
2
+
3
+ class SidebarSection
4
+ include ActiveAdmin::OptionalDisplay
5
+
6
+ attr_accessor :name, :options, :block
7
+
8
+ def initialize(name, options = {}, &block)
9
+ @name, @options, @block = name, options, block
10
+ normalize_display_options!
11
+ end
12
+
13
+ # The id gets used for the div in the view
14
+ def id
15
+ name.to_s.downcase.underscore + '_sidebar_section'
16
+ end
17
+
18
+ def icon?
19
+ options[:icon]
20
+ end
21
+
22
+ def icon
23
+ options[:icon] if icon?
24
+ end
25
+
26
+ # The title gets displayed within the section in the view
27
+ def title
28
+ begin
29
+ I18n.t!("active_admin.sidebars.#{name.to_s}")
30
+ rescue I18n::MissingTranslationData
31
+ name.to_s.titlecase
32
+ end
33
+ end
34
+
35
+ # If a block is not passed in, the name of the partial to render
36
+ def partial_name
37
+ options[:partial] || "#{name.to_s.downcase.gsub(' ', '_')}_sidebar"
38
+ end
39
+ end
40
+
41
+ end