typus 0.9.39 → 1.0.0.pre

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 (424) hide show
  1. data/CHANGELOG +104 -0
  2. data/Gemfile +17 -0
  3. data/Gemfile.lock +96 -0
  4. data/MIT-LICENSE +1 -1
  5. data/README.rdoc +45 -0
  6. data/Rakefile +19 -48
  7. data/app/controllers/admin/account_controller.rb +54 -0
  8. data/app/controllers/admin/dashboard_controller.rb +7 -0
  9. data/app/controllers/admin/resource_controller.rb +8 -0
  10. data/app/controllers/admin/resources_controller.rb +307 -0
  11. data/app/controllers/admin/session_controller.rb +38 -0
  12. data/app/controllers/admin_controller.rb +26 -0
  13. data/app/helpers/admin/dashboard_helper.rb +38 -0
  14. data/app/helpers/admin/filters_helper.rb +81 -0
  15. data/app/helpers/admin/form_helper.rb +68 -261
  16. data/app/helpers/admin/preview_helper.rb +48 -0
  17. data/app/helpers/admin/relationships_helper.rb +192 -0
  18. data/app/helpers/admin/resources_helper.rb +80 -0
  19. data/app/helpers/admin/search_helper.rb +19 -0
  20. data/app/helpers/admin/sidebar_helper.rb +32 -210
  21. data/app/helpers/admin/table_helper.rb +207 -200
  22. data/app/helpers/admin_helper.rb +56 -0
  23. data/app/mailers/admin/mailer.rb +13 -0
  24. data/app/models/admin/fake_user.rb +38 -0
  25. data/app/views/admin/account/forgot_password.html.erb +21 -0
  26. data/app/views/admin/account/new.html.erb +21 -0
  27. data/app/views/admin/dashboard/_sidebar.html.erb +3 -3
  28. data/app/views/admin/dashboard/show.html.erb +16 -0
  29. data/app/views/admin/dashboard/styles.html.erb +154 -0
  30. data/app/views/admin/helpers/_apps.html.erb +6 -0
  31. data/app/views/admin/helpers/_flash_message.html.erb +3 -0
  32. data/app/views/admin/helpers/_header.html.erb +7 -0
  33. data/app/views/admin/helpers/_login_info.html.erb +4 -0
  34. data/app/views/admin/helpers/_preview.html.erb +13 -0
  35. data/app/views/admin/helpers/dashboard/_applications.html.erb +32 -0
  36. data/app/views/admin/helpers/dashboard/_resources.html.erb +16 -0
  37. data/app/views/admin/helpers/filters/_filters.html.erb +31 -0
  38. data/app/views/admin/helpers/resources/_display_link_to_previous.html.erb +3 -0
  39. data/app/views/admin/helpers/resources/_pagination.html.erb +28 -0
  40. data/app/views/admin/helpers/search/_search.html.erb +12 -0
  41. data/app/views/admin/helpers/sidebar/_sidebar.html.erb +17 -0
  42. data/app/views/admin/helpers/table/_table.html.erb +22 -0
  43. data/app/views/{typus_mailer/reset_password_link.erb → admin/mailer/reset_password_link.text.erb} +2 -2
  44. data/{test/config/broken/empty.yml → app/views/admin/resources/_edit.html.erb} +0 -0
  45. data/app/views/admin/resources/_form.html.erb +26 -0
  46. data/{test/config/broken/empty_roles.yml → app/views/admin/resources/_index.html.erb} +0 -0
  47. data/{test/config/empty/empty_01.yml → app/views/admin/resources/_new.html.erb} +0 -0
  48. data/{test/config/empty/empty_01_roles.yml → app/views/admin/resources/_show.html.erb} +0 -0
  49. data/app/views/admin/resources/edit.html.erb +23 -21
  50. data/app/views/admin/resources/index.html.erb +31 -18
  51. data/app/views/admin/resources/new.html.erb +20 -18
  52. data/app/views/admin/resources/show.html.erb +29 -20
  53. data/app/views/admin/session/new.html.erb +26 -0
  54. data/app/views/admin/templates/_belongs_to.html.erb +4 -0
  55. data/app/views/admin/templates/_boolean.html.erb +4 -8
  56. data/app/views/admin/templates/_date.html.erb +9 -2
  57. data/app/views/admin/templates/_datetime.html.erb +9 -2
  58. data/app/views/admin/templates/_file.html.erb +20 -5
  59. data/app/views/admin/templates/_has_many.html.erb +24 -0
  60. data/app/views/admin/templates/_has_n.html.erb +17 -0
  61. data/{test/config/empty/empty_02.yml → app/views/admin/templates/_has_one.html.erb} +0 -0
  62. data/app/views/admin/templates/_password.html.erb +4 -2
  63. data/app/views/admin/templates/_relate_form.html.erb +4 -0
  64. data/app/views/admin/templates/_selector.html.erb +6 -18
  65. data/app/views/admin/templates/_string.html.erb +11 -10
  66. data/app/views/admin/templates/_text.html.erb +9 -2
  67. data/app/views/admin/templates/_time.html.erb +9 -2
  68. data/app/views/admin/templates/_tree.html.erb +4 -0
  69. data/app/views/layouts/admin/session.html.erb +44 -0
  70. data/app/views/layouts/admin.html.erb +45 -39
  71. data/config/available_locales/ca.yml +124 -0
  72. data/config/available_locales/ca_models.yml +16 -0
  73. data/config/{locales → available_locales}/de.yml +108 -89
  74. data/config/available_locales/de_models.yml +13 -0
  75. data/config/available_locales/es.yml +124 -0
  76. data/config/available_locales/es_models.yml +13 -0
  77. data/config/available_locales/fr.yml +124 -0
  78. data/config/available_locales/fr_models.yml +13 -0
  79. data/config/available_locales/hu.yml +124 -0
  80. data/config/available_locales/hu_models.yml +13 -0
  81. data/config/available_locales/it.yml +136 -0
  82. data/config/available_locales/it_models.yml +15 -0
  83. data/config/available_locales/language.yml.template +122 -0
  84. data/config/available_locales/language_models.yml.template +13 -0
  85. data/config/{locales → available_locales}/pt-BR.yml +97 -74
  86. data/config/available_locales/pt-BR_models.yml +13 -0
  87. data/config/{locales → available_locales}/ru.yml +107 -85
  88. data/config/available_locales/ru_models.yml +13 -0
  89. data/config/routes.rb +18 -11
  90. data/lib/generators/templates/config/initializers/typus.rb +26 -0
  91. data/lib/generators/templates/config/initializers/typus_authentication.rb +18 -0
  92. data/lib/generators/templates/config/initializers/typus_resources.rb +30 -0
  93. data/{generators/typus → lib/generators}/templates/config/typus/README +34 -16
  94. data/lib/generators/templates/config/typus/application.yml +5 -0
  95. data/lib/generators/templates/config/typus/application_roles.yml +6 -0
  96. data/lib/generators/templates/config/typus/typus.yml +17 -0
  97. data/lib/generators/templates/config/typus/typus_roles.yml +6 -0
  98. data/lib/generators/templates/controller.rb +4 -0
  99. data/lib/generators/templates/functional_test.rb +21 -0
  100. data/{generators/typus/templates/db/create_typus_users.rb → lib/generators/templates/migration.rb} +4 -4
  101. data/lib/generators/templates/model.rb +8 -0
  102. data/lib/generators/templates/model.yml +10 -0
  103. data/{generators/typus/templates/public/images/admin → lib/generators/templates/public/admin/images}/ui-icons.png +0 -0
  104. data/lib/generators/templates/public/admin/javascripts/application.js +6 -0
  105. data/lib/generators/templates/public/admin/javascripts/jquery-1.4.2.min.js +154 -0
  106. data/lib/generators/templates/public/admin/javascripts/jquery.rails.js +126 -0
  107. data/lib/generators/templates/public/admin/javascripts/jquery.searchField.js +91 -0
  108. data/lib/generators/templates/public/admin/stylesheets/application.css +11 -0
  109. data/lib/generators/templates/public/admin/stylesheets/screen.css +356 -0
  110. data/lib/generators/templates/public/admin/vendor/fancybox/blank.gif +0 -0
  111. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_close.png +0 -0
  112. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_loading.png +0 -0
  113. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_nav_left.png +0 -0
  114. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_nav_right.png +0 -0
  115. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_e.png +0 -0
  116. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_n.png +0 -0
  117. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_ne.png +0 -0
  118. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_nw.png +0 -0
  119. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_s.png +0 -0
  120. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_se.png +0 -0
  121. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_sw.png +0 -0
  122. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_w.png +0 -0
  123. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_left.png +0 -0
  124. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_main.png +0 -0
  125. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_over.png +0 -0
  126. data/{generators/typus/templates/public/images/admin → lib/generators/templates/public/admin/vendor}/fancybox/fancy_title_right.png +0 -0
  127. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox-x.png +0 -0
  128. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox-y.png +0 -0
  129. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox.png +0 -0
  130. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.easing-1.3.pack.js +72 -0
  131. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.1.css +363 -0
  132. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.1.js +1077 -0
  133. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
  134. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.mousewheel-3.0.2.pack.js +13 -0
  135. data/lib/generators/templates/view.html.erb +9 -0
  136. data/lib/generators/typus/migration_generator.rb +85 -0
  137. data/lib/generators/typus/typus_generator.rb +190 -0
  138. data/lib/generators/typus/views_generator.rb +27 -0
  139. data/lib/support/active_record.rb +60 -0
  140. data/lib/support/array.rb +13 -0
  141. data/lib/{typus → support}/hash.rb +2 -2
  142. data/lib/{typus → support}/object.rb +2 -2
  143. data/lib/support/string.rb +47 -0
  144. data/lib/tasks/typus.rake +19 -0
  145. data/lib/typus/authentication.rb +146 -40
  146. data/lib/typus/configuration.rb +14 -49
  147. data/lib/typus/engine.rb +6 -0
  148. data/lib/typus/format.rb +41 -18
  149. data/lib/typus/orm/active_record.rb +378 -0
  150. data/lib/typus/resources.rb +57 -0
  151. data/lib/typus/user.rb +54 -37
  152. data/lib/typus/version.rb +3 -0
  153. data/lib/typus.rb +118 -80
  154. data/lib/vendor/paginator.rb +2 -2
  155. data/test/factories/assets.rb +5 -0
  156. data/test/factories/categories.rb +3 -0
  157. data/test/factories/comments.rb +6 -0
  158. data/test/factories/pages.rb +5 -0
  159. data/test/factories/pictures.rb +7 -0
  160. data/test/factories/posts.rb +6 -0
  161. data/test/factories/typus_users.rb +8 -0
  162. data/test/{config → fixtures/config}/broken/application.yml +0 -0
  163. data/test/{config → fixtures/config}/broken/application_roles.yml +0 -0
  164. data/test/{config/empty/empty_02_roles.yml → fixtures/config/broken/empty.yml} +0 -0
  165. data/test/fixtures/config/broken/empty_roles.yml +0 -0
  166. data/test/{config → fixtures/config}/broken/undefined.yml +0 -0
  167. data/test/{config → fixtures/config}/broken/undefined_roles.yml +0 -0
  168. data/test/{config → fixtures/config}/default/typus.yml +2 -1
  169. data/{generators/typus/templates/config/typus → test/fixtures/config/default}/typus_roles.yml +0 -0
  170. data/test/fixtures/config/empty/empty_01.yml +0 -0
  171. data/test/fixtures/config/empty/empty_01_roles.yml +0 -0
  172. data/test/fixtures/config/empty/empty_02.yml +0 -0
  173. data/test/fixtures/config/empty/empty_02_roles.yml +0 -0
  174. data/test/{config → fixtures/config}/locales/es.yml +0 -0
  175. data/test/fixtures/config/namespaced/application.yml +5 -0
  176. data/test/fixtures/config/namespaced/application_roles.yml +2 -0
  177. data/test/{config → fixtures/config}/ordered/001_roles.yml +0 -0
  178. data/test/{config → fixtures/config}/ordered/002_roles.yml +0 -0
  179. data/test/{config → fixtures/config}/unordered/app_one_roles.yml +0 -0
  180. data/test/{config → fixtures/config}/unordered/app_two_roles.yml +0 -0
  181. data/test/fixtures/config/working/application.yml +73 -0
  182. data/test/fixtures/config/working/application_roles.yml +24 -0
  183. data/{generators/typus/templates/config/typus → test/fixtures/config/working}/typus.yml +2 -1
  184. data/test/{config/default → fixtures/config/working}/typus_roles.yml +0 -0
  185. data/test/fixtures/rails_app/README +244 -0
  186. data/test/fixtures/rails_app/Rakefile +7 -0
  187. data/test/fixtures/rails_app/app/controllers/admin/assets_controller.rb +2 -0
  188. data/test/fixtures/rails_app/app/controllers/admin/categories_controller.rb +2 -0
  189. data/test/fixtures/rails_app/app/controllers/admin/comments_controller.rb +2 -0
  190. data/test/fixtures/rails_app/app/controllers/admin/pages_controller.rb +2 -0
  191. data/test/fixtures/rails_app/app/controllers/admin/pictures_controller.rb +2 -0
  192. data/test/fixtures/rails_app/app/controllers/admin/posts_controller.rb +2 -0
  193. data/test/fixtures/rails_app/app/controllers/admin/status_controller.rb +2 -0
  194. data/test/fixtures/rails_app/app/controllers/admin/typus_users_controller.rb +2 -0
  195. data/test/fixtures/rails_app/app/controllers/admin/watch_dog_controller.rb +2 -0
  196. data/test/fixtures/rails_app/app/controllers/application_controller.rb +4 -0
  197. data/test/fixtures/rails_app/app/helpers/application_helper.rb +2 -0
  198. data/test/fixtures/{app → rails_app/app}/models/asset.rb +1 -1
  199. data/test/fixtures/{app → rails_app/app}/models/category.rb +2 -2
  200. data/test/fixtures/{app → rails_app/app}/models/comment.rb +1 -1
  201. data/test/fixtures/{app → rails_app/app}/models/custom_user.rb +1 -1
  202. data/test/fixtures/{app → rails_app/app}/models/delayed/task.rb +2 -2
  203. data/test/fixtures/rails_app/app/models/page.rb +9 -0
  204. data/test/fixtures/rails_app/app/models/picture.rb +6 -0
  205. data/test/fixtures/{app → rails_app/app}/models/post.rb +6 -6
  206. data/test/fixtures/rails_app/app/models/typus_user.rb +8 -0
  207. data/test/fixtures/{app → rails_app/app}/models/view.rb +1 -1
  208. data/test/fixtures/rails_app/app/views/admin/categories/_form.html.erb +1 -0
  209. data/test/fixtures/rails_app/app/views/admin/dashboard/_sidebar.html.erb +1 -0
  210. data/test/fixtures/rails_app/app/views/admin/mailer/reset_password_link.text.erb +6 -0
  211. data/test/fixtures/rails_app/app/views/admin/posts/_edit.html.erb +1 -0
  212. data/test/fixtures/rails_app/app/views/admin/posts/_index.html.erb +1 -0
  213. data/test/fixtures/rails_app/app/views/admin/posts/_new.html.erb +1 -0
  214. data/test/fixtures/rails_app/app/views/admin/posts/_show.html.erb +1 -0
  215. data/test/fixtures/rails_app/app/views/admin/posts/_sidebar.html.erb +1 -0
  216. data/test/fixtures/rails_app/app/views/admin/resources/_sidebar.html.erb +1 -0
  217. data/test/fixtures/rails_app/app/views/admin/status/index.html.erb +1 -0
  218. data/test/fixtures/rails_app/app/views/admin/templates/_datepicker.html.erb +1 -0
  219. data/test/fixtures/rails_app/app/views/layouts/application.html.erb +14 -0
  220. data/test/fixtures/rails_app/config/application.rb +50 -0
  221. data/test/fixtures/rails_app/config/boot.rb +13 -0
  222. data/test/fixtures/rails_app/config/database.yml +22 -0
  223. data/test/fixtures/rails_app/config/environment.rb +5 -0
  224. data/test/fixtures/rails_app/config/environments/development.rb +19 -0
  225. data/test/fixtures/rails_app/config/environments/production.rb +42 -0
  226. data/test/fixtures/rails_app/config/environments/test.rb +34 -0
  227. data/test/fixtures/rails_app/config/initializers/acts_as_list.rb +258 -0
  228. data/test/fixtures/rails_app/config/initializers/acts_as_tree.rb +98 -0
  229. data/test/fixtures/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  230. data/test/fixtures/rails_app/config/initializers/inflections.rb +10 -0
  231. data/test/fixtures/rails_app/config/initializers/mime_types.rb +5 -0
  232. data/test/fixtures/rails_app/config/initializers/secret_token.rb +7 -0
  233. data/test/fixtures/rails_app/config/initializers/session_store.rb +8 -0
  234. data/test/fixtures/rails_app/config/initializers/typus.rb +6 -0
  235. data/test/fixtures/rails_app/config/locales/en.yml +5 -0
  236. data/test/fixtures/rails_app/config/routes.rb +8 -0
  237. data/test/{config/working → fixtures/rails_app/config/typus}/application.yml +11 -9
  238. data/test/{config/working → fixtures/rails_app/config/typus}/application_roles.yml +0 -0
  239. data/{generators/typus_update_schema_to_01/templates/config → test/fixtures/rails_app/config/typus}/typus.yml +0 -0
  240. data/test/{config/working → fixtures/rails_app/config/typus}/typus_roles.yml +0 -0
  241. data/test/fixtures/rails_app/config.ru +4 -0
  242. data/test/fixtures/rails_app/db/seeds.rb +7 -0
  243. data/test/fixtures/rails_app/db/test.sqlite3 +0 -0
  244. data/test/fixtures/rails_app/log/test.log +4268 -0
  245. data/test/fixtures/rails_app/public/404.html +26 -0
  246. data/test/fixtures/rails_app/public/422.html +26 -0
  247. data/test/fixtures/rails_app/public/500.html +26 -0
  248. data/test/fixtures/rails_app/public/favicon.ico +0 -0
  249. data/test/fixtures/rails_app/public/images/rails.png +0 -0
  250. data/test/fixtures/rails_app/public/index.html +279 -0
  251. data/test/fixtures/rails_app/public/javascripts/application.js +2 -0
  252. data/test/fixtures/rails_app/public/javascripts/controls.js +965 -0
  253. data/test/fixtures/rails_app/public/javascripts/dragdrop.js +974 -0
  254. data/test/fixtures/rails_app/public/javascripts/effects.js +1123 -0
  255. data/test/fixtures/rails_app/public/javascripts/prototype.js +4874 -0
  256. data/test/fixtures/rails_app/public/javascripts/rails.js +118 -0
  257. data/test/fixtures/rails_app/public/robots.txt +5 -0
  258. data/test/fixtures/rails_app/script/rails +9 -0
  259. data/test/fixtures/rails_app/tmp/export-posts-20100902120447.csv +2 -0
  260. data/test/fixtures/rails_app/tmp/export-posts-20100902120700.csv +2 -0
  261. data/test/functional/admin/account_controller_test.rb +90 -0
  262. data/test/functional/admin/dashboard_controller_http_basic_test.rb +24 -0
  263. data/test/functional/admin/dashboard_controller_none_test.rb +18 -0
  264. data/test/functional/admin/dashboard_controller_test.rb +106 -0
  265. data/test/functional/admin/resources_controller_assets_relationships.rb +59 -0
  266. data/test/functional/admin/resources_controller_categories_before_test.rb +10 -0
  267. data/test/functional/admin/resources_controller_categories_lists_test.rb +44 -0
  268. data/test/functional/admin/resources_controller_categories_views_test.rb +10 -0
  269. data/test/functional/admin/resources_controller_comments_toggle_test.rb +21 -0
  270. data/test/functional/admin/{master_controller_posts_before_test.rb → resources_controller_posts_before_test.rb} +3 -3
  271. data/test/functional/admin/resources_controller_posts_crud_custom_test.rb +27 -0
  272. data/test/functional/admin/resources_controller_posts_crud_test.rb +44 -0
  273. data/test/functional/admin/resources_controller_posts_formats_test.rb +39 -0
  274. data/test/functional/admin/resources_controller_posts_forms_test.rb +58 -0
  275. data/test/functional/admin/resources_controller_posts_permissions_test.rb +100 -0
  276. data/test/functional/admin/{master_controller_posts_relationships_test.rb → resources_controller_posts_relationships_test.rb} +25 -20
  277. data/test/functional/admin/resources_controller_posts_roles.rb +52 -0
  278. data/test/functional/admin/resources_controller_posts_views_test.rb +143 -0
  279. data/test/functional/admin/resources_controller_tableless_resource_test.rb +51 -0
  280. data/test/functional/admin/resources_controller_typus_users_test.rb +159 -0
  281. data/test/functional/admin/session_controller_test.rb +85 -0
  282. data/test/helpers/admin/dashboard_helper_test.rb +42 -0
  283. data/test/helpers/admin/form_helper_test.rb +52 -276
  284. data/test/helpers/admin/resources_helper_test.rb +52 -0
  285. data/test/helpers/admin/sidebar_helper_test.rb +133 -224
  286. data/test/helpers/admin/table_helper_test.rb +136 -144
  287. data/test/helpers/admin_helper_test.rb +69 -0
  288. data/test/lib/support/active_record_test.rb +35 -0
  289. data/test/lib/support/array_test.rb +15 -0
  290. data/test/lib/support/hash_test.rb +11 -0
  291. data/test/lib/support/string_test.rb +48 -0
  292. data/test/lib/typus/active_record_test.rb +385 -0
  293. data/test/lib/typus/configuration_test.rb +52 -0
  294. data/test/lib/typus/resource_test.rb +17 -0
  295. data/test/lib/typus/routes_test.rb +29 -0
  296. data/test/lib/typus_test.rb +72 -40
  297. data/test/{vendor → lib/vendor}/paginator_test.rb +7 -4
  298. data/test/schema.rb +28 -3
  299. data/test/test_helper.rb +29 -0
  300. data/test/unit/admin/mailer_test.rb +32 -0
  301. data/test/unit/typus_user_roles_test.rb +69 -61
  302. data/test/unit/typus_user_test.rb +56 -143
  303. data/typus.gemspec +18 -276
  304. metadata +305 -231
  305. data/.gitignore +0 -1
  306. data/AUTHORS.md +0 -34
  307. data/CHANGES +0 -3
  308. data/README.md +0 -75
  309. data/VERSION +0 -1
  310. data/app/controllers/admin/master_controller.rb +0 -394
  311. data/app/controllers/typus_controller.rb +0 -152
  312. data/app/helpers/admin/master_helper.rb +0 -104
  313. data/app/helpers/admin/public_helper.rb +0 -27
  314. data/app/helpers/typus_helper.rb +0 -181
  315. data/app/models/typus_mailer.rb +0 -14
  316. data/app/models/typus_user.rb +0 -5
  317. data/app/views/admin/shared/_feedback.html.erb +0 -6
  318. data/app/views/admin/shared/_footer.html.erb +0 -2
  319. data/app/views/admin/shared/_pagination.html.erb +0 -28
  320. data/app/views/admin/templates/_tiny_mce.html.erb +0 -2
  321. data/app/views/layouts/typus.html.erb +0 -29
  322. data/app/views/typus/dashboard.html.erb +0 -9
  323. data/app/views/typus/recover_password.html.erb +0 -7
  324. data/app/views/typus/reset_password.html.erb +0 -15
  325. data/app/views/typus/sign_in.html.erb +0 -9
  326. data/app/views/typus/sign_up.html.erb +0 -7
  327. data/config/locales/es.yml +0 -105
  328. data/config/locales/fr.yml +0 -98
  329. data/config/locales/language.yml.template +0 -106
  330. data/generators/typus/templates/auto/index.html.erb +0 -11
  331. data/generators/typus/templates/auto/resource_controller.rb.erb +0 -15
  332. data/generators/typus/templates/auto/resource_controller_test.rb.erb +0 -11
  333. data/generators/typus/templates/auto/resources_controller.rb.erb +0 -37
  334. data/generators/typus/templates/config/initializers/typus.rb +0 -34
  335. data/generators/typus/templates/config/typus/application.yml +0 -6
  336. data/generators/typus/templates/config/typus/application_roles.yml +0 -23
  337. data/generators/typus/templates/lib/tasks/typus_tasks.rake +0 -32
  338. data/generators/typus/templates/public/images/admin/fancybox/fancy_closebox.png +0 -0
  339. data/generators/typus/templates/public/images/admin/fancybox/fancy_left.png +0 -0
  340. data/generators/typus/templates/public/images/admin/fancybox/fancy_progress.png +0 -0
  341. data/generators/typus/templates/public/images/admin/fancybox/fancy_right.png +0 -0
  342. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_e.png +0 -0
  343. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_n.png +0 -0
  344. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_ne.png +0 -0
  345. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_nw.png +0 -0
  346. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_s.png +0 -0
  347. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_se.png +0 -0
  348. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_sw.png +0 -0
  349. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_w.png +0 -0
  350. data/generators/typus/templates/public/images/admin/fancybox/fancy_title_left.png +0 -0
  351. data/generators/typus/templates/public/images/admin/fancybox/fancy_title_main.png +0 -0
  352. data/generators/typus/templates/public/javascripts/admin/application.js +0 -14
  353. data/generators/typus/templates/public/javascripts/admin/jquery-1.3.2.min.js +0 -19
  354. data/generators/typus/templates/public/javascripts/admin/jquery.fancybox-1.2.1.min.js +0 -9
  355. data/generators/typus/templates/public/stylesheets/admin/jquery.fancybox.css +0 -315
  356. data/generators/typus/templates/public/stylesheets/admin/reset.css +0 -68
  357. data/generators/typus/templates/public/stylesheets/admin/screen.css +0 -361
  358. data/generators/typus/typus_generator.rb +0 -191
  359. data/generators/typus_update_schema_to_01/templates/migration.rb +0 -11
  360. data/generators/typus_update_schema_to_01/typus_update_schema_to_01_generator.rb +0 -19
  361. data/generators/typus_update_schema_to_02/templates/migration.rb +0 -11
  362. data/generators/typus_update_schema_to_02/typus_update_schema_to_02_generator.rb +0 -11
  363. data/lib/typus/active_record.rb +0 -323
  364. data/lib/typus/extensions/routes.rb +0 -15
  365. data/lib/typus/extensions/routes_hack.rb +0 -15
  366. data/lib/typus/preferences.rb +0 -11
  367. data/lib/typus/preview.rb +0 -76
  368. data/lib/typus/quick_edit.rb +0 -40
  369. data/lib/typus/reloader.rb +0 -14
  370. data/lib/typus/string.rb +0 -27
  371. data/lib/vendor/active_record.rb +0 -15
  372. data/lib/vendor/rss_parser.rb +0 -20
  373. data/rails/init.rb +0 -3
  374. data/tasks/typus_tasks.rake +0 -32
  375. data/test/config/working/typus.yml +0 -12
  376. data/test/fixtures/app/controllers/admin/assets_controller.rb +0 -2
  377. data/test/fixtures/app/controllers/admin/categories_controller.rb +0 -2
  378. data/test/fixtures/app/controllers/admin/comments_controller.rb +0 -2
  379. data/test/fixtures/app/controllers/admin/pages_controller.rb +0 -2
  380. data/test/fixtures/app/controllers/admin/posts_controller.rb +0 -2
  381. data/test/fixtures/app/controllers/admin/status_controller.rb +0 -6
  382. data/test/fixtures/app/controllers/admin/typus_users_controller.rb +0 -2
  383. data/test/fixtures/app/controllers/admin/watch_dog_controller.rb +0 -6
  384. data/test/fixtures/app/models/page.rb +0 -5
  385. data/test/fixtures/app/views/admin/dashboard/_content.html.erb +0 -1
  386. data/test/fixtures/app/views/admin/dashboard/_sidebar.html.erb +0 -1
  387. data/test/fixtures/app/views/admin/posts/_edit.html.erb +0 -1
  388. data/test/fixtures/app/views/admin/posts/_index.html.erb +0 -1
  389. data/test/fixtures/app/views/admin/posts/_new.html.erb +0 -1
  390. data/test/fixtures/app/views/admin/posts/_show.html.erb +0 -1
  391. data/test/fixtures/app/views/admin/posts/_sidebar.html.erb +0 -1
  392. data/test/fixtures/app/views/admin/resources/_sidebar.html.erb +0 -1
  393. data/test/fixtures/app/views/admin/shared/_footer.html.erb +0 -1
  394. data/test/fixtures/app/views/admin/status/index.html.erb +0 -1
  395. data/test/fixtures/app/views/admin/templates/_datepicker.html.erb +0 -1
  396. data/test/fixtures/assets.yml +0 -11
  397. data/test/fixtures/categories.yml +0 -14
  398. data/test/fixtures/comments.yml +0 -27
  399. data/test/fixtures/pages.yml +0 -41
  400. data/test/fixtures/posts.yml +0 -37
  401. data/test/fixtures/typus_users.yml +0 -59
  402. data/test/functional/admin/master_controller_assets_relationships.rb +0 -66
  403. data/test/functional/admin/master_controller_categories_lists_test.rb +0 -64
  404. data/test/functional/admin/master_controller_posts_crud_test.rb +0 -97
  405. data/test/functional/admin/master_controller_posts_formats_test.rb +0 -53
  406. data/test/functional/admin/master_controller_posts_permissions_test.rb +0 -127
  407. data/test/functional/admin/master_controller_posts_roles.rb +0 -50
  408. data/test/functional/admin/master_controller_posts_toggle_test.rb +0 -35
  409. data/test/functional/admin/master_controller_posts_views_test.rb +0 -209
  410. data/test/functional/admin/master_controller_tableless_resource_test.rb +0 -36
  411. data/test/functional/admin/master_controller_typus_users_test.rb +0 -211
  412. data/test/functional/typus_controller_test.rb +0 -342
  413. data/test/helper.rb +0 -51
  414. data/test/helpers/admin/master_helper_test.rb +0 -70
  415. data/test/helpers/admin/public_helper_test.rb +0 -26
  416. data/test/helpers/typus_helper_test.rb +0 -96
  417. data/test/lib/active_record_test.rb +0 -377
  418. data/test/lib/configuration_test.rb +0 -95
  419. data/test/lib/hash_test.rb +0 -11
  420. data/test/lib/routes_test.rb +0 -71
  421. data/test/lib/string_test.rb +0 -55
  422. data/test/unit/typus_mailer_test.rb +0 -29
  423. data/test/unit/typus_test.rb +0 -17
  424. data/test/vendor/active_record_test.rb +0 -18
