rails_admin-lbgraham 0.4.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 (416) hide show
  1. data/Gemfile +51 -0
  2. data/LICENSE.md +20 -0
  3. data/README.md +175 -0
  4. data/Rakefile +19 -0
  5. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  6. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  7. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  8. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  9. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  10. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  11. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  12. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  13. data/app/assets/images/rails_admin/calendar.png +0 -0
  14. data/app/assets/images/rails_admin/clock.png +0 -0
  15. data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  16. data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  17. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  18. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  19. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  20. data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  21. data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  22. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  23. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  24. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  25. data/app/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  26. data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  27. data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  28. data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  29. data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  30. data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  31. data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  32. data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  33. data/app/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  34. data/app/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  35. data/app/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  36. data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  37. data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
  38. data/app/assets/images/rails_admin/colorpicker/select2.png +0 -0
  39. data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
  40. data/app/assets/images/rails_admin/logo.png +0 -0
  41. data/app/assets/images/rails_admin/magnifier.png +0 -0
  42. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  43. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  44. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  45. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  46. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  47. data/app/assets/javascripts/rails_admin/custom/ui.js +12 -0
  48. data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -0
  49. data/app/assets/javascripts/rails_admin/jquery.pjax.js +743 -0
  50. data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1371 -0
  51. data/app/assets/javascripts/rails_admin/ra.datetimepicker.js +67 -0
  52. data/app/assets/javascripts/rails_admin/ra.filter-box.js +142 -0
  53. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +292 -0
  54. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +190 -0
  55. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +41 -0
  56. data/app/assets/javascripts/rails_admin/ra.remote-form.js +151 -0
  57. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +210 -0
  58. data/app/assets/javascripts/rails_admin/rails_admin.js.erb +28 -0
  59. data/app/assets/javascripts/rails_admin/themes/cerulean/ui.js +0 -0
  60. data/app/assets/javascripts/rails_admin/themes/default/ui.js +12 -0
  61. data/app/assets/javascripts/rails_admin/ui.js.coffee +66 -0
  62. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  63. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  64. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  65. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  66. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  67. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  68. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +733 -0
  69. data/app/assets/stylesheets/rails_admin/base/README.txt +2 -0
  70. data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
  71. data/app/assets/stylesheets/rails_admin/base/theming.css.scss +270 -0
  72. data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
  73. data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +12 -0
  74. data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +13 -0
  75. data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +15 -0
  76. data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +82 -0
  77. data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +182 -0
  78. data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +69 -0
  79. data/app/assets/stylesheets/rails_admin/ra.calendar-additions.css.scss +25 -0
  80. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +90 -0
  81. data/app/assets/stylesheets/rails_admin/ra.widgets.css.scss +8 -0
  82. data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
  83. data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.css.scss +0 -0
  84. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.css.scss +97 -0
  85. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.css.scss +168 -0
  86. data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +8 -0
  87. data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +11 -0
  88. data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +12 -0
  89. data/app/controllers/rails_admin/application_controller.rb +84 -0
  90. data/app/controllers/rails_admin/main_controller.rb +153 -0
  91. data/app/helpers/rails_admin/application_helper.rb +147 -0
  92. data/app/helpers/rails_admin/form_builder.rb +117 -0
  93. data/app/helpers/rails_admin/main_helper.rb +36 -0
  94. data/app/views/kaminari/twitter-bootstrap/_gap.html.haml +2 -0
  95. data/app/views/kaminari/twitter-bootstrap/_next_page.html.haml +4 -0
  96. data/app/views/kaminari/twitter-bootstrap/_page.html.haml +4 -0
  97. data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +10 -0
  98. data/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml +4 -0
  99. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +12 -0
  100. data/app/views/layouts/rails_admin/application.html.haml +27 -0
  101. data/app/views/layouts/rails_admin/pjax.html.haml +16 -0
  102. data/app/views/rails_admin/main/_dashboard_history.html.haml +20 -0
  103. data/app/views/rails_admin/main/_delete_notice.html.haml +19 -0
  104. data/app/views/rails_admin/main/_form_colorpicker.html.haml +1 -0
  105. data/app/views/rails_admin/main/_form_datetime.html.haml +1 -0
  106. data/app/views/rails_admin/main/_form_enumeration.html.haml +18 -0
  107. data/app/views/rails_admin/main/_form_field.html.haml +1 -0
  108. data/app/views/rails_admin/main/_form_file_upload.html.haml +13 -0
  109. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +47 -0
  110. data/app/views/rails_admin/main/_form_filtering_select.html.haml +37 -0
  111. data/app/views/rails_admin/main/_form_nested_many.html.haml +14 -0
  112. data/app/views/rails_admin/main/_form_nested_one.html.haml +10 -0
  113. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +10 -0
  114. data/app/views/rails_admin/main/_form_text.html.haml +31 -0
  115. data/app/views/rails_admin/main/_submit_buttons.html.haml +15 -0
  116. data/app/views/rails_admin/main/bulk_delete.html.haml +11 -0
  117. data/app/views/rails_admin/main/dashboard.html.haml +35 -0
  118. data/app/views/rails_admin/main/delete.html.haml +18 -0
  119. data/app/views/rails_admin/main/edit.html.haml +2 -0
  120. data/app/views/rails_admin/main/export.html.haml +75 -0
  121. data/app/views/rails_admin/main/history.html.haml +49 -0
  122. data/app/views/rails_admin/main/index.html.haml +140 -0
  123. data/app/views/rails_admin/main/new.html.haml +2 -0
  124. data/app/views/rails_admin/main/show.html.haml +16 -0
  125. data/config/initializers/active_record_extensions.rb +19 -0
  126. data/config/initializers/devise_patch.rb +9 -0
  127. data/config/initializers/haml.rb +2 -0
  128. data/config/initializers/mongoid_extensions.rb +4 -0
  129. data/config/locales/rails_admin.en.yml +130 -0
  130. data/config/routes.rb +12 -0
  131. data/lib/generators/rails_admin/install_generator.rb +85 -0
  132. data/lib/generators/rails_admin/templates/drop.rb +18 -0
  133. data/lib/generators/rails_admin/templates/initializer.erb +100 -0
  134. data/lib/generators/rails_admin/templates/migration.rb +18 -0
  135. data/lib/generators/rails_admin/uninstall_generator.rb +22 -0
  136. data/lib/generators/rails_admin/utils.rb +30 -0
  137. data/lib/rails_admin.rb +34 -0
  138. data/lib/rails_admin/abstract_model.rb +128 -0
  139. data/lib/rails_admin/adapters/active_record.rb +296 -0
  140. data/lib/rails_admin/adapters/active_record/abstract_object.rb +32 -0
  141. data/lib/rails_admin/adapters/mongoid.rb +430 -0
  142. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +43 -0
  143. data/lib/rails_admin/adapters/mongoid/extension.rb +45 -0
  144. data/lib/rails_admin/config.rb +333 -0
  145. data/lib/rails_admin/config/actions.rb +121 -0
  146. data/lib/rails_admin/config/actions/base.rb +132 -0
  147. data/lib/rails_admin/config/actions/bulk_delete.rb +55 -0
  148. data/lib/rails_admin/config/actions/dashboard.rb +52 -0
  149. data/lib/rails_admin/config/actions/delete.rb +56 -0
  150. data/lib/rails_admin/config/actions/edit.rb +55 -0
  151. data/lib/rails_admin/config/actions/export.rb +40 -0
  152. data/lib/rails_admin/config/actions/history_index.rb +38 -0
  153. data/lib/rails_admin/config/actions/history_show.rb +38 -0
  154. data/lib/rails_admin/config/actions/index.rb +85 -0
  155. data/lib/rails_admin/config/actions/new.rb +65 -0
  156. data/lib/rails_admin/config/actions/show.rb +34 -0
  157. data/lib/rails_admin/config/actions/show_in_app.rb +27 -0
  158. data/lib/rails_admin/config/configurable.rb +92 -0
  159. data/lib/rails_admin/config/fields.rb +87 -0
  160. data/lib/rails_admin/config/fields/association.rb +107 -0
  161. data/lib/rails_admin/config/fields/base.rb +320 -0
  162. data/lib/rails_admin/config/fields/factories/association.rb +32 -0
  163. data/lib/rails_admin/config/fields/factories/carrierwave.rb +31 -0
  164. data/lib/rails_admin/config/fields/factories/devise.rb +27 -0
  165. data/lib/rails_admin/config/fields/factories/dragonfly.rb +27 -0
  166. data/lib/rails_admin/config/fields/factories/enum.rb +11 -0
  167. data/lib/rails_admin/config/fields/factories/paperclip.rb +26 -0
  168. data/lib/rails_admin/config/fields/factories/password.rb +17 -0
  169. data/lib/rails_admin/config/fields/group.rb +78 -0
  170. data/lib/rails_admin/config/fields/types.rb +27 -0
  171. data/lib/rails_admin/config/fields/types/all.rb +25 -0
  172. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +41 -0
  173. data/lib/rails_admin/config/fields/types/boolean.rb +38 -0
  174. data/lib/rails_admin/config/fields/types/bson_object_id.rb +45 -0
  175. data/lib/rails_admin/config/fields/types/carrierwave.rb +31 -0
  176. data/lib/rails_admin/config/fields/types/color.rb +37 -0
  177. data/lib/rails_admin/config/fields/types/date.rb +24 -0
  178. data/lib/rails_admin/config/fields/types/datetime.rb +164 -0
  179. data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
  180. data/lib/rails_admin/config/fields/types/dragonfly.rb +41 -0
  181. data/lib/rails_admin/config/fields/types/enum.rb +39 -0
  182. data/lib/rails_admin/config/fields/types/file_upload.rb +65 -0
  183. data/lib/rails_admin/config/fields/types/float.rb +14 -0
  184. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +14 -0
  185. data/lib/rails_admin/config/fields/types/has_many_association.rb +32 -0
  186. data/lib/rails_admin/config/fields/types/has_one_association.rb +39 -0
  187. data/lib/rails_admin/config/fields/types/hidden.rb +27 -0
  188. data/lib/rails_admin/config/fields/types/integer.rb +22 -0
  189. data/lib/rails_admin/config/fields/types/paperclip.rb +28 -0
  190. data/lib/rails_admin/config/fields/types/password.rb +39 -0
  191. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +80 -0
  192. data/lib/rails_admin/config/fields/types/serialized.rb +22 -0
  193. data/lib/rails_admin/config/fields/types/string.rb +43 -0
  194. data/lib/rails_admin/config/fields/types/text.rb +97 -0
  195. data/lib/rails_admin/config/fields/types/time.rb +36 -0
  196. data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
  197. data/lib/rails_admin/config/groupable.rb +18 -0
  198. data/lib/rails_admin/config/has_fields.rb +136 -0
  199. data/lib/rails_admin/config/has_groups.rb +23 -0
  200. data/lib/rails_admin/config/hideable.rb +28 -0
  201. data/lib/rails_admin/config/lazy_model.rb +21 -0
  202. data/lib/rails_admin/config/model.rb +109 -0
  203. data/lib/rails_admin/config/proxyable.rb +12 -0
  204. data/lib/rails_admin/config/proxyable/proxy.rb +43 -0
  205. data/lib/rails_admin/config/sections.rb +39 -0
  206. data/lib/rails_admin/config/sections/base.rb +46 -0
  207. data/lib/rails_admin/config/sections/create.rb +11 -0
  208. data/lib/rails_admin/config/sections/edit.rb +11 -0
  209. data/lib/rails_admin/config/sections/export.rb +11 -0
  210. data/lib/rails_admin/config/sections/list.rb +27 -0
  211. data/lib/rails_admin/config/sections/modal.rb +10 -0
  212. data/lib/rails_admin/config/sections/nested.rb +10 -0
  213. data/lib/rails_admin/config/sections/show.rb +10 -0
  214. data/lib/rails_admin/config/sections/update.rb +10 -0
  215. data/lib/rails_admin/engine.rb +27 -0
  216. data/lib/rails_admin/extension.rb +29 -0
  217. data/lib/rails_admin/extensions/cancan.rb +5 -0
  218. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +59 -0
  219. data/lib/rails_admin/extensions/history.rb +5 -0
  220. data/lib/rails_admin/extensions/history/auditing_adapter.rb +37 -0
  221. data/lib/rails_admin/extensions/history/history.rb +36 -0
  222. data/lib/rails_admin/extensions/paper_trail.rb +5 -0
  223. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +93 -0
  224. data/lib/rails_admin/i18n_support.rb +43 -0
  225. data/lib/rails_admin/support/core_extensions.rb +44 -0
  226. data/lib/rails_admin/support/csv_converter.rb +105 -0
  227. data/lib/rails_admin/version.rb +18 -0
  228. data/lib/tasks/rails_admin.rake +48 -0
  229. data/spec/ci.sh +2 -0
  230. data/spec/controllers/rails_admin/application_controller_spec.rb +30 -0
  231. data/spec/controllers/rails_admin/main_controller_spec.rb +337 -0
  232. data/spec/dummy_app/Gemfile +48 -0
  233. data/spec/dummy_app/Rakefile +7 -0
  234. data/spec/dummy_app/app/active_record/abstract.rb +5 -0
  235. data/spec/dummy_app/app/active_record/another_field_test.rb +4 -0
  236. data/spec/dummy_app/app/active_record/ball.rb +9 -0
  237. data/spec/dummy_app/app/active_record/carrierwave_uploader.rb +53 -0
  238. data/spec/dummy_app/app/active_record/category.rb +5 -0
  239. data/spec/dummy_app/app/active_record/cms.rb +5 -0
  240. data/spec/dummy_app/app/active_record/cms/basic_page.rb +9 -0
  241. data/spec/dummy_app/app/active_record/cms/unscoped_page.rb +3 -0
  242. data/spec/dummy_app/app/active_record/comment.rb +5 -0
  243. data/spec/dummy_app/app/active_record/comment/confirmed.rb +3 -0
  244. data/spec/dummy_app/app/active_record/division.rb +15 -0
  245. data/spec/dummy_app/app/active_record/draft.rb +13 -0
  246. data/spec/dummy_app/app/active_record/fan.rb +7 -0
  247. data/spec/dummy_app/app/active_record/field_test.rb +19 -0
  248. data/spec/dummy_app/app/active_record/hardball.rb +2 -0
  249. data/spec/dummy_app/app/active_record/image.rb +6 -0
  250. data/spec/dummy_app/app/active_record/league.rb +12 -0
  251. data/spec/dummy_app/app/active_record/nested_field_test.rb +8 -0
  252. data/spec/dummy_app/app/active_record/player.rb +27 -0
  253. data/spec/dummy_app/app/active_record/team.rb +28 -0
  254. data/spec/dummy_app/app/active_record/user.rb +25 -0
  255. data/spec/dummy_app/app/assets/images/rails.png +0 -0
  256. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  257. data/spec/dummy_app/app/assets/stylesheets/application.css +13 -0
  258. data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
  259. data/spec/dummy_app/app/controllers/players_controller.rb +5 -0
  260. data/spec/dummy_app/app/locales/models.en.yml +20 -0
  261. data/spec/dummy_app/app/mongoid/another_field_test.rb +6 -0
  262. data/spec/dummy_app/app/mongoid/ball.rb +14 -0
  263. data/spec/dummy_app/app/mongoid/carrierwave_uploader.rb +53 -0
  264. data/spec/dummy_app/app/mongoid/category.rb +7 -0
  265. data/spec/dummy_app/app/mongoid/cms.rb +5 -0
  266. data/spec/dummy_app/app/mongoid/cms/basic_page.rb +12 -0
  267. data/spec/dummy_app/app/mongoid/cms/unscoped_page.rb +5 -0
  268. data/spec/dummy_app/app/mongoid/comment.rb +9 -0
  269. data/spec/dummy_app/app/mongoid/comment/confirmed.rb +3 -0
  270. data/spec/dummy_app/app/mongoid/division.rb +14 -0
  271. data/spec/dummy_app/app/mongoid/draft.rb +22 -0
  272. data/spec/dummy_app/app/mongoid/embed.rb +6 -0
  273. data/spec/dummy_app/app/mongoid/fan.rb +12 -0
  274. data/spec/dummy_app/app/mongoid/field_test.rb +57 -0
  275. data/spec/dummy_app/app/mongoid/hardball.rb +2 -0
  276. data/spec/dummy_app/app/mongoid/image.rb +9 -0
  277. data/spec/dummy_app/app/mongoid/league.rb +16 -0
  278. data/spec/dummy_app/app/mongoid/nested_field_test.rb +13 -0
  279. data/spec/dummy_app/app/mongoid/player.rb +41 -0
  280. data/spec/dummy_app/app/mongoid/team.rb +47 -0
  281. data/spec/dummy_app/app/mongoid/user.rb +61 -0
  282. data/spec/dummy_app/app/views/layouts/application.html.erb +14 -0
  283. data/spec/dummy_app/app/views/players/show.html.haml +1 -0
  284. data/spec/dummy_app/config.ru +4 -0
  285. data/spec/dummy_app/config/application.rb +69 -0
  286. data/spec/dummy_app/config/boot.rb +9 -0
  287. data/spec/dummy_app/config/database.yml +25 -0
  288. data/spec/dummy_app/config/environment.rb +5 -0
  289. data/spec/dummy_app/config/environments/development.rb +37 -0
  290. data/spec/dummy_app/config/environments/production.rb +67 -0
  291. data/spec/dummy_app/config/environments/test.rb +37 -0
  292. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  293. data/spec/dummy_app/config/initializers/devise.rb +216 -0
  294. data/spec/dummy_app/config/initializers/dragonfly.rb +11 -0
  295. data/spec/dummy_app/config/initializers/inflections.rb +15 -0
  296. data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
  297. data/spec/dummy_app/config/initializers/rails_admin.rb +8 -0
  298. data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
  299. data/spec/dummy_app/config/initializers/session_patch.rb +16 -0
  300. data/spec/dummy_app/config/initializers/session_store.rb +8 -0
  301. data/spec/dummy_app/config/initializers/strong_parameters.rb +2 -0
  302. data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  303. data/spec/dummy_app/config/locales/fr.yml +24 -0
  304. data/spec/dummy_app/config/mongoid.yml +22 -0
  305. data/spec/dummy_app/config/routes.rb +10 -0
  306. data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +13 -0
  307. data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +19 -0
  308. data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +12 -0
  309. data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +20 -0
  310. data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +22 -0
  311. data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +49 -0
  312. data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +16 -0
  313. data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +12 -0
  314. data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +11 -0
  315. data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +9 -0
  316. data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +9 -0
  317. data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +16 -0
  318. data/spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb +9 -0
  319. data/spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb +9 -0
  320. data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +15 -0
  321. data/spec/dummy_app/db/migrate/20110103205808_create_comments.rb +15 -0
  322. data/spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb +9 -0
  323. data/spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb +22 -0
  324. data/spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb +14 -0
  325. data/spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb +9 -0
  326. data/spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb +9 -0
  327. data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +12 -0
  328. data/spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb +6 -0
  329. data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +19 -0
  330. data/spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb +5 -0
  331. data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +21 -0
  332. data/spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb +9 -0
  333. data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +9 -0
  334. data/spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb +7 -0
  335. data/spec/dummy_app/db/migrate/20111115041025_add_type_to_balls.rb +5 -0
  336. data/spec/dummy_app/db/migrate/20111123092549_create_nested_field_tests.rb +10 -0
  337. data/spec/dummy_app/db/migrate/20111130075338_add_dragonfly_asset_name_to_field_tests.rb +5 -0
  338. data/spec/dummy_app/db/migrate/20111215083258_create_foo_bars.rb +8 -0
  339. data/spec/dummy_app/db/migrate/20120117151733_add_custom_field_to_teams.rb +5 -0
  340. data/spec/dummy_app/db/migrate/20120118122004_add_categories.rb +7 -0
  341. data/spec/dummy_app/db/migrate/20120319041705_drop_rel_tests.rb +15 -0
  342. data/spec/dummy_app/db/migrate/20120720075608_create_another_field_tests.rb +8 -0
  343. data/spec/dummy_app/db/migrate/20120928075608_create_images.rb +8 -0
  344. data/spec/dummy_app/db/seeds.rb +29 -0
  345. data/spec/dummy_app/doc/README_FOR_APP +2 -0
  346. data/spec/dummy_app/public/404.html +26 -0
  347. data/spec/dummy_app/public/422.html +26 -0
  348. data/spec/dummy_app/public/500.html +25 -0
  349. data/spec/dummy_app/public/favicon.ico +0 -0
  350. data/spec/dummy_app/public/robots.txt +5 -0
  351. data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg +0 -0
  352. data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg.meta +1 -0
  353. data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg +0 -0
  354. data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg.meta +1 -0
  355. data/spec/dummy_app/public/system/paperclip_assets/1/original/Boston City Flow.jpg +0 -0
  356. data/spec/dummy_app/public/system/paperclip_assets/1/thumb/Boston City Flow.jpg +0 -0
  357. data/spec/dummy_app/public/system/paperclip_assets/3/original/Costa Rican Frog.jpg +0 -0
  358. data/spec/dummy_app/public/system/paperclip_assets/3/thumb/Costa Rican Frog.jpg +0 -0
  359. data/spec/dummy_app/public/system/paperclip_assets/6/original/liste-electorale.pdf +0 -0
  360. data/spec/dummy_app/public/system/paperclip_assets/6/thumb/liste-electorale.pdf +148 -0
  361. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/Boston_City_Flow.jpg +0 -0
  362. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/thumb_Boston_City_Flow.jpg +0 -0
  363. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/Costa_Rican_Frog.jpg +0 -0
  364. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/thumb_Costa_Rican_Frog.jpg +0 -0
  365. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/Pensive_Parakeet.jpg +0 -0
  366. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/thumb_Pensive_Parakeet.jpg +0 -0
  367. data/spec/dummy_app/script/rails +6 -0
  368. data/spec/factories.rb +75 -0
  369. data/spec/helpers/rails_admin/application_helper_spec.rb +353 -0
  370. data/spec/helpers/rails_admin/form_builder_spec.rb +17 -0
  371. data/spec/integration/authorization/cancan_spec.rb +366 -0
  372. data/spec/integration/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
  373. data/spec/integration/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +53 -0
  374. data/spec/integration/basic/create/rails_admin_basic_create_spec.rb +140 -0
  375. data/spec/integration/basic/create/rails_admin_namespaced_model_create_spec.rb +16 -0
  376. data/spec/integration/basic/delete/rails_admin_basic_delete_spec.rb +64 -0
  377. data/spec/integration/basic/destroy/rails_admin_basic_destroy_spec.rb +84 -0
  378. data/spec/integration/basic/edit/rails_admin_basic_edit_spec.rb +109 -0
  379. data/spec/integration/basic/export/rails_admin_basic_export_spec.rb +106 -0
  380. data/spec/integration/basic/list/rails_admin_basic_list_spec.rb +444 -0
  381. data/spec/integration/basic/new/rails_admin_basic_new_spec.rb +73 -0
  382. data/spec/integration/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
  383. data/spec/integration/basic/show/rails_admin_basic_show_spec.rb +82 -0
  384. data/spec/integration/basic/update/rails_admin_basic_update_spec.rb +229 -0
  385. data/spec/integration/config/edit/rails_admin_config_edit_spec.rb +1026 -0
  386. data/spec/integration/config/list/rails_admin_config_list_spec.rb +441 -0
  387. data/spec/integration/config/show/rails_admin_config_show_spec.rb +331 -0
  388. data/spec/integration/history/rails_admin_history_spec.rb +88 -0
  389. data/spec/integration/rails_admin_spec.rb +150 -0
  390. data/spec/integration/relation_spec.rb +35 -0
  391. data/spec/orm/active_record.rb +42 -0
  392. data/spec/orm/mongoid.rb +21 -0
  393. data/spec/rails_admin/abstract_model_spec.rb +75 -0
  394. data/spec/rails_admin/active_record_extension_spec.rb +16 -0
  395. data/spec/rails_admin/adapters/active_record/abstract_object_spec.rb +132 -0
  396. data/spec/rails_admin/adapters/active_record_spec.rb +409 -0
  397. data/spec/rails_admin/adapters/mongoid/abstract_object_spec.rb +31 -0
  398. data/spec/rails_admin/adapters/mongoid_spec.rb +776 -0
  399. data/spec/rails_admin/config/actions/base_spec.rb +32 -0
  400. data/spec/rails_admin/config/actions_spec.rb +180 -0
  401. data/spec/rails_admin/config/fields/base_spec.rb +421 -0
  402. data/spec/rails_admin/config/fields/date_spec.rb +74 -0
  403. data/spec/rails_admin/config/fields/datetime_spec.rb +55 -0
  404. data/spec/rails_admin/config/fields/file_upload_spec.rb +21 -0
  405. data/spec/rails_admin/config/fields/time_spec.rb +39 -0
  406. data/spec/rails_admin/config/fields/timestamp_spec.rb +20 -0
  407. data/spec/rails_admin/config/fields/types/datetime_spec.rb +18 -0
  408. data/spec/rails_admin/config/fields_spec.rb +15 -0
  409. data/spec/rails_admin/config/has_fields_spec.rb +30 -0
  410. data/spec/rails_admin/config/lazy_model_spec.rb +29 -0
  411. data/spec/rails_admin/config/model_spec.rb +75 -0
  412. data/spec/rails_admin/config/sections_spec.rb +123 -0
  413. data/spec/rails_admin/config_spec.rb +277 -0
  414. data/spec/rails_admin/support/csv_converter_spec.rb +16 -0
  415. data/spec/spec_helper.rb +84 -0
  416. metadata +868 -0
