community_engine 2.0.0.beta1

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 (737) hide show
  1. data/.gitignore +15 -0
  2. data/.gitmodules +0 -0
  3. data/.travis.yml +9 -0
  4. data/CHANGELOG +118 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE +30 -0
  7. data/README.markdown +188 -0
  8. data/Rakefile +54 -0
  9. data/UPGRADING.markdown +93 -0
  10. data/about.yml +7 -0
  11. data/app/assets/images/auth/facebook_32.png +0 -0
  12. data/app/assets/images/auth/facebook_64.png +0 -0
  13. data/app/assets/images/auth/google_32.png +0 -0
  14. data/app/assets/images/auth/google_64.png +0 -0
  15. data/app/assets/images/auth/linked_in_32.png +0 -0
  16. data/app/assets/images/auth/linked_in_64.png +0 -0
  17. data/app/assets/images/auth/open_id_32.png +0 -0
  18. data/app/assets/images/auth/remove.png +0 -0
  19. data/app/assets/images/auth/twitter_32.png +0 -0
  20. data/app/assets/images/auth/twitter_64.png +0 -0
  21. data/app/assets/images/bg_h6btn.gif +0 -0
  22. data/app/assets/images/bg_navbar.gif +0 -0
  23. data/app/assets/images/clearbits/bg_rounded.gif +0 -0
  24. data/app/assets/images/clearbits/comment.gif +0 -0
  25. data/app/assets/images/clearbits/lock.gif +0 -0
  26. data/app/assets/images/clearbits/smile.gif +0 -0
  27. data/app/assets/images/close.gif +0 -0
  28. data/app/assets/images/cropper/marqueeHoriz.gif +0 -0
  29. data/app/assets/images/cropper/marqueeVert.gif +0 -0
  30. data/app/assets/images/feed.png +0 -0
  31. data/app/assets/images/icon_missing_medium.gif +0 -0
  32. data/app/assets/images/icon_missing_thumb.gif +0 -0
  33. data/app/assets/images/icons/31.png +0 -0
  34. data/app/assets/images/icons/52.png +0 -0
  35. data/app/assets/images/icons/accept.png +0 -0
  36. data/app/assets/images/icons/activity_default.png +0 -0
  37. data/app/assets/images/icons/add.png +0 -0
  38. data/app/assets/images/icons/book.png +0 -0
  39. data/app/assets/images/icons/bullet_arrow_down.png +0 -0
  40. data/app/assets/images/icons/bullet_arrow_down_50.png +0 -0
  41. data/app/assets/images/icons/clipping.png +0 -0
  42. data/app/assets/images/icons/comment.png +0 -0
  43. data/app/assets/images/icons/comments.png +0 -0
  44. data/app/assets/images/icons/date.png +0 -0
  45. data/app/assets/images/icons/delete.png +0 -0
  46. data/app/assets/images/icons/email.png +0 -0
  47. data/app/assets/images/icons/email_edit.png +0 -0
  48. data/app/assets/images/icons/email_go.png +0 -0
  49. data/app/assets/images/icons/email_open.png +0 -0
  50. data/app/assets/images/icons/group_go.png +0 -0
  51. data/app/assets/images/icons/heart.png +0 -0
  52. data/app/assets/images/icons/heart_add.png +0 -0
  53. data/app/assets/images/icons/heart_off.png +0 -0
  54. data/app/assets/images/icons/ical.gif +0 -0
  55. data/app/assets/images/icons/page_white.png +0 -0
  56. data/app/assets/images/icons/page_white_magnify.png +0 -0
  57. data/app/assets/images/icons/picture.png +0 -0
  58. data/app/assets/images/icons/poll.png +0 -0
  59. data/app/assets/images/icons/post.png +0 -0
  60. data/app/assets/images/icons/printer.png +0 -0
  61. data/app/assets/images/icons/rss.png +0 -0
  62. data/app/assets/images/icons/slides.png +0 -0
  63. data/app/assets/images/icons/tag_blue.png +0 -0
  64. data/app/assets/images/icons/user.png +0 -0
  65. data/app/assets/images/icons/user_add.png +0 -0
  66. data/app/assets/images/icons/user_edit.png +0 -0
  67. data/app/assets/images/icons/user_go.png +0 -0
  68. data/app/assets/images/icons/vote.png +0 -0
  69. data/app/assets/images/icons/world.png +0 -0
  70. data/app/assets/images/icons/wrench.png +0 -0
  71. data/app/assets/images/logo.gif +0 -0
  72. data/app/assets/images/reply_background.png +0 -0
  73. data/app/assets/images/search.gif +0 -0
  74. data/app/assets/images/spinner.gif +0 -0
  75. data/app/assets/images/spinner_black.gif +0 -0
  76. data/app/assets/images/spinner_bounce.gif +0 -0
  77. data/app/assets/images/swf/choose.png +0 -0
  78. data/app/assets/images/swf/line_grapher.swf +0 -0
  79. data/app/assets/images/swf/swfupload.swf +0 -0
  80. data/app/assets/images/thumb.gif +0 -0
  81. data/app/assets/javascripts/builder.js +136 -0
  82. data/app/assets/javascripts/calendarview.js +839 -0
  83. data/app/assets/javascripts/community_engine.js +20 -0
  84. data/app/assets/javascripts/cropper.css +182 -0
  85. data/app/assets/javascripts/cropper.js +566 -0
  86. data/app/assets/javascripts/forum.js +73 -0
  87. data/app/assets/javascripts/lightbox.js +151 -0
  88. data/app/assets/javascripts/prototip-min.js +27 -0
  89. data/app/assets/javascripts/rails.js +202 -0
  90. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/css/advimage.css +84 -0
  91. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/editor_plugin.js +52 -0
  92. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/editor_plugin_src.js +45 -0
  93. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/image.htm +180 -0
  94. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/img/sample.gif +0 -0
  95. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/js/functions.js +508 -0
  96. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/langs/en.js +3 -0
  97. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/langs/en_dlg.js +43 -0
  98. data/app/assets/stylesheets/community_engine.css +6 -0
  99. data/app/assets/stylesheets/forum.css +605 -0
  100. data/app/assets/stylesheets/lightbox.css +38 -0
  101. data/app/assets/stylesheets/prototip.css +73 -0
  102. data/app/assets/stylesheets/reset-fonts-grids.css +8 -0
  103. data/app/assets/stylesheets/screen.css +977 -0
  104. data/app/controllers/activities_controller.rb +38 -0
  105. data/app/controllers/admin_controller.rb +80 -0
  106. data/app/controllers/ads_controller.rb +85 -0
  107. data/app/controllers/albums_controller.rb +106 -0
  108. data/app/controllers/authorizations_controller.rb +41 -0
  109. data/app/controllers/base_controller.rb +151 -0
  110. data/app/controllers/categories_controller.rb +118 -0
  111. data/app/controllers/clippings_controller.rb +192 -0
  112. data/app/controllers/comment_sweeper.rb +35 -0
  113. data/app/controllers/comments_controller.rb +179 -0
  114. data/app/controllers/event_sweeper.rb +24 -0
  115. data/app/controllers/events_controller.rb +173 -0
  116. data/app/controllers/favorite_sweeper.rb +29 -0
  117. data/app/controllers/favorites_controller.rb +36 -0
  118. data/app/controllers/forums_controller.rb +71 -0
  119. data/app/controllers/friendships_controller.rb +126 -0
  120. data/app/controllers/homepage_features_controller.rb +68 -0
  121. data/app/controllers/invitations_controller.rb +46 -0
  122. data/app/controllers/messages_controller.rb +95 -0
  123. data/app/controllers/metro_areas_controller.rb +68 -0
  124. data/app/controllers/moderators_controller.rb +26 -0
  125. data/app/controllers/monitorships_controller.rb +20 -0
  126. data/app/controllers/page_sweeper.rb +33 -0
  127. data/app/controllers/pages_controller.rb +70 -0
  128. data/app/controllers/password_resets_controller.rb +52 -0
  129. data/app/controllers/photo_manager_controller.rb +11 -0
  130. data/app/controllers/photos_controller.rb +189 -0
  131. data/app/controllers/post_sweeper.rb +36 -0
  132. data/app/controllers/posts_controller.rb +252 -0
  133. data/app/controllers/rsvps_controller.rb +77 -0
  134. data/app/controllers/sb_posts_controller.rb +149 -0
  135. data/app/controllers/sessions_controller.rb +34 -0
  136. data/app/controllers/sitemap_controller.rb +21 -0
  137. data/app/controllers/statistics_controller.rb +34 -0
  138. data/app/controllers/taggable_sweeper.rb +38 -0
  139. data/app/controllers/tags_controller.rb +104 -0
  140. data/app/controllers/theme_controller.rb +60 -0
  141. data/app/controllers/topics_controller.rb +122 -0
  142. data/app/controllers/users_controller.rb +426 -0
  143. data/app/controllers/vote_sweeper.rb +16 -0
  144. data/app/controllers/votes_controller.rb +24 -0
  145. data/app/helpers/base_helper.rb +290 -0
  146. data/app/helpers/forums_helper.rb +31 -0
  147. data/app/helpers/friendships_helper.rb +16 -0
  148. data/app/helpers/monitorships_helper.rb +2 -0
  149. data/app/helpers/posts_helper.rb +17 -0
  150. data/app/helpers/sitemap_helper.rb +7 -0
  151. data/app/helpers/users_helper.rb +6 -0
  152. data/app/models/ad.rb +43 -0
  153. data/app/models/album.rb +12 -0
  154. data/app/models/asset.rb +3 -0
  155. data/app/models/authorization.rb +60 -0
  156. data/app/models/category.rb +20 -0
  157. data/app/models/choice.rb +13 -0
  158. data/app/models/clipping.rb +78 -0
  159. data/app/models/clipping_image.rb +9 -0
  160. data/app/models/comment.rb +122 -0
  161. data/app/models/country.rb +24 -0
  162. data/app/models/event.rb +61 -0
  163. data/app/models/facebook_profile.rb +32 -0
  164. data/app/models/facebook_publisher.rb +45 -0
  165. data/app/models/favorite.rb +47 -0
  166. data/app/models/forum.rb +22 -0
  167. data/app/models/friendship.rb +64 -0
  168. data/app/models/friendship_status.rb +3 -0
  169. data/app/models/homepage_feature.rb +15 -0
  170. data/app/models/invitation.rb +36 -0
  171. data/app/models/message.rb +84 -0
  172. data/app/models/message_thread.rb +33 -0
  173. data/app/models/metro_area.rb +16 -0
  174. data/app/models/moderatorship.rb +8 -0
  175. data/app/models/monitorship.rb +6 -0
  176. data/app/models/page.rb +8 -0
  177. data/app/models/photo.rb +83 -0
  178. data/app/models/poll.rb +39 -0
  179. data/app/models/post.rb +201 -0
  180. data/app/models/role.rb +5 -0
  181. data/app/models/rsvp.rb +24 -0
  182. data/app/models/sb_post.rb +67 -0
  183. data/app/models/state.rb +4 -0
  184. data/app/models/topic.rb +72 -0
  185. data/app/models/twitter_profile.rb +20 -0
  186. data/app/models/user.rb +483 -0
  187. data/app/models/user_notifier.rb +140 -0
  188. data/app/models/user_session.rb +14 -0
  189. data/app/models/vote.rb +19 -0
  190. data/app/views/activities/_activity.html.haml +56 -0
  191. data/app/views/activities/_icon.html.haml +14 -0
  192. data/app/views/activities/_unhandled_item.html.haml +1 -0
  193. data/app/views/activities/destroy.js.rjs +1 -0
  194. data/app/views/activities/index.html.haml +16 -0
  195. data/app/views/activities/network.html.haml +14 -0
  196. data/app/views/admin/comments.html.haml +71 -0
  197. data/app/views/admin/events.html.haml +33 -0
  198. data/app/views/admin/messages.html.haml +4 -0
  199. data/app/views/admin/users.html.haml +69 -0
  200. data/app/views/ads/edit.html.haml +46 -0
  201. data/app/views/ads/index.html.haml +43 -0
  202. data/app/views/ads/new.html.haml +44 -0
  203. data/app/views/ads/show.html.haml +36 -0
  204. data/app/views/albums/_form.html.haml +14 -0
  205. data/app/views/albums/edit.html.haml +16 -0
  206. data/app/views/albums/new.html.haml +15 -0
  207. data/app/views/albums/show.html.haml +32 -0
  208. data/app/views/base/_homepage_banner_message.html.haml +19 -0
  209. data/app/views/base/advertise.html.haml +8 -0
  210. data/app/views/base/plaxo.html.haml +5 -0
  211. data/app/views/base/site_index.html.haml +35 -0
  212. data/app/views/categories/_tips.html.haml +11 -0
  213. data/app/views/categories/edit.html.haml +34 -0
  214. data/app/views/categories/index.html.haml +30 -0
  215. data/app/views/categories/new.html.haml +9 -0
  216. data/app/views/categories/show.html.haml +45 -0
  217. data/app/views/clippings/_clipping.html.haml +18 -0
  218. data/app/views/clippings/_images.html.haml +3 -0
  219. data/app/views/clippings/_meta.html.haml +26 -0
  220. data/app/views/clippings/edit.html.haml +26 -0
  221. data/app/views/clippings/index.html.haml +35 -0
  222. data/app/views/clippings/load_images_from_uri.js.rjs +1 -0
  223. data/app/views/clippings/new.html.haml +29 -0
  224. data/app/views/clippings/new_clipping.html.haml +91 -0
  225. data/app/views/clippings/show.html.haml +56 -0
  226. data/app/views/clippings/site_index.html.haml +34 -0
  227. data/app/views/comments/_comment.html.haml +42 -0
  228. data/app/views/comments/_comment_form.html.haml +50 -0
  229. data/app/views/comments/_edit_form.html.haml +29 -0
  230. data/app/views/comments/create.js.rjs +20 -0
  231. data/app/views/comments/edit.js.rjs +7 -0
  232. data/app/views/comments/index.html.haml +23 -0
  233. data/app/views/comments/update.js.rjs +9 -0
  234. data/app/views/events/_event.html.haml +32 -0
  235. data/app/views/events/_subscribe.html.haml +7 -0
  236. data/app/views/events/edit.html.haml +34 -0
  237. data/app/views/events/index.html.haml +22 -0
  238. data/app/views/events/new.html.haml +32 -0
  239. data/app/views/events/show.html.haml +29 -0
  240. data/app/views/facebook/_fb_require.html.haml +11 -0
  241. data/app/views/favorites/_favorite.html.haml +5 -0
  242. data/app/views/favorites/create.js.rjs +17 -0
  243. data/app/views/favorites/destroy.js.rjs +14 -0
  244. data/app/views/favorites/index.html.haml +10 -0
  245. data/app/views/favorites/show.html.haml +13 -0
  246. data/app/views/forums/_form.html.haml +21 -0
  247. data/app/views/forums/edit.html.haml +11 -0
  248. data/app/views/forums/index.html.haml +70 -0
  249. data/app/views/forums/new.html.haml +9 -0
  250. data/app/views/forums/show.html.haml +85 -0
  251. data/app/views/friendships/_friendship.html.haml +16 -0
  252. data/app/views/friendships/_friendships.html.erb +14 -0
  253. data/app/views/friendships/accepted.html.haml +13 -0
  254. data/app/views/friendships/denied.html.haml +8 -0
  255. data/app/views/friendships/index.html.erb +3 -0
  256. data/app/views/friendships/index.xml.builder +29 -0
  257. data/app/views/friendships/pending.html.haml +7 -0
  258. data/app/views/friendships/show.html.haml +12 -0
  259. data/app/views/homepage_features/edit.html.haml +31 -0
  260. data/app/views/homepage_features/index.html.haml +30 -0
  261. data/app/views/homepage_features/new.html.haml +30 -0
  262. data/app/views/homepage_features/show.html.haml +29 -0
  263. data/app/views/invitations/index.html.erb +16 -0
  264. data/app/views/invitations/new.html.haml +33 -0
  265. data/app/views/layouts/application.html.haml +59 -0
  266. data/app/views/messages/_form.html.haml +24 -0
  267. data/app/views/messages/_inbox.html.haml +41 -0
  268. data/app/views/messages/_sent.html.haml +34 -0
  269. data/app/views/messages/_sidebar_nav.html.haml +9 -0
  270. data/app/views/messages/index.html.haml +8 -0
  271. data/app/views/messages/new.html.haml +10 -0
  272. data/app/views/messages/show.html.haml +40 -0
  273. data/app/views/metro_areas/edit.html.haml +16 -0
  274. data/app/views/metro_areas/index.html.haml +28 -0
  275. data/app/views/metro_areas/new.html.haml +16 -0
  276. data/app/views/metro_areas/show.html.haml +22 -0
  277. data/app/views/moderators/_toggle.html.erb +14 -0
  278. data/app/views/moderators/create.js.rjs +5 -0
  279. data/app/views/moderators/destroy.js.rjs +1 -0
  280. data/app/views/monitorships/create.js.rjs +4 -0
  281. data/app/views/monitorships/destroy.js.rjs +4 -0
  282. data/app/views/pages/_form.html.haml +25 -0
  283. data/app/views/pages/edit.html.haml +16 -0
  284. data/app/views/pages/edit.html.haml~ +16 -0
  285. data/app/views/pages/index.html.haml +34 -0
  286. data/app/views/pages/index.html.haml~ +28 -0
  287. data/app/views/pages/new.html.haml +14 -0
  288. data/app/views/pages/show.html.haml +8 -0
  289. data/app/views/pages/show.html.haml~ +6 -0
  290. data/app/views/password_resets/edit.html.haml +16 -0
  291. data/app/views/password_resets/new.html.haml +13 -0
  292. data/app/views/photo_manager/index.html.haml +49 -0
  293. data/app/views/photos/_manage_photos.html.haml +14 -0
  294. data/app/views/photos/_show_image_list.html.haml +24 -0
  295. data/app/views/photos/edit.html.haml +39 -0
  296. data/app/views/photos/index.html.haml +28 -0
  297. data/app/views/photos/index.xml.builder +9 -0
  298. data/app/views/photos/manage_photos.js.rjs +5 -0
  299. data/app/views/photos/new.html.haml +51 -0
  300. data/app/views/photos/recent.html.haml +8 -0
  301. data/app/views/photos/show.html.haml +53 -0
  302. data/app/views/polls/_edit.html.haml +15 -0
  303. data/app/views/polls/_excerpt.html.haml +4 -0
  304. data/app/views/polls/_new.html.haml +10 -0
  305. data/app/views/polls/_poll_ui.html.haml +37 -0
  306. data/app/views/polls/_polls_sidebar.html.haml +8 -0
  307. data/app/views/posts/_author_profile.html.haml +21 -0
  308. data/app/views/posts/_favorited_post.html.haml +10 -0
  309. data/app/views/posts/_post.html.haml +29 -0
  310. data/app/views/posts/_send_to_friend.html.erb +29 -0
  311. data/app/views/posts/_sidebar_post.html.haml +1 -0
  312. data/app/views/posts/edit.html.haml +48 -0
  313. data/app/views/posts/featured.html.haml +19 -0
  314. data/app/views/posts/index.html.haml +23 -0
  315. data/app/views/posts/manage.html.haml +66 -0
  316. data/app/views/posts/new.html.haml +67 -0
  317. data/app/views/posts/popular.html.haml +35 -0
  318. data/app/views/posts/preview.html.haml +27 -0
  319. data/app/views/posts/recent.html.haml +29 -0
  320. data/app/views/posts/show.html.haml +85 -0
  321. data/app/views/rsvps/edit.html.haml +9 -0
  322. data/app/views/rsvps/new.html.haml +9 -0
  323. data/app/views/sb_posts/_dummy_forum_post.html.erb +13 -0
  324. data/app/views/sb_posts/_edit.html.erb +31 -0
  325. data/app/views/sb_posts/_post.xml.builder +10 -0
  326. data/app/views/sb_posts/_reply_form.html.haml +37 -0
  327. data/app/views/sb_posts/_sb_post.html.haml +34 -0
  328. data/app/views/sb_posts/create.js.rjs +16 -0
  329. data/app/views/sb_posts/edit.html.erb +13 -0
  330. data/app/views/sb_posts/edit.js.rjs +6 -0
  331. data/app/views/sb_posts/index.html.haml +55 -0
  332. data/app/views/sb_posts/index.xml.builder +20 -0
  333. data/app/views/sb_posts/monitored.html.erb +55 -0
  334. data/app/views/sb_posts/monitored.xml.builder +15 -0
  335. data/app/views/sb_posts/update.js.rjs +5 -0
  336. data/app/views/sessions/new.html.haml +27 -0
  337. data/app/views/shared/_admin_nav.html.haml +19 -0
  338. data/app/views/shared/_bio_help.html.haml +4 -0
  339. data/app/views/shared/_box.html.haml +3 -0
  340. data/app/views/shared/_contact.html.haml +5 -0
  341. data/app/views/shared/_explore.html.haml +9 -0
  342. data/app/views/shared/_footer_content.html.haml +13 -0
  343. data/app/views/shared/_header.html.haml +42 -0
  344. data/app/views/shared/_location_chooser.html.haml +21 -0
  345. data/app/views/shared/_login_sidebar.html.haml +14 -0
  346. data/app/views/shared/_messages.html.haml +8 -0
  347. data/app/views/shared/_scripts_and_styles.html.haml +12 -0
  348. data/app/views/shared/_user_menu.html.haml +21 -0
  349. data/app/views/sitemap/index.html.haml +21 -0
  350. data/app/views/sitemap/index.xml.builder +28 -0
  351. data/app/views/statistics/activities.xml.builder +33 -0
  352. data/app/views/statistics/index.html.haml +56 -0
  353. data/app/views/tags/edit.html.haml +19 -0
  354. data/app/views/tags/index.html.haml +25 -0
  355. data/app/views/tags/manage.html.haml +37 -0
  356. data/app/views/tags/show.html.haml +65 -0
  357. data/app/views/topics/_form.html.haml +28 -0
  358. data/app/views/topics/_recent_topics_sidebar.haml +22 -0
  359. data/app/views/topics/edit.html.haml +10 -0
  360. data/app/views/topics/new.html.haml +21 -0
  361. data/app/views/topics/show.html.haml +107 -0
  362. data/app/views/topics/show.xml.builder +15 -0
  363. data/app/views/user_notifier/activation.text.erb +11 -0
  364. data/app/views/user_notifier/comment_notice.text.erb +8 -0
  365. data/app/views/user_notifier/follow_up_comment_notice.text.erb +15 -0
  366. data/app/views/user_notifier/follow_up_comment_notice_anonymous.text.erb +18 -0
  367. data/app/views/user_notifier/forgot_username.text.erb +8 -0
  368. data/app/views/user_notifier/friendship_accepted.text.erb +8 -0
  369. data/app/views/user_notifier/friendship_request.text.erb +8 -0
  370. data/app/views/user_notifier/message_notification.text.erb +14 -0
  371. data/app/views/user_notifier/new_forum_post_notice.text.erb +14 -0
  372. data/app/views/user_notifier/password_reset_instructions.text.erb +10 -0
  373. data/app/views/user_notifier/post_recommendation.text.erb +32 -0
  374. data/app/views/user_notifier/signup_invitation.text.erb +14 -0
  375. data/app/views/user_notifier/signup_notification.text.erb +16 -0
  376. data/app/views/users/_dashboard_nav.html.haml +40 -0
  377. data/app/views/users/_omniauth_connect.html.haml +21 -0
  378. data/app/views/users/_profile_completeness.html.haml +21 -0
  379. data/app/views/users/_profile_user_info_sidebar.html.haml +50 -0
  380. data/app/views/users/_search_options.html.haml +10 -0
  381. data/app/views/users/_sidebar_user.html.haml +8 -0
  382. data/app/views/users/_user.html.haml +31 -0
  383. data/app/views/users/crop_profile_photo.html.haml +40 -0
  384. data/app/views/users/dashboard.html.haml +44 -0
  385. data/app/views/users/edit.html.haml +75 -0
  386. data/app/views/users/edit_account.html.haml +64 -0
  387. data/app/views/users/forgot_username.html.haml +13 -0
  388. data/app/views/users/index.html.haml +18 -0
  389. data/app/views/users/invite.html.haml +31 -0
  390. data/app/views/users/new.html.haml +54 -0
  391. data/app/views/users/resend_activation.html.haml +13 -0
  392. data/app/views/users/show.html.haml +103 -0
  393. data/app/views/users/signup_completed.html.haml +8 -0
  394. data/app/views/users/statistics.html.haml +28 -0
  395. data/app/views/users/upload_profile_photo.html.haml +15 -0
  396. data/app/views/users/welcome_about.html.haml +66 -0
  397. data/app/views/users/welcome_invite.html.haml +33 -0
  398. data/app/views/users/welcome_photo.html.haml +29 -0
  399. data/app/views/votes/create.js.rjs +6 -0
  400. data/community_engine.gemspec +55 -0
  401. data/config/application_config.rb +162 -0
  402. data/config/initializers/cropper.rb +19 -0
  403. data/config/initializers/mce_options.rb +40 -0
  404. data/config/initializers/recaptcha_constants.rb +6 -0
  405. data/config/initializers/white_list.rb +7 -0
  406. data/config/locales/de-DE.yml +1271 -0
  407. data/config/locales/en.yml +1658 -0
  408. data/config/locales/es-AR.yml +758 -0
  409. data/config/locales/es-ES.yml +340 -0
  410. data/config/locales/es-MX.yml +672 -0
  411. data/config/locales/fr-FR.yml +1509 -0
  412. data/config/locales/ja-JP.yml +1321 -0
  413. data/config/locales/ru-RU.yml +97 -0
  414. data/config/locales/sr-CP.yml +89 -0
  415. data/config/locales/sv-SE.yml +1320 -0
  416. data/config/routes.rb +242 -0
  417. data/db/migrate/001_create_users.rb +26 -0
  418. data/db/migrate/002_add_activation_code_to_user.rb +11 -0
  419. data/db/migrate/003_create_photos.rb +22 -0
  420. data/db/migrate/004_add_tag_support.rb +21 -0
  421. data/db/migrate/005_create_friendships.rb +14 -0
  422. data/db/migrate/006_add_comments_tables.rb +18 -0
  423. data/db/migrate/007_create_friendship_statuses.rb +13 -0
  424. data/db/migrate/008_add_friendship_statuses.rb +14 -0
  425. data/db/migrate/009_create_clippings.rb +16 -0
  426. data/db/migrate/010_create_invitations.rb +14 -0
  427. data/db/migrate/011_create_homepage_features.rb +22 -0
  428. data/db/migrate/012_create_posts.rb +19 -0
  429. data/db/migrate/013_create_states.rb +13 -0
  430. data/db/migrate/014_add_states.rb +11 -0
  431. data/db/migrate/015_create_metro_areas.rb +15 -0
  432. data/db/migrate/016_add_metro_areas.rb +295 -0
  433. data/db/migrate/017_add_sessions_table.rb +20 -0
  434. data/db/migrate/018_create_categories.rb +11 -0
  435. data/db/migrate/019_change_comment_to_text_field.rb +10 -0
  436. data/db/migrate/020_create_login_slug.rb +9 -0
  437. data/db/migrate/021_add_category_names.rb +8 -0
  438. data/db/migrate/023_add_denied_friendship_status.rb +13 -0
  439. data/db/migrate/024_add_notification_preferences.rb +13 -0
  440. data/db/migrate/025_create_countries.rb +11 -0
  441. data/db/migrate/026_add_countries.rb +230 -0
  442. data/db/migrate/027_add_us_to_existing_metro_areas.rb +9 -0
  443. data/db/migrate/028_add_country_id_to_users.rb +9 -0
  444. data/db/migrate/029_add_us_to_users_with_states.rb +14 -0
  445. data/db/migrate/030_add_users_counter_cache.rb +9 -0
  446. data/db/migrate/031_news_to_talk.rb +10 -0
  447. data/db/migrate/033_featured_users.rb +9 -0
  448. data/db/migrate/034_add_last_login.rb +9 -0
  449. data/db/migrate/035_track_emailed.rb +9 -0
  450. data/db/migrate/036_create_skills.rb +11 -0
  451. data/db/migrate/037_create_offerings.rb +12 -0
  452. data/db/migrate/038_add_zag_to_users.rb +13 -0
  453. data/db/migrate/039_create_activities_table.rb +17 -0
  454. data/db/migrate/040_add_category_tips.rb +9 -0
  455. data/db/migrate/041_create_events_table.rb +19 -0
  456. data/db/migrate/042_add_privacy_to_users.rb +10 -0
  457. data/db/migrate/043_sql_session_store_setup.rb +39 -0
  458. data/db/migrate/044_category_improvements.rb +11 -0
  459. data/db/migrate/045_adding_indexes.rb +39 -0
  460. data/db/migrate/046_adding_ads.rb +20 -0
  461. data/db/migrate/047_add_polls.rb +30 -0
  462. data/db/migrate/049_add_activities_count.rb +9 -0
  463. data/db/migrate/050_create_initial_schema.rb +73 -0
  464. data/db/migrate/051_add_audience_limitation_to_ads.rb +9 -0
  465. data/db/migrate/052_create_assets.rb +21 -0
  466. data/db/migrate/053_create_favoritables.rb +23 -0
  467. data/db/migrate/054_add_published_as_to_posts.rb +13 -0
  468. data/db/migrate/055_add_published_at_to_posts.rb +15 -0
  469. data/db/migrate/056_create_roles.rb +28 -0
  470. data/db/migrate/057_add_more_indexes.rb +19 -0
  471. data/db/migrate/058_add_anonymous_commenting_fields.rb +15 -0
  472. data/db/migrate/059_create_messages.rb +16 -0
  473. data/db/migrate/060_still_more_indexes.rb +19 -0
  474. data/db/migrate/061_postgres_compatibility_changes.rb +9 -0
  475. data/db/migrate/062_add_notify_to_comments.rb +11 -0
  476. data/db/migrate/063_create_albums.rb +15 -0
  477. data/db/migrate/064_add_album_id_to_photos.rb +9 -0
  478. data/db/migrate/065_add_view_count_to_albums.rb +9 -0
  479. data/db/migrate/066_add_view_count_to_photos.rb +9 -0
  480. data/db/migrate/067_create_static_pages.rb +22 -0
  481. data/db/migrate/068_create_rsvps.rb +13 -0
  482. data/db/migrate/069_create_pages.rb +29 -0
  483. data/db/migrate/070_add_pages.rb +11 -0
  484. data/db/migrate/071_authlogic_compatibility_changes.rb +43 -0
  485. data/db/migrate/072_add_allow_rsvp_to_events.rb +9 -0
  486. data/db/migrate/073_add_taggings_count_to_tags.rb +9 -0
  487. data/db/migrate/074_add_threading_to_messages.rb +19 -0
  488. data/db/migrate/075_add_anonymous_forum_posting.rb +16 -0
  489. data/db/migrate/076_add_comment_notification_toggle.rb +9 -0
  490. data/db/migrate/077_paperclip_changes.rb +36 -0
  491. data/db/migrate/078_create_authorizations.rb +20 -0
  492. data/db/migrate/079_create_slugs.rb +18 -0
  493. data/db/sample/users.rb +55 -0
  494. data/generators/ce_plugin/USAGE +7 -0
  495. data/generators/ce_plugin/ce_plugin_generator.rb +25 -0
  496. data/generators/ce_plugin/templates/README +13 -0
  497. data/generators/ce_plugin/templates/desert_routes.rb +3 -0
  498. data/generators/ce_plugin/templates/init.rb +8 -0
  499. data/generators/ce_plugin/templates/plugin.rb +1 -0
  500. data/generators/plugin_migration/plugin_migration_generator.rb +101 -0
  501. data/generators/plugin_migration/templates/plugin_migration.erb +13 -0
  502. data/lang/TRANSLATION.markdown +32 -0
  503. data/lib/community_engine/authenticated_system.rb +167 -0
  504. data/lib/community_engine/authenticated_test_helper.rb +113 -0
  505. data/lib/community_engine/community_engine_sha1_crypto_method.rb +12 -0
  506. data/lib/community_engine/engine.rb +39 -0
  507. data/lib/community_engine/engines_extensions.rb +7 -0
  508. data/lib/community_engine/i18n_extensions.rb +31 -0
  509. data/lib/community_engine/localized_application.rb +83 -0
  510. data/lib/community_engine/rails_asset_extensions.rb +131 -0
  511. data/lib/community_engine/url_upload.rb +15 -0
  512. data/lib/community_engine/version.rb +10 -0
  513. data/lib/community_engine/viewable.rb +12 -0
  514. data/lib/community_engine.rb +34 -0
  515. data/lib/tag_hacks.rb +24 -0
  516. data/lib/tasks/community_engine_tasks.rake +87 -0
  517. data/public/favicon.ico +0 -0
  518. data/sample_files/s3.yml +17 -0
  519. data/test/fixtures/ads.yml +13 -0
  520. data/test/fixtures/albums.yml +16 -0
  521. data/test/fixtures/categories.yml +16 -0
  522. data/test/fixtures/clippings.yml +15 -0
  523. data/test/fixtures/comments.yml +55 -0
  524. data/test/fixtures/countries.yml +13 -0
  525. data/test/fixtures/events.yml +61 -0
  526. data/test/fixtures/files/Granite.bmp +0 -0
  527. data/test/fixtures/files/library.jpg +0 -0
  528. data/test/fixtures/forums.yml +10 -0
  529. data/test/fixtures/friendship_statuses.yml +10 -0
  530. data/test/fixtures/friendships.yml +15 -0
  531. data/test/fixtures/homepage_features.yml +13 -0
  532. data/test/fixtures/invitations.yml +5 -0
  533. data/test/fixtures/messages.yml +24 -0
  534. data/test/fixtures/metro_areas.yml +24 -0
  535. data/test/fixtures/moderatorships.yml +4 -0
  536. data/test/fixtures/monitorships.yml +10 -0
  537. data/test/fixtures/pages.yml +26 -0
  538. data/test/fixtures/photos.yml +29 -0
  539. data/test/fixtures/posts.yml +49 -0
  540. data/test/fixtures/roles.yml +9 -0
  541. data/test/fixtures/rsvps.yml +7 -0
  542. data/test/fixtures/sb_posts.yml +90 -0
  543. data/test/fixtures/states.yml +7 -0
  544. data/test/fixtures/taggings.yml +15 -0
  545. data/test/fixtures/tags.yml +11 -0
  546. data/test/fixtures/topics.yml +63 -0
  547. data/test/fixtures/users.yml +222 -0
  548. data/test/functional/activities_controller_test.rb +62 -0
  549. data/test/functional/admin_controller_test.rb +60 -0
  550. data/test/functional/ads_controller_test.rb +51 -0
  551. data/test/functional/albums_controller_test.rb +120 -0
  552. data/test/functional/base_controller_test.rb +27 -0
  553. data/test/functional/categories_controller_test.rb +51 -0
  554. data/test/functional/clippings_controller_test.rb +123 -0
  555. data/test/functional/comments_controller_test.rb +215 -0
  556. data/test/functional/events_controller_test.rb +104 -0
  557. data/test/functional/favorites_controller_test.rb +53 -0
  558. data/test/functional/forums_controller_test.rb +95 -0
  559. data/test/functional/friendships_controller_test.rb +98 -0
  560. data/test/functional/homepage_features_controller_test.rb +69 -0
  561. data/test/functional/invitations_controller_test.rb +45 -0
  562. data/test/functional/messages_controller_test.rb +154 -0
  563. data/test/functional/metro_areas_controller_test.rb +63 -0
  564. data/test/functional/moderators_controller_test.rb +22 -0
  565. data/test/functional/monitorships_controller_test.rb +72 -0
  566. data/test/functional/pages_controller_test.rb +95 -0
  567. data/test/functional/password_reset_controller_test.rb +34 -0
  568. data/test/functional/photo_manager_controller_test.rb +21 -0
  569. data/test/functional/photos_controller_test.rb +203 -0
  570. data/test/functional/posts_controller_test.rb +224 -0
  571. data/test/functional/rsvps_controller_test.rb +92 -0
  572. data/test/functional/sb_posts_controller_test.rb +193 -0
  573. data/test/functional/sessions_controller_test.rb +55 -0
  574. data/test/functional/sitemap_controller_test.rb +9 -0
  575. data/test/functional/statistics_controller_test.rb +18 -0
  576. data/test/functional/tags_controller_test.rb +52 -0
  577. data/test/functional/theme_controller_test.rb +11 -0
  578. data/test/functional/topics_controller_test.rb +201 -0
  579. data/test/functional/users_controller_test.rb +460 -0
  580. data/test/functional/votes_controller_test.rb +27 -0
  581. data/test/test_helper.rb +103 -0
  582. data/test/testapp/.gitignore +4 -0
  583. data/test/testapp/README +256 -0
  584. data/test/testapp/Rakefile +7 -0
  585. data/test/testapp/app/controllers/application_controller.rb +3 -0
  586. data/test/testapp/app/helpers/application_helper.rb +2 -0
  587. data/test/testapp/config/application.rb +45 -0
  588. data/test/testapp/config/application_config.rb +1 -0
  589. data/test/testapp/config/boot.rb +10 -0
  590. data/test/testapp/config/database.yml +22 -0
  591. data/test/testapp/config/environment.rb +6 -0
  592. data/test/testapp/config/environments/development.rb +25 -0
  593. data/test/testapp/config/environments/production.rb +49 -0
  594. data/test/testapp/config/environments/test.rb +35 -0
  595. data/test/testapp/config/initializers/backtrace_silencers.rb +7 -0
  596. data/test/testapp/config/initializers/inflections.rb +10 -0
  597. data/test/testapp/config/initializers/mime_types.rb +5 -0
  598. data/test/testapp/config/initializers/secret_token.rb +7 -0
  599. data/test/testapp/config/initializers/session_store.rb +8 -0
  600. data/test/testapp/config/locales/en.yml +5 -0
  601. data/test/testapp/config/routes.rb +3 -0
  602. data/test/testapp/config.ru +4 -0
  603. data/test/testapp/db/schema.rb +456 -0
  604. data/test/testapp/db/seeds.rb +7 -0
  605. data/test/testapp/doc/README_FOR_APP +2 -0
  606. data/test/testapp/lib/tasks/.gitkeep +0 -0
  607. data/test/testapp/public/404.html +26 -0
  608. data/test/testapp/public/422.html +26 -0
  609. data/test/testapp/public/500.html +26 -0
  610. data/test/testapp/public/favicon.ico +0 -0
  611. data/test/testapp/public/images/rails.png +0 -0
  612. data/test/testapp/public/robots.txt +5 -0
  613. data/test/testapp/script/rails +6 -0
  614. data/test/testapp/test/performance/browsing_test.rb +9 -0
  615. data/test/testapp/test/test_helper.rb +13 -0
  616. data/test/testapp/vendor/plugins/.gitkeep +0 -0
  617. data/test/unit/ad_test.rb +34 -0
  618. data/test/unit/asset_test.rb +15 -0
  619. data/test/unit/authorization_test.rb +55 -0
  620. data/test/unit/category_test.rb +22 -0
  621. data/test/unit/choice_test.rb +9 -0
  622. data/test/unit/clipping_image_test.rb +17 -0
  623. data/test/unit/clipping_test.rb +52 -0
  624. data/test/unit/comment_test.rb +107 -0
  625. data/test/unit/country_test.rb +15 -0
  626. data/test/unit/event_test.rb +75 -0
  627. data/test/unit/favorite_test.rb +71 -0
  628. data/test/unit/forum_test.rb +23 -0
  629. data/test/unit/friendship_status_test.rb +10 -0
  630. data/test/unit/friendship_test.rb +38 -0
  631. data/test/unit/homepage_feature_test.rb +10 -0
  632. data/test/unit/invitation_test.rb +27 -0
  633. data/test/unit/message_test.rb +49 -0
  634. data/test/unit/message_thread_test.rb +80 -0
  635. data/test/unit/metro_area_test.rb +10 -0
  636. data/test/unit/moderatorship_test.rb +30 -0
  637. data/test/unit/monitorships_test.rb +38 -0
  638. data/test/unit/page_test.rb +25 -0
  639. data/test/unit/photo_test.rb +42 -0
  640. data/test/unit/poll_test.rb +25 -0
  641. data/test/unit/post_test.rb +212 -0
  642. data/test/unit/rsvp_test.rb +33 -0
  643. data/test/unit/sb_post_test.rb +152 -0
  644. data/test/unit/state_test.rb +10 -0
  645. data/test/unit/tag_test.rb +22 -0
  646. data/test/unit/topic_test.rb +111 -0
  647. data/test/unit/user_notifier_test.rb +108 -0
  648. data/test/unit/user_test.rb +259 -0
  649. data/test/unit/vote_test.rb +9 -0
  650. data/vendor/plugins/activity_tracker/README +4 -0
  651. data/vendor/plugins/activity_tracker/Rakefile +22 -0
  652. data/vendor/plugins/activity_tracker/generators/activity_migration/USAGE +13 -0
  653. data/vendor/plugins/activity_tracker/generators/activity_migration/activity_migration_generator.rb +11 -0
  654. data/vendor/plugins/activity_tracker/generators/activity_migration/templates/migration.rb +17 -0
  655. data/vendor/plugins/activity_tracker/init.rb +1 -0
  656. data/vendor/plugins/activity_tracker/install.rb +1 -0
  657. data/vendor/plugins/activity_tracker/lib/activity.rb +40 -0
  658. data/vendor/plugins/activity_tracker/lib/activity_tracker.rb +80 -0
  659. data/vendor/plugins/activity_tracker/tasks/activity_tracker_tasks.rake +4 -0
  660. data/vendor/plugins/activity_tracker/test/abstract_unit.rb +47 -0
  661. data/vendor/plugins/activity_tracker/test/activity_tracker_test.rb +48 -0
  662. data/vendor/plugins/activity_tracker/test/database.yml +18 -0
  663. data/vendor/plugins/activity_tracker/test/debug.log +3329 -0
  664. data/vendor/plugins/activity_tracker/test/fixtures/test_post.rb +5 -0
  665. data/vendor/plugins/activity_tracker/test/fixtures/test_posts.yml +3 -0
  666. data/vendor/plugins/activity_tracker/test/fixtures/test_user.rb +4 -0
  667. data/vendor/plugins/activity_tracker/test/fixtures/test_users.yml +6 -0
  668. data/vendor/plugins/activity_tracker/test/schema.rb +21 -0
  669. data/vendor/plugins/activity_tracker/uninstall.rb +1 -0
  670. data/vendor/plugins/acts_as_list/README +23 -0
  671. data/vendor/plugins/acts_as_list/init.rb +3 -0
  672. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +256 -0
  673. data/vendor/plugins/acts_as_list/test/list_test.rb +332 -0
  674. data/vendor/plugins/acts_as_publishable/README +3 -0
  675. data/vendor/plugins/acts_as_publishable/Rakefile +22 -0
  676. data/vendor/plugins/acts_as_publishable/generators/publishing/publishing_generator.rb +34 -0
  677. data/vendor/plugins/acts_as_publishable/generators/publishing/templates/migration.rb +13 -0
  678. data/vendor/plugins/acts_as_publishable/init.rb +3 -0
  679. data/vendor/plugins/acts_as_publishable/install.rb +3 -0
  680. data/vendor/plugins/acts_as_publishable/lib/acts_as_publishable.rb +81 -0
  681. data/vendor/plugins/acts_as_publishable/test/acts_as_publishable_test.rb +8 -0
  682. data/vendor/plugins/acts_as_publishable/uninstall.rb +1 -0
  683. data/vendor/plugins/auto_complete/README +23 -0
  684. data/vendor/plugins/auto_complete/Rakefile +22 -0
  685. data/vendor/plugins/auto_complete/init.rb +2 -0
  686. data/vendor/plugins/auto_complete/lib/auto_complete.rb +47 -0
  687. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +143 -0
  688. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +67 -0
  689. data/vendor/plugins/enumerations_mixin/LICENSE +20 -0
  690. data/vendor/plugins/enumerations_mixin/README_ENUMERATIONS +163 -0
  691. data/vendor/plugins/enumerations_mixin/init.rb +21 -0
  692. data/vendor/plugins/enumerations_mixin/lib/active_record/acts/enumerated.rb +177 -0
  693. data/vendor/plugins/enumerations_mixin/lib/active_record/aggregations/has_enumerated.rb +60 -0
  694. data/vendor/plugins/enumerations_mixin/lib/active_record/virtual_enumerations.rb +68 -0
  695. data/vendor/plugins/enumerations_mixin/virtual_enumerations_sample.rb +76 -0
  696. data/vendor/plugins/prototype_legacy_helper/README.markdown +13 -0
  697. data/vendor/plugins/prototype_legacy_helper/init.rb +1 -0
  698. data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +432 -0
  699. data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +297 -0
  700. data/vendor/plugins/resource_feeder/README +4 -0
  701. data/vendor/plugins/resource_feeder/Rakefile +22 -0
  702. data/vendor/plugins/resource_feeder/init.rb +2 -0
  703. data/vendor/plugins/resource_feeder/lib/resource_feeder/atom.rb +71 -0
  704. data/vendor/plugins/resource_feeder/lib/resource_feeder/rss.rb +71 -0
  705. data/vendor/plugins/resource_feeder/lib/resource_feeder.rb +2 -0
  706. data/vendor/plugins/resource_feeder/test/atom_feed_test.rb +85 -0
  707. data/vendor/plugins/resource_feeder/test/rss_feed_test.rb +61 -0
  708. data/vendor/plugins/resource_feeder/test/test_helper.rb +60 -0
  709. data/vendor/plugins/respond_to_parent/MIT-LICENSE +20 -0
  710. data/vendor/plugins/respond_to_parent/README +47 -0
  711. data/vendor/plugins/respond_to_parent/Rakefile +22 -0
  712. data/vendor/plugins/respond_to_parent/init.rb +1 -0
  713. data/vendor/plugins/respond_to_parent/install.rb +1 -0
  714. data/vendor/plugins/respond_to_parent/lib/responds_to_parent.rb +70 -0
  715. data/vendor/plugins/respond_to_parent/test/responds_to_parent_test.rb +10 -0
  716. data/vendor/plugins/respond_to_parent/test/test_helper.rb +6 -0
  717. data/vendor/plugins/respond_to_parent/uninstall.rb +1 -0
  718. data/vendor/plugins/tiny_mce/CHANGELOG_PLUGIN.rdoc +91 -0
  719. data/vendor/plugins/tiny_mce/CHANGELOG_TINYMCE +1226 -0
  720. data/vendor/plugins/tiny_mce/DEV_UPGRADE_NOTES.rdoc +12 -0
  721. data/vendor/plugins/tiny_mce/init.rb +2 -0
  722. data/vendor/plugins/tiny_mce/install.rb +18 -0
  723. data/vendor/plugins/tiny_mce/lib/tiny_mce/base.rb +33 -0
  724. data/vendor/plugins/tiny_mce/lib/tiny_mce/configuration.rb +114 -0
  725. data/vendor/plugins/tiny_mce/lib/tiny_mce/exceptions.rb +14 -0
  726. data/vendor/plugins/tiny_mce/lib/tiny_mce/helpers.rb +43 -0
  727. data/vendor/plugins/tiny_mce/lib/tiny_mce/railtie.rb +13 -0
  728. data/vendor/plugins/tiny_mce/lib/tiny_mce/spell_checker.rb +67 -0
  729. data/vendor/plugins/tiny_mce/lib/tiny_mce/valid_tinymce_langs.yml +25 -0
  730. data/vendor/plugins/tiny_mce/lib/tiny_mce/valid_tinymce_options.yml +167 -0
  731. data/vendor/plugins/tiny_mce/lib/tiny_mce.rb +24 -0
  732. data/vendor/plugins/white_list/README +35 -0
  733. data/vendor/plugins/white_list/Rakefile +22 -0
  734. data/vendor/plugins/white_list/init.rb +35 -0
  735. data/vendor/plugins/white_list/lib/white_list_helper.rb +61 -0
  736. data/vendor/plugins/white_list/test/white_list_test.rb +120 -0
  737. metadata +1073 -0