data/lib/typus.rb CHANGED
@@ -1,125 +1,163 @@
1
1
  # coding: utf-8
2
2
 
3
+ require "support/active_record"
4
+ require "support/array"
5
+ require "support/hash"
6
+ require "support/object"
7
+ require "support/string"
8
+ require "typus/engine"
9
+ require "typus/configuration"
10
+ require "typus/resources"
11
+ require "typus/orm/active_record"
12
+ require "typus/user"
13
+ require "vendor/paginator"
14
+
3
15
  module Typus
4
16
 
17
+ # Define the application name.
18
+ mattr_accessor :admin_title
19
+ @@admin_title = "Typus"
20
+
21
+ # Define a subtitle
22
+ mattr_accessor :admin_sub_title
23
+ @@admin_sub_title = <<-CODE
24
+ <a href="http://core.typuscms.com/">typus</a> by <a href="http://intraducibles.com">intraducibles.com</a>
25
+ CODE
26
+
27
+ # Authentication mechanism: none, basic, advanced
28
+ mattr_accessor :authentication
29
+ @@authentication = :none
30
+
31
+ # Define the configuration folder.
32
+ mattr_accessor :config_folder
33
+ @@config_folder = "config/typus"
34
+
35
+ # Define the username
36
+ mattr_accessor :username
37
+ @@username = "admin"
38
+
39
+ # Define the password: Used as a default password and for the http
40
+ # authentication.
41
+ mattr_accessor :password
42
+ @@password = "columbia"
43
+
44
+ # Configure the e-mail address which will be shown in Admin::Mailer.
45
+ mattr_accessor :mailer_sender
46
+ @@mailer_sender = nil
47
+
48
+ # Define the file preview.
49
+ mattr_accessor :file_preview
50
+ @@file_preview = :medium
51
+
52
+ # Define the file thumbnail.
53
+ mattr_accessor :file_thumbnail
54
+ @@file_thumbnail = :thumb
55
+
56
+ # Defines the default relationship table.
57
+ mattr_accessor :relationship
58
+ @@relationship = "typus_users"
59
+
60
+ # Defines the default master role.
61
+ mattr_accessor :master_role
62
+ @@master_role = "admin"
63
+
64
+ # Defines the default user_class_name.
65
+ mattr_accessor :user_class_name
66
+ @@user_class_name = "TypusUser"
67
+
68
+ # Defines the default user_fk.
69
+ mattr_accessor :user_fk
70
+ @@user_fk = "typus_user_id"
71
+
72
+ mattr_accessor :available_locales
73
+ @@available_locales = [:en]
74
+
5
75
  class << self
