refinerycms 0.9.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 (451) hide show
  1. data/CONTRIBUTORS +8 -0
  2. data/LICENSE +21 -0
  3. data/README +40 -0
  4. data/app/controllers/application.rb +3 -0
  5. data/app/controllers/application_controller.rb +8 -0
  6. data/config/amazon_s3.yml +17 -0
  7. data/config/boot.rb +110 -0
  8. data/config/database.yml.example +20 -0
  9. data/config/environment.rb +67 -0
  10. data/config/environments/development.rb +17 -0
  11. data/config/environments/production.rb +19 -0
  12. data/config/environments/test.rb +22 -0
  13. data/config/initializers/inflections.rb +10 -0
  14. data/config/initializers/mime_types.rb +5 -0
  15. data/config/rackspace_cloudfiles.yml +14 -0
  16. data/config/routes.rb +19 -0
  17. data/db/migrate/20090903030652_remove_title_from_resources.rb +9 -0
  18. data/db/migrate/20090914025122_change_default_image_thumbnails.rb +9 -0
  19. data/db/migrate/20090916025552_resave_refinery_settings_through_serializer.rb +13 -0
  20. data/db/migrate/20090916045536_create_user_plugins.rb +41 -0
  21. data/db/migrate/20090916055243_add_position_to_user_plugins.rb +9 -0
  22. data/db/schema.rb +141 -0
  23. data/db/seeds.rb +109 -0
  24. data/lib/refinery_initializer.rb +9 -0
  25. data/public/.htaccess +40 -0
  26. data/public/404.html +29 -0
  27. data/public/422.html +30 -0
  28. data/public/500.html +30 -0
  29. data/public/favicon.ico +0 -0
  30. data/public/images/lightbox/bullet.gif +0 -0
  31. data/public/images/lightbox/close.gif +0 -0
  32. data/public/images/lightbox/closelabel.gif +0 -0
  33. data/public/images/lightbox/donate-button.gif +0 -0
  34. data/public/images/lightbox/download-icon.gif +0 -0
  35. data/public/images/lightbox/loading.gif +0 -0
  36. data/public/images/lightbox/nextlabel.gif +0 -0
  37. data/public/images/lightbox/prevlabel.gif +0 -0
  38. data/public/images/refinery/add.gif +0 -0
  39. data/public/images/refinery/add.png +0 -0
  40. data/public/images/refinery/admin_bg.png +0 -0
  41. data/public/images/refinery/ajax-loader.gif +0 -0
  42. data/public/images/refinery/branch-end.gif +0 -0
  43. data/public/images/refinery/branch-start.gif +0 -0
  44. data/public/images/refinery/branch.gif +0 -0
  45. data/public/images/refinery/cross.gif +0 -0
  46. data/public/images/refinery/deactive-gradient.gif +0 -0
  47. data/public/images/refinery/delete.gif +0 -0
  48. data/public/images/refinery/drag.gif +0 -0
  49. data/public/images/refinery/edit.gif +0 -0
  50. data/public/images/refinery/header-background.gif +0 -0
  51. data/public/images/refinery/header_background.png +0 -0
  52. data/public/images/refinery/hover-gradient.jpg +0 -0
  53. data/public/images/refinery/icons/accept.png +0 -0
  54. data/public/images/refinery/icons/add.png +0 -0
  55. data/public/images/refinery/icons/application_edit.png +0 -0
  56. data/public/images/refinery/icons/application_go.png +0 -0
  57. data/public/images/refinery/icons/arrow_left.png +0 -0
  58. data/public/images/refinery/icons/arrow_switch.png +0 -0
  59. data/public/images/refinery/icons/arrow_up.png +0 -0
  60. data/public/images/refinery/icons/bin_closed.png +0 -0
  61. data/public/images/refinery/icons/cancel.png +0 -0
  62. data/public/images/refinery/icons/cog_add.png +0 -0
  63. data/public/images/refinery/icons/cog_edit.png +0 -0
  64. data/public/images/refinery/icons/cross.png +0 -0
  65. data/public/images/refinery/icons/delete.png +0 -0
  66. data/public/images/refinery/icons/edit.png +0 -0
  67. data/public/images/refinery/icons/email_edit.png +0 -0
  68. data/public/images/refinery/icons/email_go.png +0 -0
  69. data/public/images/refinery/icons/email_open.png +0 -0
  70. data/public/images/refinery/icons/eye.png +0 -0
  71. data/public/images/refinery/icons/help.png +0 -0
  72. data/public/images/refinery/icons/image_add.png +0 -0
  73. data/public/images/refinery/icons/image_edit.png +0 -0
  74. data/public/images/refinery/icons/layout_add.png +0 -0
  75. data/public/images/refinery/icons/layout_edit.png +0 -0
  76. data/public/images/refinery/icons/page_add.png +0 -0
  77. data/public/images/refinery/icons/page_edit.png +0 -0
  78. data/public/images/refinery/icons/page_link.png +0 -0
  79. data/public/images/refinery/icons/page_white_edit.png +0 -0
  80. data/public/images/refinery/icons/page_white_put.png +0 -0
  81. data/public/images/refinery/icons/reorder.png +0 -0
  82. data/public/images/refinery/icons/tick.png +0 -0
  83. data/public/images/refinery/icons/user.png +0 -0
  84. data/public/images/refinery/icons/user_add.png +0 -0
  85. data/public/images/refinery/icons/user_comment.png +0 -0
  86. data/public/images/refinery/icons/user_edit.png +0 -0
  87. data/public/images/refinery/info.gif +0 -0
  88. data/public/images/refinery/logo.png +0 -0
  89. data/public/images/refinery/m-tools.gif +0 -0
  90. data/public/images/refinery/magnifier.png +0 -0
  91. data/public/images/refinery/nav-3-background.gif +0 -0
  92. data/public/images/refinery/page_bg.png +0 -0
  93. data/public/images/refinery/resolve-digital.gif +0 -0
  94. data/public/images/refinery/search.gif +0 -0
  95. data/public/images/refinery/shad_blcorner.png +0 -0
  96. data/public/images/refinery/shad_bottom.png +0 -0
  97. data/public/images/refinery/shad_brcorner.png +0 -0
  98. data/public/images/refinery/shad_tlcorner.png +0 -0
  99. data/public/images/refinery/shad_trcorner.png +0 -0
  100. data/public/images/refinery/tableft.gif +0 -0
  101. data/public/images/refinery/tabright.gif +0 -0
  102. data/public/images/refinery/tick.gif +0 -0
  103. data/public/images/thickbox/cross.png +0 -0
  104. data/public/images/thickbox/loadingAnimation.gif +0 -0
  105. data/public/images/thickbox/macFFBgHack.png +0 -0
  106. data/public/images/wymeditor/skins/refinery/blockquote.png +0 -0
  107. data/public/images/wymeditor/skins/refinery/center.png +0 -0
  108. data/public/images/wymeditor/skins/refinery/css.png +0 -0
  109. data/public/images/wymeditor/skins/refinery/h1.png +0 -0
  110. data/public/images/wymeditor/skins/refinery/h2.png +0 -0
  111. data/public/images/wymeditor/skins/refinery/h3.png +0 -0
  112. data/public/images/wymeditor/skins/refinery/h4.png +0 -0
  113. data/public/images/wymeditor/skins/refinery/h5.png +0 -0
  114. data/public/images/wymeditor/skins/refinery/h6.png +0 -0
  115. data/public/images/wymeditor/skins/refinery/icons.png +0 -0
  116. data/public/images/wymeditor/skins/refinery/iframe/lbl-blockquote.png +0 -0
  117. data/public/images/wymeditor/skins/refinery/iframe/lbl-h1.png +0 -0
  118. data/public/images/wymeditor/skins/refinery/iframe/lbl-h2.png +0 -0
  119. data/public/images/wymeditor/skins/refinery/iframe/lbl-h3.png +0 -0
  120. data/public/images/wymeditor/skins/refinery/iframe/lbl-h4.png +0 -0
  121. data/public/images/wymeditor/skins/refinery/iframe/lbl-h5.png +0 -0
  122. data/public/images/wymeditor/skins/refinery/iframe/lbl-h6.png +0 -0
  123. data/public/images/wymeditor/skins/refinery/iframe/lbl-p.png +0 -0
  124. data/public/images/wymeditor/skins/refinery/iframe/lbl-pre.png +0 -0
  125. data/public/images/wymeditor/skins/refinery/justify.png +0 -0
  126. data/public/images/wymeditor/skins/refinery/left.png +0 -0
  127. data/public/images/wymeditor/skins/refinery/paragraph.png +0 -0
  128. data/public/images/wymeditor/skins/refinery/right.png +0 -0
  129. data/public/images/wymeditor/skins/wymeditor_icon.png +0 -0
  130. data/public/javascripts/admin.js +26 -0
  131. data/public/javascripts/application.js +2 -0
  132. data/public/javascripts/builder.js +136 -0
  133. data/public/javascripts/controls.js +963 -0
  134. data/public/javascripts/dialog.js +52 -0
  135. data/public/javascripts/dragdrop.js +973 -0
  136. data/public/javascripts/effects.js +1128 -0
  137. data/public/javascripts/fastinit.js +84 -0
  138. data/public/javascripts/jquery/GPL-LICENSE.txt +278 -0
  139. data/public/javascripts/jquery/MIT-LICENSE.txt +20 -0
  140. data/public/javascripts/jquery/README +67 -0
  141. data/public/javascripts/jquery/jquery.js +11 -0
  142. data/public/javascripts/jquery/jquery.ui.draggable.js +1 -0
  143. data/public/javascripts/jquery/jquery.ui.js +1 -0
  144. data/public/javascripts/jquery/jquery.ui.resizable.js +1 -0
  145. data/public/javascripts/jquery/jquery.ui.sortable.js +1 -0
  146. data/public/javascripts/lightbox.js +503 -0
  147. data/public/javascripts/livepipe.js +356 -0
  148. data/public/javascripts/overlabel.js +66 -0
  149. data/public/javascripts/parse_url.js +38 -0
  150. data/public/javascripts/prototype.enhancements.js +24 -0
  151. data/public/javascripts/prototype.js +4320 -0
  152. data/public/javascripts/scriptaculous.js +47 -0
  153. data/public/javascripts/slider.js +275 -0
  154. data/public/javascripts/tabs.js +147 -0
  155. data/public/javascripts/thickbox.js +363 -0
  156. data/public/javascripts/tooltips.js +173 -0
  157. data/public/javascripts/wymeditor/boot_wym.js +163 -0
  158. data/public/javascripts/wymeditor/jquery.refinery.wymeditor.js +4986 -0
  159. data/public/javascripts/wymeditor/lang/ca.js +45 -0
  160. data/public/javascripts/wymeditor/lang/cs.js +45 -0
  161. data/public/javascripts/wymeditor/lang/de.js +45 -0
  162. data/public/javascripts/wymeditor/lang/en.js +48 -0
  163. data/public/javascripts/wymeditor/lang/es.js +45 -0
  164. data/public/javascripts/wymeditor/lang/fa.js +46 -0
  165. data/public/javascripts/wymeditor/lang/fr.js +45 -0
  166. data/public/javascripts/wymeditor/lang/he.js +45 -0
  167. data/public/javascripts/wymeditor/lang/hu.js +45 -0
  168. data/public/javascripts/wymeditor/lang/it.js +45 -0
  169. data/public/javascripts/wymeditor/lang/nb.js +45 -0
  170. data/public/javascripts/wymeditor/lang/nl.js +45 -0
  171. data/public/javascripts/wymeditor/lang/nn.js +45 -0
  172. data/public/javascripts/wymeditor/lang/pl.js +45 -0
  173. data/public/javascripts/wymeditor/lang/pt-br.js +45 -0
  174. data/public/javascripts/wymeditor/lang/pt.js +45 -0
  175. data/public/javascripts/wymeditor/lang/ru.js +45 -0
  176. data/public/javascripts/wymeditor/lang/sv.js +45 -0
  177. data/public/javascripts/wymeditor/lang/tr.js +45 -0
  178. data/public/javascripts/wymeditor/lang/zh_cn.js +47 -0
  179. data/public/javascripts/wymeditor/skins/refinery/skin.js +40 -0
  180. data/public/robots.txt +2 -0
  181. data/public/stylesheets/application.css +0 -0
  182. data/public/stylesheets/application.css.example +76 -0
  183. data/public/stylesheets/formatting.css +0 -0
  184. data/public/stylesheets/formatting.css.example +86 -0
  185. data/public/stylesheets/home.css +0 -0
  186. data/public/stylesheets/home.css.example +27 -0
  187. data/public/stylesheets/ie6.css +0 -0
  188. data/public/stylesheets/ie7.css +0 -0
  189. data/public/stylesheets/lightbox.css +27 -0
  190. data/public/stylesheets/overlabel.css +21 -0
  191. data/public/stylesheets/refinery.css +1036 -0
  192. data/public/stylesheets/theme.css +36 -0
  193. data/public/stylesheets/thickbox.css +165 -0
  194. data/public/stylesheets/tooltips.css +38 -0
  195. data/public/stylesheets/wymeditor/skins/refinery/skin.css +211 -0
  196. data/public/stylesheets/wymeditor/skins/refinery/wymiframe.css +92 -0
  197. data/public/wymeditor/GPL-license.txt +278 -0
  198. data/public/wymeditor/MIT-license.txt +20 -0
  199. data/public/wymeditor/README +35 -0
  200. data/vendor/plugins/acts_as_indexed/CHANGELOG +74 -0
  201. data/vendor/plugins/acts_as_indexed/MIT-LICENSE +20 -0
  202. data/vendor/plugins/acts_as_indexed/README.rdoc +114 -0
  203. data/vendor/plugins/acts_as_indexed/Rakefile +35 -0
  204. data/vendor/plugins/acts_as_indexed/init.rb +2 -0
  205. data/vendor/plugins/acts_as_indexed/lib/acts_as_indexed.rb +224 -0
  206. data/vendor/plugins/acts_as_indexed/lib/search_atom.rb +107 -0
  207. data/vendor/plugins/acts_as_indexed/lib/search_index.rb +329 -0
  208. data/vendor/plugins/acts_as_indexed/lib/will_paginate_search.rb +29 -0
  209. data/vendor/plugins/acts_as_indexed/test/abstract_unit.rb +47 -0
  210. data/vendor/plugins/acts_as_indexed/test/acts_as_indexed_test.rb +102 -0
  211. data/vendor/plugins/acts_as_indexed/test/database.yml +10 -0
  212. data/vendor/plugins/acts_as_indexed/test/fixtures/post.rb +5 -0
  213. data/vendor/plugins/acts_as_indexed/test/fixtures/posts.yml +31 -0
  214. data/vendor/plugins/acts_as_indexed/test/schema.rb +6 -0
  215. data/vendor/plugins/acts_as_tree/README +26 -0
  216. data/vendor/plugins/acts_as_tree/Rakefile +22 -0
  217. data/vendor/plugins/acts_as_tree/init.rb +1 -0
  218. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +141 -0
  219. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  220. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
  221. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  222. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  223. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  224. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  225. data/vendor/plugins/attachment_fu/CHANGELOG +35 -0
  226. data/vendor/plugins/attachment_fu/LICENSE +20 -0
  227. data/vendor/plugins/attachment_fu/README +193 -0
  228. data/vendor/plugins/attachment_fu/Rakefile +22 -0
  229. data/vendor/plugins/attachment_fu/amazon_s3.yml.tpl +17 -0
  230. data/vendor/plugins/attachment_fu/init.rb +16 -0
  231. data/vendor/plugins/attachment_fu/install.rb +7 -0
  232. data/vendor/plugins/attachment_fu/lib/geometry.rb +93 -0
  233. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb +514 -0
  234. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/cloud_file_backend.rb +211 -0
  235. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/db_file_backend.rb +39 -0
  236. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/file_system_backend.rb +126 -0
  237. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/s3_backend.rb +394 -0
  238. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/core_image_processor.rb +59 -0
  239. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/gd2_processor.rb +54 -0
  240. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/image_science_processor.rb +61 -0
  241. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/mini_magick_processor.rb +132 -0
  242. data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/rmagick_processor.rb +57 -0
  243. data/vendor/plugins/attachment_fu/rackspace_cloudfiles.yml.tpl +14 -0
  244. data/vendor/plugins/attachment_fu/test/backends/db_file_test.rb +16 -0
  245. data/vendor/plugins/attachment_fu/test/backends/file_system_test.rb +143 -0
  246. data/vendor/plugins/attachment_fu/test/backends/remote/cloudfiles_test.rb +102 -0
  247. data/vendor/plugins/attachment_fu/test/backends/remote/s3_test.rb +119 -0
  248. data/vendor/plugins/attachment_fu/test/base_attachment_tests.rb +77 -0
  249. data/vendor/plugins/attachment_fu/test/basic_test.rb +70 -0
  250. data/vendor/plugins/attachment_fu/test/database.yml +18 -0
  251. data/vendor/plugins/attachment_fu/test/extra_attachment_test.rb +67 -0
  252. data/vendor/plugins/attachment_fu/test/fixtures/attachment.rb +226 -0
  253. data/vendor/plugins/attachment_fu/test/fixtures/files/fake/rails.png +0 -0
  254. data/vendor/plugins/attachment_fu/test/fixtures/files/foo.txt +1 -0
  255. data/vendor/plugins/attachment_fu/test/fixtures/files/rails.png +0 -0
  256. data/vendor/plugins/attachment_fu/test/geometry_test.rb +108 -0
  257. data/vendor/plugins/attachment_fu/test/processors/core_image_test.rb +37 -0
  258. data/vendor/plugins/attachment_fu/test/processors/gd2_test.rb +31 -0
  259. data/vendor/plugins/attachment_fu/test/processors/image_science_test.rb +31 -0
  260. data/vendor/plugins/attachment_fu/test/processors/mini_magick_test.rb +103 -0
  261. data/vendor/plugins/attachment_fu/test/processors/rmagick_test.rb +255 -0
  262. data/vendor/plugins/attachment_fu/test/schema.rb +134 -0
  263. data/vendor/plugins/attachment_fu/test/test_helper.rb +150 -0
  264. data/vendor/plugins/attachment_fu/test/validation_test.rb +55 -0
  265. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/color.rb +27 -0
  266. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/effects.rb +31 -0
  267. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/perspective.rb +25 -0
  268. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/quality.rb +25 -0
  269. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/scale.rb +47 -0
  270. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/watermark.rb +32 -0
  271. data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/processor.rb +123 -0
  272. data/vendor/plugins/authentication/README +0 -0
  273. data/vendor/plugins/authentication/Rakefile +0 -0
  274. data/vendor/plugins/authentication/app/controllers/admin/users_controller.rb +93 -0
  275. data/vendor/plugins/authentication/app/controllers/sessions_controller.rb +30 -0
  276. data/vendor/plugins/authentication/app/controllers/users_controller.rb +86 -0
  277. data/vendor/plugins/authentication/app/helpers/sessions_helper.rb +2 -0
  278. data/vendor/plugins/authentication/app/helpers/users_helper.rb +2 -0
  279. data/vendor/plugins/authentication/app/models/user.rb +146 -0
  280. data/vendor/plugins/authentication/app/models/user_mailer.rb +25 -0
  281. data/vendor/plugins/authentication/app/models/user_observer.rb +11 -0
  282. data/vendor/plugins/authentication/app/models/user_plugin.rb +5 -0
  283. data/vendor/plugins/authentication/app/views/admin/users/_form.html.erb +42 -0
  284. data/vendor/plugins/authentication/app/views/admin/users/edit.html.erb +1 -0
  285. data/vendor/plugins/authentication/app/views/admin/users/index.html.erb +41 -0
  286. data/vendor/plugins/authentication/app/views/admin/users/new.html.erb +1 -0
  287. data/vendor/plugins/authentication/app/views/sessions/new.html.erb +21 -0
  288. data/vendor/plugins/authentication/app/views/user_mailer/activation.html.erb +3 -0
  289. data/vendor/plugins/authentication/app/views/user_mailer/signup_notification.html.erb +8 -0
  290. data/vendor/plugins/authentication/app/views/users/new.html.erb +28 -0
  291. data/vendor/plugins/authentication/config/routes.rb +10 -0
  292. data/vendor/plugins/authentication/init.rb +13 -0
  293. data/vendor/plugins/authentication/lib/authenticated_system.rb +115 -0
  294. data/vendor/plugins/authentication/lib/authenticated_test_helper.rb +10 -0
  295. data/vendor/plugins/authentication/test/fixtures/users.yml +19 -0
  296. data/vendor/plugins/authentication/test/functional/admin/base_controller_test.rb +8 -0
  297. data/vendor/plugins/authentication/test/functional/admin/dashboard_controller_test.rb +8 -0
  298. data/vendor/plugins/authentication/test/functional/admin/pages_controller_test.rb +8 -0
  299. data/vendor/plugins/authentication/test/functional/sessions_controller_test.rb +85 -0
  300. data/vendor/plugins/authentication/test/functional/users_controller_test.rb +99 -0
  301. data/vendor/plugins/authentication/test/test_helper.rb +38 -0
  302. data/vendor/plugins/authentication/test/unit/user_mailer_test.rb +31 -0
  303. data/vendor/plugins/authentication/test/unit/user_test.rb +164 -0
  304. data/vendor/plugins/dashboard/app/controllers/admin/dashboard_controller.rb +16 -0
  305. data/vendor/plugins/dashboard/app/helpers/admin/dashboard_helper.rb +19 -0
  306. data/vendor/plugins/dashboard/app/views/admin/dashboard/_recent_activity.html.erb +14 -0
  307. data/vendor/plugins/dashboard/app/views/admin/dashboard/index.html.erb +31 -0
  308. data/vendor/plugins/dashboard/config/routes.rb +5 -0
  309. data/vendor/plugins/dashboard/init.rb +7 -0
  310. data/vendor/plugins/images/app/controllers/admin/images_controller.rb +72 -0
  311. data/vendor/plugins/images/app/helpers/admin/images_helper.rb +17 -0
  312. data/vendor/plugins/images/app/models/image.rb +51 -0
  313. data/vendor/plugins/images/app/views/admin/images/_form.html.erb +36 -0
  314. data/vendor/plugins/images/app/views/admin/images/_grid_view.html.erb +17 -0
  315. data/vendor/plugins/images/app/views/admin/images/_list_view.html.erb +21 -0
  316. data/vendor/plugins/images/app/views/admin/images/edit.html.erb +1 -0
  317. data/vendor/plugins/images/app/views/admin/images/index.html.erb +43 -0
  318. data/vendor/plugins/images/app/views/admin/images/insert.html.erb +115 -0
  319. data/vendor/plugins/images/app/views/admin/images/new.html.erb +1 -0
  320. data/vendor/plugins/images/config/routes.rb +5 -0
  321. data/vendor/plugins/images/init.rb +8 -0
  322. data/vendor/plugins/images/lib/tasks/images.rake +28 -0
  323. data/vendor/plugins/inquiries/app/controllers/admin/inquiries_controller.rb +29 -0
  324. data/vendor/plugins/inquiries/app/controllers/admin/inquiry_settings_controller.rb +16 -0
  325. data/vendor/plugins/inquiries/app/controllers/inquiries_controller.rb +41 -0
  326. data/vendor/plugins/inquiries/app/helpers/inquiries_helper.rb +13 -0
  327. data/vendor/plugins/inquiries/app/models/inquiry.rb +18 -0
  328. data/vendor/plugins/inquiries/app/models/inquiry_mailer.rb +19 -0
  329. data/vendor/plugins/inquiries/app/models/inquiry_setting.rb +11 -0
  330. data/vendor/plugins/inquiries/app/views/admin/inquiries/_inquiry.html.erb +27 -0
  331. data/vendor/plugins/inquiries/app/views/admin/inquiries/index.html.erb +44 -0
  332. data/vendor/plugins/inquiries/app/views/admin/inquiries/show.html.erb +62 -0
  333. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/_confirmation_email_form.html.erb +50 -0
  334. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/_notification_recipients_form.html.erb +22 -0
  335. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/edit.html.erb +5 -0
  336. data/vendor/plugins/inquiries/app/views/admin/inquiry_settings/index.html.erb +32 -0
  337. data/vendor/plugins/inquiries/app/views/inquiries/new.html.erb +33 -0
  338. data/vendor/plugins/inquiries/app/views/inquiries/thank_you.html.erb +9 -0
  339. data/vendor/plugins/inquiries/app/views/inquiry_mailer/confirmation.html.erb +1 -0
  340. data/vendor/plugins/inquiries/app/views/inquiry_mailer/notification.html.erb +18 -0
  341. data/vendor/plugins/inquiries/config/routes.rb +8 -0
  342. data/vendor/plugins/inquiries/init.rb +11 -0
  343. data/vendor/plugins/news/app/controllers/admin/news_items_controller.rb +5 -0
  344. data/vendor/plugins/news/app/controllers/news_items_controller.rb +20 -0
  345. data/vendor/plugins/news/app/models/news_item.rb +26 -0
  346. data/vendor/plugins/news/app/views/admin/news_items/_form.html.erb +33 -0
  347. data/vendor/plugins/news/app/views/admin/news_items/_news_item.html.erb +15 -0
  348. data/vendor/plugins/news/app/views/admin/news_items/edit.html.erb +1 -0
  349. data/vendor/plugins/news/app/views/admin/news_items/index.html.erb +36 -0
  350. data/vendor/plugins/news/app/views/admin/news_items/new.html.erb +1 -0
  351. data/vendor/plugins/news/app/views/news_items/_recent_posts.html.erb +8 -0
  352. data/vendor/plugins/news/app/views/news_items/index.html.erb +23 -0
  353. data/vendor/plugins/news/app/views/news_items/show.html.erb +18 -0
  354. data/vendor/plugins/news/config/routes.rb +7 -0
  355. data/vendor/plugins/news/init.rb +7 -0
  356. data/vendor/plugins/pages/app/controllers/admin/page_dialogs_controller.rb +48 -0
  357. data/vendor/plugins/pages/app/controllers/admin/page_parts_controller.rb +35 -0
  358. data/vendor/plugins/pages/app/controllers/admin/pages_controller.rb +12 -0
  359. data/vendor/plugins/pages/app/controllers/pages_controller.rb +20 -0
  360. data/vendor/plugins/pages/app/helpers/pages_helper.rb +2 -0
  361. data/vendor/plugins/pages/app/models/page.rb +97 -0
  362. data/vendor/plugins/pages/app/models/page_part.rb +17 -0
  363. data/vendor/plugins/pages/app/views/admin/page_dialogs/_page_link.html.erb +6 -0
  364. data/vendor/plugins/pages/app/views/admin/page_dialogs/link_to.html.erb +253 -0
  365. data/vendor/plugins/pages/app/views/admin/page_parts/new.html.erb +11 -0
  366. data/vendor/plugins/pages/app/views/admin/pages/_form.html.erb +179 -0
  367. data/vendor/plugins/pages/app/views/admin/pages/_list.html.erb +29 -0
  368. data/vendor/plugins/pages/app/views/admin/pages/_sortable_list.html.erb +4 -0
  369. data/vendor/plugins/pages/app/views/admin/pages/edit.html.erb +1 -0
  370. data/vendor/plugins/pages/app/views/admin/pages/index.html.erb +42 -0
  371. data/vendor/plugins/pages/app/views/admin/pages/new.html.erb +1 -0
  372. data/vendor/plugins/pages/app/views/pages/home.html.erb +9 -0
  373. data/vendor/plugins/pages/app/views/pages/show.html.erb +10 -0
  374. data/vendor/plugins/pages/config/routes.rb +12 -0
  375. data/vendor/plugins/pages/init.rb +8 -0
  376. data/vendor/plugins/refinery/app/controllers/admin/base_controller.rb +37 -0
  377. data/vendor/plugins/refinery/app/controllers/admin/refinery_core_controller.rb +14 -0
  378. data/vendor/plugins/refinery/app/helpers/application_helper.rb +84 -0
  379. data/vendor/plugins/refinery/app/views/admin/_head.html.erb +27 -0
  380. data/vendor/plugins/refinery/app/views/admin/_menu.html.erb +85 -0
  381. data/vendor/plugins/refinery/app/views/layouts/admin.html.erb +25 -0
  382. data/vendor/plugins/refinery/app/views/layouts/application.html.erb +32 -0
  383. data/vendor/plugins/refinery/app/views/shared/_footer.html.erb +3 -0
  384. data/vendor/plugins/refinery/app/views/shared/_google_analytics.html.erb +12 -0
  385. data/vendor/plugins/refinery/app/views/shared/_ie6check.html.erb +11 -0
  386. data/vendor/plugins/refinery/app/views/shared/_menu.html.erb +16 -0
  387. data/vendor/plugins/refinery/app/views/shared/_menu_branch.html.erb +28 -0
  388. data/vendor/plugins/refinery/app/views/shared/_message.html.erb +10 -0
  389. data/vendor/plugins/refinery/app/views/shared/_submenu.html.erb +4 -0
  390. data/vendor/plugins/refinery/app/views/shared/_submenu_branch.html.erb +10 -0
  391. data/vendor/plugins/refinery/app/views/shared/admin/_make_sortable.html.erb +71 -0
  392. data/vendor/plugins/refinery/app/views/shared/admin/_search.html.erb +5 -0
  393. data/vendor/plugins/refinery/app/views/shared/admin/_sortable_list.html.erb +10 -0
  394. data/vendor/plugins/refinery/app/views/welcome.html.erb +13 -0
  395. data/vendor/plugins/refinery/app/views/wymiframe.html.erb +8 -0
  396. data/vendor/plugins/refinery/config/routes.rb +10 -0
  397. data/vendor/plugins/refinery/init.rb +9 -0
  398. data/vendor/plugins/refinery/lib/crud.rb +134 -0
  399. data/vendor/plugins/refinery/lib/generators/refinery/README +29 -0
  400. data/vendor/plugins/refinery/lib/generators/refinery/Rakefile +12 -0
  401. data/vendor/plugins/refinery/lib/generators/refinery/USAGE +2 -0
  402. data/vendor/plugins/refinery/lib/generators/refinery/install.rb +2 -0
  403. data/vendor/plugins/refinery/lib/generators/refinery/refinery_generator.rb +65 -0
  404. data/vendor/plugins/refinery/lib/generators/refinery/templates/config/routes.rb +7 -0
  405. data/vendor/plugins/refinery/lib/generators/refinery/templates/controller.rb +5 -0
  406. data/vendor/plugins/refinery/lib/generators/refinery/templates/init.rb +7 -0
  407. data/vendor/plugins/refinery/lib/generators/refinery/templates/migration.rb +36 -0
  408. data/vendor/plugins/refinery/lib/generators/refinery/templates/model.rb +8 -0
  409. data/vendor/plugins/refinery/lib/generators/refinery/templates/public_controller.rb +20 -0
  410. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_form.html.erb +18 -0
  411. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_singular_name.html.erb +15 -0
  412. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_sortable_list.html.erb +2 -0
  413. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/edit.html.erb +1 -0
  414. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/index.html.erb +45 -0
  415. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/new.html.erb +1 -0
  416. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/index.html.erb +15 -0
  417. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/show.html.erb +23 -0
  418. data/vendor/plugins/refinery/lib/refinery.rb +15 -0
  419. data/vendor/plugins/refinery/lib/refinery/activity.rb +16 -0
  420. data/vendor/plugins/refinery/lib/refinery/application_controller.rb +53 -0
  421. data/vendor/plugins/refinery/lib/refinery/form_helpers.rb +28 -0
  422. data/vendor/plugins/refinery/lib/refinery/initializer.rb +28 -0
  423. data/vendor/plugins/refinery/lib/refinery/link_renderer.rb +45 -0
  424. data/vendor/plugins/refinery/lib/refinery/plugin.rb +47 -0
  425. data/vendor/plugins/refinery/lib/refinery/plugins.rb +53 -0
  426. data/vendor/plugins/refinery/lib/tasks/refinery.rake +28 -0
  427. data/vendor/plugins/refinery_dialogs/app/controllers/admin/dialogs_controller.rb +24 -0
  428. data/vendor/plugins/refinery_dialogs/app/views/admin/dialogs/show.html.erb +20 -0
  429. data/vendor/plugins/refinery_dialogs/app/views/layouts/admin_dialog.html.erb +31 -0
  430. data/vendor/plugins/refinery_dialogs/config/routes.rb +5 -0
  431. data/vendor/plugins/refinery_dialogs/init.rb +8 -0
  432. data/vendor/plugins/refinery_settings/app/controllers/admin/refinery_settings_controller.rb +5 -0
  433. data/vendor/plugins/refinery_settings/app/models/refinery_setting.rb +62 -0
  434. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/_form.html.erb +21 -0
  435. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/_make_sortable.html.erb +7 -0
  436. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/_refinery_setting.html.erb +13 -0
  437. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/edit.html.erb +4 -0
  438. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/index.html.erb +33 -0
  439. data/vendor/plugins/refinery_settings/app/views/admin/refinery_settings/new.html.erb +1 -0
  440. data/vendor/plugins/refinery_settings/config/routes.rb +5 -0
  441. data/vendor/plugins/refinery_settings/init.rb +9 -0
  442. data/vendor/plugins/resources/app/controllers/admin/resources_controller.rb +25 -0
  443. data/vendor/plugins/resources/app/models/resource.rb +36 -0
  444. data/vendor/plugins/resources/app/views/admin/resources/_form.html.erb +18 -0
  445. data/vendor/plugins/resources/app/views/admin/resources/_resource.html.erb +16 -0
  446. data/vendor/plugins/resources/app/views/admin/resources/edit.html.erb +1 -0
  447. data/vendor/plugins/resources/app/views/admin/resources/index.html.erb +33 -0
  448. data/vendor/plugins/resources/app/views/admin/resources/new.html.erb +1 -0
  449. data/vendor/plugins/resources/config/routes.rb +7 -0
  450. data/vendor/plugins/resources/init.rb +7 -0
  451. metadata +567 -0