@@ -0,0 +1,43 @@
1
+ require 'rails_admin/adapters/active_record/abstract_object'
2
+ module RailsAdmin
3
+ module Adapters
4
+ module Mongoid
5
+ class AbstractObject < RailsAdmin::Adapters::ActiveRecord::AbstractObject
6
+ def initialize(object)
7
+ super
8
+ object.associations.each do |name, association|
9
+ if [:has_many, :references_many].include? association.macro
10
+ instance_eval <<-RUBY, __FILE__, __LINE__ + 1
11
+ def #{name.to_s.singularize}_ids
12
+ #{name}.map{|item| item.id }
13
+ end
14
+
15
+ def #{name.to_s.singularize}_ids=(item_ids)
16
+ __items__ = Array.wrap(item_ids).map{|item_id| #{name}.klass.find(item_id) rescue nil }.compact
17
+ if persisted?
18
+ #{name}.substitute __items__
19
+ else
20
+ __items__.each do |item|
21
+ item.update_attribute('#{association.foreign_key}', id)
22
+ end
23
+ end
24
+ end
25
+ RUBY
26
+ elsif [:has_one, :references_one].include? association.macro
27
+ instance_eval <<-RUBY, __FILE__, __LINE__ + 1
28
+ def #{name.to_s}_id=(item_id)
29
+ item = (#{association.klass}.find(item_id) rescue nil)
30
+ if persisted?
31
+ self.#{name} = item
32
+ else
33
+ item.update_attribute('#{association.foreign_key}', id) if item
34
+ end
35
+ end
36
+ RUBY
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,45 @@
1
+ module RailsAdmin
2
+ module Adapters
3
+ module Mongoid
4
+ module Extension
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ class_attribute :nested_attributes_options
9
+ self.nested_attributes_options = {}
10
+ class << self
11
+ def rails_admin(&block)
12
+ RailsAdmin.config(self, &block)
13
+ end
14
+ alias_method_chain :accepts_nested_attributes_for, :rails_admin
15
+ end
16
+ end
17
+
18
+ def rails_admin_default_object_label_method
19
+ self.new_record? ? "new #{self.class.to_s}" : "#{self.class.to_s} ##{self.id}"
20
+ end
21
+
22
+ def safe_send(value)
23
+ if self.attributes.find{ |k,v| k.to_s == value.to_s }
24
+ self.read_attribute(value)
25
+ else
26
+ self.send(value)
27
+ end
28
+ end
29
+
30
+ module ClassMethods
31
+ # Mongoid accepts_nested_attributes_for does not store options in accessible scope,
32
+ # so we intercept the call and store it in instance variable which can be accessed from outside
33
+ def accepts_nested_attributes_for_with_rails_admin(*args)
34
+ options = args.extract_options!
35
+ args.each do |arg|
36
+ self.nested_attributes_options[arg.to_sym] = options.reverse_merge(:allow_destroy=>false, :update_only=>false)
37
+ end
38
+ args << options
39
+ accepts_nested_attributes_for_without_rails_admin(*args)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,333 @@
1
+ require 'rails_admin/config/lazy_model'
2
+ require 'rails_admin/config/sections/list'
3
+ require 'active_support/core_ext/class/attribute_accessors'
4
+
5
+ module RailsAdmin
6
+ module Config
7
+ # RailsAdmin is setup to try and authenticate with warden
8
+ # If warden is found, then it will try to authenticate
9
+ #
10
+ # This is valid for custom warden setups, and also devise
11
+ # If you're using the admin setup for devise, you should set RailsAdmin to use the admin
12
+ #
13
+ # @see RailsAdmin::Config.authenticate_with
14
+ # @see RailsAdmin::Config.authorize_with
15
+ DEFAULT_AUTHENTICATION = Proc.new do
16
+ request.env['warden'].try(:authenticate!)
17
+ end
18
+
19
+ DEFAULT_ATTR_ACCESSIBLE_ROLE = Proc.new { :default }
20
+
21
+ DEFAULT_AUTHORIZE = Proc.new {}
22
+
23
+ DEFAULT_AUDIT = Proc.new {}
24
+
25
+ DEFAULT_CURRENT_USER = Proc.new do
26
+ request.env["warden"].try(:user) || respond_to?(:current_user) && current_user
27
+ end
28
+
29
+
30
+ class << self
31
+ # Application title, can be an array of two elements
32
+ attr_accessor :main_app_name
33
+
34
+ # Configuration option to specify which models you want to exclude.
35
+ attr_accessor :excluded_models
36
+
37
+ # Configuration option to specify a whitelist of models you want to RailsAdmin to work with.
38
+ # The excluded_models list applies against the whitelist as well and further reduces the models
39
+ # RailsAdmin will use.
40
+ # If included_models is left empty ([]), then RailsAdmin will automatically use all the models
41
+ # in your application (less any excluded_models you may have specified).
42
+ attr_accessor :included_models
43
+
44
+ # Fields to be hidden in show, create and update views
45
+ attr_accessor :default_hidden_fields
46
+
47
+ # Default items per page value used if a model level option has not
48
+ # been configured
49
+ attr_accessor :default_items_per_page
50
+
51
+ attr_reader :default_search_operator
52
+
53
+ # Configuration option to specify which method names will be searched for
54
+ # to be used as a label for object records. This defaults to [:name, :title]
55
+ attr_accessor :label_methods
56
+
57
+ # hide blank fields in show view if true
58
+ attr_accessor :compact_show_view
59
+
60
+ # Set the max width of columns in list view before a new set is created
61
+ attr_accessor :total_columns_width
62
+
63
+ # Stores model configuration objects in a hash identified by model's class
64
+ # name.
65
+ #
66
+ # @see RailsAdmin.config
67
+ attr_reader :registry
68
+
69
+ # accepts a hash of static links to be shown below the main navigation
70
+ attr_accessor :navigation_static_links
71
+ attr_accessor :navigation_static_label
72
+
73
+ # yell about fields that are not marked as accessible
74
+ attr_accessor :yell_for_non_accessible_fields
75
+
76
+ # Setup authentication to be run as a before filter
77
+ # This is run inside the controller instance so you can setup any authentication you need to
78
+ #
79
+ # By default, the authentication will run via warden if available
80
+ # and will run the default.
81
+ #
82
+ # If you use devise, this will authenticate the same as _authenticate_user!_
83
+ #
84
+ # @example Devise admin
85
+ # RailsAdmin.config do |config|
86
+ # config.authenticate_with do
87
+ # authenticate_admin!
88
+ # end
89
+ # end
90
+ #
91
+ # @example Custom Warden
92
+ # RailsAdmin.config do |config|
93
+ # config.authenticate_with do
94
+ # warden.authenticate! :scope => :paranoid
95
+ # end
96
+ # end
97
+ #
98
+ # @see RailsAdmin::Config::DEFAULT_AUTHENTICATION
99
+ def authenticate_with(&blk)
100
+ @authenticate = blk if blk
101
+ @authenticate || DEFAULT_AUTHENTICATION
102
+ end
103
+
104
+
105
+ def attr_accessible_role(&blk)
106
+ @attr_accessible_role = blk if blk
107
+ @attr_accessible_role || DEFAULT_ATTR_ACCESSIBLE_ROLE
108
+ end
109
+
110
+ # Setup auditing/history/versioning provider that observe objects lifecycle
111
+ def audit_with(*args, &block)
112
+ extension = args.shift
113
+ if(extension)
114
+ @audit = Proc.new {
115
+ @auditing_adapter = RailsAdmin::AUDITING_ADAPTERS[extension].new(*([self] + args).compact)
116
+ }
117
+ else
118
+ @audit = block if block
119
+ end
120
+ @audit || DEFAULT_AUDIT
121
+ end
122
+
123
+ # Setup authorization to be run as a before filter
124
+ # This is run inside the controller instance so you can setup any authorization you need to.
125
+ #
126
+ # By default, there is no authorization.
127
+ #
128
+ # @example Custom
129
+ # RailsAdmin.config do |config|
130
+ # config.authorize_with do
131
+ # redirect_to root_path unless warden.user.is_admin?
132
+ # end
133
+ # end
134
+ #
135
+ # To use an authorization adapter, pass the name of the adapter. For example,
136
+ # to use with CanCan[https://github.com/ryanb/cancan], pass it like this.
137
+ #
138
+ # @example CanCan
139
+ # RailsAdmin.config do |config|
140
+ # config.authorize_with :cancan
141
+ # end
142
+ #
143
+ # See the wiki[https://github.com/sferik/rails_admin/wiki] for more on authorization.
144
+ #
145
+ # @see RailsAdmin::Config::DEFAULT_AUTHORIZE
146
+ def authorize_with(*args, &block)
147
+ extension = args.shift
148
+ if(extension)
149
+ @authorize = Proc.new {
150
+ @authorization_adapter = RailsAdmin::AUTHORIZATION_ADAPTERS[extension].new(*([self] + args).compact)
151
+ }
152
+ else
153
+ @authorize = block if block
154
+ end
155
+ @authorize || DEFAULT_AUTHORIZE
156
+ end
157
+
158
+ # Setup configuration using an extension-provided ConfigurationAdapter
159
+ #
160
+ # @example Custom configuration for role-based setup.
161
+ # RailsAdmin.config do |config|
162
+ # config.configure_with(:custom) do |config|
163
+ # config.models = ['User', 'Comment']
164
+ # config.roles = {
165
+ # 'Admin' => :all,
166
+ # 'User' => ['User']
167
+ # }
168
+ # end
169
+ # end
170
+ def configure_with(extension)
171
+ configuration = RailsAdmin::CONFIGURATION_ADAPTERS[extension].new
172
+ yield(configuration) if block_given?
173
+ end
174
+
175
+ # Setup a different method to determine the current user or admin logged in.
176
+ # This is run inside the controller instance and made available as a helper.
177
+ #
178
+ # By default, _request.env["warden"].user_ or _current_user_ will be used.
179
+ #
180
+ # @example Custom
181
+ # RailsAdmin.config do |config|
182
+ # config.current_user_method do
183
+ # current_admin
184
+ # end
185
+ # end
186
+ #
187
+ # @see RailsAdmin::Config::DEFAULT_CURRENT_USER
188
+ def current_user_method(&block)
189
+ @current_user = block if block
190
+ @current_user || DEFAULT_CURRENT_USER
191
+ end
192
+
193
+ def default_search_operator=(operator)
194
+ if %w{ default like starts_with ends_with is = }.include? operator
195
+ @default_search_operator = operator
196
+ else
197
+ raise ArgumentError, "Search operator '#{operator}' not supported"
198
+ end
199
+ end
200
+
201
+ # pool of all found model names from the whole application
202
+ def models_pool
203
+ possible =
204
+ included_models.map(&:to_s).presence || (
205
+ @@system_models ||= # memoization for tests
206
+ ([Rails.application] + Rails::Application::Railties.engines).map do |app|
207
+ (app.paths['app/models'] + app.config.autoload_paths).map do |load_path|
208
+ Dir.glob(app.root.join(load_path)).map do |load_dir|
209
+ Dir.glob(load_dir + "/**/*.rb").map do |filename|
210
+ # app/models/module/class.rb => module/class.rb => module/class => Module::Class
211
+ lchomp(filename, "#{app.root.join(load_dir)}/").chomp('.rb').camelize
212
+ end
213
+ end
214
+ end
215
+ end.flatten
216
+ )
217
+
218
+ excluded = (excluded_models.map(&:to_s) + ['RailsAdmin::History'])
219
+
220
+ (possible - excluded).uniq.sort
221
+ end
222
+
223
+ # Loads a model configuration instance from the registry or registers
224
+ # a new one if one is yet to be added.
225
+ #
226
+ # First argument can be an instance of requested model, its class object,
227
+ # its class name as a string or symbol or a RailsAdmin::AbstractModel
228
+ # instance.
229
+ #
230
+ # If a block is given it is evaluated in the context of configuration instance.
231
+ #
232
+ # Returns given model's configuration
233
+ #
234
+ # @see RailsAdmin::Config.registry
235
+ def model(entity, &block)
236
+ key = begin
237
+ if entity.kind_of?(RailsAdmin::AbstractModel)
238
+ entity.model.try(:name).try :to_sym
239
+ elsif entity.kind_of?(Class)
240
+ entity.name.to_sym
241
+ elsif entity.kind_of?(String) || entity.kind_of?(Symbol)
242
+ entity.to_sym
243
+ else
244
+ entity.class.name.to_sym
245
+ end
246
+ end
247
+
248
+ if block
249
+ @registry[key] = RailsAdmin::Config::LazyModel.new(entity, &block)
250
+ else
251
+ @registry[key] ||= RailsAdmin::Config::LazyModel.new(entity)
252
+ end
253
+ end
254
+
255
+ def default_hidden_fields=(fields)
256
+ if fields.is_a?(Array)
257
+ @default_hidden_fields = {}
258
+ @default_hidden_fields[:edit] = fields
259
+ @default_hidden_fields[:show] = fields
260
+ else
261
+ @default_hidden_fields = fields
262
+ end
263
+ end
264
+
265
+ # Returns action configuration object
266
+ def actions(&block)
267
+ RailsAdmin::Config::Actions.instance_eval(&block) if block
268
+ end
269
+
270
+ # Returns all model configurations
271
+ #
272
+ # @see RailsAdmin::Config.registry
273
+ def models
274
+ RailsAdmin::AbstractModel.all.map{|m| model(m)}
275
+ end
276
+
277
+ # Reset all configurations to defaults.
278
+ #
279
+ # @see RailsAdmin::Config.registry
280
+ def reset
281
+ @compact_show_view = true
282
+ @yell_for_non_accessible_fields = true
283
+ @authenticate = nil
284
+ @authorize = nil
285
+ @audit = nil
286
+ @current_user = nil
287
+ @default_hidden_fields = {}
288
+ @default_hidden_fields[:base] = [:_type]
289
+ @default_hidden_fields[:edit] = [:id, :_id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
290
+ @default_hidden_fields[:show] = [:id, :_id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
291
+ @default_items_per_page = 20
292
+ @default_search_operator = 'default'
293
+ @attr_accessible_role = nil
294
+ @excluded_models = []
295
+ @included_models = []
296
+ @total_columns_width = 697
297
+ @label_methods = [:name, :title]
298
+ @main_app_name = Proc.new { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
299
+ @registry = {}
300
+ @navigation_static_links = {}
301
+ @navigation_static_label = nil
302
+ RailsAdmin::Config::Actions.reset
303
+ end
304
+
305
+ # Reset a provided model's configuration.
306
+ #
307
+ # @see RailsAdmin::Config.registry
308
+ def reset_model(model)
309
+ key = model.kind_of?(Class) ? model.name.to_sym : model.to_sym
310
+ @registry.delete(key)
311
+ end
312
+
313
+ # Get all models that are configured as visible sorted by their weight and label.
314
+ #
315
+ # @see RailsAdmin::Config::Hideable
316
+
317
+ def visible_models(bindings)
318
+ models.map{|m| m.with(bindings) }.select{|m| m.visible? && bindings[:controller].authorized?(:index, m.abstract_model) && !m.abstract_model.embedded?}.sort do |a, b|
319
+ (weight_order = a.weight <=> b.weight) == 0 ? a.label.downcase <=> b.label.downcase : weight_order
320
+ end
321
+ end
322
+
323
+ private
324
+
325
+ def lchomp(base, arg)
326
+ base.to_s.reverse.chomp(arg.to_s.reverse).reverse
327
+ end
328
+ end
329
+
330
+ # Set default values for configuration options on load
331
+ self.reset
332
+ end
333
+ end
@@ -0,0 +1,121 @@
1
+ module RailsAdmin
2
+ module Config
3
+ module Actions
4
+
5
+ class << self
6
+ def all(scope = nil, bindings = {})
7
+ if scope.is_a?(Hash)
8
+ bindings = scope
9
+ scope = :all
10
+ end
11
+ scope ||= :all
12
+ init_actions!
13
+ actions = case scope
14
+ when :all
15
+ @@actions
16
+ when :root
17
+ @@actions.select(&:root?)
18
+ when :collection
19
+ @@actions.select(&:collection?)
20
+ when :bulkable
21
+ @@actions.select(&:bulkable?)
22
+ when :member
23
+ @@actions.select(&:member?)
24
+ end
25
+ actions = actions.map{ |action| action.with(bindings) }
26
+ bindings[:controller] ? actions.select(&:visible?) : actions
27
+ end
28
+
29
+ def find custom_key, bindings = {}
30
+ init_actions!
31
+ action = @@actions.find{ |a| a.custom_key == custom_key }.try(:with, bindings)
32
+ bindings[:controller] ? (action.try(:visible?) && action || nil) : action
33
+ end
34
+
35
+ def collection key, parent_class = :base, &block
36
+ add_action key, parent_class, :collection, &block
37
+ end
38
+
39
+ def member key, parent_class = :base, &block
40
+ add_action key, parent_class, :member, &block
41
+ end
42
+
43
+ def root key, parent_class = :base, &block
44
+ add_action key, parent_class, :root, &block
45
+ end
46
+
47
+ def add_action key, parent_class, parent, &block
48
+ a = "RailsAdmin::Config::Actions::#{parent_class.to_s.camelize}".constantize.new
49
+ a.instance_eval(%{
50
+ #{parent} true
51
+ def key
52
+ :#{key}
53
+ end
54
+ })
55
+ a.instance_eval(&block) if block
56
+ unless a.custom_key.in?((@@actions || []).map(&:custom_key))
57
+ (@@actions ||= []) << a
58
+ else
59
+ raise "Action #{a.custom_key} already exist. Please change its custom key"
60
+ end
61
+ end
62
+
63
+ def reset
64
+ @@actions = nil
65
+ end
66
+
67
+ def register(name, klass = nil)
68
+ if klass == nil && name.kind_of?(Class)
69
+ klass = name
70
+ name = klass.to_s.demodulize.underscore.to_sym
71
+ end
72
+
73
+ instance_eval %{
74
+ def #{name}(&block)
75
+ action = #{klass}.new
76
+ action.instance_eval &block if block
77
+ unless action.custom_key.in?((@@actions || []).map(&:custom_key))
78
+ (@@actions ||= []) << action
79
+ else
80
+ raise "Action \#{action.custom_key} already exist. Please change its custom key"
81
+ end
82
+ end
83
+ }
84
+ end
85
+
86
+ private
87
+
88
+ def init_actions!
89
+ @@actions ||= [
90
+ Dashboard.new,
91
+ Index.new,
92
+ Show.new,
93
+ New.new,
94
+ Edit.new,
95
+ Export.new,
96
+ Delete.new,
97
+ BulkDelete.new,
98
+ HistoryShow.new,
99
+ HistoryIndex.new,
100
+ ShowInApp.new,
101
+ ]
102
+ end
103
+
104
+ end
105
+ end
106
+ end
107
+ end
108
+
109
+ require 'rails_admin/config/actions/base'
110
+ require 'rails_admin/config/actions/dashboard'
111
+ require 'rails_admin/config/actions/index'
112
+ require 'rails_admin/config/actions/show'
113
+ require 'rails_admin/config/actions/show_in_app'
114
+ require 'rails_admin/config/actions/history_show'
115
+ require 'rails_admin/config/actions/history_index'
116
+ require 'rails_admin/config/actions/new'
117
+ require 'rails_admin/config/actions/edit'
118
+ require 'rails_admin/config/actions/export'
119
+ require 'rails_admin/config/actions/delete'
120
+ require 'rails_admin/config/actions/bulk_delete'
121
+