6
76
 
7
- def version
8
- @@version ||= File.read("#{root}/VERSION").strip
77
+ # Default way to setup typus. Run rails generate typus to create
78
+ # a fresh initializer with all configuration values.
79
+ def setup
80
+ yield self
9
81
  end
10
82
 
11
83
  def root
12
- File.dirname(__FILE__) + '/../'
13
- end
14
-
15
- def locales
16
- [ [ "German", 'de' ],
17
- [ "English", 'en' ],
18
- [ "Español", 'es' ],
19
- [ "Français", 'fr' ],
20
- [ "Portuguese", 'pt-BR' ],
21
- [ "Russian", 'ru' ] ]
84
+ (File.dirname(__FILE__) + "/../").chomp("/lib/../")
22
85
  end
23
86
 
24
87
  def applications
25
- Typus::Configuration.config.collect { |i| i.last['application'] }.compact.uniq.sort
88
+ Typus::Configuration.config.collect { |i| i.last["application"] }.compact.uniq.sort
26
89
  end
27
90
 
28
- # List of the modules of an application.
91
+ # Lists modules of an application.
29
92
  def application(name)
30
- Typus::Configuration.config.collect { |i| i.first if i.last['application'] == name }.compact.uniq.sort
93
+ Typus::Configuration.config.collect { |i| i.first if i.last["application"] == name }.compact.uniq.sort
31
94
  end
