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,11 @@
1
+ require 'rails_admin/config/sections/update'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Sections
6
+ # Configuration of the edit view for a new object
7
+ class Create < RailsAdmin::Config::Sections::Update
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails_admin/config/base'
2
+ require 'rails_admin/config/hideable'
3
+
4
+ module RailsAdmin
5
+ module Config
6
+ module Sections
7
+ # Configuration of the navigation view
8
+ class Export < RailsAdmin::Config::Base
9
+ include RailsAdmin::Config::HasFields
10
+
11
+ def initialize(parent)
12
+ super(parent)
13
+ @fields = RailsAdmin::Config::Fields.factory(self)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,55 @@
1
+ require 'rails_admin/config/base'
2
+ require 'rails_admin/config/hideable'
3
+ require 'rails_admin/config/fields'
4
+ require 'rails_admin/config/has_fields'
5
+
6
+ module RailsAdmin
7
+ module Config
8
+ module Sections
9
+ # Configuration of the list view
10
+ class List < RailsAdmin::Config::Base
11
+ include RailsAdmin::Config::HasFields
12
+
13
+ def initialize(parent)
14
+ super(parent)
15
+ # Populate @fields instance variable with model's properties
16
+ @fields = RailsAdmin::Config::Fields.factory(self)
17
+ @fields.each do |f|
18
+ if f.association? && !f.kind_of?(RailsAdmin::Config::Fields::Types::BelongsToAssociation)
19
+ f.visible false
20
+ end
21
+ end
22
+ end
23
+
24
+ def self.default_items_per_page
25
+ ActiveSupport::Deprecation.warn("'#{self.name}.default_items_per_page' is deprecated, use 'RailsAdmin::Config.default_items_per_page' instead", caller)
26
+ RailsAdmin::Config.default_items_per_page
27
+ end
28
+
29
+ def self.default_items_per_page=(value)
30
+ ActiveSupport::Deprecation.warn("'#{self.name}.default_items_per_page=' is deprecated, use 'RailsAdmin.config{|c| c.default_items_per_page = #{value}}' instead", caller)
31
+ RailsAdmin.config do |config|
32
+ config.default_items_per_page = value
33
+ end
34
+ end
35
+
36
+ register_instance_option :filters do
37
+ []
38
+ end
39
+
40
+ # Number of items listed per page
41
+ register_instance_option(:items_per_page) do
42
+ RailsAdmin::Config.default_items_per_page
43
+ end
44
+
45
+ register_instance_option(:sort_by) do
46
+ parent.abstract_model.model.primary_key
47
+ end
48
+
49
+ register_instance_option(:sort_reverse?) do
50
+ true # By default show latest first
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,21 @@
1
+ require 'rails_admin/config/base'
2
+ require 'rails_admin/config/hideable'
3
+
4
+ module RailsAdmin
5
+ module Config
6
+ module Sections
7
+ # Configuration of the navigation view
8
+ class Navigation < RailsAdmin::Config::Base
9
+ # Defines the number of tabs to be renderer in the main navigation.
10
+ # Rest of the links will be rendered to a drop down menu.
11
+ # NOTE: "max_visible_tabs" is deprecated
12
+ # FIXME: remove this after giving people an appropriate time
13
+ # to change their code.
14
+ register_class_option(:max_visible_tabs) do
15
+ ActiveSupport::Deprecation.warn("Navigation.max_visible_tabs configuration option is deprecated", caller)
16
+ 5
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,50 @@
1
+ require 'rails_admin/config/base'
2
+ require 'rails_admin/config/hideable'
3
+ require 'rails_admin/config/fields'
4
+ require 'rails_admin/config/has_fields'
5
+ require 'rails_admin/config/has_groups'
6
+ require 'rails_admin/config/fields/group'
7
+
8
+ module RailsAdmin
9
+ module Config
10
+ module Sections
11
+ # Configuration of the show view for a new object
12
+ class Show < RailsAdmin::Config::Base
13
+ include RailsAdmin::Config::HasFields
14
+ include RailsAdmin::Config::HasGroups
15
+
16
+ def self.default_hidden_fields
17
+ ActiveSupport::Deprecation.warn("'#{self.name}.default_hidden_fields' is deprecated, use 'RailsAdmin::Config.default_hidden_fields' instead", caller)
18
+ RailsAdmin::Config.default_hidden_fields
19
+ end
20
+
21
+ def self.default_hidden_fields=(value)
22
+ ActiveSupport::Deprecation.warn("'#{self.name}.default_hidden_fields=' is deprecated, use 'RailsAdmin.config{|c| c.default_hidden_fields = #{value}}' instead", caller)
23
+ RailsAdmin.config do |config|
24
+ config.default_hidden_fields = value
25
+ end
26
+ end
27
+
28
+ def initialize(parent)
29
+ super(parent)
30
+ # Populate @fields instance variable with model's properties
31
+ @groups = [ RailsAdmin::Config::Fields::Group.new(self, :default) ]
32
+ @groups.first.label do
33
+ I18n.translate("admin.new.basic_info")
34
+ end
35
+ @fields = RailsAdmin::Config::Fields.factory(self)
36
+ @fields.each do |f|
37
+ if f.association? && f.type != :belongs_to_association
38
+ f.group f.label.to_sym
39
+ else
40
+ f.group :default
41
+ end
42
+ if f.serial? || RailsAdmin::Config.default_hidden_fields.include?(f.name)
43
+ f.hide
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,11 @@
1
+ require 'rails_admin/config/sections/show'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Sections
6
+ # Configuration of the edit view for an existing object
7
+ class Update < RailsAdmin::Config::Sections::Show
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ require 'rails'
2
+ require 'jquery-rails'
3
+ require 'remotipart'
4
+ require 'bootstrap-sass'
5
+ require 'kaminari'
6
+ require 'rails_admin'
7
+
8
+ module RailsAdmin
9
+ class Engine < Rails::Engine
10
+ isolate_namespace RailsAdmin
11
+ initializer "RailsAdmin precompile hook" do |app|
12
+ app.config.assets.precompile += ['rails_admin/rails_admin.js', 'rails_admin/rails_admin.css', 'rails_admin/jquery.colorpicker.js', 'rails_admin/jquery.colorpicker.css']
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ module RailsAdmin
2
+ EXTENSIONS = []
3
+ AUTHORIZATION_ADAPTERS = {}
4
+ CONFIGURATION_ADAPTERS = {}
5
+
6
+ # Extend RailsAdmin
7
+ #
8
+ # The extension may define various adapters (e.g., for authorization) and
9
+ # register those via the options hash.
10
+ def self.add_extension(extension_key, extension_definition, options = {})
11
+ options.assert_valid_keys(:authorization, :configuration)
12
+
13
+ EXTENSIONS << extension_key
14
+
15
+ if(authorization = options[:authorization])
16
+ AUTHORIZATION_ADAPTERS[extension_key] = extension_definition::AuthorizationAdapter
17
+ end
18
+
19
+ if(configuration = options[:configuration])
20
+ CONFIGURATION_ADAPTERS[extension_key] = extension_definition::ConfigurationAdapter
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_admin/extensions/cancan/authorization_adapter'
2
+
3
+ RailsAdmin.add_extension(:cancan, RailsAdmin::Extensions::CanCan, {
4
+ :authorization => true
5
+ })
@@ -0,0 +1,71 @@
1
+ module RailsAdmin
2
+ module Extensions
3
+ module CanCan
4
+ # This adapter is for the CanCan[https://github.com/ryanb/cancan] authorization library.
5
+ # You can create another adapter for different authorization behavior, just be certain it
6
+ # responds to each of the public methods here.
7
+ class AuthorizationAdapter
8
+ # See the +authorize_with+ config method for where the initialization happens.
9
+ def initialize(controller)
10
+ @controller = controller
11
+ @controller.extend ControllerExtension
12
+ @controller.current_ability.authorize! :access, :rails_admin
13
+ end
14
+
15
+ # This method is called in every controller action and should raise an exception
16
+ # when the authorization fails. The first argument is the name of the controller
17
+ # action as a symbol (:create, :bulk_delete, etc.). The second argument is the
18
+ # AbstractModel instance that applies. The third argument is the actual model
19
+ # instance if it is available.
20
+ def authorize(action, abstract_model = nil, model_object = nil)
21
+ action = translate_action(action)
22
+ @controller.current_ability.authorize!(action, model_object || abstract_model && abstract_model.model) if action
23
+ end
24
+
25
+ # This method is called primarily from the view to determine whether the given user
26
+ # has access to perform the action on a given model. It should return true when authorized.
27
+ # This takes the same arguments as +authorize+. The difference is that this will
28
+ # return a boolean whereas +authorize+ will raise an exception when not authorized.
29
+ def authorized?(action, abstract_model = nil, model_object = nil)
30
+ action = translate_action(action)
31
+ @controller.current_ability.can?(action, model_object || abstract_model && abstract_model.model) if action
32
+ end
33
+
34
+ # This is called when needing to scope a database query. It is called within the list
35
+ # and bulk_delete/destroy actions and should return a scope which limits the records
36
+ # to those which the user can perform the given action on.
37
+ def query(action, abstract_model)
38
+ action = translate_action(action)
39
+ abstract_model.model.accessible_by(@controller.current_ability, action)
40
+ end
41
+
42
+ # This is called in the new/create actions to determine the initial attributes for new
43
+ # records. It should return a hash of attributes which match what the user
44
+ # is authorized to create.
45
+ def attributes_for(action, abstract_model)
46
+ action = translate_action(action)
47
+ @controller.current_ability.attributes_for(action, abstract_model && abstract_model.model)
48
+ end
49
+
50
+ private
51
+
52
+ # Change the action into something that fits better with CanCan's conventions
53
+ def translate_action(action)
54
+ case action
55
+ when :list, :bulk_action then :index
56
+ when :delete, :bulk_destroy, :bulk_delete then :destroy
57
+ else action
58
+ end
59
+ end
60
+
61
+ module ControllerExtension
62
+ def current_ability
63
+ # use _current_user instead of default current_user so it works with
64
+ # whatever current user method is defined with RailsAdmin
65
+ @current_ability ||= ::Ability.new(_current_user)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,15 @@
1
+ require 'active_support/core_ext/string/inflections'
2
+ module RailsAdmin
3
+ class AbstractModel
4
+ module GenericSupport
5
+ def to_param
6
+ parts = model.to_s.split("::")
7
+ parts.map{|x| x == parts.last ? x.underscore.pluralize : x.underscore}.join("~")
8
+ end
9
+
10
+ def pretty_name
11
+ model.model_name.human
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,43 @@
1
+ require 'i18n'
2
+
3
+ module RailsAdmin
4
+ module I18nSupport
5
+ def abbr_day_names
6
+ begin
7
+ I18n.t('date.abbr_day_names', :raise => true)
8
+ rescue I18n::ArgumentError
9
+ I18n.t('date.abbr_day_names', :locale => :en)
10
+ end
11
+ end
12
+
13
+ def abbr_month_names
14
+ begin
15
+ names = I18n.t('date.abbr_month_names', :raise => true)
16
+ rescue I18n::ArgumentError
17
+ names = I18n.t('date.abbr_month_names', :locale => :en)
18
+ end
19
+ names[1..-1]
20
+ end
21
+
22
+ def date_format
23
+ I18n.t('date.formats.default', :default => I18n.t('date.formats.default', :locale => :en))
24
+ end
25
+
26
+ def day_names
27
+ begin
28
+ I18n.t('date.day_names', :raise => true)
29
+ rescue I18n::ArgumentError
30
+ I18n.t('date.day_names', :locale => :en)
31
+ end
32
+ end
33
+
34
+ def month_names
35
+ begin
36
+ names = I18n.t('date.month_names', :raise => true)
37
+ rescue I18n::ArgumentError
38
+ names = I18n.t('date.month_names', :locale => :en)
39
+ end
40
+ names[1..-1]
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,44 @@
1
+ class Hash
2
+
3
+ def symbolize
4
+ Hash.symbolize_hash(self)
5
+ end
6
+
7
+ def self.symbolize_hash(obj)
8
+ case obj
9
+ when Array
10
+ obj.inject([]){|res, val|
11
+ res << case val
12
+ when Hash, Array
13
+ symbolize_hash(val)
14
+ when String
15
+ val.to_sym
16
+ else
17
+ val
18
+ end
19
+ res
20
+ }
21
+ when Hash
22
+ obj.inject({}){|res, (key, val)|
23
+ nkey = case key
24
+ when String
25
+ key.to_sym
26
+ else
27
+ key
28
+ end
29
+ nval = case val
30
+ when Hash, Array
31
+ symbolize_hash(val)
32
+ when String
33
+ val.to_sym
34
+ else
35
+ val
36
+ end
37
+ res[nkey] = nval
38
+ res
39
+ }
40
+ else
41
+ obj
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,109 @@
1
+ # encoding: UTF-8
2
+ require RUBY_VERSION < '1.9' ? 'fastercsv' : 'csv'
3
+
4
+ module RailsAdmin
5
+
6
+ CSVClass = RUBY_VERSION < '1.9' ? ::FasterCSV : ::CSV
7
+ NON_ASCII_ENCODINGS = /(UTF\-16)|(UTF\-32)|(ISO\-2022\-JP)|(Big5\-HKSCS)|(UTF\-7)/
8
+
9
+ class CSVConverter
10
+
11
+ def initialize(objects = [], schema = {})
12
+ return self if (@objects = objects).blank?
13
+
14
+ @model = objects.first.class
15
+ @abstract_model = RailsAdmin::AbstractModel.new(@model)
16
+ @model_config = RailsAdmin.config(@abstract_model)
17
+ @methods = [(schema[:only] || []) + (schema[:methods] || [])].flatten.compact
18
+ @fields = @model_config.export.fields.select{|f| @methods.include? f.name }
19
+ @empty = ::I18n.t('admin.export.empty_value_for_associated_objects')
20
+ @associations = {}
21
+
22
+ (schema.delete(:include) || {}).each do |key, values|
23
+ association = @abstract_model.associations.find{ |association| association[:name] == key }
24
+ model = association[:type] == :belongs_to ? association[:parent_model] : association[:child_model]
25
+ abstract_model = RailsAdmin::AbstractModel.new(model)
26
+ model_config = RailsAdmin.config(abstract_model)
27
+ methods = [(values[:only] || []) + (values[:methods] || [])].flatten.compact
28
+ fields = model_config.export.fields.select{|f| methods.include? f.name }
29
+
30
+ @associations[key] = {
31
+ :association => association,
32
+ :model => model,
33
+ :abstract_model => abstract_model,
34
+ :model_config => model_config,
35
+ :fields => fields
36
+ }
37
+ end
38
+ end
39
+
40
+ def to_csv(options)
41
+ options ||= {}
42
+ return '' if @objects.blank?
43
+
44
+ # encoding shenanigans first
45
+ @encoding_from = if [nil, '', 'utf8', 'utf-8', 'UTF8', 'UTF-8'].include?(encoding = Rails.configuration.database_configuration[Rails.env]['encoding'])
46
+ 'UTF-8'
47
+ else
48
+ encoding
49
+ end
50
+
51
+ unless options[:encoding_to].blank?
52
+ @encoding_to = options[:encoding_to]
53
+ unless @encoding_to == @encoding_from
54
+ require 'iconv'
55
+ @iconv = (Iconv.new("#{@encoding_to}//TRANSLIT//IGNORE", @encoding_from) rescue (Rails.logger.error("Iconv cannot convert to #{@encoding_to}: #{$!}\nNo conversion will take place"); nil))
56
+ end
57
+ else
58
+ @encoding_to = @encoding_from
59
+ end
60
+
61
+ csv_string = CSVClass.generate(options[:generator] ? options[:generator].symbolize_keys.delete_if {|key, value| value.blank? } : {}) do |csv|
62
+ unless options[:skip_header]
63
+ csv << @fields.map do |field|
64
+ output(::I18n.t('admin.export.csv.header_for_root_methods', :name => field.label, :model => @abstract_model.pretty_name))
65
+ end +
66
+ @associations.map do |association_name, option_hash|
67
+ option_hash[:fields].map do |field|
68
+ output(::I18n.t('admin.export.csv.header_for_association_methods', :name => field.label, :association => @model_config.export.fields.find{|f| f.name == association_name }.label))
69
+ end
70
+ end.flatten
71
+ end
72
+ @objects.each do |o|
73
+
74
+
75
+ csv << @fields.map do |field|
76
+ output(field.with(:object => o).export_value)
77
+ end +
78
+ @associations.map do |association_name, option_hash|
79
+
80
+ associated_objects = [o.send(association_name)].flatten.compact
81
+ option_hash[:fields].map do |field|
82
+ output(associated_objects.map{ |ao| field.with(:object => ao).export_value.presence || @empty }.join(','))
83
+ end
84
+ end.flatten
85
+ end
86
+ end
87
+
88
+ # Add a BOM for utf8 encodings, helps with utf8 auto-detect for some versions of Excel.
89
+ # Don't add if utf8 but user don't want to touch input encoding:
90
+ # If user chooses utf8, he will open it in utf8 and BOM will disappear at reading.
91
+ # But that way "English" users who don't bother and chooses to let utf8 by default won't get BOM added
92
+ # and will not see it if Excel opens the file with a different encoding.
93
+ csv_string = "\xEF\xBB\xBF#{csv_string.respond_to?(:force_encoding) ? csv_string.force_encoding('UTF-8') : csv_string}" if options[:encoding_to] == 'UTF-8'
94
+ csv_string = ((@iconv ? @iconv.iconv(csv_string) : csv_string) rescue str) if @encoding_to =~ NON_ASCII_ENCODINGS # global conversion for non ASCII encodings
95
+ [!options[:skip_header], @encoding_to, csv_string]
96
+ end
97
+
98
+ private
99
+
100
+ def output(str)
101
+ unless @encoding_to =~ NON_ASCII_ENCODINGS # can't use the csv generator with encodings that are no supersets of ASCII-7
102
+ (@iconv ? @iconv.iconv(str.to_s) : str.to_s) rescue str.to_s # convert piece by piece
103
+ else
104
+ str.to_s
105
+ end
106
+ end
107
+ end
108
+ end
109
+