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,34 @@
1
+ require 'rails_admin/config/fields/base'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class String < RailsAdmin::Config::Fields::Base
8
+
9
+ RailsAdmin::Config::Fields::Types::register(self)
10
+
11
+ @view_helper = :text_field
12
+
13
+ register_instance_option(:html_attributes) do
14
+ {
15
+ :class => css_class,
16
+ :maxlength => length,
17
+ :size => [50, length.to_i].min
18
+ }
19
+ end
20
+
21
+ register_instance_option(:help) do
22
+ text = (required? ? I18n.translate("admin.new.required") : I18n.translate("admin.new.optional")) + '. '
23
+ text += "#{length} #{length == 1 ? I18n.translate("admin.new.one_char") : I18n.translate("admin.new.many_chars")}." if length.present?
24
+ text
25
+ end
26
+
27
+ register_instance_option(:partial) do
28
+ :form_field
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,39 @@
1
+ require 'rails_admin/config/fields/base'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class Text < RailsAdmin::Config::Fields::Base
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types::register(self)
10
+
11
+ @view_helper = :text_area
12
+
13
+ # CKEditor is disabled by default
14
+ register_instance_option(:ckeditor) do
15
+ false
16
+ end
17
+
18
+ # If you want to have a different toolbar configuration for CKEditor
19
+ # create your own custom config.js and override this configuration
20
+ register_instance_option(:ckeditor_config_js) do
21
+ "/javascripts/ckeditor/config.js"
22
+ end
23
+
24
+ register_instance_option(:html_attributes) do
25
+ {
26
+ :class => css_class,
27
+ :cols => "48",
28
+ :rows => "3"
29
+ }
30
+ end
31
+
32
+ register_instance_option(:partial) do
33
+ :form_text
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,31 @@
1
+ require 'rails_admin/config/fields/types/datetime'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class Time < RailsAdmin::Config::Fields::Types::Datetime
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types::register(self)
10
+
11
+ @format = :short
12
+ @i18n_scope = [:time, :formats]
13
+ @js_plugin_options = {
14
+ "showDate" => false,
15
+ }
16
+
17
+ # Register field type for the type loader
18
+ RailsAdmin::Config::Fields::Types::register(self)
19
+
20
+ def parse_input(params)
21
+ params[name] = self.class.normalize(params[name], localized_time_format) if params[name]
22
+ end
23
+
24
+ register_instance_option(:strftime_format) do
25
+ (localized_format.include? "%p") ? "%I:%M %p" : "%H:%M"
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails_admin/config/fields/types/datetime'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class Timestamp < RailsAdmin::Config::Fields::Types::Datetime
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types::register(self)
10
+
11
+ @format = :long
12
+ @i18n_scope = [:time, :formats]
13
+ @js_plugin_options = {}
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,112 @@
1
+ module RailsAdmin
2
+ module Config
3
+ # Provides accessors and autoregistering of model's fields.
4
+ module HasFields
5
+ # Defines a configuration for a field.
6
+ def field(name, type = nil, &block)
7
+ field = @fields.find {|f| name == f.name }
8
+
9
+ # some fields are hidden by default (belongs_to keys, has_many associations in list views.)
10
+ # unhide them if config specifically defines them
11
+ field.show if field.try(:hidden?)
12
+
13
+ # Specify field as virtual if type is not specifically set and field was not
14
+ # found in default stack
15
+ if field.nil? && type.nil?
16
+ field = (@fields << RailsAdmin::Config::Fields::Types.load(:string).new(self, name, {})).last
17
+
18
+ # Register a custom field type if one is provided and it is different from
19
+ # one found in default stack
20
+ elsif !type.nil? && type != (field.nil? ? nil : field.type)
21
+ @fields.delete(field) unless field.nil?
22
+ properties = parent.abstract_model.properties.find {|p| name == p[:name] }
23
+ field = (@fields << RailsAdmin::Config::Fields::Types.load(type).new(self, name, properties)).last
24
+ end
25
+ # If field has not been yet defined add some default properties
26
+ unless field.defined
27
+ field.defined = true
28
+ field.order = @fields.select(&:defined).length
29
+ end
30
+ # If a block has been given evaluate it and sort fields after that
31
+ if block
32
+ field.instance_eval &block
33
+ @fields.sort! {|a, b| a.order <=> b.order }
34
+ end
35
+ field
36
+ end
37
+
38
+ # include fields by name and apply an optionnal block to each (through a call to fields),
39
+ # or include fields by conditions if no field names
40
+ def include_fields(*field_names, &block)
41
+ if field_names.empty?
42
+ @fields.select {|f| f.instance_eval &block }.each do |f|
43
+ unless f.defined
44
+ f.defined = true
45
+ f.order = @fields.select(&:defined).length
46
+ end
47
+ end
48
+ else
49
+ fields(*field_names, &block)
50
+ end
51
+ end
52
+
53
+ # exclude fields by name or by condition (block)
54
+ def exclude_fields(*field_names, &block)
55
+ block ||= lambda { |f| field_names.include?(f.name) }
56
+ @fields.each {|f| f.defined = true } if @fields.select(&:defined).empty?
57
+ @fields.select {|f| f.instance_eval &block }.each {|f| f.defined = false }
58
+ end
59
+
60
+ # API candy
61
+ alias :exclude_fields_if :exclude_fields
62
+ alias :include_fields_if :include_fields
63
+
64
+ # does pretty much what it says in the can
65
+ def include_all_fields
66
+ include_fields_if() { true }
67
+ end
68
+
69
+ # Returns all field configurations for the model configuration instance. If no fields
70
+ # have been defined returns all fields. Defined fields are sorted to match their
71
+ # order property. If order was not specified it will match the order in which fields
72
+ # were defined.
73
+ #
74
+ # If a block is passed it will be evaluated in the context of each field
75
+ def fields(*field_names,&block)
76
+ if field_names.empty?
77
+ defined = @fields.select {|f| f.defined }
78
+ defined.sort! {|a, b| a.order <=> b.order }
79
+ defined = @fields if defined.empty?
80
+ if block
81
+ defined.each {|f| f.instance_eval &block }
82
+ end
83
+ defined
84
+ else
85
+ defined = field_names.map{|field_name| @fields.find {|f| f.name == field_name } }
86
+ defined.map do |f|
87
+ unless f.defined
88
+ f.defined = true
89
+ f.order = @fields.select(&:defined).length
90
+ end
91
+ f.instance_eval(&block) if block
92
+ f
93
+ end
94
+ end
95
+ end
96
+
97
+ # Defines configuration for fields by their type.
98
+ def fields_of_type(type, &block)
99
+ selected = @fields.select {|f| type == f.type }
100
+ if block
101
+ selected.each {|f| f.instance_eval &block }
102
+ end
103
+ selected
104
+ end
105
+
106
+ # Get all fields defined as visible.
107
+ def visible_fields
108
+ fields.select {|f| f.with(bindings).visible? }.map{|f| f.with(bindings)}
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,39 @@
1
+ require 'rails_admin/config/fields/group'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module HasGroups
6
+ # Access fields by their group
7
+ def fields_of_group(group, &block)
8
+ selected = @fields.select {|f| group == f.group }
9
+ if block
10
+ selected.each {|f| f.instance_eval &block }
11
+ end
12
+ selected
13
+ end
14
+
15
+ # Accessor for a group
16
+ #
17
+ # If group with given name does not yet exist it will be created. If a
18
+ # block is passed it will be evaluated in the context of the group
19
+ def group(name, &block)
20
+ group = @groups.find {|g| name == g.name }
21
+ if group.nil?
22
+ group = (@groups << RailsAdmin::Config::Fields::Group.new(self, name)).last
23
+ end
24
+ group.instance_eval &block if block
25
+ group
26
+ end
27
+
28
+ # Reader for groups
29
+ def groups
30
+ @groups
31
+ end
32
+
33
+ # Reader for groups that are marked as visible
34
+ def visible_groups
35
+ groups.select {|g| g.visible? }
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,28 @@
1
+ module RailsAdmin
2
+ module Config
3
+ # Defines a visibility configuration
4
+ module Hideable
5
+ # Visibility defaults to true.
6
+ def self.included(klass)
7
+ klass.register_instance_option(:visible?) do
8
+ !root.excluded?
9
+ end
10
+ end
11
+
12
+ # Reader whether field is hidden.
13
+ def hidden?
14
+ not visible
15
+ end
16
+
17
+ # Writer to hide field.
18
+ def hide(&block)
19
+ visible block ? proc { false == (instance_eval &block) } : false
20
+ end
21
+
22
+ # Writer to show field.
23
+ def show(&block)
24
+ visible block || true
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,89 @@
1
+ require 'rails_admin/config'
2
+ require 'rails_admin/config/base'
3
+ require 'rails_admin/config/sections'
4
+
5
+ module RailsAdmin
6
+ module Config
7
+ # Model specific configuration object.
8
+ class Model < RailsAdmin::Config::Base
9
+ include RailsAdmin::Config::Hideable
10
+ include RailsAdmin::Config::Sections
11
+
12
+ def initialize(entity)
13
+ @abstract_model = begin
14
+ if entity.kind_of?(RailsAdmin::AbstractModel)
15
+ entity
16
+ elsif entity.kind_of?(Class) || entity.kind_of?(String) || entity.kind_of?(Symbol)
17
+ RailsAdmin::AbstractModel.new(entity)
18
+ else
19
+ RailsAdmin::AbstractModel.new(entity.class)
20
+ end
21
+ end
22
+ @bindings = {}
23
+ @parent = nil
24
+ @root = self
25
+ end
26
+
27
+ def excluded?
28
+ @excluded ||= !RailsAdmin::AbstractModel.all.map(&:model).include?(abstract_model.model)
29
+ end
30
+
31
+ # Configure create and update views as a bulk operation with given block
32
+ # or get update view's configuration if no block is given
33
+ def edit(&block)
34
+ return send(:update) unless block_given?
35
+ [:create, :update].each do |s|
36
+ send(s, &block)
37
+ end
38
+ end
39
+
40
+ def object_label
41
+ bindings[:object].send object_label_method
42
+ end
43
+
44
+ # The display for a model instance (i.e. a single database record).
45
+ # Unless configured in a model config block, it'll try to use :name followed by :title methods, then
46
+ # any methods that may have been added to the label_methods array via Configuration.
47
+ # Failing all of these, it'll return the class name followed by the model's id.
48
+ register_instance_option(:object_label_method) do
49
+ @object_label_method ||= Config.label_methods.find { |method| (@dummy_object ||= abstract_model.model.new).respond_to? method } || :rails_admin_default_object_label_method
50
+ end
51
+
52
+ register_instance_option(:label) do
53
+ @label ||= abstract_model.model.model_name.human(:default => abstract_model.model.model_name.demodulize.underscore.humanize)
54
+ end
55
+
56
+ register_instance_option(:label_plural) do
57
+ @label_plural ||= abstract_model.model.model_name.human(:count => 2, :default => label.pluralize)
58
+ end
59
+
60
+ register_instance_option(:weight) do
61
+ 0
62
+ end
63
+
64
+ register_instance_option(:parent) do
65
+ :root
66
+ end
67
+
68
+ register_deprecated_instance_option(:dropdown, :navigation_label) # same API, deprecated 2011-07-21
69
+
70
+ register_instance_option(:navigation_label) do
71
+ false
72
+ end
73
+
74
+ # Act as a proxy for the section configurations that actually
75
+ # store the configurations.
76
+ def method_missing(m, *args, &block)
77
+ responded_to = false
78
+ [:create, :list, :show, :navigation, :update, :export].each do |s|
79
+ section = send(s)
80
+ if section.respond_to?(m)
81
+ responded_to = true
82
+ section.send(m, *args, &block)
83
+ end
84
+ end
85
+ raise NoMethodError.new("#{self} has no method #{m}") unless responded_to
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,40 @@
1
+ module RailsAdmin
2
+ module Config
3
+ class Proxy
4
+
5
+ instance_methods.each {|m| undef_method m unless m =~ /^(__|instance_eval|object_id)/ }
6
+
7
+ attr_reader :bindings
8
+
9
+ def initialize(object, bindings = {})
10
+ @object = object
11
+ @bindings = bindings
12
+ end
13
+
14
+ # Bind variables to be used by the configuration options
15
+ def bind(key, value = nil)
16
+ if key.kind_of?(Hash)
17
+ @bindings = key
18
+ else
19
+ @bindings[key] = value
20
+ end
21
+ self
22
+ end
23
+
24
+ def method_missing(name, *args, &block)
25
+ if @object.respond_to?(name)
26
+ reset = @object.instance_variable_get("@bindings")
27
+ begin
28
+ @object.instance_variable_set("@bindings", @bindings)
29
+ response = @object.__send__(name, *args, &block)
30
+ ensure
31
+ @object.instance_variable_set("@bindings", @reset)
32
+ end
33
+ response
34
+ else
35
+ super(name, *args, &block)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,51 @@
1
+ require 'active_support/core_ext/string/inflections'
2
+ require 'rails_admin/config/sections/create'
3
+ require 'rails_admin/config/sections/list'
4
+ require 'rails_admin/config/sections/navigation'
5
+ require 'rails_admin/config/sections/update'
6
+ require 'rails_admin/config/sections/export'
7
+ require 'rails_admin/config/sections/show'
8
+
9
+ module RailsAdmin
10
+ module Config
11
+ # Sections describe different views in the RailsAdmin engine. Configurable sections are
12
+ # list and navigation.
13
+ #
14
+ # Each section's class object can store generic configuration about that section (such as the
15
+ # number of visible tabs in the main navigation), while the instances (accessed via model
16
+ # configuration objects) store model specific configuration (such as the visibility of the
17
+ # model).
18
+ module Sections
19
+ def self.included(klass)
20
+ # Register accessors for all the sections in this namespace
21
+ constants.each do |name|
22
+ section = "RailsAdmin::Config::Sections::#{name}".constantize
23
+ name = name.to_s.downcase.to_sym
24
+ klass.send(:define_method, name) do |&block|
25
+ @sections = {} unless @sections
26
+ unless @sections[name]
27
+ @sections[name] = section.new(self)
28
+ end
29
+ @sections[name].instance_eval &block if block
30
+ @sections[name]
31
+ end
32
+ # Register a shortcut to define the model's label for each section.
33
+ klass.send(:define_method, "label_for_#{name}") do
34
+ # TODO: Remove this warning in the next release, after people have updated their applications
35
+ $stderr.puts("WARNING: label_for_#{name} has been removed. This configuration will be ignored. Model names can be configured with 'label' and section-specific names are no longer supported. See README for details.")
36
+ end
37
+ # Register a shortcut to hide the model for each section.
38
+ klass.send(:define_method, "hide_from_#{name}") do |&block|
39
+ # TODO: Remove this warning in the next release, after people have updated their applications
40
+ $stderr.puts("WARNING: hide_from_#{name} has been removed. This configuration will be ignored. Model visibility can be configured with 'hide', 'show' and 'visibility'. Section-specific visibility is no longer supported. See README for details.")
41
+ end
42
+ # Register a shortcut to show the model for each section.
43
+ klass.send(:define_method, "show_in_#{name}") do |&block|
44
+ # TODO: Remove this warning in the next release, after people have updated their applications
45
+ $stderr.puts("WARNING: show_in_#{name} has been removed. This configuration will be ignored. Model visibility can be configured with 'hide', 'show' and 'visibility'. Section-specific visibility is no longer supported. See README for details.")
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end