cms-lite 0.3.3 → 0.4.0

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 (268) hide show
  1. data/.gitignore +5 -0
  2. data/{README.markdown → README.rdoc} +18 -30
  3. data/Rakefile +20 -3
  4. data/VERSION +1 -1
  5. data/app/controllers/cms_lite_controller.rb +10 -7
  6. data/cms-lite.gemspec +305 -8
  7. data/lib/cms_lite.rb +48 -35
  8. data/rails/init.rb +21 -1
  9. data/test/rails_root/.gitignore +8 -0
  10. data/test/rails_root/.rake_tasks +103 -0
  11. data/test/rails_root/Capfile +3 -0
  12. data/test/rails_root/Rakefile +14 -0
  13. data/test/rails_root/app/controllers/application_controller.rb +22 -0
  14. data/test/rails_root/app/models/.keep +0 -0
  15. data/test/rails_root/app/models/user.rb +10 -0
  16. data/test/rails_root/app/models/user_session.rb +2 -0
  17. data/test/rails_root/app/views/layouts/default.html.erb +26 -0
  18. data/test/rails_root/app/views/layouts/test.html.erb +26 -0
  19. data/test/rails_root/config/amazon_s3.yml +14 -0
  20. data/test/rails_root/config/boot.rb +109 -0
  21. data/test/rails_root/config/database.yml +14 -0
  22. data/test/rails_root/config/environment.rb +27 -0
  23. data/test/rails_root/config/environments/development.rb +19 -0
  24. data/test/rails_root/config/environments/production.rb +1 -0
  25. data/test/rails_root/config/environments/test.rb +33 -0
  26. data/test/rails_root/config/global_config.yml +20 -0
  27. data/test/rails_root/config/initializers/cms_lite.rb +4 -0
  28. data/test/rails_root/config/initializers/inflections.rb +10 -0
  29. data/test/rails_root/config/initializers/mime_types.rb +5 -0
  30. data/test/rails_root/config/initializers/requires.rb +13 -0
  31. data/test/rails_root/config/initializers/session_store.rb +8 -0
  32. data/test/rails_root/config/routes.rb +9 -0
  33. data/test/rails_root/content/pages/en/demo/hi.html.erb +1 -0
  34. data/test/rails_root/content/pages/en/open/hello.html.erb +1 -0
  35. data/test/rails_root/content/protected-pages/en/demo/hi.html.erb +1 -0
  36. data/test/rails_root/content/protected-pages/en/protected/safe-hello.html.erb +1 -0
  37. data/test/rails_root/db/.keep +0 -0
  38. data/test/rails_root/db/migrate/20090320174818_create_muck_permissions_and_roles.rb +16 -0
  39. data/test/rails_root/db/migrate/20090402234137_create_languages.rb +18 -0
  40. data/test/rails_root/db/migrate/20090426041056_create_countries.rb +15 -0
  41. data/test/rails_root/db/migrate/20090426041103_create_states.rb +18 -0
  42. data/test/rails_root/db/migrate/20090530170040_create_themes.rb +11 -0
  43. data/test/rails_root/db/migrate/20090602041838_create_users.rb +39 -0
  44. data/test/rails_root/db/migrate/20090606153236_create_domain_themes.rb +13 -0
  45. data/test/rails_root/features/step_definitions/cms_steps.rb +19 -0
  46. data/test/rails_root/features/step_definitions/common_steps.rb +86 -0
  47. data/test/rails_root/features/step_definitions/webrat_steps.rb +109 -0
  48. data/test/rails_root/features/support/env.rb +16 -0
  49. data/test/rails_root/features/view_cms_pages.feature +36 -0
  50. data/test/rails_root/lib/tasks/cucumber.rake +7 -0
  51. data/test/rails_root/public/.htaccess +40 -0
  52. data/test/rails_root/public/404.html +30 -0
  53. data/test/rails_root/public/422.html +30 -0
  54. data/test/rails_root/public/500.html +30 -0
  55. data/test/rails_root/public/dispatch.rb +10 -0
  56. data/test/rails_root/public/favicon.ico +0 -0
  57. data/test/rails_root/public/images/arrow_left.gif +0 -0
  58. data/test/rails_root/public/images/arrow_right.gif +0 -0
  59. data/test/rails_root/public/images/blue/preview.gif +0 -0
  60. data/test/rails_root/public/images/fancybox/fancy_closebox.png +0 -0
  61. data/test/rails_root/public/images/fancybox/fancy_left.png +0 -0
  62. data/test/rails_root/public/images/fancybox/fancy_progress.png +0 -0
  63. data/test/rails_root/public/images/fancybox/fancy_right.png +0 -0
  64. data/test/rails_root/public/images/fancybox/fancy_shadow_e.png +0 -0
  65. data/test/rails_root/public/images/fancybox/fancy_shadow_n.png +0 -0
  66. data/test/rails_root/public/images/fancybox/fancy_shadow_ne.png +0 -0
  67. data/test/rails_root/public/images/fancybox/fancy_shadow_nw.png +0 -0
  68. data/test/rails_root/public/images/fancybox/fancy_shadow_s.png +0 -0
  69. data/test/rails_root/public/images/fancybox/fancy_shadow_se.png +0 -0
  70. data/test/rails_root/public/images/fancybox/fancy_shadow_sw.png +0 -0
  71. data/test/rails_root/public/images/fancybox/fancy_shadow_w.png +0 -0
  72. data/test/rails_root/public/images/fancybox/fancy_title_left.png +0 -0
  73. data/test/rails_root/public/images/fancybox/fancy_title_main.png +0 -0
  74. data/test/rails_root/public/images/fancybox/fancy_title_right.png +0 -0
  75. data/test/rails_root/public/images/icons/accept.png +0 -0
  76. data/test/rails_root/public/images/icons/add.png +0 -0
  77. data/test/rails_root/public/images/icons/delete.png +0 -0
  78. data/test/rails_root/public/images/icons/vote.png +0 -0
  79. data/test/rails_root/public/images/kjh/preview.gif +0 -0
  80. data/test/rails_root/public/images/kjy/preview.gif +0 -0
  81. data/test/rails_root/public/images/loading.gif +0 -0
  82. data/test/rails_root/public/images/profile_default.jpg +0 -0
  83. data/test/rails_root/public/images/rails.png +0 -0
  84. data/test/rails_root/public/images/red/preview.gif +0 -0
  85. data/test/rails_root/public/images/spinner.gif +0 -0
  86. data/test/rails_root/public/images/sprites.png +0 -0
  87. data/test/rails_root/public/javascripts/application.js +2 -0
  88. data/test/rails_root/public/javascripts/builder.js +136 -0
  89. data/test/rails_root/public/javascripts/controls.js +963 -0
  90. data/test/rails_root/public/javascripts/dragdrop.js +972 -0
  91. data/test/rails_root/public/javascripts/effects.js +1120 -0
  92. data/test/rails_root/public/javascripts/fancyzoom.min.js +1 -0
  93. data/test/rails_root/public/javascripts/jquery/jquery-ui.js +273 -0
  94. data/test/rails_root/public/javascripts/jquery/jquery.easing.js +1 -0
  95. data/test/rails_root/public/javascripts/jquery/jquery.fancybox.js +9 -0
  96. data/test/rails_root/public/javascripts/jquery/jquery.form.js +637 -0
  97. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +2 -0
  98. data/test/rails_root/public/javascripts/jquery/jquery.js +19 -0
  99. data/test/rails_root/public/javascripts/jquery/jquery.tips.js +69 -0
  100. data/test/rails_root/public/javascripts/muck.js +80 -0
  101. data/test/rails_root/public/javascripts/prototype.js +4225 -0
  102. data/test/rails_root/public/javascripts/scriptaculous.js +58 -0
  103. data/test/rails_root/public/javascripts/slider.js +277 -0
  104. data/test/rails_root/public/javascripts/sound.js +60 -0
  105. data/test/rails_root/public/robots.txt +1 -0
  106. data/test/rails_root/public/stylesheets/.keep +0 -0
  107. data/test/rails_root/public/stylesheets/admin.css +12 -0
  108. data/test/rails_root/public/stylesheets/blue.css +1 -0
  109. data/test/rails_root/public/stylesheets/blueprint/ie.css +26 -0
  110. data/test/rails_root/public/stylesheets/blueprint/liquid_screen.css +203 -0
  111. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/cross.png +0 -0
  112. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/key.png +0 -0
  113. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/tick.png +0 -0
  114. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/readme.txt +32 -0
  115. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/screen.css +97 -0
  116. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/readme.txt +14 -0
  117. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/screen.css +71 -0
  118. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/doc.png +0 -0
  119. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/email.png +0 -0
  120. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/external.png +0 -0
  121. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/feed.png +0 -0
  122. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/im.png +0 -0
  123. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  124. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/visited.png +0 -0
  125. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/xls.png +0 -0
  126. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/readme.txt +18 -0
  127. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/screen.css +40 -0
  128. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/liquid.css +134 -0
  129. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/src/liquid.css +197 -0
  130. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/readme.txt +10 -0
  131. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/screen.css +109 -0
  132. data/test/rails_root/public/stylesheets/blueprint/print.css +30 -0
  133. data/test/rails_root/public/stylesheets/blueprint/screen.css +251 -0
  134. data/test/rails_root/public/stylesheets/blueprint/sprite.css +1 -0
  135. data/test/rails_root/public/stylesheets/blueprint/src/forms.css +49 -0
  136. data/test/rails_root/public/stylesheets/blueprint/src/grid.css +213 -0
  137. data/test/rails_root/public/stylesheets/blueprint/src/grid.png +0 -0
  138. data/test/rails_root/public/stylesheets/blueprint/src/ie.css +59 -0
  139. data/test/rails_root/public/stylesheets/blueprint/src/print.css +85 -0
  140. data/test/rails_root/public/stylesheets/blueprint/src/reset.css +38 -0
  141. data/test/rails_root/public/stylesheets/blueprint/src/typography.css +105 -0
  142. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
  143. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
  144. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_100_f0f0f0_1x400.png +0 -0
  145. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_50_99c2ff_1x400.png +0 -0
  146. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
  147. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_80_e6e6e6_1x400.png +0 -0
  148. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  149. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
  150. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-soft_100_e7eef3_1x100.png +0 -0
  151. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_222222_256x240.png +0 -0
  152. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2694e8_256x240.png +0 -0
  153. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2e83ff_256x240.png +0 -0
  154. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_72a7cf_256x240.png +0 -0
  155. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_888888_256x240.png +0 -0
  156. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_cd0a0a_256x240.png +0 -0
  157. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_ffffff_256x240.png +0 -0
  158. data/test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.1.custom.css +404 -0
  159. data/test/rails_root/public/stylesheets/jquery/jquery.fancybox.css +44 -0
  160. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  161. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  162. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  163. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  164. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  165. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  166. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  167. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  168. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_217bc0_256x240.png +0 -0
  169. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_2e83ff_256x240.png +0 -0
  170. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_469bdd_256x240.png +0 -0
  171. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_6da8d5_256x240.png +0 -0
  172. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_cd0a0a_256x240.png +0 -0
  173. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_d8e7f3_256x240.png +0 -0
  174. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_f9bd01_256x240.png +0 -0
  175. data/test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.1.custom.css +404 -0
  176. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  177. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  178. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  179. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  180. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  181. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  182. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  183. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  184. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_222222_256x240.png +0 -0
  185. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  186. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_454545_256x240.png +0 -0
  187. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_888888_256x240.png +0 -0
  188. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  189. data/test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.1.custom.css +404 -0
  190. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  191. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  192. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  193. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  194. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  195. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  196. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  197. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  198. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  199. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  200. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  201. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  202. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  203. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  204. data/test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.1.custom.css +404 -0
  205. data/test/rails_root/public/stylesheets/kjh.css +1 -0
  206. data/test/rails_root/public/stylesheets/kjy.css +1 -0
  207. data/test/rails_root/public/stylesheets/red.css +1 -0
  208. data/test/rails_root/public/stylesheets/reset.css +0 -0
  209. data/test/rails_root/public/stylesheets/styles.css +83 -0
  210. data/test/rails_root/public/stylesheets/themes/blue/styles.css +1 -0
  211. data/test/rails_root/public/stylesheets/themes/red/styles.css +1 -0
  212. data/test/rails_root/script/about +3 -0
  213. data/test/rails_root/script/breakpointer +3 -0
  214. data/test/rails_root/script/console +3 -0
  215. data/test/rails_root/script/create_project.rb +52 -0
  216. data/test/rails_root/script/cucumber +7 -0
  217. data/test/rails_root/script/dbconsole +3 -0
  218. data/test/rails_root/script/destroy +3 -0
  219. data/test/rails_root/script/generate +3 -0
  220. data/test/rails_root/script/performance/benchmarker +3 -0
  221. data/test/rails_root/script/performance/profiler +3 -0
  222. data/test/rails_root/script/performance/request +3 -0
  223. data/test/rails_root/script/plugin +3 -0
  224. data/test/rails_root/script/process/inspector +3 -0
  225. data/test/rails_root/script/process/reaper +3 -0
  226. data/test/rails_root/script/process/spawner +3 -0
  227. data/test/rails_root/script/runner +3 -0
  228. data/test/rails_root/script/server +3 -0
  229. data/test/rails_root/test/factories.rb +45 -0
  230. data/test/rails_root/test/functional/.keep +0 -0
  231. data/test/rails_root/test/functional/cms_lite_controller_test.rb +35 -0
  232. data/test/rails_root/test/mocks/development/.keep +0 -0
  233. data/test/rails_root/test/mocks/test/.keep +0 -0
  234. data/test/rails_root/test/shoulda_macros/controller.rb +62 -0
  235. data/test/rails_root/test/shoulda_macros/models.rb +50 -0
  236. data/test/rails_root/test/test_helper.rb +38 -0
  237. data/test/rails_root/test/unit/.keep +0 -0
  238. data/test/rails_root/test/unit/cms_lite_test.rb +84 -0
  239. data/test/rails_root/themes/blue/content/pages/en/blue/blue.html.erb +1 -0
  240. data/test/rails_root/themes/blue/content/pages/en/open/blue.html.erb +1 -0
  241. data/test/rails_root/themes/blue/description.txt +1 -0
  242. data/test/rails_root/themes/blue/locales/en.yml +2 -0
  243. data/test/rails_root/themes/blue/views/layouts/default.html.erb +17 -0
  244. data/test/rails_root/themes/blue/views/layouts/global/_footer.html.erb +3 -0
  245. data/test/rails_root/themes/blue/views/layouts/global/_head.html.erb +8 -0
  246. data/test/rails_root/themes/blue/views/layouts/global/_header.html.erb +3 -0
  247. data/test/rails_root/themes/red/content/protected-pages/en/red/red.html.erb +1 -0
  248. data/test/rails_root/themes/red/description.txt +1 -0
  249. data/test/rails_root/themes/red/locales/en.yml +2 -0
  250. data/test/rails_root/themes/red/views/layouts/default.html.erb +17 -0
  251. data/test/rails_root/themes/red/views/layouts/global/_footer.html.erb +3 -0
  252. data/test/rails_root/themes/red/views/layouts/global/_head.html.erb +8 -0
  253. data/test/rails_root/themes/red/views/layouts/global/_header.html.erb +3 -0
  254. data/test/rails_root/vendor/plugins/ssl_requirement/README +43 -0
  255. data/test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb +62 -0
  256. data/test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb +132 -0
  257. data/test/rails_root/vendor/plugins/validation_reflection/CHANGELOG +24 -0
  258. data/test/rails_root/vendor/plugins/validation_reflection/LICENSE +20 -0
  259. data/test/rails_root/vendor/plugins/validation_reflection/README +64 -0
  260. data/test/rails_root/vendor/plugins/validation_reflection/Rakefile +22 -0
  261. data/test/rails_root/vendor/plugins/validation_reflection/about.yml +7 -0
  262. data/test/rails_root/vendor/plugins/validation_reflection/init.rb +8 -0
  263. data/test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb +129 -0
  264. data/test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb +36 -0
  265. data/test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb +126 -0
  266. metadata +313 -10
  267. data/test/cms_lite_test.rb +0 -8
  268. data/test/test_helper.rb +0 -3