32
95
 
33
- ##
34
- # Gets a list of all the models on the configuration file.
35
- #
96
+ # Lists models from the configuration file.
36
97
  def models
37
98
  Typus::Configuration.config.map { |i| i.first }.sort
38
99
  end
39
100
 
40
- def models_on_header
41
- models.collect { |m| m if m.constantize.typus_options_for(:on_header) }.compact
42
- end
43
-
44
- ##
45
- # List of resources, which are tableless models.
46
- #
101
+ # Lists resources, which are tableless models.
47
102
  def resources
48
103
  Typus::Configuration.roles.keys.map do |key|
49
104
  Typus::Configuration.roles[key].keys
50
105
  end.flatten.sort.uniq.delete_if { |x| models.include?(x) }
51
106
  end
52
107
 
53
- ##
54
- # Gets a list of models under app/models
55
- #
56
- def discover_models
57
- all_models = []
58
- Dir.chdir(File.join(Rails.root, 'app/models')) do
59
- Dir['**/*.rb'].each do |m|
60
- class_name = m.sub(/\.rb$/,'').camelize
61
- klass = class_name.split('::').inject(Object){ |klass,part| klass.const_get(part) }
62
- all_models << "#{class_name}" if klass < ActiveRecord::Base && !klass.abstract_class?
63
- end
108
+ # Lists models under <tt>app/models</tt>.
109
+ def detect_application_models
110
+ model_dir = Rails.root.join("app/models")
111
+ Dir.chdir(model_dir) do
112
+ models = Dir["**/*.rb"]
64
113
  end