@@ -0,0 +1,28 @@
1
+ <%= error_messages_for :user %>
2
+ <p>
3
+ Fill out the form below with your details so we can get you started.
4
+ </p>
5
+ <% form_for :user, :url => users_path do |f| -%>
6
+ <div class='field'>
7
+ <%= f.label :login %>
8
+ <%= f.text_field :login %>
9
+ </div>
10
+ <div class='field'>
11
+ <%= f.label :email %>
12
+ <%= f.text_field :email %>
13
+ </div>
14
+ <div class='field'>
15
+ <%= f.label :password %>
16
+ <%= f.password_field :password %>
17
+ </div>
18
+ <div class='field'>
19
+ <%= f.label :password_confirmation %>
20
+ <%= f.password_field :password_confirmation %>
21
+ </div>
22
+ <% if just_installed? %>
23
+ <% Refinery::Plugins.registered.titles.each do |plugin| %>
24
+ <%= hidden_field_tag 'user[plugins][]', plugin, :id => "plugins_#{plugin.downcase.gsub(" ", "_")}" %>
25
+ <% end %>
26
+ <% end %>
27
+ <p><%= submit_tag 'Sign up' %></p>
28
+ <% end -%>
@@ -0,0 +1,10 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+ map.resources :users
3
+ map.resource :session
4
+ map.namespace(:admin) do |admin|
5
+ admin.resources :users
6
+ end
7
+
8
+ map.login '/login', :controller => 'sessions', :action => 'new'
9
+ map.logout '/logout', :controller => 'sessions', :action => 'destroy'
10
+ end
@@ -0,0 +1,13 @@
1
+ Refinery::Plugin.register do |plugin|
2
+ plugin.title = "Users"
3
+ plugin.description = "Manage users"
4
+ plugin.version = 1.0
5
+ plugin.menu_match = /admin\/(users)/
6
+ plugin.activity = {
7
+ :class => User,
8
+ :url_prefix => "edit_",
9
+ :title => "login",
10
+ :created_image => "user_add.png",
11
+ :updated_image => "user_edit.png"
12
+ }
13
+ end
@@ -0,0 +1,115 @@
1
+ module AuthenticatedSystem
2
+ protected
3
+ # Returns true or false if the user is logged in.
4
+ # Preloads @current_user with the user model if they're logged in.
5
+ def logged_in?
6
+ !!current_user
7
+ end
8
+
9
+ # Accesses the current user from the session.
10
+ # Future calls avoid the database because nil is not equal to false.
11
+ def current_user
12
+ @current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_user == false
13
+ end
14
+
15
+ # Store the given user id in the session.
16
+ def current_user=(new_user)
17
+ session[:user_id] = new_user ? new_user.id : nil
18
+ @current_user = new_user || false
19
+ end
20
+
21
+ # Check if the user is authorized
22
+ #
23
+ # Override this method in your controllers if you want to restrict access
24
+ # to only a few actions or if you want to check if the user
25
+ # has the correct rights.
26
+ #
27
+ # Example:
28
+ #
29
+ # # only allow nonbobs
30
+ # def authorized?
31
+ # current_user.login != "bob"
32
+ # end
33
+ def authorized?
34
+ logged_in?
35
+ end
36
+
37
+ # Filter method to enforce a login requirement.
38
+ #
39
+ # To require logins for all actions, use this in your controllers:
40
+ #
41
+ # before_filter :login_required
42
+ #
43
+ # To require logins for specific actions, use this in your controllers:
44
+ #
45
+ # before_filter :login_required, :only => [ :edit, :update ]
46
+ #
47
+ # To skip this in a subclassed controller:
48
+ #
49
+ # skip_before_filter :login_required
50
+ #
51
+ def login_required
52
+ authorized? || access_denied
53
+ end
54
+
55
+ # Redirect as appropriate when an access request fails.
56
+ #
57
+ # The default action is to redirect to the login screen.
58
+ #
59
+ # Override this method in your controllers if you want to have special
60
+ # behavior in case the user is not authorized
61
+ # to access the requested action. For example, a popup window might
62
+ # simply close itself.
63
+ def access_denied
64
+ respond_to do |format|
65
+ format.html do
66
+ store_location
67
+ redirect_to new_session_path
68
+ end
69
+ format.any do
70
+ request_http_basic_authentication 'Web Password'
71
+ end
72
+ end
73
+ end
74
+
75
+ # Store the URI of the current request in the session.
76
+ #
77
+ # We can return to this location by calling #redirect_back_or_default.
78
+ def store_location
79
+ session[:return_to] = request.request_uri
80
+ end
81
+
82
+ # Redirect to the URI stored by the most recent store_location call or
83
+ # to the passed default.
84
+ def redirect_back_or_default(default)
85
+ redirect_to(session[:return_to] || default)
86
+ session[:return_to] = nil
87
+ end
88
+
89
+ # Inclusion hook to make #current_user and #logged_in?
90
+ # available as ActionView helper methods.
91
+ def self.included(base)
92
+ base.send :helper_method, :current_user, :logged_in?
93
+ end
94
+
95
+ # Called from #current_user. First attempt to login by the user id stored in the session.
96
+ def login_from_session
97
+ self.current_user = User.find_by_id(session[:user_id]) if session[:user_id]
98
+ end
99
+
100
+ # Called from #current_user. Now, attempt to login by basic authentication information.
101
+ def login_from_basic_auth
102
+ authenticate_with_http_basic do |username, password|
103
+ self.current_user = User.authenticate(username, password)
104
+ end
105
+ end
106
+
107
+ # Called from #current_user. Finaly, attempt to login by an expiring token in the cookie.
108
+ def login_from_cookie
109
+ user = cookies[:auth_token] && User.find_by_remember_token(cookies[:auth_token])
110
+ if user && user.remember_token?
111
+ cookies[:auth_token] = { :value => user.remember_token, :expires => user.remember_token_expires_at }
112
+ self.current_user = user
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,10 @@
1
+ module AuthenticatedTestHelper
2
+ # Sets the current user in the session from the user fixtures.
3
+ def login_as(user)
4
+ @request.session[:user_id] = user ? users(user).id : nil
5
+ end
6
+
7
+ def authorize_as(user)
8
+ @request.env["HTTP_AUTHORIZATION"] = user ? ActionController::HttpAuthentication::Basic.encode_credentials(users(user).login, 'test') : nil
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ quentin:
2
+ id: 1
3
+ login: quentin
4
+ email: quentin@example.com
5
+ salt: 7e3041ebc2fc05a40c60028e2c4901a81035d3cd
6
+ crypted_password: 00742970dc9e6319f8019fd54864d3ea740f04b1 # test
7
+ created_at: <%= 5.days.ago.to_s :db %>
8
+ activation_code: 8f24789ae988411ccf33ab0c30fe9106fab32e9b
9
+ activated_at: <%= 5.days.ago.to_s :db %>
10
+ state: active
11
+ aaron:
12
+ id: 2
13
+ login: aaron
14
+ email: aaron@example.com
15
+ salt: 7e3041ebc2fc05a40c60028e2c4901a81035d3cd
16
+ crypted_password: 00742970dc9e6319f8019fd54864d3ea740f04b1 # test
17
+ created_at: <%= 1.days.ago.to_s :db %>
18
+ activation_code: 8f24789ae988411ccf33ab0c30fe9106fab32e9a
19
+ state: pending
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class Admin::BaseControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ def test_truth
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class Admin::DashboardControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ def test_truth
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class Admin::PagesControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ def test_truth
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,85 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'sessions_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class SessionsController; def rescue_action(e) raise e end; end
6
+
7
+ class SessionsControllerTest < Test::Unit::TestCase
8
+ # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead
9
+ # Then, you can remove it from this and the units test.
10
+ include AuthenticatedTestHelper
11
+
12
+ fixtures :users
13
+
14
+ def setup
15
+ @controller = SessionsController.new
16
+ @request = ActionController::TestRequest.new
17
+ @response = ActionController::TestResponse.new
18
+ end
19
+
20
+ def test_should_login_and_redirect
21
+ post :create, :login => 'quentin', :password => 'test'
22
+ assert session[:user_id]
23
+ assert_response :redirect
24
+ end
25
+
26
+ def test_should_fail_login_and_not_redirect
27
+ post :create, :login => 'quentin', :password => 'bad password'
28
+ assert_nil session[:user_id]
29
+ assert_response :success
30
+ end
31
+
32
+ def test_should_logout
33
+ login_as :quentin
34
+ get :destroy
35
+ assert_nil session[:user_id]
36
+ assert_response :redirect
37
+ end
38
+
39
+ def test_should_remember_me
40
+ post :create, :login => 'quentin', :password => 'test', :remember_me => "1"
41
+ assert_not_nil @response.cookies["auth_token"]
42
+ end
43
+
44
+ def test_should_not_remember_me
45
+ post :create, :login => 'quentin', :password => 'test', :remember_me => "0"
46
+ assert_nil @response.cookies["auth_token"]
47
+ end
48
+
49
+ def test_should_delete_token_on_logout
50
+ login_as :quentin
51
+ get :destroy
52
+ assert_equal @response.cookies["auth_token"], []
53
+ end
54
+
55
+ def test_should_login_with_cookie
56
+ users(:quentin).remember_me
57
+ @request.cookies["auth_token"] = cookie_for(:quentin)
58
+ get :new
59
+ assert @controller.send(:logged_in?)
60
+ end
61
+
62
+ def test_should_fail_expired_cookie_login
63
+ users(:quentin).remember_me
64
+ users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago
65
+ @request.cookies["auth_token"] = cookie_for(:quentin)
66
+ get :new
67
+ assert !@controller.send(:logged_in?)
68
+ end
69
+
70
+ def test_should_fail_cookie_login
71
+ users(:quentin).remember_me
72
+ @request.cookies["auth_token"] = auth_token('invalid_auth_token')
73
+ get :new
74
+ assert !@controller.send(:logged_in?)
75
+ end
76
+
77
+ protected
78
+ def auth_token(token)
79
+ CGI::Cookie.new('name' => 'auth_token', 'value' => token)
80
+ end
81
+
82
+ def cookie_for(user)
83
+ auth_token users(user).remember_token
84
+ end
85
+ end
@@ -0,0 +1,99 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'users_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class UsersController; def rescue_action(e) raise e end; end
6
+
7
+ class UsersControllerTest < Test::Unit::TestCase
8
+ # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead
9
+ # Then, you can remove it from this and the units test.
10
+ include AuthenticatedTestHelper
11
+
12
+ fixtures :users
13
+
14
+ def setup
15
+ @controller = UsersController.new
16
+ @request = ActionController::TestRequest.new
17
+ @response = ActionController::TestResponse.new
18
+ end
19
+
20
+ def test_should_allow_signup
21
+ assert_difference 'User.count' do
22
+ create_user
23
+ assert_response :redirect
24
+ end
25
+ end
26
+
27
+ def test_should_require_login_on_signup
28
+ assert_no_difference 'User.count' do
29
+ create_user(:login => nil)
30
+ assert assigns(:user).errors.on(:login)
31
+ assert_response :success
32
+ end
33
+ end
34
+
35
+ def test_should_require_password_on_signup
36
+ assert_no_difference 'User.count' do
37
+ create_user(:password => nil)
38
+ assert assigns(:user).errors.on(:password)
39
+ assert_response :success
40
+ end
41
+ end
42
+
43
+ def test_should_require_password_confirmation_on_signup
44
+ assert_no_difference 'User.count' do
45
+ create_user(:password_confirmation => nil)
46
+ assert assigns(:user).errors.on(:password_confirmation)
47
+ assert_response :success
48
+ end
49
+ end
50
+
51
+ def test_should_require_email_on_signup
52
+ assert_no_difference 'User.count' do
53
+ create_user(:email => nil)
54
+ assert assigns(:user).errors.on(:email)
55
+ assert_response :success
56
+ end
57
+ end
58
+
59
+ def test_should_sign_up_user_in_pending_state
60
+ create_user
61
+ assigns(:user).reload
62
+ assert assigns(:user).pending?
63
+ end
64
+
65
+
66
+ def test_should_sign_up_user_with_activation_code
67
+ create_user
68
+ assigns(:user).reload
69
+ assert_not_nil assigns(:user).activation_code
70
+ end
71
+
72
+ def test_should_activate_user
73
+ assert_nil User.authenticate('aaron', 'test')
74
+ get :activate, :activation_code => users(:aaron).activation_code
75
+ assert_redirected_to '/'
76
+ assert_not_nil flash[:notice]
77
+ assert_equal users(:aaron), User.authenticate('aaron', 'test')
78
+ end
79
+
80
+ def test_should_not_activate_user_without_key
81
+ get :activate
82
+ assert_nil flash[:notice]
83
+ rescue ActionController::RoutingError
84
+ # in the event your routes deny this, we'll just bow out gracefully.
85
+ end
86
+
87
+ def test_should_not_activate_user_with_blank_key
88
+ get :activate, :activation_code => ''
89
+ assert_nil flash[:notice]
90
+ rescue ActionController::RoutingError
91
+ # well played, sir
92
+ end
93
+
94
+ protected
95
+ def create_user(options = {})
96
+ post :create, :user => { :login => 'quire', :email => 'quire@example.com',
97
+ :password => 'quire', :password_confirmation => 'quire' }.merge(options)
98
+ end
99
+ end
@@ -0,0 +1,38 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
+ require 'test_help'
4
+
5
+ class Test::Unit::TestCase
6
+ # Transactional fixtures accelerate your tests by wrapping each test method
7
+ # in a transaction that's rolled back on completion. This ensures that the
8
+ # test database remains unchanged so your fixtures don't have to be reloaded
9
+ # between every test method. Fewer database queries means faster tests.
10
+ #
11
+ # Read Mike Clark's excellent walkthrough at
12
+ # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
13
+ #
14
+ # Every Active Record database supports transactions except MyISAM tables
15
+ # in MySQL. Turn off transactional fixtures in this case; however, if you
16
+ # don't care one way or the other, switching from MyISAM to InnoDB tables
17
+ # is recommended.
18
+ #
19
+ # The only drawback to using transactional fixtures is when you actually
20
+ # need to test transactions. Since your test is bracketed by a transaction,
21
+ # any transactions started in your code will be automatically rolled back.
22
+ self.use_transactional_fixtures = true
23
+
24
+ # Instantiated fixtures are slow, but give you @david where otherwise you
25
+ # would need people(:david). If you don't want to migrate your existing
26
+ # test cases which use the @david style and don't mind the speed hit (each
27
+ # instantiated fixtures translates to a database query per test method),
28
+ # then set this back to true.
29
+ self.use_instantiated_fixtures = false
30
+
31
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
32
+ #
33
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
34
+ # -- they do not yet inherit this setting
35
+ fixtures :all
36
+
37
+ # Add more helper methods to be used by all tests here...
38
+ end