File without changes
@@ -0,0 +1,84 @@
1
+
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+
4
+ class CmsLiteTest < ActiveSupport::TestCase
5
+
6
+ context "cms lite" do
7
+
8
+ should "provide routes to #{CmsLite::CONTENT_PATH}/#{CmsLite::PAGES_PATH}" do
9
+ found = false
10
+ CmsLite.cms_routes.each do |route|
11
+ if route[:content_key] == '/demo' && route[:uri] == '/demo/*content_page'
12
+ found = true
13
+ end
14
+ end
15
+ assert found
16
+ end
17
+
18
+ should "provide routes to #{CmsLite::CONTENT_PATH}/#{CmsLite::PROTECTED_PAGES_PATH}" do
19
+ found = false
20
+ CmsLite.protected_cms_routes.each do |route|
21
+ if route[:content_key] == '/protected' && route[:uri] == '/protected/*content_page'
22
+ found = true
23
+ end
24
+ end
25
+ assert found
26
+ end
27
+
28
+ should "find overlapping routes" do
29
+ found = false
30
+ CmsLite.check_routes.each do |route|
31
+ if route[:content_key] == '/demo' && route[:uri] == '/demo/*content_page'
32
+ found = true
33
+ end
34
+ end
35
+ assert found
36
+ end
37
+
38
+ should "not find overlapping routes" do
39
+ found = false
40
+ CmsLite.check_routes.each do |route|
41
+ if route[:content_key] == '/open' && route[:uri] == '/open/*content_page'
42
+ found = true
43
+ end
44
+ end
45
+ assert !found
46
+ end
47
+
48
+ should "add new open content path" do
49
+ CmsLite.append_content_path('themes/blue/content')
50
+ found = false
51
+ CmsLite.cms_routes.each do |route|
52
+ if route[:content_key] == '/blue' && route[:uri] == '/blue/*content_page'
53
+ found = true
54
+ end
55
+ end
56
+ assert found
57
+ end
58
+
59
+ should "add new protected content path" do
60
+ CmsLite.append_content_path('themes/red/content')
61
+ found = false
62
+ CmsLite.protected_cms_routes.each do |route|
63
+ if route[:content_key] == '/red' && route[:uri] == '/red/*content_page'
64
+ found = true
65
+ end
66
+ end
67
+ assert found
68
+ end
69
+
70
+ should "remove content path" do
71
+ CmsLite.append_content_path('themes/red/content')
72
+ CmsLite.remove_content_path('themes/red/content')
73
+ found = false
74
+ CmsLite.protected_cms_routes.each do |route|
75
+ if route[:content_key] == '/red' && route[:uri] == '/red/*content_page'
76
+ found = true
77
+ end
78
+ end
79
+ assert !found
80
+ end
81
+
82
+ end
83
+
84
+ end
@@ -0,0 +1 @@
1
+ Put information about your theme here
@@ -0,0 +1,2 @@
1
+ en:
2
+ start: 'put strings to be translated in this file'
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <%= render :partial => 'layouts/global/head' %>
5
+ </head>
6
+ <body>
7
+ <div id="header">
8
+ <%= render :partial => 'layouts/global/header' %>
9
+ </div>
10
+ <div id="main">
11
+ <div id="content">
12
+ <%= yield %>
13
+ </div>
14
+ </div>
15
+ <%= render :partial => 'layouts/global/footer' %>
16
+ </body>
17
+ </html>
@@ -0,0 +1,8 @@
1
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2
+ <meta name="description" content="" />
3
+ <title><%= @title -%></title>
4
+ <%= stylesheet_link_tag 'application', :cache=>true -%>
5
+ <%= javascript_include_tag 'application' -%>
6
+ <%= javascript_tag %[const AUTH_TOKEN = #{form_authenticity_token.inspect};] if protect_against_forgery? -%>
7
+ <%= yield :head -%>
8
+ <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
@@ -0,0 +1,3 @@
1
+ <div id="top-navigation">
2
+ </div>
3
+ <div class="clear"></div>
@@ -0,0 +1 @@
1
+ Put information about your theme here
@@ -0,0 +1,2 @@
1
+ en:
2
+ start: 'put strings to be translated in this file'
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <%= render :partial => 'layouts/global/head' %>
5
+ </head>
6
+ <body>
7
+ <div id="header">
8
+ <%= render :partial => 'layouts/global/header' %>
9
+ </div>
10
+ <div id="main">
11
+ <div id="content">
12
+ <%= yield %>
13
+ </div>
14
+ </div>
15
+ <%= render :partial => 'layouts/global/footer' %>
16
+ </body>
17
+ </html>
@@ -0,0 +1,3 @@
1
+ <div id="footer">
2
+
3
+ </div>
@@ -0,0 +1,8 @@
1
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
2
+ <meta name="description" content="" />
3
+ <title><%= @title -%></title>
4
+ <%= stylesheet_link_tag 'application', :cache=>true -%>
5
+ <%= javascript_include_tag 'application' -%>
6
+ <%= javascript_tag %[const AUTH_TOKEN = #{form_authenticity_token.inspect};] if protect_against_forgery? -%>
7
+ <%= yield :head -%>
8
+ <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
@@ -0,0 +1,3 @@
1
+ <div id="top-navigation">
2
+ </div>
3
+ <div class="clear"></div>
@@ -0,0 +1,43 @@
1
+ SSL Requirement
2
+ ===============
3
+
4
+ SSL requirement adds a declarative way of specifying that certain actions
5
+ should only be allowed to run under SSL, and if they're accessed without it,
6
+ they should be redirected.
7
+
8
+ Example:
9
+
10
+ class ApplicationController < ActiveRecord::Base
11
+ include SslRequirement
12
+ end
13
+
14
+ class AccountController < ApplicationController
15
+ ssl_required :signup, :payment
16
+ ssl_allowed :index
17
+
18
+ def signup
19
+ # Non-SSL access will be redirected to SSL
20
+ end
21
+
22
+ def payment
23
+ # Non-SSL access will be redirected to SSL
24
+ end
25
+
26
+ def index
27
+ # This action will work either with or without SSL
28
+ end
29
+
30
+ def other
31
+ # SSL access will be redirected to non-SSL
32
+ end
33
+ end
34
+
35
+ You can overwrite the protected method ssl_required? to rely on other things
36
+ than just the declarative specification. Say, only premium accounts get SSL.
37
+
38
+ P.S.: Beware when you include the SslRequirement module. At the time of
39
+ inclusion, it'll add the before_filter that validates the declarations. Some
40
+ times you'll want to run other before_filters before that. They should then be
41
+ declared ahead of including this module.
42
+
43
+ Copyright (c) 2005 David Heinemeier Hansson, released under the MIT license
@@ -0,0 +1,62 @@
1
+ # Copyright (c) 2005 David Heinemeier Hansson
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ module SslRequirement
22
+ def self.included(controller)
23
+ controller.extend(ClassMethods)
24
+ controller.before_filter(:ensure_proper_protocol)
25
+ end
26
+
27
+ module ClassMethods
28
+ # Specifies that the named actions requires an SSL connection to be performed (which is enforced by ensure_proper_protocol).
29
+ def ssl_required(*actions)
30
+ write_inheritable_array(:ssl_required_actions, actions)
31
+ end
32
+
33
+ def ssl_allowed(*actions)
34
+ write_inheritable_array(:ssl_allowed_actions, actions)
35
+ end
36
+ end
37
+
38
+ protected
39
+ # Returns true if the current action is supposed to run as SSL
40
+ def ssl_required?
41
+ (self.class.read_inheritable_attribute(:ssl_required_actions) || []).include?(action_name.to_sym)
42
+ end
43
+
44
+ def ssl_allowed?
45
+ (self.class.read_inheritable_attribute(:ssl_allowed_actions) || []).include?(action_name.to_sym)
46
+ end
47
+
48
+ private
49
+ def ensure_proper_protocol
50
+ return true if ssl_allowed?
51
+
52
+ if ssl_required? && !request.ssl?
53
+ redirect_to "https://" + request.host + request.request_uri
54
+ flash.keep
55
+ return false
56
+ elsif request.ssl? && !ssl_required?
57
+ redirect_to "http://" + request.host + request.request_uri
58
+ flash.keep
59
+ return false
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,132 @@
1
+ begin
2
+ require 'action_controller'
3
+ rescue LoadError
4
+ if ENV['ACTIONCONTROLLER_PATH'].nil?
5
+ abort <<MSG
6
+ Please set the ACTIONCONTROLLER_PATH environment variable to the directory
7
+ containing the action_controller.rb file.
8
+ MSG
9
+ else
10
+ $LOAD_PATH.unshift << ENV['ACTIONCONTROLLER_PATH']
11
+ begin
12
+ require 'action_controller'
13
+ rescue LoadError
14
+ abort "ActionController could not be found."
15
+ end
16
+ end
17
+ end
18
+
19
+ require 'action_controller/test_process'
20
+ require 'test/unit'
21
+ require "#{File.dirname(__FILE__)}/../lib/ssl_requirement"
22
+
23
+ ActionController::Base.logger = nil
24
+ ActionController::Routing::Routes.reload rescue nil
25
+
26
+ class SslRequirementController < ActionController::Base
27
+ include SslRequirement
28
+
29
+ ssl_required :a, :b
30
+ ssl_allowed :c
31
+
32
+ def a
33
+ render :nothing => true
34
+ end
35
+
36
+ def b
37
+ render :nothing => true
38
+ end
39
+
40
+ def c
41
+ render :nothing => true
42
+ end
43
+
44
+ def d
45
+ render :nothing => true
46
+ end
47
+
48
+ def set_flash
49
+ flash[:foo] = "bar"
50
+ end
51
+ end
52
+
53
+ class SslRequirementTest < Test::Unit::TestCase
54
+ def setup
55
+ @controller = SslRequirementController.new
56
+ @request = ActionController::TestRequest.new
57
+ @response = ActionController::TestResponse.new
58
+ end
59
+
60
+ def test_redirect_to_https_preserves_flash
61
+ get :set_flash
62
+ get :b
63
+ assert_response :redirect
64
+ assert_equal "bar", flash[:foo]
65
+ end
66
+
67
+ def test_not_redirecting_to_https_does_not_preserve_the_flash
68
+ get :set_flash
69
+ get :d
70
+ assert_response :success
71
+ assert_nil flash[:foo]
72
+ end
73
+
74
+ def test_redirect_to_http_preserves_flash
75
+ get :set_flash
76
+ @request.env['HTTPS'] = "on"
77
+ get :d
78
+ assert_response :redirect
79
+ assert_equal "bar", flash[:foo]
80
+ end
81
+
82
+ def test_not_redirecting_to_http_does_not_preserve_the_flash
83
+ get :set_flash
84
+ @request.env['HTTPS'] = "on"
85
+ get :a
86
+ assert_response :success
87
+ assert_nil flash[:foo]
88
+ end
89
+
90
+ def test_required_without_ssl
91
+ assert_not_equal "on", @request.env["HTTPS"]
92
+ get :a
93
+ assert_response :redirect
94
+ assert_match %r{^https://}, @response.headers['Location']
95
+ get :b
96
+ assert_response :redirect
97
+ assert_match %r{^https://}, @response.headers['Location']
98
+ end
99
+
100
+ def test_required_with_ssl
101
+ @request.env['HTTPS'] = "on"
102
+ get :a
103
+ assert_response :success
104
+ get :b
105
+ assert_response :success
106
+ end
107
+
108
+ def test_disallowed_without_ssl
109
+ assert_not_equal "on", @request.env["HTTPS"]
110
+ get :d
111
+ assert_response :success
112
+ end
113
+
114
+ def test_disallowed_with_ssl
115
+ @request.env['HTTPS'] = "on"
116
+ get :d
117
+ assert_response :redirect
118
+ assert_match %r{^http://}, @response.headers['Location']
119
+ end
120
+
121
+ def test_allowed_without_ssl
122
+ assert_not_equal "on", @request.env["HTTPS"]
123
+ get :c
124
+ assert_response :success
125
+ end
126
+
127
+ def test_allowed_with_ssl
128
+ @request.env['HTTPS'] = "on"
129
+ get :c
130
+ assert_response :success
131
+ end
132
+ end
@@ -0,0 +1,24 @@
1
+
2
+ == 0.3.1, 2008-01-03
3
+ * require 'ostruct'; thanks to Georg Friedrich.
4
+
5
+ == 0.3, 2008-01-01
6
+ * Added configurability in config/plugins/validation_reflection.rb
7
+
8
+ == 0.2.1, 2006-12-28
9
+ * Moved lib files into subfolder boiler_plate.
10
+
11
+ == 0.2, 2006-08-06
12
+ ?
13
+
14
+ = Deprecation Notice
15
+
16
+ Version 0.1 had supplied three methods
17
+
18
+ - validates_presence_of_mandatory_content_columns
19
+ - validates_lengths_of_string_attributes
20
+ - validates_all_associated
21
+
22
+ These have been removed. Please use the Enforce Schema Rules plugin instead
23
+
24
+ http://enforce-schema-rules.googlecode.com/svn/trunk/enforce_schema_rules/