65
- return all_models
66
114
  end
67
115
 
68
- def user_class
69
- Typus::Configuration.options[:user_class_name].constantize
116
+ def locales
117
+ human = available_locales.map { |i| locales_mapping[i.to_s] }
118
+ available_locales.map { |i| i.to_s }.to_hash_with(human)
70
119
  end
71
120
 
72
- def user_fk
73
- Typus::Configuration.options[:user_fk]
121
+ def locales_mapping
122
+ mapping = { "ca" => "Català",
123
+ "de" => "German",
124
+ "en" => "English",
125
+ "es" => "Español",
126
+ "fr" => "Français",
127
+ "hu" => "Magyar",
128
+ "pt-BR" => "Portuguese",
129
+ "ru" => "Russian",
130
+ "it" => "Italiano" }
131
+ mapping.default = "Unknown"
132
+ return mapping
74
133
  end
75
134
 
76
- def relationship
77
- Typus::Configuration.options[:relationship]
135
+ def detect_locales
136
+ available_locales.each do |locale|
137
+ I18n.load_path += Dir[File.join(Typus.root, "config", "available_locales", "#{locale}*")]
138
+ end
78
139
  end
79
140
 
80
- def testing?
81
- Rails.env.test? && Dir.pwd == "#{Rails.root}/vendor/plugins/typus"
141
+ def application_models
142
+ detect_application_models.map do |model|
143
+ class_name = model.sub(/\.rb$/,"").camelize
144
+ klass = class_name.split("::").inject(Object) { |klass,part| klass.const_get(part) }
145
+ class_name if klass < ActiveRecord::Base && !klass.abstract_class?
146
+ end.compact
82
147
  end
