elucid-rails_admin 0.0.1

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 (348) hide show
  1. data/Gemfile +54 -0
  2. data/LICENSE.md +20 -0
  3. data/README.md +1334 -0
  4. data/Rakefile +14 -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 +1 -0
  48. data/app/assets/javascripts/rails_admin/jquery-ui-1.8.16.custom.js +5019 -0
  49. data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -0
  50. data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1219 -0
  51. data/app/assets/javascripts/rails_admin/ra.datetimepicker.js +67 -0
  52. data/app/assets/javascripts/rails_admin/ra.filter-box.js +119 -0
  53. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +280 -0
  54. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +181 -0
  55. data/app/assets/javascripts/rails_admin/ra.remote-form.js +147 -0
  56. data/app/assets/javascripts/rails_admin/rails_admin.js.erb +17 -0
  57. data/app/assets/javascripts/rails_admin/themes/default/ui.js +1 -0
  58. data/app/assets/javascripts/rails_admin/ui.js.coffee +30 -0
  59. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  60. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  61. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  62. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  63. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  64. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  65. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +733 -0
  66. data/app/assets/stylesheets/rails_admin/base/README +2 -0
  67. data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
  68. data/app/assets/stylesheets/rails_admin/base/theming.css.scss +102 -0
  69. data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
  70. data/app/assets/stylesheets/rails_admin/custom/README +3 -0
  71. data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +9 -0
  72. data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +11 -0
  73. data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +11 -0
  74. data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +51 -0
  75. data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +180 -0
  76. data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +53 -0
  77. data/app/assets/stylesheets/rails_admin/ra.calendar-additions.css.scss +25 -0
  78. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +85 -0
  79. data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
  80. data/app/assets/stylesheets/rails_admin/themes/README +11 -0
  81. data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +1 -0
  82. data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +1 -0
  83. data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +1 -0
  84. data/app/controllers/rails_admin/application_controller.rb +62 -0
  85. data/app/controllers/rails_admin/history_controller.rb +26 -0
  86. data/app/controllers/rails_admin/main_controller.rb +371 -0
  87. data/app/helpers/rails_admin/application_helper.rb +65 -0
  88. data/app/helpers/rails_admin/form_builder.rb +52 -0
  89. data/app/helpers/rails_admin/main_helper.rb +100 -0
  90. data/app/models/rails_admin/history.rb +64 -0
  91. data/app/views/kaminari/twitter-bootstrap/_gap.html.haml +2 -0
  92. data/app/views/kaminari/twitter-bootstrap/_next_page.html.haml +4 -0
  93. data/app/views/kaminari/twitter-bootstrap/_page.html.haml +4 -0
  94. data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +10 -0
  95. data/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml +4 -0
  96. data/app/views/layouts/rails_admin/_navigation.html.haml +19 -0
  97. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +9 -0
  98. data/app/views/layouts/rails_admin/application.html.haml +41 -0
  99. data/app/views/rails_admin/history/_dashboard.html.haml +10 -0
  100. data/app/views/rails_admin/history/show.html.haml +42 -0
  101. data/app/views/rails_admin/main/_delete_notice.html.haml +19 -0
  102. data/app/views/rails_admin/main/_form_colorpicker.html.haml +26 -0
  103. data/app/views/rails_admin/main/_form_datetime.html.haml +7 -0
  104. data/app/views/rails_admin/main/_form_enumeration.html.haml +5 -0
  105. data/app/views/rails_admin/main/_form_field.html.haml +1 -0
  106. data/app/views/rails_admin/main/_form_file_upload.html.haml +19 -0
  107. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +57 -0
  108. data/app/views/rails_admin/main/_form_filtering_select.html.haml +47 -0
  109. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +36 -0
  110. data/app/views/rails_admin/main/_form_text.html.haml +13 -0
  111. data/app/views/rails_admin/main/_models_links.html.haml +31 -0
  112. data/app/views/rails_admin/main/_object_links.html.haml +23 -0
  113. data/app/views/rails_admin/main/_submit_buttons.html.haml +12 -0
  114. data/app/views/rails_admin/main/bulk_delete.html.haml +6 -0
  115. data/app/views/rails_admin/main/dashboard.html.haml +31 -0
  116. data/app/views/rails_admin/main/delete.html.haml +13 -0
  117. data/app/views/rails_admin/main/edit.html.haml +2 -0
  118. data/app/views/rails_admin/main/export.html.haml +70 -0
  119. data/app/views/rails_admin/main/index.html.haml +98 -0
  120. data/app/views/rails_admin/main/new.html.haml +2 -0
  121. data/app/views/rails_admin/main/show.html.haml +14 -0
  122. data/config/initializers/active_record_extensions.rb +19 -0
  123. data/config/initializers/devise_patch.rb +9 -0
  124. data/config/initializers/haml.rb +3 -0
  125. data/config/locales/devise.bg.yml +42 -0
  126. data/config/locales/devise.de.yml +39 -0
  127. data/config/locales/devise.en.yml +39 -0
  128. data/config/locales/devise.es.yml +39 -0
  129. data/config/locales/devise.fi.yml +39 -0
  130. data/config/locales/devise.fr.yml +78 -0
  131. data/config/locales/devise.hr.yml +49 -0
  132. data/config/locales/devise.it.yml +39 -0
  133. data/config/locales/devise.lt.yml +39 -0
  134. data/config/locales/devise.mn.yml +39 -0
  135. data/config/locales/devise.nb.yml +43 -0
  136. data/config/locales/devise.pt-BR.yml +39 -0
  137. data/config/locales/devise.pt-PT.yml +39 -0
  138. data/config/locales/devise.ro.yml +46 -0
  139. data/config/locales/devise.ru.yml +39 -0
  140. data/config/locales/devise.sv.yml +39 -0
  141. data/config/locales/devise.tr.yml +39 -0
  142. data/config/locales/devise.uk.yml +39 -0
  143. data/config/locales/devise.zh-CN.yml +39 -0
  144. data/config/locales/devise.zh_cn.yml +39 -0
  145. data/config/locales/rails_admin.bg.yml +104 -0
  146. data/config/locales/rails_admin.da.yml +99 -0
  147. data/config/locales/rails_admin.de.yml +110 -0
  148. data/config/locales/rails_admin.en.yml +114 -0
  149. data/config/locales/rails_admin.es.yml +112 -0
  150. data/config/locales/rails_admin.fi.yml +107 -0
  151. data/config/locales/rails_admin.fr.yml +110 -0
  152. data/config/locales/rails_admin.hr.yml +81 -0
  153. data/config/locales/rails_admin.it.yml +109 -0
  154. data/config/locales/rails_admin.ja.yml +110 -0
  155. data/config/locales/rails_admin.lt.yml +102 -0
  156. data/config/locales/rails_admin.lv.yml +100 -0
  157. data/config/locales/rails_admin.mn.yml +103 -0
  158. data/config/locales/rails_admin.nb.yml +110 -0
  159. data/config/locales/rails_admin.nl.yml +135 -0
  160. data/config/locales/rails_admin.pl.yml +111 -0
  161. data/config/locales/rails_admin.pt-BR.yml +109 -0
  162. data/config/locales/rails_admin.pt-PT.yml +109 -0
  163. data/config/locales/rails_admin.ro.yml +113 -0
  164. data/config/locales/rails_admin.ru.yml +109 -0
  165. data/config/locales/rails_admin.sv.yml +103 -0
  166. data/config/locales/rails_admin.tr.yml +103 -0
  167. data/config/locales/rails_admin.uk.yml +100 -0
  168. data/config/locales/rails_admin.zh-CN.yml +114 -0
  169. data/config/locales/rails_admin.zh_cn.yml +107 -0
  170. data/config/routes.rb +28 -0
  171. data/lib/generators/rails_admin/install_generator.rb +83 -0
  172. data/lib/generators/rails_admin/templates/drop.rb +18 -0
  173. data/lib/generators/rails_admin/templates/initializer.erb +150 -0
  174. data/lib/generators/rails_admin/templates/migration.rb +18 -0
  175. data/lib/generators/rails_admin/uninstall_generator.rb +22 -0
  176. data/lib/generators/rails_admin/utils.rb +30 -0
  177. data/lib/rails_admin.rb +57 -0
  178. data/lib/rails_admin/abstract_model.rb +73 -0
  179. data/lib/rails_admin/abstract_object.rb +28 -0
  180. data/lib/rails_admin/adapters/active_record.rb +359 -0
  181. data/lib/rails_admin/config.rb +287 -0
  182. data/lib/rails_admin/config/base.rb +111 -0
  183. data/lib/rails_admin/config/fields.rb +99 -0
  184. data/lib/rails_admin/config/fields/association.rb +101 -0
  185. data/lib/rails_admin/config/fields/base.rb +273 -0
  186. data/lib/rails_admin/config/fields/factories/carrierwave.rb +16 -0
  187. data/lib/rails_admin/config/fields/factories/devise.rb +31 -0
  188. data/lib/rails_admin/config/fields/factories/dragonfly.rb +20 -0
  189. data/lib/rails_admin/config/fields/factories/enum.rb +11 -0
  190. data/lib/rails_admin/config/fields/factories/paperclip.rb +26 -0
  191. data/lib/rails_admin/config/fields/factories/password.rb +17 -0
  192. data/lib/rails_admin/config/fields/group.rb +63 -0
  193. data/lib/rails_admin/config/fields/groupable.rb +25 -0
  194. data/lib/rails_admin/config/fields/types.rb +26 -0
  195. data/lib/rails_admin/config/fields/types/all.rb +22 -0
  196. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +51 -0
  197. data/lib/rails_admin/config/fields/types/boolean.rb +29 -0
  198. data/lib/rails_admin/config/fields/types/carrierwave.rb +32 -0
  199. data/lib/rails_admin/config/fields/types/color.rb +37 -0
  200. data/lib/rails_admin/config/fields/types/date.rb +24 -0
  201. data/lib/rails_admin/config/fields/types/datetime.rb +160 -0
  202. data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
  203. data/lib/rails_admin/config/fields/types/dragonfly.rb +51 -0
  204. data/lib/rails_admin/config/fields/types/enum.rb +35 -0
  205. data/lib/rails_admin/config/fields/types/file_upload.rb +54 -0
  206. data/lib/rails_admin/config/fields/types/float.rb +14 -0
  207. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +14 -0
  208. data/lib/rails_admin/config/fields/types/has_many_association.rb +42 -0
  209. data/lib/rails_admin/config/fields/types/has_one_association.rb +31 -0
  210. data/lib/rails_admin/config/fields/types/integer.rb +24 -0
  211. data/lib/rails_admin/config/fields/types/paperclip.rb +38 -0
  212. data/lib/rails_admin/config/fields/types/password.rb +41 -0
  213. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +78 -0
  214. data/lib/rails_admin/config/fields/types/string.rb +34 -0
  215. data/lib/rails_admin/config/fields/types/text.rb +39 -0
  216. data/lib/rails_admin/config/fields/types/time.rb +31 -0
  217. data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
  218. data/lib/rails_admin/config/has_fields.rb +112 -0
  219. data/lib/rails_admin/config/has_groups.rb +39 -0
  220. data/lib/rails_admin/config/hideable.rb +28 -0
  221. data/lib/rails_admin/config/model.rb +89 -0
  222. data/lib/rails_admin/config/proxy.rb +40 -0
  223. data/lib/rails_admin/config/sections.rb +51 -0
  224. data/lib/rails_admin/config/sections/create.rb +11 -0
  225. data/lib/rails_admin/config/sections/export.rb +18 -0
  226. data/lib/rails_admin/config/sections/list.rb +55 -0
  227. data/lib/rails_admin/config/sections/navigation.rb +21 -0
  228. data/lib/rails_admin/config/sections/show.rb +50 -0
  229. data/lib/rails_admin/config/sections/update.rb +11 -0
  230. data/lib/rails_admin/engine.rb +15 -0
  231. data/lib/rails_admin/extension.rb +23 -0
  232. data/lib/rails_admin/extensions/cancan.rb +5 -0
  233. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +71 -0
  234. data/lib/rails_admin/generic_support.rb +15 -0
  235. data/lib/rails_admin/i18n_support.rb +43 -0
  236. data/lib/rails_admin/support/core_extensions.rb +44 -0
  237. data/lib/rails_admin/support/csv_converter.rb +109 -0
  238. data/lib/rails_admin/version.rb +6 -0
  239. data/lib/tasks/prepare_ci_env.rake +27 -0
  240. data/lib/tasks/rails_admin.rake +18 -0
  241. data/spec/ci.sh +2 -0
  242. data/spec/controllers/application_controller_spec.rb +30 -0
  243. data/spec/controllers/main_controller_spec.rb +86 -0
  244. data/spec/database_helpers.rb +15 -0
  245. data/spec/dummy_app/Gemfile +52 -0
  246. data/spec/dummy_app/README +256 -0
  247. data/spec/dummy_app/Rakefile +7 -0
  248. data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
  249. data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
  250. data/spec/dummy_app/app/locales/models.en.yml +8 -0
  251. data/spec/dummy_app/app/models/abstract.rb +5 -0
  252. data/spec/dummy_app/app/models/ball.rb +8 -0
  253. data/spec/dummy_app/app/models/cms.rb +5 -0
  254. data/spec/dummy_app/app/models/cms/basic_page.rb +7 -0
  255. data/spec/dummy_app/app/models/cms/unscoped_page.rb +3 -0
  256. data/spec/dummy_app/app/models/comment.rb +3 -0
  257. data/spec/dummy_app/app/models/division.rb +8 -0
  258. data/spec/dummy_app/app/models/draft.rb +11 -0
  259. data/spec/dummy_app/app/models/fan.rb +5 -0
  260. data/spec/dummy_app/app/models/field_test.rb +13 -0
  261. data/spec/dummy_app/app/models/league.rb +10 -0
  262. data/spec/dummy_app/app/models/player.rb +15 -0
  263. data/spec/dummy_app/app/models/rel_test.rb +6 -0
  264. data/spec/dummy_app/app/models/team.rb +25 -0
  265. data/spec/dummy_app/app/models/user.rb +21 -0
  266. data/spec/dummy_app/app/uploaders/carrierwave_uploader.rb +53 -0
  267. data/spec/dummy_app/app/views/layouts/application.html.erb +13 -0
  268. data/spec/dummy_app/config.ru +4 -0
  269. data/spec/dummy_app/config/application.rb +47 -0
  270. data/spec/dummy_app/config/boot.rb +6 -0
  271. data/spec/dummy_app/config/database.yml +22 -0
  272. data/spec/dummy_app/config/environment.rb +5 -0
  273. data/spec/dummy_app/config/environments/development.rb +27 -0
  274. data/spec/dummy_app/config/environments/production.rb +51 -0
  275. data/spec/dummy_app/config/environments/test.rb +39 -0
  276. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  277. data/spec/dummy_app/config/initializers/devise.rb +142 -0
  278. data/spec/dummy_app/config/initializers/inflections.rb +10 -0
  279. data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
  280. data/spec/dummy_app/config/initializers/quiet_assets.rb +10 -0
  281. data/spec/dummy_app/config/initializers/rails_admin.rb +10 -0
  282. data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
  283. data/spec/dummy_app/config/initializers/session_store.rb +8 -0
  284. data/spec/dummy_app/config/routes.rb +8 -0
  285. data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +13 -0
  286. data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +19 -0
  287. data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +12 -0
  288. data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +20 -0
  289. data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +22 -0
  290. data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +19 -0
  291. data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +16 -0
  292. data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +12 -0
  293. data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +11 -0
  294. data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +9 -0
  295. data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +9 -0
  296. data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +16 -0
  297. data/spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb +9 -0
  298. data/spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb +9 -0
  299. data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +15 -0
  300. data/spec/dummy_app/db/migrate/20110103205808_create_comments.rb +15 -0
  301. data/spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb +9 -0
  302. data/spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb +22 -0
  303. data/spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb +14 -0
  304. data/spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb +9 -0
  305. data/spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb +9 -0
  306. data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +12 -0
  307. data/spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb +6 -0
  308. data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +19 -0
  309. data/spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb +5 -0
  310. data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +21 -0
  311. data/spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb +9 -0
  312. data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +9 -0
  313. data/spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb +7 -0
  314. data/spec/dummy_app/db/seeds.rb +18 -0
  315. data/spec/dummy_app/doc/README_FOR_APP +2 -0
  316. data/spec/dummy_app/public/404.html +0 -0
  317. data/spec/dummy_app/public/favicon.ico +0 -0
  318. data/spec/dummy_app/script/rails +6 -0
  319. data/spec/factories.rb +62 -0
  320. data/spec/generator_helpers.rb +30 -0
  321. data/spec/generators/install_generator_spec.rb +85 -0
  322. data/spec/generators/uninstall_generator_spec.rb +35 -0
  323. data/spec/lib/abstract_object_spec.rb +119 -0
  324. data/spec/lib/rails_admin_spec.rb +153 -0
  325. data/spec/requests/authorization/cancan_spec.rb +260 -0
  326. data/spec/requests/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
  327. data/spec/requests/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +55 -0
  328. data/spec/requests/basic/create/rails_admin_basic_create_spec.rb +143 -0
  329. data/spec/requests/basic/create/rails_admin_namespaced_model_create_spec.rb +24 -0
  330. data/spec/requests/basic/delete/rails_admin_basic_delete_spec.rb +35 -0
  331. data/spec/requests/basic/destroy/rails_admin_basic_destroy_spec.rb +56 -0
  332. data/spec/requests/basic/edit/rails_admin_basic_edit_spec.rb +98 -0
  333. data/spec/requests/basic/export/rails_admin_basic_export_spec.rb +84 -0
  334. data/spec/requests/basic/list/rails_admin_basic_list_spec.rb +401 -0
  335. data/spec/requests/basic/new/rails_admin_basic_new_spec.rb +74 -0
  336. data/spec/requests/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
  337. data/spec/requests/basic/show/rails_admin_basic_show_spec.rb +83 -0
  338. data/spec/requests/basic/update/rails_admin_basic_update_spec.rb +169 -0
  339. data/spec/requests/config/edit/rails_admin_config_edit_spec.rb +744 -0
  340. data/spec/requests/config/list/rails_admin_config_list_spec.rb +549 -0
  341. data/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +107 -0
  342. data/spec/requests/config/rails_admin_config_spec.rb +180 -0
  343. data/spec/requests/config/show/rails_admin_config_show_spec.rb +275 -0
  344. data/spec/requests/history/rails_admin_history_spec.rb +57 -0
  345. data/spec/requests/rails_admin_spec.rb +103 -0
  346. data/spec/requests/relation_spec.rb +26 -0
  347. data/spec/spec_helper.rb +88 -0
  348. metadata +717 -0
