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,101 @@
1
+ require 'rails_admin/config'
2
+ require 'rails_admin/config/fields/base'
3
+
4
+ module RailsAdmin
5
+ module Config
6
+ module Fields
7
+ class Association < RailsAdmin::Config::Fields::Base
8
+
9
+ def self.inherited(klass)
10
+ super(klass)
11
+ end
12
+
13
+ # Reader for the association information hash
14
+ def association
15
+ @properties
16
+ end
17
+
18
+ register_instance_option(:pretty_value) do
19
+ v = bindings[:view]
20
+ [value].flatten.select(&:present?).map do |associated|
21
+ amc = polymorphic? ? RailsAdmin::Config.model(associated) : associated_model_config # perf optimization for non-polymorphic associations
22
+ am = amc.abstract_model
23
+ wording = associated.send(amc.object_label_method)
24
+ can_see = v.authorized?(:show, am, associated)
25
+ can_see ? v.link_to(wording, v.show_path(:model_name => am.to_param, :id => associated.id)) : wording
26
+ end.to_sentence.html_safe
27
+ end
28
+
29
+ register_instance_option(:sortable) do
30
+ false
31
+ end
32
+
33
+ register_instance_option(:searchable) do
34
+ false
35
+ end
36
+
37
+ # Accessor whether association is visible or not. By default
38
+ # association checks whether the child model is excluded in
39
+ # configuration or not.
40
+ register_instance_option(:visible?) do
41
+ @visible ||= !self.associated_model_config.excluded?
42
+ end
43
+
44
+ # use the association name as a key, not the association key anymore!
45
+ register_instance_option(:label) do
46
+ @label ||= abstract_model.model.human_attribute_name association[:name]
47
+ end
48
+
49
+ # scope for possible associable records
50
+ register_instance_option :associated_collection_scope do
51
+ # bindings[:object] & bindings[:controller] available
52
+ associated_collection_scope_limit = (self.associated_collection_cache_all ? nil : 30)
53
+ Proc.new do |scope|
54
+ scope.limit(associated_collection_scope_limit)
55
+ end
56
+ end
57
+
58
+ # preload entire associated collection (per associated_collection_scope) on load
59
+ # Be sure to set limit in associated_collection_scope if set is large
60
+ register_instance_option :associated_collection_cache_all do
61
+ @associated_collection_cache_all ||= (associated_model_config.abstract_model.count < 100)
62
+ end
63
+
64
+ # Reader for the association's child model's configuration
65
+ def associated_model_config
66
+ @associated_model_config ||= RailsAdmin.config(association[:child_model])
67
+ end
68
+
69
+ # Reader for the association's child model object's label method
70
+ def associated_label_method
71
+ @associated_label_method ||= associated_model_config.object_label_method
72
+ end
73
+
74
+ # Reader for the association's child key
75
+ def child_key
76
+ association[:child_key]
77
+ end
78
+
79
+ # Reader for the inverse relationship
80
+ def inverse_of
81
+ association[:inverse_of]
82
+ end
83
+
84
+ # Reader for validation errors of the bound object
85
+ def errors
86
+ bindings[:object].errors[child_key]
87
+ end
88
+
89
+ # Reader whether this is a polymorphic association
90
+ def polymorphic?
91
+ association[:polymorphic]
92
+ end
93
+
94
+ # Reader for the association's value unformatted
95
+ def value
96
+ bindings[:object].send(association[:name])
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,273 @@
1
+ require 'active_support/core_ext/string/inflections'
2
+ require 'rails_admin/config/base'
3
+ require 'rails_admin/config/hideable'
4
+ require 'rails_admin/config/has_groups'
5
+ require 'rails_admin/config/fields'
6
+ require 'rails_admin/config/fields/groupable'
7
+ require 'rails_admin/config/fields/association'
8
+
9
+ module RailsAdmin
10
+ module Config
11
+ module Fields
12
+ class Base < RailsAdmin::Config::Base
13
+ attr_reader :name, :properties
14
+ attr_accessor :defined, :order
15
+
16
+ def self.inherited(klass)
17
+ klass.instance_variable_set("@css_class", klass.name.to_s.demodulize.camelcase(:lower))
18
+ klass.instance_variable_set("@view_helper", :text_field)
19
+ end
20
+
21
+ include RailsAdmin::Config::Hideable
22
+
23
+ def initialize(parent, name, properties)
24
+ super(parent)
25
+
26
+ @defined = false
27
+ @name = name
28
+ @order = 0
29
+ @properties = properties
30
+
31
+ # If parent is able to group fields the field should be aware of it
32
+ if parent.kind_of?(RailsAdmin::Config::HasGroups)
33
+ extend RailsAdmin::Config::Fields::Groupable
34
+ end
35
+ end
36
+
37
+ register_instance_option(:css_class) do
38
+ self.class.instance_variable_get("@css_class")
39
+ end
40
+
41
+ def column_css_class(*args, &block)
42
+ if !args[0].nil? || block
43
+ @css_class = args[0].nil? ? block : args[0]
44
+ else
45
+ css_class
46
+ end
47
+ end
48
+
49
+ def virtual?
50
+ properties.blank?
51
+ end
52
+
53
+ register_instance_option(:column_width) do
54
+ self.class.instance_variable_get("@column_width")
55
+ end
56
+
57
+ register_instance_option(:read_only) do
58
+ role = bindings[:view].controller.send(:_attr_accessible_role)
59
+ klass = bindings[:object].class
60
+ whitelist = klass.accessible_attributes(role).map(&:to_s)
61
+ blacklist = klass.protected_attributes(role).map(&:to_s)
62
+ self.method_name.to_s.in?(blacklist) || (whitelist.any? ? !self.method_name.to_s.in?(whitelist) : false)
63
+ end
64
+
65
+ register_instance_option(:truncated?) do
66
+ ActiveSupport::Deprecation.warn("'#{self.name}.truncated?' is deprecated, use '#{self.name}.pretty_value' instead", caller)
67
+ end
68
+
69
+ register_instance_option(:sortable) do
70
+ !virtual?
71
+ end
72
+
73
+ register_instance_option(:searchable) do
74
+ !virtual?
75
+ end
76
+
77
+ register_instance_option(:queryable?) do
78
+ !!searchable
79
+ end
80
+
81
+ register_instance_option(:filterable?) do
82
+ !!searchable
83
+ end
84
+
85
+ register_instance_option(:search_operator) do
86
+ @search_operator ||= RailsAdmin::Config.default_search_operator
87
+ end
88
+
89
+ # serials and dates are reversed in list, which is more natural (last modified items first).
90
+ register_instance_option(:sort_reverse?) do
91
+ false
92
+ end
93
+
94
+ # list of columns I should search for that field [{ :column => 'table_name.column', :type => field.type }, {..}]
95
+ register_instance_option(:searchable_columns) do
96
+ @searchable_columns ||= case self.searchable
97
+ when true
98
+ [{ :column => "#{self.abstract_model.model.table_name}.#{self.name}", :type => self.type }]
99
+ when false
100
+ []
101
+ when :all # valid only for associations
102
+ self.associated_model_config.list.fields.map { |f| { :column => "#{self.associated_model_config.abstract_model.model.table_name}.#{f.name}", :type => f.type } }
103
+ else
104
+ [self.searchable].flatten.map do |f|
105
+ if f.is_a?(String) && f.include?('.') # "table_name.attribute"
106
+ @table_name, column_name = f.split '.'
107
+ f = column_name.to_sym
108
+ end
109
+
110
+ field_name = f.is_a?(Hash) ? f.values.first : f
111
+
112
+ abstract_model = if f.is_a?(Hash) && (f.keys.first.is_a?(Class) || f.keys.first.is_a?(String)) # { Model => :attribute } || { "Model" => :attribute }
113
+ AbstractModel.new(f.keys.first)
114
+ elsif f.is_a?(Hash) # { :table_name => :attribute }
115
+ @table_name = f.keys.first.to_s
116
+ (self.association? ? self.associated_model_config.abstract_model : self.abstract_model)
117
+ else # :attribute
118
+ (self.association? ? self.associated_model_config.abstract_model : self.abstract_model)
119
+ end
120
+
121
+ property = abstract_model.properties.find{ |p| p[:name] == field_name }
122
+ raise ":#{field_name} attribute not found/not accessible on table :#{abstract_model.model.table_name}. \nPlease check '#{self.abstract_model.pretty_name}' configuration for :#{self.name} attribute." unless property
123
+ { :column => "#{@table_name || abstract_model.model.table_name}.#{property[:name]}", :type => property[:type] }
124
+ end
125
+ end
126
+ end
127
+
128
+ register_instance_option(:formatted_value) do
129
+ value.to_s
130
+ end
131
+
132
+ # output for pretty printing (show, list)
133
+ register_instance_option(:pretty_value) do
134
+ formatted_value
135
+ end
136
+
137
+ # output for printing in export view (developers beware: no bindings[:view] and no data!)
138
+ register_instance_option(:export_value) do
139
+ pretty_value
140
+ end
141
+
142
+
143
+ # Accessor for field's help text displayed below input field.
144
+ register_instance_option(:help) do
145
+ @help ||= (required? ? I18n.translate("admin.new.required") : I18n.translate("admin.new.optional")) + '. '
146
+ end
147
+
148
+ register_instance_option(:html_attributes) do
149
+ {
150
+ :class => css_class
151
+ }
152
+ end
153
+
154
+ # Accessor for field's label.
155
+ #
156
+ # @see RailsAdmin::AbstractModel.properties
157
+ register_instance_option(:label) do
158
+ @label ||= abstract_model.model.human_attribute_name name
159
+ end
160
+
161
+ # Accessor for field's maximum length.
162
+ #
163
+ # @see RailsAdmin::AbstractModel.properties
164
+ register_instance_option(:length) do
165
+ @length ||= properties && properties[:length]
166
+ end
167
+
168
+ register_instance_option(:partial) do
169
+ :form_field
170
+ end
171
+
172
+ register_deprecated_instance_option(:show_partial, :partial) # deprecated on 2011-07-15
173
+ register_deprecated_instance_option(:edit_partial, :partial) # deprecated on 2011-07-15
174
+ register_deprecated_instance_option(:create_partial, :partial) # deprecated on 2011-07-15
175
+ register_deprecated_instance_option(:update_partial, :partial) # deprecated on 2011-07-15
176
+
177
+ register_instance_option(:render) do
178
+ bindings[:view].render :partial => partial.to_s, :locals => {:field => self, :form => bindings[:form] }
179
+ end
180
+
181
+ # Accessor for whether this is field is mandatory.
182
+ #
183
+ # @see RailsAdmin::AbstractModel.properties
184
+ register_instance_option(:required?) do
185
+ @required ||= !!abstract_model.model.validators_on(name).find do |v|
186
+ v.is_a?(ActiveModel::Validations::PresenceValidator) && !v.options[:allow_nil] ||
187
+ v.is_a?(ActiveModel::Validations::NumericalityValidator) && !v.options[:allow_nil]
188
+ end
189
+ end
190
+
191
+ # Accessor for whether this is a serial field (aka. primary key, identifier).
192
+ #
193
+ # @see RailsAdmin::AbstractModel.properties
194
+ register_instance_option(:serial?) do
195
+ properties && properties[:serial?]
196
+ end
197
+
198
+ register_instance_option(:view_helper) do
199
+ @view_helper ||= self.class.instance_variable_get("@view_helper")
200
+ end
201
+
202
+ # Is this an association
203
+ def association?
204
+ kind_of?(RailsAdmin::Config::Fields::Association)
205
+ end
206
+
207
+ # Reader for validation errors of the bound object
208
+ def errors
209
+ bindings[:object].errors[name]
210
+ end
211
+
212
+ # Reader whether the bound object has validation errors
213
+ def has_errors?
214
+ # TODO DEPRECATE, USELESS
215
+ errors.present?
216
+ end
217
+
218
+ # Reader whether field is optional.
219
+ #
220
+ # @see RailsAdmin::Config::Fields::Base.register_instance_option(:required?)
221
+ def optional?
222
+ not required
223
+ end
224
+
225
+ # Inverse accessor whether this field is required.
226
+ #
227
+ # @see RailsAdmin::Config::Fields::Base.register_instance_option(:required?)
228
+ def optional(state = nil, &block)
229
+ if !state.nil? || block
230
+ required state.nil? ? proc { false == (instance_eval &block) } : false == state
231
+ else
232
+ optional?
233
+ end
234
+ end
235
+
236
+ # Writer to make field optional.
237
+ #
238
+ # @see RailsAdmin::Config::Fields::Base.optional
239
+ def optional=(state)
240
+ optional(state)
241
+ end
242
+
243
+ # Reader for field's type
244
+ def type
245
+ @type ||= self.class.name.to_s.demodulize.underscore.to_sym
246
+ end
247
+
248
+ # Reader for field's value
249
+ def value
250
+ bindings[:object].safe_send(name)
251
+ end
252
+
253
+ # Reader for field's name
254
+ def dom_name
255
+ @dom_name ||= "#{bindings[:form].object_name}#{(index = bindings[:form].options[:index]) && "[#{index}]"}[#{method_name}]"
256
+ end
257
+
258
+ # Reader for field's id
259
+ def dom_id
260
+ @dom_id ||= [
261
+ bindings[:form].object_name,
262
+ bindings[:form].options[:index],
263
+ method_name
264
+ ].reject(&:blank?).join('_')
265
+ end
266
+
267
+ def method_name
268
+ name
269
+ end
270
+ end
271
+ end
272
+ end
273
+ end
@@ -0,0 +1,16 @@
1
+ require 'rails_admin/config/fields'
2
+ require 'rails_admin/config/fields/types'
3
+ require 'rails_admin/config/fields/types/file_upload'
4
+
5
+ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
+ if defined?(::CarrierWave)
7
+ if (model = parent.abstract_model.model).kind_of?(CarrierWave::Mount) && model.uploaders.include?(properties[:name])
8
+ fields << RailsAdmin::Config::Fields::Types.load(:carrierwave).new(parent, properties[:name], properties)
9
+ true
10
+ else
11
+ false
12
+ end
13
+ else
14
+ false
15
+ end
16
+ end
@@ -0,0 +1,31 @@
1
+ require 'rails_admin/config/fields'
2
+ require 'rails_admin/config/fields/types'
3
+ require 'rails_admin/config/fields/types/password'
4
+ require 'rails_admin/config/sections/update'
5
+
6
+ # Register a custom field factory for devise model
7
+ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
8
+ if :encrypted_password == properties[:name]
9
+ fields << RailsAdmin::Config::Fields::Types.load(:password).new(parent, :password, properties)
10
+ fields << RailsAdmin::Config::Fields::Types.load(:password).new(parent, :password_confirmation, properties)
11
+ [:password_salt, :reset_password_token, :remember_token].each do |name|
12
+ properties = parent.abstract_model.properties.find {|p| name == p[:name]}
13
+ if properties
14
+ RailsAdmin::Config::Fields.default_factory.call(parent, properties, fields)
15
+ fields.last.hide
16
+ end
17
+ end
18
+ if parent.kind_of?(RailsAdmin::Config::Sections::Update)
19
+ [:remember_created_at, :sign_in_count, :current_sign_in_at, :last_sign_in_at, :current_sign_in_ip, :last_sign_in_ip].each do |name|
20
+ properties = parent.abstract_model.properties.find {|p| name == p[:name]}
21
+ if properties
22
+ RailsAdmin::Config::Fields.default_factory.call(parent, properties, fields)
23
+ fields.last.hide
24
+ end
25
+ end
26
+ end
27
+ true
28
+ else
29
+ false
30
+ end
31
+ end
@@ -0,0 +1,20 @@
1
+ require 'rails_admin/config/fields'
2
+ require 'rails_admin/config/fields/types'
3
+ require 'rails_admin/config/fields/types/file_upload'
4
+
5
+ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6
+
7
+ if (properties[:name].to_s =~ /^(.+)_uid$/) && defined?(::Dragonfly) && parent.abstract_model.model.dragonfly_attachment_classes.map(&:attribute).include?(attachment_name = $1.to_sym)
8
+ additionnal_dragonfly_columns = [:name]
9
+ additionnal_dragonfly_columns.each do |it|
10
+ if props = parent.abstract_model.properties.find {|p| "#{attachment_name}_#{it}" == p[:name].to_s }
11
+ RailsAdmin::Config::Fields.default_factory.call(parent, props, fields)
12
+ fields.last.hide
13
+ end
14
+ end
15
+ fields << RailsAdmin::Config::Fields::Types::Dragonfly.new(parent, attachment_name, properties)
16
+ true
17
+ else
18
+ false
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ require 'rails_admin/config/fields'
2
+ require 'rails_admin/config/fields/types/enum'
3
+
4
+ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
5
+ if parent.abstract_model.model.instance_methods.include?(:"#{properties[:name]}_enum") || parent.abstract_model.model.instance_methods.include?("#{properties[:name]}_enum")
6
+ fields << RailsAdmin::Config::Fields::Types::Enum.new(parent, properties[:name], properties)
7
+ true
8
+ else
9
+ false
10
+ end
11
+ end