83
148
 
84
- def plugin?
85
- File.directory?("#{Rails.root}/vendor/plugins/typus")
149
+ def user_class
150
+ user_class_name.constantize
86
151
  end
87
152
 
88
- def boot!
89
-
90
- if testing?
91
- Typus::Configuration.options[:config_folder] = 'vendor/plugins/typus/test/config/working'
92
- end
93
-
94
- # Ruby Extensions
95
- require 'typus/hash'
96
- require 'typus/object'
97
- require 'typus/string'
98
-
99
- # Load configuration and roles.
100
- Typus::Configuration.config!
153
+ def reload!
101
154
  Typus::Configuration.roles!
102
-
103
- # Rails Extensions.
104
- require 'typus/active_record'
105
- require 'typus/extensions/routes'
106
-
107
- # Mixins.
108
- require 'typus/authentication'
109
- require 'typus/format'
110
- require 'typus/preview'
111
- require 'typus/preferences'
112
- require 'typus/reloader'
113
- require 'typus/quick_edit'
114
- require 'typus/user'
115
-
116
- # Vendor.
117
- require 'vendor/active_record'
118
- require 'vendor/paginator'
119
- require 'vendor/rss_parser'
120
-
155
+ Typus::Configuration.config!
156
+ detect_locales
121
157
  end