@@ -0,0 +1,287 @@
1
+ require 'rails_admin/config/model'
2
+ require 'rails_admin/config/sections/list'
3
+ require 'rails_admin/config/sections/navigation'
4
+ require 'active_support/core_ext/class/attribute_accessors'
5
+
6
+ module RailsAdmin
7
+ module Config
8
+ # RailsAdmin is setup to try and authenticate with warden
9
+ # If warden is found, then it will try to authenticate
10
+ #
11
+ # This is valid for custom warden setups, and also devise
12
+ # If you're using the admin setup for devise, you should set RailsAdmin to use the admin
13
+ #
14
+ # By default, this will raise in any of the following environments
15
+ # * production
16
+ # * beta
17
+ # * uat
18
+ # * staging
19
+ #
20
+ # @see RailsAdmin::Config.authenticate_with
21
+ # @see RailsAdmin::Config.authorize_with
22
+ DEFAULT_AUTHENTICATION = Proc.new do
23
+ request.env['warden'].try(:authenticate!)
24
+ end
25
+
26
+ DEFAULT_ATTR_ACCESSIBLE_ROLE = Proc.new { :default }
27
+
28
+ DEFAULT_AUTHORIZE = Proc.new {}
29
+
30
+ DEFAULT_CURRENT_USER = Proc.new do
31
+ request.env["warden"].try(:user) || respond_to?(:current_user) && current_user
32
+ end
33
+
34
+
35
+ class << self
36
+ # Application title, can be an array of two elements
37
+ attr_accessor :main_app_name
38
+
39
+ # Configuration option to specify which models you want to exclude.
40
+ attr_accessor :excluded_models
41
+
42
+ # Configuration option to specify a whitelist of models you want to RailsAdmin to work with.
43
+ # The excluded_models list applies against the whitelist as well and further reduces the models
44
+ # RailsAdmin will use.
45
+ # If included_models is left empty ([]), then RailsAdmin will automatically use all the models
46
+ # in your application (less any excluded_models you may have specified).
47
+ attr_accessor :included_models
48
+
49
+ # Fields to be hidden in show, create and update views
50
+ attr_accessor :default_hidden_fields
51
+
52
+ # Default items per page value used if a model level option has not
53
+ # been configured
54
+ attr_accessor :default_items_per_page
55
+
56
+ attr_reader :default_search_operator
57
+
58
+ # Configuration option to specify which method names will be searched for
59
+ # to be used as a label for object records. This defaults to [:name, :title]
60
+ attr_accessor :label_methods
61
+
62
+ # hide blank fields in show view if true
63
+ attr_accessor :compact_show_view
64
+
65
+ # Set the max width of columns in list view before a new set is created
66
+ attr_accessor :total_columns_width
67
+
68
+ # Stores model configuration objects in a hash identified by model's class
69
+ # name.
70
+ #
71
+ # @see RailsAdmin::Config.model
72
+ attr_reader :registry
73
+
74
+ # Setup authentication to be run as a before filter
75
+ # This is run inside the controller instance so you can setup any authentication you need to
76
+ #
77
+ # By default, the authentication will run via warden if available
78
+ # and will run the default.
79
+ #
80
+ # If you use devise, this will authenticate the same as _authenticate_user!_
81
+ #
82
+ # @example Devise admin
83
+ # RailsAdmin.config do |config|
84
+ # config.authenticate_with do
85
+ # authenticate_admin!
86
+ # end
87
+ # end
88
+ #
89
+ # @example Custom Warden
90
+ # RailsAdmin.config do |config|
91
+ # config.authenticate_with do
92
+ # warden.authenticate! :scope => :paranoid
93
+ # end
94
+ # end
95
+ #
96
+ # @see RailsAdmin::Config::DEFAULT_AUTHENTICATION
97
+ def authenticate_with(&blk)
98
+ @authenticate = blk if blk
99
+ @authenticate || DEFAULT_AUTHENTICATION
100
+ end
101
+
102
+
103
+ def attr_accessible_role(&blk)
104
+ @attr_accessible_role = blk if blk
105
+ @attr_accessible_role || DEFAULT_ATTR_ACCESSIBLE_ROLE
106
+ end
107
+
108
+ # Setup authorization to be run as a before filter
109
+ # This is run inside the controller instance so you can setup any authorization you need to.
110
+ #
111
+ # By default, there is no authorization.
112
+ #
113
+ # @example Custom
114
+ # RailsAdmin.config do |config|
115
+ # config.authorize_with do
116
+ # redirect_to root_path unless warden.user.is_admin?
117
+ # end
118
+ # end
119
+ #
120
+ # To use an authorization adapter, pass the name of the adapter. For example,
121
+ # to use with CanCan[https://github.com/ryanb/cancan], pass it like this.
122
+ #
123
+ # @example CanCan
124
+ # RailsAdmin.config do |config|
125
+ # config.authorize_with :cancan
126
+ # end
127
+ #
128
+ # See the wiki[https://github.com/sferik/rails_admin/wiki] for more on authorization.
129
+ #
130
+ # @see RailsAdmin::Config::DEFAULT_AUTHORIZE
131
+ def authorize_with(*args, &block)
132
+ extension = args.shift
133
+ if(extension)
134
+ @authorize = Proc.new {
135
+ @authorization_adapter = RailsAdmin::AUTHORIZATION_ADAPTERS[extension].new(*([self] + args).compact)
136
+ }
137
+ else
138
+ @authorize = block if block
139
+ end
140
+ @authorize || DEFAULT_AUTHORIZE
141
+ end
142
+
143
+ # Setup configuration using an extension-provided ConfigurationAdapter
144
+ #
145
+ # @example Custom configuration for role-based setup.
146
+ # RailsAdmin.config do |config|
147
+ # config.configure_with(:custom) do |config|
148
+ # config.models = ['User', 'Comment']
149
+ # config.roles = {
150
+ # 'Admin' => :all,
151
+ # 'User' => ['User']
152
+ # }
153
+ # end
154
+ # end
155
+ def configure_with(extension)
156
+ configuration = RailsAdmin::CONFIGURATION_ADAPTERS[extension].new
157
+ yield(configuration) if block_given?
158
+ end
159
+
160
+ # Setup a different method to determine the current user or admin logged in.
161
+ # This is run inside the controller instance and made available as a helper.
162
+ #
163
+ # By default, _request.env["warden"].user_ or _current_user_ will be used.
164
+ #
165
+ # @example Custom
166
+ # RailsAdmin.config do |config|
167
+ # config.current_user_method do
168
+ # current_admin
169
+ # end
170
+ # end
171
+ #
172
+ # @see RailsAdmin::Config::DEFAULT_CURRENT_USER
173
+ def current_user_method(&block)
174
+ @current_user = block if block
175
+ @current_user || DEFAULT_CURRENT_USER
176
+ end
177
+
178
+ def default_search_operator=(operator)
179
+ if %w{ default like starts_with ends_with is = }.include? operator
180
+ @default_search_operator = operator
181
+ else
182
+ raise ArgumentError, "Search operator '#{operator}' not supported"
183
+ end
184
+ end
185
+
186
+ def reload_between_requests=(thingy)
187
+ ActiveSupport::Deprecation.warn("'#{self.name}.reload_between_requests=' is not in use any longer, please remove it from initialization files", caller)
188
+ end
189
+
190
+ # Shortcut to access the list section's class configuration
191
+ # within a config DSL block
192
+ #
193
+ # @see RailsAdmin::Config::Sections::List
194
+ def list
195
+ ActiveSupport::Deprecation.warn("RailsAdmin::Config.list is deprecated", caller)
196
+ RailsAdmin::Config::Sections::List
197
+ end
198
+
199
+ # Loads a model configuration instance from the registry or registers
200
+ # a new one if one is yet to be added.
201
+ #
202
+ # First argument can be an instance of requested model, its class object,
203
+ # its class name as a string or symbol or a RailsAdmin::AbstractModel
204
+ # instance.
205
+ #
206
+ # If a block is given it is evaluated in the context of configuration instance.
207
+ #
208
+ # Returns given model's configuration
209
+ #
210
+ # @see RailsAdmin::Config.registry
211
+ def model(entity, &block)
212
+ key = begin
213
+ if entity.kind_of?(RailsAdmin::AbstractModel)
214
+ entity.model.name.to_sym
215
+ elsif entity.kind_of?(Class)
216
+ entity.name.to_sym
217
+ elsif entity.kind_of?(String) || entity.kind_of?(Symbol)
218
+ entity.to_sym
219
+ else
220
+ entity.class.name.to_sym
221
+ end
222
+ end
223
+ config = @registry[key] ||= RailsAdmin::Config::Model.new(entity)
224
+ config.instance_eval(&block) if block
225
+ config
226
+ end
227
+
228
+ # Returns all model configurations
229
+ #
230
+ # If a block is given it is evaluated in the context of configuration
231
+ # instances.
232
+ #
233
+ # @see RailsAdmin::Config.registry
234
+ def models(&block)
235
+ RailsAdmin::AbstractModel.all.map{|m| model(m, &block)}
236
+ end
237
+
238
+ # Shortcut to access the navigation section's class configuration
239
+ # within a config DSL block
240
+ #
241
+ # @see RailsAdmin::Config::Sections::Navigation
242
+ def navigation
243
+ ActiveSupport::Deprecation.warn("RailsAdmin::Config.navigation is deprecated", caller)
244
+ RailsAdmin::Config::Sections::Navigation
245
+ end
246
+
247
+ # Reset all configurations to defaults.
248
+ #
249
+ # @see RailsAdmin::Config.registry
250
+ def reset
251
+ @compact_show_view = true
252
+ @authenticate = nil
253
+ @authorize = nil
254
+ @current_user = nil
255
+ @default_hidden_fields = [:id, :created_at, :created_on, :deleted_at, :updated_at, :updated_on, :deleted_on]
256
+ @default_items_per_page = 20
257
+ @default_search_operator = 'default'
258
+ @excluded_models = []
259
+ @included_models = []
260
+ @total_columns_width = 697
261
+ @label_methods = [:name, :title]
262
+ @main_app_name = Proc.new { [Rails.application.engine_name.titleize.chomp(' Application'), 'Admin'] }
263
+ @registry = {}
264
+ end
265
+
266
+ # Reset a provided model's configuration.
267
+ #
268
+ # @see RailsAdmin::Config.registry
269
+ def reset_model(model)
270
+ key = model.kind_of?(Class) ? model.name.to_sym : model.to_sym
271
+ @registry.delete(key)
272
+ end
273
+
274
+ # Get all models that are configured as visible sorted by their weight and label.
275
+ #
276
+ # @see RailsAdmin::Config::Hideable
277
+ def visible_models
278
+ self.models.select {|m| m.visible? }.sort do |a, b|
279
+ (weight_order = a.weight <=> b.weight) == 0 ? a.label.downcase <=> b.label.downcase : weight_order
280
+ end
281
+ end
282
+ end
283
+
284
+ # Set default values for configuration options on load
285
+ self.reset
286
+ end
287
+ end
@@ -0,0 +1,111 @@
1
+ require 'rails_admin/config/proxy'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ # A base class for all configurables.
6
+ #
7
+ # Each configurable has a parent object. This parent object must provide
8
+ # the configurable with abstract_model and bindings.
9
+ #
10
+ # Bindings is a hash of variables bound by the querying context. For
11
+ # example the list view's template will bind an object to key
12
+ # :object for each row it outputs. This object is the actual row object
13
+ # which is then used as the receiver of queries for property values.
14
+ #
15
+ # @see RailsAdmin::AbstractModel
16
+ # @see RailsAdmin::Config::Model#abstract_model
17
+ class Base
18
+ attr_reader :abstract_model, :bindings, :parent, :root
19
+
20
+ def initialize(parent)
21
+ @abstract_model = parent.abstract_model
22
+ @bindings = {}
23
+ @parent = parent
24
+ @root = parent.root
25
+ end
26
+
27
+ def has_option?(name)
28
+ options = self.class.instance_variable_get("@config_options")
29
+ options && options.has_key?(name)
30
+ end
31
+
32
+ # Register an instance option for this object only
33
+ def register_instance_option(option_name, &default)
34
+ scope = class << self; self; end;
35
+ self.class.register_instance_option(option_name, scope, &default)
36
+ end
37
+
38
+ def register_deprecated_instance_option(option_name, replacement_option_name)
39
+ scope = class << self; self; end;
40
+ self.class.register_deprecated_instance_option(option_name, replacement_option_name, scope)
41
+ end
42
+
43
+ def with(bindings = {})
44
+ RailsAdmin::Config::Proxy.new(self, bindings)
45
+ end
46
+
47
+ # Register an instance option. Instance option is a configuration
48
+ # option that stores its value within an instance variable and is
49
+ # accessed by an instance method. Both go by the name of the option.
50
+ def self.register_instance_option(option_name, scope = self, &default)
51
+ unless options = scope.instance_variable_get("@config_options")
52
+ options = scope.instance_variable_set("@config_options", {})
53
+ end
54
+
55
+ option_name = option_name.to_s
56
+
57
+ options[option_name] = nil
58
+
59
+ # If it's a boolean create an alias for it and remove question mark
60
+ if "?" == option_name[-1, 1]
61
+ scope.send(:define_method, "#{option_name.chop!}?") do
62
+ send(option_name)
63
+ end
64
+ end
65
+
66
+ # Define getter/setter by the option name
67
+ scope.send(:define_method, option_name) do |*args, &block|
68
+ if !args[0].nil? || block
69
+ # Invocation with args --> This is the declaration of the option, i.e. setter
70
+ instance_variable_set("@#{option_name}_registered", args[0].nil? ? block : args[0])
71
+ else
72
+ # Invocation without args nor block --> It's the use of the option, i.e. getter
73
+ value = instance_variable_get("@#{option_name}_registered")
74
+ case value
75
+ when Proc
76
+ # Track recursive invocation with an instance variable. This prevents run-away recursion
77
+ # and allows configurations such as
78
+ # label { "#{label}".upcase }
79
+ # This will use the default definition when called recursively.
80
+ if instance_variable_get("@#{option_name}_recurring")
81
+ value = instance_eval &default
82
+ else
83
+ instance_variable_set("@#{option_name}_recurring", true)
84
+ value = instance_eval &value
85
+ instance_variable_set("@#{option_name}_recurring", false)
86
+ end
87
+ when nil
88
+ value = instance_eval &default
89
+ end
90
+ value
91
+ end
92
+ end
93
+ end
94
+
95
+ def self.register_deprecated_instance_option(option_name, replacement_option_name, scope = self)
96
+ scope.send(:define_method, option_name) do |*args, &block|
97
+ ActiveSupport::Deprecation.warn("The #{option_name} configuration option is deprecated, please use #{replacement_option_name}.")
98
+ send(replacement_option_name, *args, &block)
99
+ end
100
+ end
101
+
102
+ # Register a class option. Class option is a configuration
103
+ # option that stores it's value within a class object's instance variable
104
+ # and is accessed by a class method. Both go by the name of the option.
105
+ def self.register_class_option(option_name, &default)
106
+ scope = class << self; self; end;
107
+ self.register_instance_option(option_name, scope, &default)
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,99 @@
1
+ module RailsAdmin
2
+ module Config
3
+ module Fields
4
+ # Default field factory loads fields based on their property type or
5
+ # association type.
6
+ #
7
+ # @see RailsAdmin::Config::Fields.registry
8
+ mattr_reader :default_factory
9
+ @@default_factory = lambda do |parent, properties, fields|
10
+ # If it's an association
11
+ if properties.has_key?(:parent_model)
12
+ association = parent.abstract_model.associations.find {|a| a[:name].to_s == properties[:name].to_s}
13
+ field = RailsAdmin::Config::Fields::Types.load("#{association[:polymorphic] ? :polymorphic : properties[:type]}_association").new(parent, properties[:name], association)
14
+
15
+ field.read_only(true) if association[:read_only]
16
+ fields << field
17
+
18
+ # If it's a column
19
+ elsif !properties.has_key?(:parent_model)
20
+ fields << (field = RailsAdmin::Config::Fields::Types.load(properties[:type]).new(parent, properties[:name], properties))
21
+ # hide _type columns (handled as associations)
22
+ if parent.abstract_model.belongs_to_associations.find {|a| a[:foreign_type] == properties[:name] }
23
+ field.hide
24
+ end
25
+ # hide _id column
26
+ if parent.abstract_model.belongs_to_associations.find {|a| a[:child_key] == properties[:name] }
27
+ field.hide
28
+ field.filterable(false) # filtering is handled on the association itself
29
+ end
30
+ end
31
+ end
32
+
33
+ # Registry of field factories.
34
+ #
35
+ # Field factory is an anonymous function that recieves the parent object,
36
+ # an array of field properties and an array of fields already instantiated.
37
+ #
38
+ # If the factory returns true then that property will not be run through
39
+ # the rest of the registered factories. If it returns false then the
40
+ # arguments will be passed to the next factory.
41
+ #
42
+ # By default a basic factory is registered which loads fields by their
43
+ # database column type. Also a password factory is registered which
44
+ # loads fields if their name is password. Third default factory is a
45
+ # devise specific factory which loads fields for devise user models.
46
+ #
47
+ # @see RailsAdmin::Config::Fields.register_factory
48
+ # @see rails_admin/config/fields/factories/password.rb
49
+ # @see rails_admin/config/fields/factories/devise.rb
50
+ @@registry = [@@default_factory]
51
+
52
+ # Build an array of fields by the provided parent object's abstract_model's
53
+ # property and association information. Each property and association is
54
+ # passed to the registered field factories which will populate the fields
55
+ # array that will be returned.
56
+ #
57
+ # @see RailsAdmin::Config::Fields.registry
58
+ def self.factory(parent)
59
+ fields = []
60
+ return fields unless parent.abstract_model.model_store_exists?
61
+ # Load fields for all properties (columns)
62
+
63
+ parent.abstract_model.properties.each do |properties|
64
+ # Unless a previous factory has already loaded current field as well
65
+ unless fields.find {|f| f.name == properties[:name] }
66
+ # Loop through factories until one returns true
67
+ @@registry.find {|factory| factory.call(parent, properties, fields) }
68
+ end
69
+ end
70
+ # Load fields for all associations (relations)
71
+ parent.abstract_model.associations.each do |association|
72
+ # Unless a previous factory has already loaded current field as well
73
+ unless fields.find {|f| f.name == association[:name] }
74
+ # Loop through factories until one returns true
75
+ @@registry.find {|factory| factory.call(parent, association, fields) }
76
+ end
77
+ end
78
+ fields
79
+ end
80
+
81
+ # Register a field factory to be included in the factory stack.
82
+ #
83
+ # Factories are invoked lifo (last in first out).
84
+ #
85
+ # @see RailsAdmin::Config::Fields.registry
86
+ def self.register_factory(&block)
87
+ @@registry.unshift(block)
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+ require 'rails_admin/config/fields/types'
94
+ require 'rails_admin/config/fields/factories/password'
95
+ require 'rails_admin/config/fields/factories/enum'
96
+ require 'rails_admin/config/fields/factories/devise'
97
+ require 'rails_admin/config/fields/factories/paperclip'
98
+ require 'rails_admin/config/fields/factories/dragonfly'
99
+ require 'rails_admin/config/fields/factories/carrierwave'