@@ -0,0 +1,69 @@
1
+ require 'test_helper'
2
+
3
+ class HomepageFeaturesControllerTest < ActionController::TestCase
4
+ fixtures :all
5
+
6
+ def test_should_get_index
7
+ login_as :admin
8
+ get :index
9
+ assert_response :success
10
+ assert assigns(:homepage_features)
11
+ end
12
+
13
+ def test_should_get_new
14
+ login_as :admin
15
+ get :new
16
+ assert_response :success
17
+ end
18
+
19
+ def test_should_create_homepage_feature
20
+ login_as :admin
21
+ assert_difference HomepageFeature, :count, 1 do
22
+ post :create, :homepage_feature => {:title => 'feature', :url => 'example.com', :image => fixture_file_upload('/files/library.jpg', 'image/jpg') }
23
+ end
24
+ assert_redirected_to homepage_feature_path(assigns(:homepage_feature))
25
+ end
26
+
27
+ def test_should_fail_to_create_homepage_feature
28
+ login_as :admin
29
+ assert_no_difference HomepageFeature, :count do
30
+ post :create, :homepage_feature => { }
31
+ end
32
+ assert_response :success
33
+ end
34
+
35
+
36
+ def test_should_show_homepage_feature
37
+ login_as :admin
38
+ get :show, :id => 1
39
+ assert_response :success
40
+ end
41
+
42
+ def test_should_get_edit
43
+ login_as :admin
44
+ get :edit, :id => 1
45
+ assert_response :success
46
+ end
47
+
48
+ def test_should_update_homepage_feature
49
+ login_as :admin
50
+ put :update, :id => 1, :homepage_feature => {:url => 'changed_url.com' }
51
+ assert_redirected_to homepage_feature_path(assigns(:homepage_feature))
52
+ end
53
+
54
+ def test_should_fail_to_update_homepage_feature
55
+ login_as :admin
56
+ put :update, :id => 1, :homepage_feature => { :url => nil }
57
+ assert assigns(:homepage_feature).errors[:url]
58
+ assert_response :success
59
+ end
60
+
61
+
62
+ def test_should_destroy_homepage_feature
63
+ login_as :admin
64
+ assert_difference HomepageFeature, :count, -1 do
65
+ delete :destroy, :id => 1
66
+ end
67
+ assert_redirected_to homepage_features_path
68
+ end
69
+ end
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+ class InvitationsControllerTest < ActionController::TestCase
4
+ fixtures :invitations, :users, :roles
5
+
6
+ def test_should_get_index
7
+ login_as :quentin
8
+ get :index, :user_id => users(:quentin).id
9
+ assert_response :success
10
+ assert assigns(:invitations)
11
+ end
12
+
13
+ def test_should_get_new
14
+ login_as :quentin
15
+ get :new, :user_id => users(:quentin).id
16
+ assert_response :success
17
+ end
18
+
19
+
20
+ def test_should_create_invitation_in_welcome_steps
21
+ login_as :quentin
22
+ assert_difference Invitation, :count, 1 do
23
+ post :create, :user_id => users(:quentin).id, :invitation => {:message => 'sup dude', :email_addresses => 'asdf@asdf.com' }, :welcome => 'complete'
24
+ assert_redirected_to welcome_complete_user_path(users(:quentin))
25
+ end
26
+ end
27
+
28
+ def test_should_create_invitation
29
+ login_as :quentin
30
+ assert_difference Invitation, :count, 1 do
31
+ post :create, :user_id => users(:quentin).id, :invitation => {:message => 'sup dude', :email_addresses => 'asdf@asdf.com' }
32
+ assert_redirected_to user_path(users(:quentin))
33
+ end
34
+ end
35
+
36
+ def test_should_fail_to_create_invitation
37
+ login_as :quentin
38
+ assert_no_difference Invitation, :count do
39
+ post :create, :user_id => users(:quentin).id, :invitation => {:message => 'sup dude', :email_addresses => nil }
40
+ end
41
+ assert_response :success
42
+ assert assigns(:invitation).errors[:email_addresses]
43
+ end
44
+
45
+ end
@@ -0,0 +1,154 @@
1
+ require 'test_helper'
2
+
3
+ class MessagesControllerTest < ActionController::TestCase
4
+ fixtures :messages, :users, :states, :roles
5
+ setup :login_leopoldo, :except => 'test_should_mark_recipient_deleted'
6
+
7
+ def login_leopoldo
8
+ login_as :leopoldo
9
+ end
10
+
11
+ def test_should_get_index_received
12
+ create_message(users(:florian),users(:leopoldo))
13
+ get :index, :user_id => users(:leopoldo).id
14
+ assert assigns(:messages)
15
+ assert_response :success
16
+ end
17
+
18
+ def test_should_get_index_sent_messages
19
+ create_message(users(:florian),users(:leopoldo))
20
+ get :index, :user_id => users(:leopoldo).id, :params => {:mailbox => 'sent'}
21
+ assert_response :success
22
+ assert assigns(:messages)
23
+ assert_equal assigns(:user).unread_message_count, 1
24
+ end
25
+
26
+ def test_should_only_show_your_messages
27
+ get :index, :user_id => users(:aaron).id
28
+ assert_redirected_to login_path
29
+ end
30
+
31
+ def test_should_get_new
32
+ get :new, :user_id => users(:leopoldo).id
33
+ assert_response :success
34
+ assert assigns(:message)
35
+ end
36
+
37
+ def test_send_message_link_should_populate_to_field
38
+ get :new, :user_id => users(:leopoldo).id, :to => 'aaron'
39
+ assert_response :success
40
+ assert_tag :tag=>'input', :attributes=>{:value=>'aaron'}
41
+ assert assigns(:message)
42
+ end
43
+
44
+ def test_should_get_new_reply_to_and_populate_all_fields
45
+ create_message(users(:florian),users(:leopoldo))
46
+ m = Message.last
47
+ get :new, :user_id => users(:leopoldo).id, :reply_to => m.id
48
+ assert_response :success
49
+ assert_equal assigns(:message).to, m.sender.login
50
+ assert_tag :tag=>'input', :attributes=>{:name=>'message[to]', :value=> m.sender.login}
51
+ assert_equal assigns(:message).subject, "#{m.subject}"
52
+ end
53
+
54
+ def test_should_create
55
+ assert_difference Message, :count, 1 do
56
+ post :create, :message => {:to => users(:florian).login, :body => 'Some content',
57
+ :subject => 'A subject'}, :user_id => users(:leopoldo).id
58
+ end
59
+ assert_redirected_to user_messages_path(users(:leopoldo))
60
+ end
61
+
62
+
63
+ def test_should_not_create_same_user_message
64
+ assert_no_difference Message, :count do
65
+ post :create, :message => {:to => users(:leopoldo).login, :body => 'Some content',
66
+ :subject => 'A subject'}, :user_id => users(:leopoldo).id
67
+ end
68
+ assert_response :success
69
+ end
70
+
71
+ def test_should_fail_to_create_message_with_no_to
72
+ assert_no_difference Message, :count do
73
+ post :create, :user_id => users(:leopoldo).id, :message => { :subject => 'Test message', :body => 'Test message' }
74
+ end
75
+ assert_response :success
76
+ end
77
+
78
+ def test_should_fail_to_create_message_with_invalid_to
79
+ assert_no_difference Message, :count do
80
+ post :create, :user_id => users(:leopoldo).id, :message => { :to => 'notarealuser', :subject => 'Test message', :body => 'Test message' }
81
+ end
82
+ assert_response :success
83
+ end
84
+
85
+ def test_should_destroy_message
86
+ assert_difference Message, :count, -1 do
87
+ post :delete_selected, :delete => [2], :user_id => users(:leopoldo).id
88
+ end
89
+ assert_redirected_to user_messages_path(users(:leopoldo))
90
+ end
91
+
92
+
93
+ def test_should_get_show
94
+ create_message(users(:florian),users(:leopoldo))
95
+
96
+ get :show, :id => Message.last.id, :user_id => users(:leopoldo).id
97
+
98
+ assert_response :success
99
+ assert_equal assigns(:message).body, 'Some content'
100
+ assert_tag :tag=>'form', :attributes=>{:action=> user_messages_path(users(:leopoldo))}
101
+ end
102
+
103
+ def test_show_send_links_if_logged_in
104
+ @controller = UsersController.new
105
+ get :show, :user_id => users(:aaron).id
106
+ assert_response :success
107
+ end
108
+
109
+
110
+
111
+ def test_read_unread_message
112
+ create_message(users(:florian),users(:leopoldo))
113
+ assert_difference users(:leopoldo), :unread_message_count, -1 do
114
+ get :show, :id => Message.last.id, :user_id => users(:leopoldo).id
115
+ end
116
+ end
117
+
118
+ def test_should_not_show_other_user_message
119
+ create_message(users(:florian),users(:leopoldo))
120
+ get :show, :id => Message.last.id, :user_id => users(:joe).id
121
+ assert_response 302
122
+ end
123
+
124
+ def test_do_not_show_send_links
125
+ get :show, :user_id => users(:aaron).id
126
+ assert_redirected_to '/login'
127
+ assert_no_tag :tag=>'a', :attributes=>{:href=>'/quentin/messages/new?to=aaron'}
128
+ end
129
+
130
+ def test_should_mark_sender_deleted
131
+ should_mark_deleted(users(:leopoldo))
132
+ assert_equal assigns(:message).sender_deleted, true
133
+ end
134
+
135
+ def test_should_mark_recipient_deleted
136
+ login_as :florian
137
+ should_mark_deleted(users(:florian))
138
+ assert_equal assigns(:message).recipient_deleted, true
139
+ end
140
+
141
+ private
142
+ def create_message(sender,recipient)
143
+ Message.create(:sender_id => sender.id, :recipient_id => recipient.id,
144
+ :body => 'Some content', :subject => 'A subject').save!
145
+ end
146
+
147
+ def should_mark_deleted(user)
148
+ create_message(users(:leopoldo),users(:florian))
149
+ post :delete_selected, :delete => [Message.last.id], :user_id => user.id
150
+ assert_redirected_to user_messages_path(user)
151
+ end
152
+
153
+
154
+ end
@@ -0,0 +1,63 @@
1
+ require 'test_helper'
2
+
3
+ class MetroAreasControllerTest < ActionController::TestCase
4
+ fixtures :metro_areas, :users, :countries, :roles
5
+
6
+ def test_should_get_index
7
+ login_as :admin
8
+ get :index
9
+ assert_response :success
10
+ assert assigns(:metro_areas)
11
+ end
12
+
13
+ def test_should_get_new
14
+ login_as :admin
15
+ get :new
16
+ assert_response :success
17
+ end
18
+
19
+ def test_should_create_metro_area
20
+ login_as :admin
21
+ assert_difference MetroArea, :count, 1 do
22
+ post :create, :metro_area => {:country_id => countries(:germany), :name => "Dusseldorf" }
23
+ end
24
+
25
+ assert_redirected_to metro_area_path(assigns(:metro_area))
26
+ end
27
+
28
+ def test_should_not_create_metro_area_without_country
29
+ login_as :admin
30
+ assert_no_difference MetroArea, :count do
31
+ post :create, :metro_area => {:name => "Dusseldorf" }
32
+ assert assigns(:metro_area).errors[:country_id]
33
+ assert_response :success
34
+ end
35
+ end
36
+
37
+ def test_should_show_metro_area
38
+ login_as :admin
39
+ get :show, :id => 1
40
+ assert_response :success
41
+ end
42
+
43
+ def test_should_get_edit
44
+ login_as :admin
45
+ get :edit, :id => 1
46
+ assert_response :success
47
+ end
48
+
49
+ def test_should_update_metro_area
50
+ login_as :admin
51
+ put :update, :id => 1, :metro_area => { }
52
+ assert_redirected_to metro_area_path(assigns(:metro_area))
53
+ end
54
+
55
+ def test_should_destroy_metro_area
56
+ login_as :admin
57
+ old_count = MetroArea.count
58
+ delete :destroy, :id => 1
59
+ assert_equal old_count-1, MetroArea.count
60
+
61
+ assert_redirected_to metro_areas_path
62
+ end
63
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ class ModeratorsControllerTest < ActionController::TestCase
4
+ all_fixtures
5
+
6
+
7
+ def test_should_delete_moderatorship
8
+ assert users(:sam).moderator_of?(forums(:rails))
9
+ login_as :admin
10
+ assert_difference Moderatorship, :count, -1 do
11
+ delete :destroy, :user_id => users(:sam).id, :id => moderatorships(:sam_rails).id
12
+ end
13
+ assert !users(:sam).moderator_of?(forums(:rails))
14
+ end
15
+
16
+ def test_should_only_allow_admins_to_delete_moderatorships
17
+ login_as :sam
18
+ assert_difference Moderatorship, :count, 0 do
19
+ delete :destroy, :user_id => users(:sam).id, :id => moderatorships(:sam_rails).id
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,72 @@
1
+ require 'test_helper'
2
+
3
+ class MonitorshipsControllerTest < ActionController::TestCase
4
+
5
+ all_fixtures
6
+
7
+ def test_should_require_login
8
+ post :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => users(:aaron).id
9
+ assert_redirected_to login_path
10
+ end
11
+
12
+ def test_should_add_monitorship
13
+ login_as :joe
14
+ assert_difference Monitorship, :count do
15
+ xhr :post, :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => users(:joe).id
16
+ assert_response :success
17
+ end
18
+
19
+ assert topics(:pdi).monitors.include?(users(:joe))
20
+ end
21
+
22
+ def test_should_activate_monitorship
23
+ login_as :sam
24
+ assert_difference Monitorship, :count, 0 do
25
+ xhr :post, :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => users(:sam).id
26
+ assert_response :success
27
+ end
28
+ end
29
+
30
+ def test_should_not_duplicate_monitorship
31
+ login_as :aaron
32
+ assert_difference Monitorship, :count, 0 do
33
+ xhr :post, :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => users(:aaron).id
34
+ assert_response :success
35
+ end
36
+ end
37
+
38
+ def test_should_deactivate_monitorship
39
+ login_as :aaron
40
+ assert_difference Monitorship, :count, 0 do
41
+ xhr :delete, :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => users(:aaron).id
42
+ assert_response :success
43
+ end
44
+
45
+ assert !topics(:pdi).monitors(true).include?(users(:aaron))
46
+ end
47
+
48
+ def test_should_require_login_with_html
49
+ post :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => users(:aaron).id
50
+ assert_redirected_to login_path
51
+ end
52
+
53
+ def test_should_add_monitorship_with_html
54
+ login_as :joe
55
+ assert_difference Monitorship, :count do
56
+ post :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => users(:joe).id
57
+ assert_redirected_to forum_topic_path(forums(:rails).id, topics(:pdi).id)
58
+ end
59
+
60
+ assert topics(:pdi).monitors(true).include?(users(:joe))
61
+ end
62
+
63
+ def test_should_deactivate_monitorship_with_html
64
+ login_as :aaron
65
+ assert_difference Monitorship, :count, 0 do
66
+ delete :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => users(:aaron).id
67
+ assert_redirected_to forum_topic_path(forums(:rails).id, topics(:pdi).id)
68
+ end
69
+
70
+ assert !topics(:pdi).monitors(true).include?(users(:aaron))
71
+ end
72
+ end
@@ -0,0 +1,95 @@
1
+ require 'test_helper'
2
+
3
+ class PagesControllerTest < ActionController::TestCase
4
+ fixtures :all
5
+
6
+ def test_should_get_index
7
+ login_as :admin
8
+ get :index
9
+ assert_response :success
10
+ assert assigns(:pages)
11
+ end
12
+
13
+ def test_should_not_get_index_unless_moderator
14
+ login_as :quentin
15
+ get :index
16
+ assert_response :redirect
17
+ end
18
+
19
+ def test_should_not_get_index_unless_logged_in
20
+ get :index
21
+ assert_response :redirect
22
+ end
23
+
24
+ def test_should_get_new
25
+ login_as :admin
26
+ get :new
27
+ assert_response :success
28
+ end
29
+
30
+ def test_should_create_page
31
+ login_as :admin
32
+ assert_difference Page, :count, 1 do
33
+ create_page
34
+ assert_response :redirect
35
+ end
36
+ end
37
+
38
+ def test_should_show_public_page_to_everyone
39
+ get :show, :id => pages(:custom_page).id
40
+ assert_response :success
41
+ end
42
+
43
+ def test_should_not_show_draft
44
+ pages(:draft_page).save_as_draft
45
+ get :show, :id => pages(:draft_page).id
46
+ assert_response :redirect
47
+ end
48
+
49
+
50
+ def test_should_not_show_members_only_page_unless_logged_in
51
+ get :show, :id => pages(:members_only_page).id
52
+ assert_response :redirect
53
+ end
54
+
55
+ def test_should_get_edit
56
+ login_as :admin
57
+ get :edit, :id => pages(:custom_page).id
58
+ assert_response :success
59
+ end
60
+
61
+ def test_should_update_page
62
+ login_as :admin
63
+ put :update, :id => pages(:custom_page).id, :page => { :title => "changed_name" }
64
+ assert_redirected_to admin_pages_path
65
+ assert_equal assigns(:page).title, "changed_name"
66
+ end
67
+
68
+ def test_should_fail_to_update_page
69
+ login_as :admin
70
+ put :update, :id => pages(:custom_page).id, :page => { :title => nil }
71
+ assert_response :success
72
+ assert assigns(:page).errors[:title]
73
+ end
74
+
75
+ def test_should_destroy_page
76
+ login_as :admin
77
+ assert_difference Page, :count, -1 do
78
+ delete :destroy, :id => pages(:custom_page)
79
+ end
80
+ assert_redirected_to admin_pages_path
81
+ end
82
+
83
+ def test_should_not_destroy_page
84
+ login_as :aaron
85
+ assert_difference Page, :count, 0 do
86
+ delete :destroy, :id => pages(:custom_page)
87
+ end
88
+ assert_redirected_to login_path
89
+ end
90
+
91
+ def create_page(options = {})
92
+ post :create, {:page => { :title => 'New Page', :body => '<p>My new page.</p>', :page_public => true, :published_as => 'live' }.merge(options[:page] || {}) }.merge(options || {})
93
+ end
94
+
95
+ end
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+
3
+ class PasswordResetsControllerTest < ActionController::TestCase
4
+ fixtures :all
5
+
6
+ test "should get new and respond with success" do
7
+ get :new
8
+
9
+ assert_response :success
10
+ end
11
+
12
+ test "should post to create and send an email" do
13
+ assert_difference ActionMailer::Base.deliveries, :length, 1 do
14
+ post :create, :email => users(:quentin).email
15
+ assert_response :redirect
16
+ assert_redirected_to login_path
17
+ end
18
+ end
19
+
20
+ test "should get edit and respond with success" do
21
+ get :edit, :id => users(:quentin).perishable_token
22
+
23
+ assert_response :success
24
+ end
25
+
26
+ test "should put to update and redirect to dashboard" do
27
+ @user = users(:quentin)
28
+
29
+ put :update, :id => @user.perishable_token, :user => { :password => "newpassword" }
30
+
31
+ assert_redirected_to dashboard_user_path(@user)
32
+ end
33
+
34
+ end
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+
3
+ class PhotoManagerControllerTest < ActionController::TestCase
4
+ fixtures :users, :albums, :photos
5
+
6
+ test "should get index" do
7
+ login_as :quentin
8
+ get :index, :user => users(:quentin), :user_id => users(:quentin)
9
+ assert_response :success
10
+ assert_equal assigns(:albums)[0].id, 1
11
+ assert_equal assigns(:photos_no_albums), [photos(:another_pic)]
12
+ end
13
+
14
+ test "should not get index" do
15
+ get :index, :user => users(:quentin), :user_id => users(:quentin)
16
+ assert_response 302
17
+ login_as :quentin
18
+ get :index, :user => users(:kevin), :user_id => users(:kevin)
19
+ assert_response 302
20
+ end
21
+ end