122
158
 
123
159
  end
124
160
 
125
- end
161
+ end
162
+
163
+ Typus.reload!
@@ -18,7 +18,7 @@ class Paginator
18
18
  # * A total count of the number of objects to paginate
19
19
  # * The number of objects in each page
20
20
  # * A block that returns the array of items
21
- # * The block is passed the item offset
21
+ # * The block is passed the item offset
22
22
  # (and the number of items to show per page, for
23
23
  # convenience, if the arity is 2)
24
24
  def initialize(count, per_page, &select)
@@ -53,7 +53,7 @@ class Paginator
53
53
  # Retrieve page object by number
54
54
  def page(number)
55
55
  number = (n = number.to_i) > 0 ? n : 1
56
- Page.new(self, number, lambda {
56
+ Page.new(self, number, lambda {
57
57
  offset = (number - 1) * @per_page
58
58
  args = [offset]
59
59
  args << @per_page if @select.arity == 2
@@ -0,0 +1,5 @@
1
+ Factory.define :asset do |f|
2
+ f.caption "Caption"
3
+ f.resource_type Post
4
+ f.resource_id 1
5
+ end
@@ -0,0 +1,3 @@
1
+ Factory.define :category do |f|
2
+ f.name "Category"
3
+ end
@@ -0,0 +1,6 @@
1
+ Factory.define :comment do |f|
2
+ f.name "John"
3
+ f.email "john@example.com"
4
+ f.body "Body of the comment"
5
+ f.association :post
6
+ end
@@ -0,0 +1,5 @@
1
+ Factory.define :page do |f|
2
+ f.title "Title"
3
+ f.body "Content"
4
+ f.status "published"
5
+ end
@@ -0,0 +1,7 @@
1
+ Factory.define :picture do |f|
2
+ f.title "Some picture"
3
+ f.picture_file_name "dog.jpg"
4
+ f.picture_content_type "image/jpeg"
5
+ f.picture_file_size "175938"
6
+ f.picture_updated_at 3.days.ago.to_s(:db)
7
+ end
@@ -0,0 +1,6 @@
1
+ Factory.define :post do |f|
2
+ f.title "Post"
3
+ f.body "Body"
4
+ f.status "published"
5
+ # f.association :typus_user
6
+ end
@@ -0,0 +1,8 @@
1
+ Factory.define :typus_user do |f|
2
+ f.email "admin@example.com"
3
+ f.role "admin"
4
+ f.status true
5
+ f.token "1A2B3C4D5E6F"
6
+ f.password "12345678"
7
+ f.preferences Hash.new({ :locale => :en })
8
+ end
File without changes
@@ -1,5 +1,6 @@
1
1
  TypusUser:
2
2
  fields:
3
+ default: first_name, last_name, role, email
3
4
  list: email, role, status
4
5
  form: first_name, last_name, role, email, password, password_confirmation
5
6
  options:
@@ -9,4 +10,4 @@ TypusUser:
9
10
  filters: status, role
10
11
  search: first_name, last_name, email, role
11
12
  application: Typus
12
- description: System Users Administration
13
+ description: System Users Administration
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,5 @@
1
+ Delayed::Task:
2
+ fields:
3
+ default: name
4
+ search: name
5
+ application: System
@@ -0,0 +1,2 @@
1
+ admin:
2
+ Delayed::Task: all
@@ -0,0 +1,73 @@
1
+ Asset:
2
+ fields:
3
+ default: caption
4
+ application: Site
5
+
6
+ Category:
7
+ fields:
8
+ default: name, position
9
+ form: name, permalink, position
10
+ order_by: position
11
+ module: Post
12
+
13
+ Comment:
14
+ fields:
15
+ list: email, post, post_id, spam
16
+ form: email, post
17
+ csv: email, post_id
18
+ export: csv
19
+ filters: post
20
+ search: email, body
21
+ application: Blog
22
+
23
+ Page:
24
+ fields:
25
+ # Body field is overwrited from a Page class method.
26
+ list: title
27
+ form: title, body
28
+ actions:
29
+ index: rebuild_all
30
+ edit: rebuild
31
+ application: Site
32
+ options:
33
+ form_rows: 25
34
+
35
+ Post:
36
+ fields:
37
+ list: title, created_at, status
38
+ form: title, body, created_at, status, published_at
39
+ relationship: title, created_at
40
+ csv: title, status
41
+ xml: title, status
42
+ options:
43
+ selectors: status
44
+ read_only: permalink
45
+ auto_generated: created_at
46
+ date_formats:
47
+ created_at: post_short
48
+ templates:
49
+ published_at: datepicker
50
+ relationships: assets, categories, comments, views
51
+ actions:
52
+ index: cleanup
53
+ edit: send_as_newsletter, preview
54
+ filters: status, created_at
55
+ search: title
56
+ order_by: title, -created_at
57
+ application: Blog
58
+ export: csv, xml
59
+
60
+ Picture:
61
+ fields:
62
+ default: title, picture
63
+ list: title, created_at
64
+ search: title
65
+ application: Blog
66
+
67
+ CustomUser:
68
+ fields:
69
+ list: first_name, last_name, email
70
+
71
+ View:
72
+ fields:
73
+ default: ip, post
@@ -0,0 +1,24 @@
1
+ admin:
2
+ Asset: create, read, update, delete
3
+ Category: create, read, update, delete
4
+ Comment: create, read, update, delete
5
+ Git: index, commit
6
+ Order:
7
+ Page: create, read, update, delete, rebuild, rebuild_all
8
+ Post: create, read, update, delete
9
+ Status: index
10
+ WatchDog: index, cleanup
11
+ View: create, read, update, delete
12
+
13
+ editor:
14
+ Category: create, read, update
15
+ Comment: read, update, delete
16
+ Git: index
17
+ Post: create, read, update
18
+ TypusUser: read, update
19
+ View: create, read, update, delete
20
+
21
+ designer:
22
+ Category: read, update
23
+ Comment: read
24
+ Post: read, update
@@ -1,5 +1,6 @@
1
1
  TypusUser:
2
2
  fields:
3
+ default: first_name, last_name, role, email, language
3
4
  list: email, role, status
4
5
  form: first_name, last_name, role, email, password, password_confirmation, language
5
6
  options:
@@ -9,4 +10,4 @@ TypusUser:
9
10
  filters: status, role
10
11
  search: first_name, last_name, email, role
11
12
  application: Typus
12
- description: System Users Administration
13
+ description: System Users Administration