community_engine 2.3.2 → 3.0.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 (580) hide show
  1. checksums.yaml +13 -5
  2. data/.travis.yml +5 -4
  3. data/CHANGELOG +43 -5
  4. data/Gemfile +1 -16
  5. data/README.markdown +22 -19
  6. data/UPGRADING.markdown +10 -0
  7. data/about.yml +1 -1
  8. data/app/assets/javascripts/community_engine.js +187 -18
  9. data/app/assets/javascripts/cropper.js +86 -565
  10. data/app/assets/javascripts/forum.js +26 -71
  11. data/app/assets/javascripts/jquery.migrate.js +521 -0
  12. data/app/assets/stylesheets/_colors.css.scss +100 -0
  13. data/app/assets/stylesheets/_font.css.scss +17 -0
  14. data/app/assets/stylesheets/_forms.css.scss +20 -0
  15. data/app/assets/stylesheets/_forum.css.scss +0 -0
  16. data/app/assets/stylesheets/_grid.css.scss +7 -0
  17. data/app/assets/stylesheets/_layers.css.scss +7 -0
  18. data/app/assets/stylesheets/_layout.css.scss +28 -0
  19. data/app/assets/stylesheets/community_engine.css.scss +18 -0
  20. data/app/assets/stylesheets/cropper.css +6 -182
  21. data/app/controllers/activities_controller.rb +10 -10
  22. data/app/controllers/admin_controller.rb +23 -23
  23. data/app/controllers/ads_controller.rb +16 -5
  24. data/app/controllers/albums_controller.rb +11 -5
  25. data/app/controllers/base_controller.rb +5 -8
  26. data/app/controllers/categories_controller.rb +31 -31
  27. data/app/controllers/clippings_controller.rb +18 -12
  28. data/app/controllers/comments_controller.rb +17 -8
  29. data/app/controllers/events_controller.rb +25 -21
  30. data/app/controllers/favorites_controller.rb +12 -12
  31. data/app/controllers/forums_controller.rb +20 -9
  32. data/app/controllers/friendships_controller.rb +41 -48
  33. data/app/controllers/homepage_features_controller.rb +11 -5
  34. data/app/controllers/invitations_controller.rb +15 -9
  35. data/app/controllers/messages_controller.rb +25 -19
  36. data/app/controllers/metro_areas_controller.rb +9 -3
  37. data/app/controllers/moderators_controller.rb +1 -1
  38. data/app/controllers/monitorships_controller.rb +2 -2
  39. data/app/controllers/pages_controller.rb +16 -4
  40. data/app/controllers/password_resets_controller.rb +0 -1
  41. data/app/controllers/photos_controller.rb +32 -30
  42. data/app/controllers/posts_controller.rb +33 -17
  43. data/app/controllers/rsvps_controller.rb +8 -4
  44. data/app/controllers/sb_posts_controller.rb +22 -18
  45. data/app/controllers/sessions_controller.rb +2 -1
  46. data/app/controllers/sitemap_controller.rb +8 -8
  47. data/app/controllers/statistics_controller.rb +9 -8
  48. data/app/controllers/tags_controller.rb +26 -24
  49. data/app/controllers/topics_controller.rb +10 -6
  50. data/app/controllers/users_controller.rb +63 -34
  51. data/app/helpers/base_helper.rb +119 -29
  52. data/app/helpers/friendships_helper.rb +3 -3
  53. data/app/helpers/posts_helper.rb +5 -7
  54. data/app/models/acts_as_taggable_on/tag.rb +12 -13
  55. data/app/models/ad.rb +2 -5
  56. data/app/models/album.rb +0 -2
  57. data/app/models/category.rb +6 -7
  58. data/app/models/clipping.rb +2 -5
  59. data/app/models/clipping_image.rb +5 -5
  60. data/app/models/comment.rb +4 -5
  61. data/app/models/country.rb +2 -4
  62. data/app/models/event.rb +1 -2
  63. data/app/models/favorite.rb +5 -10
  64. data/app/models/forum.rb +0 -2
  65. data/app/models/friendship.rb +3 -5
  66. data/app/models/friendship_status.rb +0 -2
  67. data/app/models/homepage_feature.rb +4 -6
  68. data/app/models/invitation.rb +6 -8
  69. data/app/models/message.rb +25 -26
  70. data/app/models/message_thread.rb +1 -1
  71. data/app/models/metro_area.rb +0 -2
  72. data/app/models/page.rb +0 -2
  73. data/app/models/photo.rb +8 -8
  74. data/app/models/poll.rb +7 -9
  75. data/app/models/post.rb +11 -15
  76. data/app/models/role.rb +1 -2
  77. data/app/models/rsvp.rb +0 -3
  78. data/app/models/sb_post.rb +14 -9
  79. data/app/models/state.rb +0 -2
  80. data/app/models/topic.rb +5 -6
  81. data/app/models/user.rb +50 -63
  82. data/app/models/vote.rb +1 -1
  83. data/app/views/activities/_activity.html.haml +9 -9
  84. data/app/views/activities/destroy.js.erb +1 -0
  85. data/app/views/activities/index.html.haml +13 -13
  86. data/app/views/activities/network.html.haml +10 -13
  87. data/app/views/admin/comments.html.haml +48 -70
  88. data/app/views/admin/events.html.haml +20 -27
  89. data/app/views/admin/messages.html.haml +2 -3
  90. data/app/views/admin/update.js.erb +1 -0
  91. data/app/views/admin/users.html.haml +51 -66
  92. data/app/views/ads/_form.html.haml +21 -0
  93. data/app/views/ads/edit.html.haml +6 -46
  94. data/app/views/ads/index.html.haml +25 -39
  95. data/app/views/ads/new.html.haml +4 -43
  96. data/app/views/ads/show.html.haml +18 -35
  97. data/app/views/albums/_form.html.haml +17 -12
  98. data/app/views/albums/edit.html.haml +12 -14
  99. data/app/views/albums/new.html.haml +8 -13
  100. data/app/views/albums/show.html.haml +25 -32
  101. data/app/views/base/_homepage_banner_message.html.haml +5 -19
  102. data/app/views/base/advertise.html.haml +5 -8
  103. data/app/views/base/site_index.html.haml +25 -27
  104. data/app/views/categories/_form.html.haml +8 -0
  105. data/app/views/categories/_menu_item.html.haml +13 -0
  106. data/app/views/categories/_tips.html.haml +2 -2
  107. data/app/views/categories/edit.html.haml +3 -33
  108. data/app/views/categories/index.html.haml +18 -28
  109. data/app/views/categories/new.html.haml +3 -8
  110. data/app/views/categories/show.html.haml +33 -36
  111. data/app/views/clippings/_clipping.html.haml +10 -17
  112. data/app/views/clippings/_favorite.html.haml +14 -0
  113. data/app/views/clippings/_form.html.haml +15 -0
  114. data/app/views/clippings/_images.html.haml +1 -1
  115. data/app/views/clippings/_menu_item.html.haml +6 -0
  116. data/app/views/clippings/edit.html.haml +12 -23
  117. data/app/views/clippings/index.html.haml +29 -30
  118. data/app/views/clippings/load_images_from_uri.js.erb +1 -0
  119. data/app/views/clippings/new.html.haml +9 -26
  120. data/app/views/clippings/new_clipping.html.haml +30 -77
  121. data/app/views/clippings/show.html.haml +48 -53
  122. data/app/views/clippings/site_index.html.haml +19 -32
  123. data/app/views/comments/_comment.html.haml +40 -40
  124. data/app/views/comments/_comment_form.html.haml +22 -46
  125. data/app/views/comments/_edit_form.html.haml +13 -28
  126. data/app/views/comments/create.js.erb +25 -0
  127. data/app/views/comments/destroy.js.erb +3 -0
  128. data/app/views/comments/edit.js.erb +11 -0
  129. data/app/views/comments/index.html.haml +12 -22
  130. data/app/views/comments/update.js.erb +14 -0
  131. data/app/views/events/_event.html.haml +26 -24
  132. data/app/views/events/_form.html.haml +18 -0
  133. data/app/views/events/_menu_item.html.haml +6 -0
  134. data/app/views/events/_subscribe.html.haml +1 -1
  135. data/app/views/events/edit.html.haml +7 -32
  136. data/app/views/events/index.html.haml +11 -19
  137. data/app/views/events/new.html.haml +2 -31
  138. data/app/views/events/show.html.haml +54 -24
  139. data/app/views/favorites/create.js.erb +10 -0
  140. data/app/views/favorites/destroy.js.erb +6 -0
  141. data/app/views/favorites/index.html.haml +6 -8
  142. data/app/views/forums/_form.html.haml +10 -20
  143. data/app/views/forums/_menu_item.html.haml +6 -0
  144. data/app/views/forums/edit.html.haml +8 -10
  145. data/app/views/forums/index.html.haml +56 -64
  146. data/app/views/forums/new.html.haml +5 -8
  147. data/app/views/forums/show.html.haml +65 -72
  148. data/app/views/friendships/_friendship.html.haml +14 -16
  149. data/app/views/friendships/accepted.html.haml +7 -11
  150. data/app/views/friendships/create.js.haml +1 -0
  151. data/app/views/friendships/denied.html.haml +4 -8
  152. data/app/views/friendships/pending.html.haml +4 -6
  153. data/app/views/friendships/show.html.haml +10 -11
  154. data/app/views/homepage_features/_form.html.haml +6 -0
  155. data/app/views/homepage_features/edit.html.haml +5 -30
  156. data/app/views/homepage_features/index.html.haml +22 -28
  157. data/app/views/homepage_features/new.html.haml +2 -30
  158. data/app/views/homepage_features/show.html.haml +27 -29
  159. data/app/views/invitations/index.html.haml +8 -0
  160. data/app/views/invitations/new.html.haml +21 -30
  161. data/app/views/kaminari/bootstrap/_first_page.html.erb +13 -0
  162. data/app/views/kaminari/bootstrap/_gap.html.erb +8 -0
  163. data/app/views/kaminari/bootstrap/_last_page.html.erb +13 -0
  164. data/app/views/kaminari/bootstrap/_next_page.html.erb +13 -0
  165. data/app/views/kaminari/bootstrap/_page.html.erb +12 -0
  166. data/app/views/kaminari/bootstrap/_paginator.html.erb +25 -0
  167. data/app/views/kaminari/bootstrap/_prev_page.html.erb +13 -0
  168. data/app/views/layouts/application.html.haml +26 -37
  169. data/app/views/messages/_form.html.haml +6 -12
  170. data/app/views/messages/_inbox.html.haml +34 -39
  171. data/app/views/messages/_menu_item.html.haml +11 -0
  172. data/app/views/messages/_sent.html.haml +22 -33
  173. data/app/views/messages/_sidebar_nav.html.haml +12 -9
  174. data/app/views/messages/index.html.haml +2 -2
  175. data/app/views/messages/new.html.haml +2 -9
  176. data/app/views/messages/show.html.haml +28 -36
  177. data/app/views/metro_areas/_form.html.haml +6 -0
  178. data/app/views/metro_areas/edit.html.haml +6 -14
  179. data/app/views/metro_areas/index.html.haml +19 -26
  180. data/app/views/metro_areas/new.html.haml +4 -14
  181. data/app/views/metro_areas/show.html.haml +13 -21
  182. data/app/views/moderators/_toggle.html.haml +6 -0
  183. data/app/views/moderators/create.js.erb +5 -0
  184. data/app/views/moderators/destroy.js.erb +1 -0
  185. data/app/views/monitorships/create.js.erb +1 -0
  186. data/app/views/monitorships/destroy.js.erb +1 -0
  187. data/app/views/pages/_form.html.haml +16 -23
  188. data/app/views/pages/edit.html.haml +2 -14
  189. data/app/views/pages/index.html.haml +32 -32
  190. data/app/views/pages/new.html.haml +5 -12
  191. data/app/views/pages/show.html.haml +4 -8
  192. data/app/views/password_resets/edit.html.haml +6 -14
  193. data/app/views/password_resets/new.html.haml +7 -11
  194. data/app/views/photo_manager/index.html.haml +45 -43
  195. data/app/views/photos/_form.html.haml +24 -0
  196. data/app/views/photos/_manage_photos.html.haml +14 -6
  197. data/app/views/photos/_show_image_list.html.haml +2 -2
  198. data/app/views/photos/create.js.erb +1 -0
  199. data/app/views/photos/edit.html.haml +10 -38
  200. data/app/views/photos/index.html.haml +20 -20
  201. data/app/views/photos/manage_photos.js.erb +5 -0
  202. data/app/views/photos/new.html.haml +11 -49
  203. data/app/views/photos/recent.html.haml +6 -6
  204. data/app/views/photos/show.html.haml +48 -52
  205. data/app/views/polls/_edit.html.haml +6 -10
  206. data/app/views/polls/_excerpt.html.haml +3 -4
  207. data/app/views/polls/_new.html.haml +10 -9
  208. data/app/views/polls/_poll_ui.html.haml +30 -34
  209. data/app/views/posts/_author_profile.html.haml +12 -11
  210. data/app/views/posts/_favorited_post.html.haml +8 -10
  211. data/app/views/posts/_form.html.haml +40 -0
  212. data/app/views/posts/_menu_item.html.haml +6 -0
  213. data/app/views/posts/_post.html.haml +27 -24
  214. data/app/views/posts/_send_to_friend.html.haml +26 -0
  215. data/app/views/posts/edit.html.haml +11 -48
  216. data/app/views/posts/featured.html.haml +7 -12
  217. data/app/views/posts/index.html.haml +14 -18
  218. data/app/views/posts/manage.html.haml +44 -59
  219. data/app/views/posts/new.html.haml +9 -64
  220. data/app/views/posts/popular.html.haml +25 -30
  221. data/app/views/posts/preview.html.haml +27 -26
  222. data/app/views/posts/recent.html.haml +20 -27
  223. data/app/views/posts/send_to_friend.js.erb +3 -0
  224. data/app/views/posts/show.html.haml +67 -76
  225. data/app/views/rsvps/_form.html.haml +3 -0
  226. data/app/views/rsvps/edit.html.haml +3 -9
  227. data/app/views/rsvps/new.html.haml +3 -9
  228. data/app/views/sb_posts/_dummy_forum_post.html.haml +13 -0
  229. data/app/views/sb_posts/_edit.html.haml +6 -0
  230. data/app/views/sb_posts/_edit_script.js.erb +14 -0
  231. data/app/views/sb_posts/_reply_form.html.haml +14 -35
  232. data/app/views/sb_posts/_reply_script.js.erb +13 -0
  233. data/app/views/sb_posts/_sb_post.html.haml +31 -33
  234. data/app/views/sb_posts/create.js.erb +30 -0
  235. data/app/views/sb_posts/destroy.js.erb +2 -0
  236. data/app/views/sb_posts/edit.html.erb +4 -4
  237. data/app/views/sb_posts/edit.js.erb +14 -0
  238. data/app/views/sb_posts/index.html.haml +3 -16
  239. data/app/views/sb_posts/monitored.html.erb +3 -9
  240. data/app/views/sb_posts/update.js.erb +11 -0
  241. data/app/views/sessions/_menu_item.html.haml +28 -0
  242. data/app/views/sessions/new.html.haml +19 -24
  243. data/app/views/shared/_add_friend_link.html.haml +9 -0
  244. data/app/views/shared/_admin_nav.html.haml +6 -8
  245. data/app/views/shared/_contact.html.haml +1 -1
  246. data/app/views/shared/_end_javascript.html.haml +4 -4
  247. data/app/views/shared/_explore.html.haml +7 -6
  248. data/app/views/shared/_footer_content.html.haml +12 -10
  249. data/app/views/shared/_footer_links.html.haml +18 -0
  250. data/app/views/shared/_friend_link.html.haml +25 -0
  251. data/app/views/shared/_header.html.haml +22 -42
  252. data/app/views/shared/_jumbotron.html.haml +3 -0
  253. data/app/views/shared/_load_tinymce.js.erb +15 -0
  254. data/app/views/shared/_location_chooser.html.haml +26 -17
  255. data/app/views/shared/_login_sidebar.html.haml +6 -5
  256. data/app/views/shared/_messages.html.haml +6 -8
  257. data/app/views/shared/_scripts_and_styles.html.haml +1 -2
  258. data/app/views/shared/_sidebar.html.haml +1 -0
  259. data/app/views/shared/_tag_auto_complete.html.haml +19 -0
  260. data/app/views/shared/_widget.html.haml +3 -0
  261. data/app/views/sitemap/index.html.haml +15 -20
  262. data/app/views/statistics/index.html.haml +32 -40
  263. data/app/views/tags/edit.html.haml +12 -19
  264. data/app/views/tags/index.html.haml +16 -25
  265. data/app/views/tags/manage.html.haml +24 -33
  266. data/app/views/tags/show.html.haml +52 -58
  267. data/app/views/topics/_form.html.haml +23 -25
  268. data/app/views/topics/_recent_topics_sidebar.haml +1 -1
  269. data/app/views/topics/edit.html.haml +7 -9
  270. data/app/views/topics/new.html.haml +6 -21
  271. data/app/views/topics/show.html.haml +48 -106
  272. data/app/views/user_notifier/follow_up_comment_notice.text.erb +1 -1
  273. data/app/views/user_notifier/message_notification.text.erb +1 -1
  274. data/app/views/user_notifier/new_forum_post_notice.text.erb +1 -1
  275. data/app/views/users/_dashboard_nav.html.haml +36 -39
  276. data/app/views/users/_menu_item.html.haml +6 -0
  277. data/app/views/users/_omniauth_connect.html.haml +4 -4
  278. data/app/views/users/_profile_completeness.html.haml +3 -3
  279. data/app/views/users/_profile_user_info_sidebar.html.haml +40 -43
  280. data/app/views/users/_search_options.html.haml +9 -7
  281. data/app/views/users/_sidebar_user.html.haml +1 -1
  282. data/app/views/users/_user.html.haml +27 -28
  283. data/app/views/users/crop_profile_photo.html.haml +30 -37
  284. data/app/views/users/dashboard.html.haml +37 -41
  285. data/app/views/users/edit.html.haml +53 -71
  286. data/app/views/users/edit_account.html.haml +44 -64
  287. data/app/views/users/forgot_username.html.haml +6 -12
  288. data/app/views/users/index.html.haml +4 -14
  289. data/app/views/users/invite.html.haml +14 -25
  290. data/app/views/users/new.html.haml +27 -48
  291. data/app/views/users/resend_activation.html.haml +7 -12
  292. data/app/views/users/show.html.haml +88 -90
  293. data/app/views/users/signup_completed.html.haml +7 -7
  294. data/app/views/users/statistics.html.haml +17 -18
  295. data/app/views/users/update.js.erb +1 -0
  296. data/app/views/users/upload_profile_photo.html.haml +10 -15
  297. data/app/views/users/welcome_about.html.haml +54 -61
  298. data/app/views/users/welcome_invite.html.haml +16 -25
  299. data/app/views/users/welcome_photo.html.haml +18 -27
  300. data/app/views/votes/create.js.erb +5 -0
  301. data/community_engine.gemspec +49 -41
  302. data/config/application_config.rb +13 -16
  303. data/config/initializers/mce_options.rb +9 -32
  304. data/config/initializers/recaptcha_constants.rb +2 -2
  305. data/config/locales/de-DE.yml +1 -17
  306. data/config/locales/en.yml +18 -32
  307. data/config/locales/es-AR.yml +2 -14
  308. data/config/locales/es-ES.yml +0 -6
  309. data/config/locales/es-MX.yml +1 -9
  310. data/config/locales/fr-FR.yml +3 -17
  311. data/config/locales/ja-JP.yml +2 -18
  312. data/config/locales/ru-RU.yml +3 -21
  313. data/config/locales/sr-CP.yml +0 -4
  314. data/config/locales/sv-SE.yml +3 -20
  315. data/config/routes.rb +37 -42
  316. data/db/migrate/016_add_metro_areas.rb +2 -2
  317. data/db/migrate/039_create_activities_table.rb +2 -2
  318. data/db/migrate/056_create_roles.rb +8 -6
  319. data/db/migrate/069_create_pages.rb +3 -3
  320. data/db/migrate/081_upgrade_to_friendly_id_5x.rb +25 -0
  321. data/db/migrate/082_upgrade_to_acts_as_commentable_4x.rb +29 -0
  322. data/lib/activity_tracker.rb +3 -0
  323. data/{vendor/plugins/activity_tracker/lib → lib/activity_tracker}/activity.rb +6 -6
  324. data/{vendor/plugins/activity_tracker/lib → lib/activity_tracker}/activity_tracker.rb +0 -0
  325. data/{vendor/plugins/acts_as_publishable/init.rb → lib/acts_as_publishable.rb} +1 -1
  326. data/{vendor/plugins/acts_as_publishable/lib → lib/acts_as_publishable}/acts_as_publishable.rb +3 -3
  327. data/lib/community_engine.rb +31 -9
  328. data/lib/community_engine/engine.rb +17 -1
  329. data/lib/community_engine/engines_extensions.rb +1 -3
  330. data/lib/community_engine/version.rb +3 -3
  331. data/{config/initializers → lib/paperclip_processors}/cropper.rb +3 -3
  332. data/lib/resource_feeder.rb +3 -0
  333. data/{vendor/plugins/resource_feeder/lib → lib}/resource_feeder/atom.rb +0 -0
  334. data/{vendor/plugins/resource_feeder/lib → lib}/resource_feeder/rss.rb +0 -0
  335. data/{vendor/plugins/white_list/init.rb → lib/white_list.rb} +1 -1
  336. data/{vendor/plugins/white_list/lib → lib/white_list}/white_list_helper.rb +0 -0
  337. data/test/fixtures/messages.yml +2 -2
  338. data/test/functional/admin_controller_test.rb +11 -11
  339. data/test/functional/ads_controller_test.rb +11 -11
  340. data/test/functional/albums_controller_test.rb +4 -4
  341. data/test/functional/categories_controller_test.rb +4 -4
  342. data/test/functional/clippings_controller_test.rb +4 -4
  343. data/test/functional/comments_controller_test.rb +20 -16
  344. data/test/functional/events_controller_test.rb +6 -6
  345. data/test/functional/forums_controller_test.rb +8 -8
  346. data/test/functional/friendships_controller_test.rb +13 -18
  347. data/test/functional/homepage_features_controller_test.rb +5 -5
  348. data/test/functional/messages_controller_test.rb +6 -2
  349. data/test/functional/metro_areas_controller_test.rb +7 -7
  350. data/test/functional/moderators_controller_test.rb +1 -1
  351. data/test/functional/pages_controller_test.rb +2 -2
  352. data/test/functional/password_reset_controller_test.rb +2 -2
  353. data/test/functional/photos_controller_test.rb +16 -15
  354. data/test/functional/posts_controller_test.rb +4 -4
  355. data/test/functional/rsvps_controller_test.rb +6 -6
  356. data/test/functional/sb_posts_controller_test.rb +53 -50
  357. data/test/functional/sessions_controller_test.rb +4 -1
  358. data/test/functional/tags_controller_test.rb +1 -1
  359. data/test/functional/topics_controller_test.rb +10 -10
  360. data/test/functional/users_controller_test.rb +32 -19
  361. data/test/functional/votes_controller_test.rb +1 -1
  362. data/test/test_helper.rb +3 -1
  363. data/test/testapp/config/application.rb +1 -9
  364. data/test/testapp/config/environments/development.rb +1 -2
  365. data/test/testapp/config/environments/production.rb +2 -0
  366. data/test/testapp/config/environments/test.rb +1 -2
  367. data/test/testapp/config/initializers/omniauth.rb +3 -3
  368. data/test/testapp/config/initializers/secret_token.rb +1 -0
  369. data/test/testapp/db/schema.rb +143 -152
  370. data/test/unit/category_test.rb +2 -2
  371. data/test/unit/comment_test.rb +64 -53
  372. data/test/unit/event_test.rb +4 -4
  373. data/test/unit/forum_test.rb +1 -1
  374. data/test/unit/message_test.rb +7 -1
  375. data/test/unit/page_test.rb +2 -2
  376. data/test/unit/post_test.rb +47 -47
  377. data/test/unit/sb_post_test.rb +24 -20
  378. data/test/unit/topic_test.rb +7 -6
  379. data/test/unit/user_test.rb +75 -52
  380. data/vendor/assets/javascripts/.gitkeep +0 -0
  381. data/vendor/assets/javascripts/jcrop/jquery.Jcrop.js +1699 -0
  382. data/vendor/assets/javascripts/jcrop/jquery.color.js +661 -0
  383. data/vendor/assets/javascripts/tag-it/tag-it.js +597 -0
  384. data/vendor/assets/stylesheets/.gitkeep +0 -0
  385. data/vendor/assets/stylesheets/jcrop/Jcrop.gif +0 -0
  386. data/vendor/assets/stylesheets/jcrop/jquery.Jcrop.min.css +28 -0
  387. data/vendor/assets/stylesheets/tag-it/tag-it.css +69 -0
  388. data/vendor/assets/stylesheets/tag-it/tagit.ui-zendesk.css +107 -0
  389. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/README +0 -0
  390. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/Rakefile +0 -0
  391. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/generators/publishing/publishing_generator.rb +0 -0
  392. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/generators/publishing/templates/migration.rb +0 -0
  393. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/install.rb +0 -0
  394. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/test/acts_as_publishable_test.rb +0 -0
  395. data/vendor/{plugins/activity_tracker → converted2.3plugins_to_lib_leftovers/acts_as_publishable}/uninstall.rb +0 -0
  396. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/README +0 -0
  397. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/Rakefile +0 -0
  398. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/test/atom_feed_test.rb +0 -0
  399. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/test/rss_feed_test.rb +0 -0
  400. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/test/test_helper.rb +0 -0
  401. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/white_list/README +0 -0
  402. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/white_list/Rakefile +0 -0
  403. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/white_list/test/white_list_test.rb +0 -0
  404. metadata +348 -302
  405. data/app/assets/images/bg_h6btn.gif +0 -0
  406. data/app/assets/images/bg_navbar.gif +0 -0
  407. data/app/assets/images/clearbits/bg_rounded.gif +0 -0
  408. data/app/assets/images/clearbits/comment.gif +0 -0
  409. data/app/assets/images/clearbits/lock.gif +0 -0
  410. data/app/assets/images/clearbits/smile.gif +0 -0
  411. data/app/assets/images/close.gif +0 -0
  412. data/app/assets/images/cropper/marqueeHoriz.gif +0 -0
  413. data/app/assets/images/cropper/marqueeVert.gif +0 -0
  414. data/app/assets/images/feed.png +0 -0
  415. data/app/assets/images/icons/31.png +0 -0
  416. data/app/assets/images/icons/52.png +0 -0
  417. data/app/assets/images/icons/accept.png +0 -0
  418. data/app/assets/images/icons/activity_default.png +0 -0
  419. data/app/assets/images/icons/add.png +0 -0
  420. data/app/assets/images/icons/book.png +0 -0
  421. data/app/assets/images/icons/bullet_arrow_down.png +0 -0
  422. data/app/assets/images/icons/bullet_arrow_down_50.png +0 -0
  423. data/app/assets/images/icons/clipping.png +0 -0
  424. data/app/assets/images/icons/comment.png +0 -0
  425. data/app/assets/images/icons/comments.png +0 -0
  426. data/app/assets/images/icons/date.png +0 -0
  427. data/app/assets/images/icons/delete.png +0 -0
  428. data/app/assets/images/icons/email.png +0 -0
  429. data/app/assets/images/icons/email_edit.png +0 -0
  430. data/app/assets/images/icons/email_go.png +0 -0
  431. data/app/assets/images/icons/email_open.png +0 -0
  432. data/app/assets/images/icons/group_go.png +0 -0
  433. data/app/assets/images/icons/heart.png +0 -0
  434. data/app/assets/images/icons/heart_add.png +0 -0
  435. data/app/assets/images/icons/heart_off.png +0 -0
  436. data/app/assets/images/icons/page_white.png +0 -0
  437. data/app/assets/images/icons/page_white_magnify.png +0 -0
  438. data/app/assets/images/icons/picture.png +0 -0
  439. data/app/assets/images/icons/poll.png +0 -0
  440. data/app/assets/images/icons/post.png +0 -0
  441. data/app/assets/images/icons/printer.png +0 -0
  442. data/app/assets/images/icons/rss.png +0 -0
  443. data/app/assets/images/icons/slides.png +0 -0
  444. data/app/assets/images/icons/tag_blue.png +0 -0
  445. data/app/assets/images/icons/user.png +0 -0
  446. data/app/assets/images/icons/user_add.png +0 -0
  447. data/app/assets/images/icons/user_edit.png +0 -0
  448. data/app/assets/images/icons/user_go.png +0 -0
  449. data/app/assets/images/icons/vote.png +0 -0
  450. data/app/assets/images/icons/world.png +0 -0
  451. data/app/assets/images/icons/wrench.png +0 -0
  452. data/app/assets/images/logo.gif +0 -0
  453. data/app/assets/images/reply_background.png +0 -0
  454. data/app/assets/images/search.gif +0 -0
  455. data/app/assets/images/thumb.gif +0 -0
  456. data/app/assets/javascripts/builder.js +0 -136
  457. data/app/assets/javascripts/calendarview.js +0 -839
  458. data/app/assets/javascripts/lightbox.js +0 -151
  459. data/app/assets/javascripts/prototip-min.js +0 -27
  460. data/app/assets/javascripts/rails.js +0 -202
  461. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/css/advimage.css +0 -84
  462. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/editor_plugin.js +0 -52
  463. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/editor_plugin_src.js +0 -45
  464. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/image.htm +0 -180
  465. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/img/sample.gif +0 -0
  466. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/js/functions.js +0 -508
  467. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/langs/en.js +0 -3
  468. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/langs/en_dlg.js +0 -43
  469. data/app/assets/javascripts/tinymce/plugins/tinyautosave/editor_plugin.js +0 -8
  470. data/app/assets/javascripts/tinymce/plugins/tinyautosave/editor_plugin_src.js +0 -1001
  471. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress.gif +0 -0
  472. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress10.gif +0 -0
  473. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress11.gif +0 -0
  474. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress12.gif +0 -0
  475. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress2.gif +0 -0
  476. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress3.gif +0 -0
  477. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress4.gif +0 -0
  478. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress5.gif +0 -0
  479. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress6.gif +0 -0
  480. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress7.gif +0 -0
  481. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress8.gif +0 -0
  482. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress9.gif +0 -0
  483. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/restore.gif +0 -0
  484. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/restore.png +0 -0
  485. data/app/assets/javascripts/tinymce/plugins/tinyautosave/langs/da.js +0 -5
  486. data/app/assets/javascripts/tinymce/plugins/tinyautosave/langs/en.js +0 -5
  487. data/app/assets/stylesheets/community_engine.css +0 -6
  488. data/app/assets/stylesheets/forum.css +0 -605
  489. data/app/assets/stylesheets/prototip.css +0 -73
  490. data/app/assets/stylesheets/reset-fonts-grids.css +0 -8
  491. data/app/assets/stylesheets/screen.css +0 -977
  492. data/app/helpers/monitorships_helper.rb +0 -2
  493. data/app/views/activities/_icon.html.haml +0 -14
  494. data/app/views/activities/destroy.js.rjs +0 -1
  495. data/app/views/clippings/_meta.html.haml +0 -26
  496. data/app/views/clippings/load_images_from_uri.js.rjs +0 -1
  497. data/app/views/comments/create.js.rjs +0 -20
  498. data/app/views/comments/edit.js.rjs +0 -7
  499. data/app/views/comments/update.js.rjs +0 -9
  500. data/app/views/favorites/create.js.rjs +0 -17
  501. data/app/views/favorites/destroy.js.rjs +0 -14
  502. data/app/views/favorites/show.html.haml +0 -13
  503. data/app/views/friendships/_friendships.html.erb +0 -14
  504. data/app/views/friendships/index.html.erb +0 -3
  505. data/app/views/friendships/index.xml.builder +0 -29
  506. data/app/views/invitations/index.html.erb +0 -16
  507. data/app/views/moderators/_toggle.html.erb +0 -14
  508. data/app/views/moderators/create.js.rjs +0 -5
  509. data/app/views/moderators/destroy.js.rjs +0 -1
  510. data/app/views/monitorships/create.js.rjs +0 -4
  511. data/app/views/monitorships/destroy.js.rjs +0 -4
  512. data/app/views/photos/manage_photos.js.rjs +0 -5
  513. data/app/views/polls/_polls_sidebar.html.haml +0 -8
  514. data/app/views/posts/_send_to_friend.html.erb +0 -29
  515. data/app/views/sb_posts/_dummy_forum_post.html.erb +0 -13
  516. data/app/views/sb_posts/_edit.html.erb +0 -31
  517. data/app/views/sb_posts/create.js.rjs +0 -16
  518. data/app/views/sb_posts/edit.js.rjs +0 -6
  519. data/app/views/sb_posts/update.js.rjs +0 -5
  520. data/app/views/shared/_user_menu.html.haml +0 -21
  521. data/app/views/votes/create.js.rjs +0 -6
  522. data/db/migrate/090_add_comment_role.rb +0 -15
  523. data/vendor/plugins/activity_tracker/README +0 -4
  524. data/vendor/plugins/activity_tracker/Rakefile +0 -22
  525. data/vendor/plugins/activity_tracker/generators/activity_migration/USAGE +0 -13
  526. data/vendor/plugins/activity_tracker/generators/activity_migration/activity_migration_generator.rb +0 -11
  527. data/vendor/plugins/activity_tracker/generators/activity_migration/templates/migration.rb +0 -17
  528. data/vendor/plugins/activity_tracker/init.rb +0 -1
  529. data/vendor/plugins/activity_tracker/install.rb +0 -1
  530. data/vendor/plugins/activity_tracker/tasks/activity_tracker_tasks.rake +0 -4
  531. data/vendor/plugins/activity_tracker/test/abstract_unit.rb +0 -47
  532. data/vendor/plugins/activity_tracker/test/activity_tracker_test.rb +0 -48
  533. data/vendor/plugins/activity_tracker/test/database.yml +0 -18
  534. data/vendor/plugins/activity_tracker/test/debug.log +0 -3329
  535. data/vendor/plugins/activity_tracker/test/fixtures/test_post.rb +0 -5
  536. data/vendor/plugins/activity_tracker/test/fixtures/test_posts.yml +0 -3
  537. data/vendor/plugins/activity_tracker/test/fixtures/test_user.rb +0 -4
  538. data/vendor/plugins/activity_tracker/test/fixtures/test_users.yml +0 -6
  539. data/vendor/plugins/activity_tracker/test/schema.rb +0 -21
  540. data/vendor/plugins/acts_as_list/README +0 -23
  541. data/vendor/plugins/acts_as_list/init.rb +0 -3
  542. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +0 -256
  543. data/vendor/plugins/acts_as_list/test/list_test.rb +0 -332
  544. data/vendor/plugins/acts_as_publishable/uninstall.rb +0 -1
  545. data/vendor/plugins/auto_complete/README +0 -23
  546. data/vendor/plugins/auto_complete/Rakefile +0 -22
  547. data/vendor/plugins/auto_complete/init.rb +0 -2
  548. data/vendor/plugins/auto_complete/lib/auto_complete.rb +0 -47
  549. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +0 -143
  550. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +0 -67
  551. data/vendor/plugins/enumerations_mixin/.gitignore +0 -1
  552. data/vendor/plugins/enumerations_mixin/Gemfile +0 -1
  553. data/vendor/plugins/enumerations_mixin/LICENSE +0 -20
  554. data/vendor/plugins/enumerations_mixin/README.md +0 -120
  555. data/vendor/plugins/enumerations_mixin/README_ENUMERATIONS +0 -163
  556. data/vendor/plugins/enumerations_mixin/Rakefile +0 -14
  557. data/vendor/plugins/enumerations_mixin/VERSION +0 -1
  558. data/vendor/plugins/enumerations_mixin/enumerations_mixin.gemspec +0 -44
  559. data/vendor/plugins/enumerations_mixin/examples/virtual_enumerations_sample.rb +0 -76
  560. data/vendor/plugins/enumerations_mixin/init.rb +0 -21
  561. data/vendor/plugins/enumerations_mixin/lib/active_record/acts/enumerated.rb +0 -180
  562. data/vendor/plugins/enumerations_mixin/lib/active_record/aggregations/has_enumerated.rb +0 -60
  563. data/vendor/plugins/enumerations_mixin/lib/active_record/virtual_enumerations.rb +0 -68
  564. data/vendor/plugins/enumerations_mixin/lib/enumerations_mixin.rb +0 -12
  565. data/vendor/plugins/enumerations_mixin/virtual_enumerations_sample.rb +0 -76
  566. data/vendor/plugins/prototype_legacy_helper/README.markdown +0 -13
  567. data/vendor/plugins/prototype_legacy_helper/init.rb +0 -1
  568. data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +0 -432
  569. data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +0 -297
  570. data/vendor/plugins/resource_feeder/init.rb +0 -2
  571. data/vendor/plugins/resource_feeder/lib/resource_feeder.rb +0 -2
  572. data/vendor/plugins/respond_to_parent/MIT-LICENSE +0 -20
  573. data/vendor/plugins/respond_to_parent/README +0 -47
  574. data/vendor/plugins/respond_to_parent/Rakefile +0 -22
  575. data/vendor/plugins/respond_to_parent/init.rb +0 -1
  576. data/vendor/plugins/respond_to_parent/install.rb +0 -1
  577. data/vendor/plugins/respond_to_parent/lib/responds_to_parent.rb +0 -70
  578. data/vendor/plugins/respond_to_parent/test/responds_to_parent_test.rb +0 -10
  579. data/vendor/plugins/respond_to_parent/test/test_helper.rb +0 -6
  580. data/vendor/plugins/respond_to_parent/uninstall.rb +0 -1
@@ -22,11 +22,12 @@ class SessionsController < BaseController
22
22
  redirect_back_or_default(dashboard_user_path(current_user))
23
23
  else
24
24
  flash[:notice] = :uh_oh_we_couldnt_log_you_in_with_the_username_and_password_you_entered_try_again.l
25
- render :action => :new
25
+ render :action => :new, :email => params[:email]
26
26
  end
27
27
  end
28
28
 
29
29
  def destroy
30
+ redirect_to new_session_path and return if current_user_session.nil?
30
31
  current_user_session.destroy
31
32
  reset_session
32
33
  flash[:notice] = :youve_been_logged_out_hope_you_come_back_soon.l
@@ -3,19 +3,19 @@ class SitemapController < BaseController
3
3
  caches_action :index
4
4
 
5
5
  def index
6
- @users = User.active.select('id, login, updated_at, login_slug')
7
- @posts = Post.select('posts.id, posts.user_id, posts.published_as, posts.published_at, users.id, users.login_slug').joins(:user) #"LEFT JOIN users ON users.id = posts.user_id")
6
+ @users = User.active.select('id', 'login', 'updated_at', 'login_slug')
7
+ @posts = Post.select('posts.id', 'posts.user_id', 'posts.published_as', 'posts.published_at', 'users.id', 'users.login_slug').joins(:user) #"LEFT JOIN users ON users.id = posts.user_id")
8
+
9
+ @categories = Category.all
8
10
 
9
- @categories = Category.find(:all)
10
-
11
11
  respond_to do |format|
12
12
  format.html {
13
13
  render :layout => 'application'
14
14
  }
15
- format.xml
15
+ format.xml
16
16
  end
17
17
  end
18
-
19
-
20
-
18
+
19
+
20
+
21
21
  end
@@ -3,25 +3,26 @@ class StatisticsController < BaseController
3
3
  before_filter :admin_required
4
4
 
5
5
  def index
6
- @total_users = User.count(:conditions => ['activated_at IS NOT NULL'])
7
- @unactivated_users = User.count(:conditions => ['activated_at IS NULL'])
6
+ @total_users = User.where('activated_at IS NOT NULL').count
7
+ @unactivated_users = User.where('activated_at IS NULL').count
8
8
 
9
9
  @yesterday_new_users = find_new_users(1.day.ago.midnight, Date.today.midnight)
10
10
  @today_new_users = find_new_users(Date.today.midnight, Date.today.tomorrow.midnight)
11
11
 
12
- @active_users_count = Activity.count(:all, :group => "user_id", :conditions => ["created_at > ?", 1.month.ago]).size
12
+ # Query returns a hash of user_id to number of activities for that user.
13
+ @active_users_count = Activity.group("user_id").having("count(created_at > ?) > 0", 1.month.ago).count.keys.size
13
14
 
14
15
  @active_users = User.find_by_activity({:since => 1.month.ago})
15
16
 
16
- @percent_reporting_zip = (User.count(:all, :conditions => "zip IS NOT NULL") / @total_users.to_f)*100
17
+ @percent_reporting_zip = (User.where("zip IS NOT NULL").count / @total_users.to_f)*100
17
18
 
18
- users_reporting_gender = User.count(:all, :conditions => "gender IS NOT NULL")
19
- @percent_male = (User.count(:all, :conditions => ['gender = ?', User::MALE ]) / users_reporting_gender.to_f) * 100
20
- @percent_female = (User.count(:all, :conditions => ['gender = ?', User::FEMALE] ) / users_reporting_gender.to_f) * 100
19
+ users_reporting_gender = User.where("gender IS NOT NULL").count
20
+ @percent_male = (User.where('gender = ?', User::MALE).count / users_reporting_gender.to_f) * 100
21
+ @percent_female = (User.where('gender = ?', User::FEMALE).count / users_reporting_gender.to_f) * 100
21
22
 
22
23
  @featured_writers = User.find_featured
23
24
 
24
- @posts = Post.find(:all, :conditions => ['? <= posts.published_at AND posts.published_at <= ? AND users.featured_writer = ?', Time.now.beginning_of_month, (Time.now.end_of_month + 1.day), true], :include => :user)
25
+ @posts = Post.includes(:user).where('? <= posts.published_at AND posts.published_at <= ? AND users.featured_writer = ?', Time.now.beginning_of_month, (Time.now.end_of_month + 1.day), true).includes(:users)
25
26
  end
26
27
 
27
28
 
@@ -1,36 +1,38 @@
1
1
  class TagsController < BaseController
2
2
  before_filter :login_required, :only => [:manage, :edit, :update, :destroy]
3
3
  before_filter :admin_required, :only => [:manage, :edit, :update, :destroy]
4
- skip_before_filter :verify_authenticity_token, :only => 'auto_complete_for_tag_name'
4
+ skip_before_filter :verify_authenticity_token, :only => [:auto_complete_for_tag_name]
5
5
 
6
6
  caches_action :show, :cache_path => Proc.new { |controller| controller.send(:tag_url, controller.params[:id]) }, :if => Proc.new{|c| c.cache_action? }
7
7
  def cache_action?
8
8
  !logged_in? && params[:type].blank?
9
- end
9
+ end
10
10
 
11
11
  def auto_complete_for_tag_name
12
- @tags = ActsAsTaggableOn::Tag.find(:all, :limit => 10, :conditions => [ 'LOWER(name) LIKE ?', '%' + (params[:id] || params[:tag_list]) + '%' ])
13
- render :inline => "<%= auto_complete_result(@tags, 'name') %>"
12
+ @tag_names = ActsAsTaggableOn::Tag.pluck(:name)
13
+ respond_to do |format|
14
+ format.json {render :inline => @tag_names.to_json}
15
+ end
14
16
  end
15
-
16
- def index
17
- @tags = popular_tags(100)
18
17
 
19
- @user_tags = popular_tags(75, 'User')
20
-
21
- @post_tags = popular_tags(75, 'Post')
18
+ def index
19
+ @tags = popular_tags(100).to_a
20
+
21
+ @user_tags = popular_tags(75, 'User').to_a
22
+
23
+ @post_tags = popular_tags(75, 'Post').to_a
22
24
 
23
- @photo_tags = popular_tags(75, 'Photo')
25
+ @photo_tags = popular_tags(75, 'Photo').to_a
24
26
 
25
- @clipping_tags = popular_tags(75, 'Clipping')
27
+ @clipping_tags = popular_tags(75, 'Clipping').to_a
26
28
  end
27
-
28
- def manage
29
- @search = ActsAsTaggableOn::Tag.search(params[:search])
30
- @search.meta_sort ||= 'name.asc'
31
- @tags = @search.page(params[:page]).per(100)
29
+
30
+ def manage
31
+ @search = ActsAsTaggableOn::Tag.search(params[:q])
32
+ @tags = @search.result
33
+ @tags = @tags.order('name ASC').distinct.page(params[:page]).per(100)
32
34
  end
33
-
35
+
34
36
 
35
37
  def edit
36
38
  @tag = ActsAsTaggableOn::Tag.find_by_name(URI::decode(params[:id]))
@@ -38,7 +40,7 @@ class TagsController < BaseController
38
40
 
39
41
  def update
40
42
  @tag = ActsAsTaggableOn::Tag.find_by_name(URI::decode(params[:id]))
41
-
43
+
42
44
  respond_to do |format|
43
45
  if @tag.update_attributes(params[:tag])
44
46
  flash[:notice] = :tag_was_successfully_updated.l
@@ -46,7 +48,7 @@ class TagsController < BaseController
46
48
  format.xml { render :nothing => true }
47
49
  else
48
50
  format.html { render :action => "edit" }
49
- format.xml { render :xml => @tag.errors.to_xml }
51
+ format.xml { render :xml => @tag.errors.to_xml }
50
52
  end
51
53
  end
52
54
  end
@@ -54,9 +56,9 @@ class TagsController < BaseController
54
56
  def destroy
55
57
  @tag = ActsAsTaggableOn::Tag.find_by_name(URI::decode(params[:id]))
56
58
  @tag.destroy
57
-
59
+
58
60
  respond_to do |format|
59
- format.html {
61
+ format.html {
60
62
  flash[:notice] = :tag_was_successfully_deleted.l
61
63
  redirect_to admin_tags_url
62
64
  }
@@ -66,8 +68,8 @@ class TagsController < BaseController
66
68
 
67
69
  def show
68
70
  tag_array = ActsAsTaggableOn::TagList.from( URI::decode(params[:id]) )
69
-
70
- @tags = ActsAsTaggableOn::Tag.find(:all, :conditions => [ 'name IN (?)', tag_array ] )
71
+
72
+ @tags = ActsAsTaggableOn::Tag.where('name IN (?)', tag_array)
71
73
  if @tags.nil? || @tags.empty?
72
74
  flash[:notice] = :tag_does_not_exists.l_with_args(:tag => tag_array)
73
75
  redirect_to :action => :index and return
@@ -11,14 +11,14 @@ class TopicsController < BaseController
11
11
  respond_to do |format|
12
12
  format.html { redirect_to forum_path(params[:forum_id]) }
13
13
  format.xml do
14
- @topics = @forum.topics.find(:all, :order => 'sticky desc, replied_at desc', :limit => 25)
14
+ @topics = @forum.topics.order('sticky desc, replied_at desc').limit(25)
15
15
  render :xml => @topics.to_xml
16
16
  end
17
17
  end
18
18
  end
19
19
 
20
20
  def new
21
- @topic = Topic.new(params[:topic])
21
+ @topic = Topic.new
22
22
  @topic.sb_posts.build
23
23
  end
24
24
 
@@ -48,7 +48,7 @@ class TopicsController < BaseController
48
48
  end
49
49
 
50
50
  def create
51
- @topic = @forum.topics.new(params[:topic])
51
+ @topic = @forum.topics.new(topic_params)
52
52
  assign_protected
53
53
 
54
54
  @post = @topic.sb_posts.first
@@ -79,7 +79,7 @@ class TopicsController < BaseController
79
79
  def update
80
80
  assign_protected
81
81
  @topic.tag_list = params[:tag_list] || ''
82
- @topic.update_attributes!(params[:topic])
82
+ @topic.update_attributes!(topic_params)
83
83
  respond_to do |format|
84
84
  format.html { redirect_to forum_topic_path(@forum, @topic) }
85
85
  format.xml { head 200 }
@@ -103,10 +103,10 @@ class TopicsController < BaseController
103
103
 
104
104
  # admins and moderators can sticky and lock topics
105
105
  return unless admin? or current_user.moderator_of?(@topic.forum)
106
- @topic.sticky, @topic.locked = params[:topic][:sticky], params[:topic][:locked]
106
+ @topic.sticky, @topic.locked = topic_params[:sticky], topic_params[:locked]
107
107
  # only admins can move
108
108
  return unless admin?
109
- @topic.forum_id = params[:topic][:forum_id] if params[:topic][:forum_id]
109
+ @topic.forum_id = topic_params[:forum_id] if topic_params[:forum_id]
110
110
  end
111
111
 
112
112
  def find_forum_and_topic
@@ -118,4 +118,8 @@ class TopicsController < BaseController
118
118
  def authorized?
119
119
  %w(new create).include?(action_name) || @topic.editable_by?(current_user)
120
120
  end
121
+
122
+ def topic_params
123
+ params[:topic].permit(:title, :sticky, :locked, {:sb_posts_attributes => [:body]}, :forum_id)
124
+ end
121
125
  end
@@ -65,31 +65,31 @@ class UsersController < BaseController
65
65
 
66
66
  def show
67
67
  @friend_count = @user.accepted_friendships.count
68
- @accepted_friendships = @user.accepted_friendships.find(:all, :limit => 5).collect{|f| f.friend }
68
+ @accepted_friendships = @user.accepted_friendships.limit(5).to_a.collect{|f| f.friend }
69
69
  @pending_friendships_count = @user.pending_friendships.count()
70
70
 
71
- @comments = @user.comments.find(:all, :limit => 10, :order => 'created_at DESC')
71
+ @comments = @user.comments.limit(10).order('created_at DESC')
72
72
  @photo_comments = Comment.find_photo_comments_for(@user)
73
73
  @users_comments = Comment.find_comments_by_user(@user).limit(5)
74
74
 
75
- @recent_posts = @user.posts.recent.find(:all, :limit => 2)
76
- @clippings = @user.clippings.find(:all, :limit => 5)
77
- @photos = @user.photos.find(:all, :limit => 5)
78
- @comment = Comment.new(params[:comment])
75
+ @recent_posts = @user.posts.recent.limit(2)
76
+ @clippings = @user.clippings.limit(5)
77
+ @photos = @user.photos.limit(5)
78
+ @comment = Comment.new
79
79
 
80
- @my_activity = Activity.recent.by_users([@user.id]).find(:all, :limit => 10)
80
+ @my_activity = Activity.recent.by_users([@user.id]).limit(10)
81
81
 
82
82
  update_view_count(@user) unless current_user && current_user.eql?(@user)
83
83
  end
84
84
 
85
85
  def new
86
- @user = User.new( {:birthday => Date.parse((Time.now - 25.years).to_s) }.merge(params[:user] || {}) )
86
+ @user = User.new(:birthday => Date.parse((Time.now - 25.years).to_s))
87
87
  @inviter_id = params[:id]
88
88
  @inviter_code = params[:code]
89
89
  end
90
90
 
91
91
  def create
92
- @user = User.new(params[:user])
92
+ @user = User.new(user_params)
93
93
  @user.role = Role[:member]
94
94
 
95
95
  if (!configatron.require_captcha_on_signup || verify_recaptcha(@user)) && @user.save
@@ -119,16 +119,20 @@ class UsersController < BaseController
119
119
 
120
120
  @user.tag_list = params[:tag_list] || ''
121
121
 
122
- params[:user][:avatar_attributes].merge!(:user_id => @user.id) if params[:user] && params[:user][:avatar_attributes]
123
-
124
- if @user.update_attributes(params[:user])
125
- @user.track_activity(:updated_profile)
126
-
127
- flash[:notice] = :your_changes_were_saved.l
128
- unless params[:welcome]
129
- redirect_to user_path(@user)
122
+ if user_params
123
+ attributes = user_params.permit!
124
+ attributes[:avatar_attributes][:user_id] = @user.id if attributes[:avatar_attributes]
125
+ if @user.update_attributes(attributes)
126
+ @user.track_activity(:updated_profile)
127
+
128
+ flash[:notice] = :your_changes_were_saved.l
129
+ unless params[:welcome]
130
+ redirect_to user_path(@user)
131
+ else
132
+ redirect_to :action => "welcome_#{params[:welcome]}", :id => @user
133
+ end
130
134
  else
131
- redirect_to :action => "welcome_#{params[:welcome]}", :id => @user
135
+ render :action => 'edit'
132
136
  end
133
137
  else
134
138
  render :action => 'edit'
@@ -143,6 +147,10 @@ class UsersController < BaseController
143
147
  flash[:error] = :you_cant_delete_that_user.l
144
148
  end
145
149
  respond_to do |format|
150
+ format.js {
151
+ render :inline => flash[:error], :status => 500 if flash[:error]
152
+ render :nothing => true if flash[:notice]
153
+ }
146
154
  format.html { redirect_to users_url }
147
155
  end
148
156
  end
@@ -166,15 +174,15 @@ class UsersController < BaseController
166
174
  flash[:notice] = :no_profile_photo.l
167
175
  redirect_to upload_profile_photo_user_path(@user) and return
168
176
  end
169
- return unless request.put?
177
+ return unless request.put? || request.patch?
170
178
 
171
179
  @photo.update_attributes(:crop_x => params[:crop_x], :crop_y => params[:crop_y], :crop_w => params[:crop_w], :crop_h => params[:crop_h])
172
180
  redirect_to user_path(@user)
173
181
  end
174
182
 
175
183
  def upload_profile_photo
176
- @avatar = Photo.new(params[:avatar])
177
- return unless request.put?
184
+ @avatar = Photo.new(avatar_params)
185
+ return unless request.put? || request.patch?
178
186
 
179
187
  @avatar.user = @user
180
188
  if @avatar.save
@@ -193,7 +201,7 @@ class UsersController < BaseController
193
201
  def update_account
194
202
  @user = current_user
195
203
 
196
- if @user.update_attributes(params[:user])
204
+ if @user.update_attributes(user_params)
197
205
  flash[:notice] = :your_changes_were_saved.l
198
206
  respond_to do |format|
199
207
  format.html {redirect_to user_path(@user)}
@@ -214,7 +222,7 @@ class UsersController < BaseController
214
222
  def update_pro_details
215
223
  @user = User.find(params[:id])
216
224
 
217
- if @user.update_attributes(params[:user])
225
+ if @user.update_attributes(user_params)
218
226
  respond_to do |format|
219
227
  format.html {
220
228
  flash[:notice] = :your_changes_were_saved.l
@@ -329,9 +337,9 @@ class UsersController < BaseController
329
337
  states = country ? country.states : []
330
338
 
331
339
  if states.any?
332
- metro_areas = state ? state.metro_areas.order("name ASC").all : []
340
+ metro_areas = state ? state.metro_areas.order("name ASC") : []
333
341
  else
334
- metro_areas = country ? country.metro_areas.order("name ASC").all : []
342
+ metro_areas = country ? country.metro_areas.order("name ASC") : []
335
343
  end
336
344
 
337
345
  respond_to do |format|
@@ -355,8 +363,12 @@ class UsersController < BaseController
355
363
 
356
364
  def toggle_moderator
357
365
  @user = User.find(params[:id])
358
- @user.role = @user.moderator? ? Role[:member] : Role[:moderator]
359
- @user.save!
366
+ if not @user.admin?
367
+ @user.role = @user.moderator? ? Role[:member] : Role[:moderator]
368
+ @user.save!
369
+ else
370
+ flash[:error] = :you_cannot_make_an_administrator_a_moderator.l
371
+ end
360
372
  redirect_to user_path(@user)
361
373
  end
362
374
 
@@ -371,10 +383,9 @@ class UsersController < BaseController
371
383
  start_date = @month.beginning_of_month
372
384
  end_date = @month.end_of_month.end_of_day
373
385
 
374
- @posts = @user.posts.find(:all,
375
- :conditions => ['? <= published_at AND published_at <= ?', start_date, end_date])
386
+ @posts = @user.posts.where('? <= published_at AND published_at <= ?', start_date, end_date)
376
387
 
377
- @estimated_payment = @posts.sum do |p|
388
+ @estimated_payment = @posts.to_a.sum do |p|
378
389
  7
379
390
  end
380
391
 
@@ -391,18 +402,18 @@ class UsersController < BaseController
391
402
  params[:delete].each { |id|
392
403
  user = User.find(id)
393
404
  unless user.admin? || user.featured_writer?
394
- user.spam! if params[:spam] && !configatron.akismet_key.nil?
405
+ user.spam! if params[:spam] && configatron.has_key?(:akismet_key)
395
406
  user.destroy
396
407
  end
397
408
  }
398
409
  end
399
- flash[:notice] = :the_user_was_deleted.l
410
+ flash[:notice] = :the_selected_users_were_deleted.l
400
411
  redirect_to admin_users_path
401
412
  end
402
413
 
403
414
  protected
404
415
  def setup_metro_areas_for_cloud
405
- @metro_areas_for_cloud = MetroArea.find(:all, :conditions => "users_count > 0", :order => "users_count DESC", :limit => 100)
416
+ @metro_areas_for_cloud = MetroArea.where("users_count > 0", :order => "users_count DESC").limit(100)
406
417
  @metro_areas_for_cloud = @metro_areas_for_cloud.sort_by{|m| m.name}
407
418
  end
408
419
 
@@ -411,7 +422,7 @@ class UsersController < BaseController
411
422
 
412
423
  states = user.country.states if user.country
413
424
 
414
- metro_areas = user.state.metro_areas.all(:order => "name") if user.state
425
+ metro_areas = user.state.metro_areas.order("name") if user.state
415
426
 
416
427
  return metro_areas, states
417
428
  end
@@ -420,4 +431,22 @@ class UsersController < BaseController
420
431
  current_user && (current_user.admin? || @is_current_user) ? true : access_denied
421
432
  end
422
433
 
434
+
435
+ def avatar_params
436
+ params[:avatar] && params[:avatar].permit(:name, :description, :album_id, :photo)
437
+ end
438
+
439
+ def user_params
440
+ params[:user].permit(:avatar_id, :company_name, :country_id, :description, :email,
441
+ :firstname, :fullname, :gender, :lastname, :login, :metro_area_id,
442
+ :middlename, :notify_comments, :notify_community_news,
443
+ :notify_friend_requests, :password, :password_confirmation,
444
+ :profile_public, :state_id, :stylesheet, :time_zone, :vendor, :zip,
445
+ :tag_list,
446
+ {:avatar_attributes => [:id, :name, :description, :album_id, :user, :user_id, :photo, :photo_remote_url]}, :birthday) if params[:user]
447
+ end
448
+
449
+ def comment_params
450
+ params[:comment].permit(:author_name, :author_email, :notify_by_email, :author_url, :comment)
451
+ end
423
452
  end
@@ -46,6 +46,31 @@ module BaseHelper
46
46
  block_to_partial('shared/box', html_options, &block)
47
47
  end
48
48
 
49
+
50
+
51
+ def widget(html_options = {}, &block)
52
+ @widgets ||= ''
53
+ @widgets << render(:partial => 'shared/widget', :locals => {:body => capture(&block), :html_options => html_options})
54
+ return ''
55
+ end
56
+
57
+ def render_widgets
58
+ if @widgets
59
+ @widgets.html_safe
60
+ end
61
+ end
62
+
63
+ def jumbotron(html_options = {}, &block)
64
+ @jumbotron = render(:partial => 'shared/jumbotron', :locals => {:body => capture(&block), :html_options => html_options})
65
+ return ''
66
+ end
67
+
68
+ def render_jumbotron
69
+ if @jumbotron
70
+ @jumbotron.html_safe
71
+ end
72
+ end
73
+
49
74
  def city_cloud(cities, classes)
50
75
  max, min = 0, 0
51
76
  cities.each { |c|
@@ -152,19 +177,70 @@ module BaseHelper
152
177
  title
153
178
  end
154
179
 
180
+ def container_title
181
+ app_base = configatron.community_name
182
+ title = app_base
183
+
184
+ case controller.controller_name
185
+ when 'pages'
186
+ if @page and @page.title
187
+ title = @page.title
188
+ end
189
+ when 'posts'
190
+ if @post and @post.title
191
+ title = @post.title
192
+ @canonical_url = user_post_url(@post.user, @post)
193
+ end
194
+ when 'users'
195
+ if @user && !@user.new_record? && @user.login
196
+ title = @user.login
197
+ @canonical_url = user_url(@user)
198
+ else
199
+ title = :showing_users.l
200
+ end
201
+ when 'photos'
202
+ if @user and @user.login
203
+ title = :users_photos.l(:user => @user.login)
204
+ end
205
+ when 'clippings'
206
+ if @user and @user.login
207
+ title = :user_clippings.l(:user => @user.login)
208
+ end
209
+ when 'tags'
210
+ case controller.action_name
211
+ when 'show'
212
+ if params[:type]
213
+ title = I18n.translate('all_' + params[:type].downcase.pluralize + '_tagged', :tag_name => @tags.map(&:name).join(', '))
214
+ else
215
+ title = :posts_photos_and_bookmarks.l(:name => @tags.map(&:name).join(', '))
216
+ end
217
+ title += " (#{:related_tags.l}: #{@related_tags.join(', ')})" if @related_tags
218
+ @canonical_url = tag_url(URI.escape(URI.escape(@tags_raw), /[\/.?#]/)) if @tags_raw
219
+ else
220
+ title = "Showing tags"
221
+ end
222
+ when 'categories'
223
+ if @category and @category.name
224
+ title = :posts_photos_and_bookmarks.l(:name => @category.name)
225
+ else
226
+ title = :showing_categories.l
227
+ end
228
+ when 'sessions'
229
+ title = :login.l
230
+ end
231
+
232
+ if @page_title
233
+ title = @page_title
234
+ elsif title == app_base
235
+ title = :showing.l + ' ' + controller.controller_name
236
+ end
237
+
238
+ title
239
+ end
240
+
155
241
  def add_friend_link(user = nil)
156
- html = "<span class='friend_request' id='friend_request_#{user.id}'>"
157
- html += link_to_remote :request_friendship.l,
158
- { :update => "friend_request_#{user.id}",
159
- :loading => "$$('span#friend_request_#{user.id} span.spinner')[0].show(); $$('span#friend_request_#{user.id} a.add_friend_btn')[0].hide()",
160
- :complete => visual_effect(:highlight, "friend_request_#{user.id}", :duration => 1),
161
- 500 => "alert('#{escape_javascript(:sorry_there_was_an_error_requesting_friendship.l)}')",
162
- :url => hash_for_user_friendships_url(:user_id => current_user.id, :friend_id => user.id),
163
- :method => :post
164
- }, {:class => "add_friend button"}
165
- html += "<span style='display:none;' class='spinner'>"
166
- html += image_tag('spinner.gif')
167
- html += "#{:requesting_friendship.l} ...</span></span>"
242
+ html = ""
243
+ html << render(:partial => 'shared/add_friend_link', :locals => {:user => user})
168
244
  html.html_safe
169
245
  end
170
246
 
@@ -177,10 +253,10 @@ module BaseHelper
177
253
  end
178
254
 
179
255
  def more_comments_links(commentable)
180
- html = link_to "&raquo; ".html_safe + :all_comments.l, commentable_comments_url(commentable.class.to_s.tableize, commentable.to_param)
256
+ html = link_to fa_icon('plus-circle', :text => :all_comments.l), commentable_comments_url(commentable.class.to_s.tableize, commentable.to_param)
181
257
  html += "<br />".html_safe
182
- html += link_to "&raquo; ".html_safe + :comments_rss.l, commentable_comments_url(commentable.class.to_s.tableize, commentable.to_param, :format => :rss)
183
- html.html_safe
258
+ html += link_to fa_icon('rss', :text => :comments_rss.l), commentable_comments_url(commentable.class.to_s.tableize, commentable.to_param, :format => :rss)
259
+ html.html_safe
184
260
  end
185
261
 
186
262
  def show_footer_content?
@@ -192,7 +268,7 @@ module BaseHelper
192
268
  end
193
269
 
194
270
  def paginating_links(paginator, options = {}, html_options = {})
195
- paginate paginator
271
+ paginate paginator, :theme => 'bootstrap'
196
272
  end
197
273
 
198
274
  def last_active
@@ -200,16 +276,11 @@ module BaseHelper
200
276
  end
201
277
 
202
278
  def ajax_spinner_for(id, spinner="spinner.gif")
203
- "<img src='/assets/#{spinner}' style='display:none; vertical-align:middle;' id='#{id.to_s}_spinner'> ".html_safe
279
+ image_tag spinner, class: 'hide', id: "#{id.to_s}_spinner"
204
280
  end
205
281
 
206
282
  def avatar_for(user, size=32)
207
- image_tag user.avatar_photo_url(:medium), :size => "#{size}x#{size}", :class => 'photo'
208
- end
209
-
210
- def feed_icon_tag(title, url)
211
- (@feed_icons ||= []) << { :url => url, :title => title }
212
- link_to image_tag('feed.png', :size => '14x14', :alt => :subscribe_to.l+" #{title}", :plugin => 'community_engine'), url
283
+ image_tag user.avatar_photo_url(:thumb), :class => 'thumbnail'
213
284
  end
214
285
 
215
286
  def search_posts_title
@@ -236,9 +307,9 @@ module BaseHelper
236
307
  case distance_in_minutes
237
308
  when 0 then :a_few_seconds_ago.l
238
309
  when 1..59 then :minutes_ago.l(:count => distance_in_minutes)
239
- when 60..1339 then :hours_ago.l(:count => (distance_in_minutes.to_f / 60.0).round)
240
- when 1440..2880 then :days_ago.l(:count => (distance_in_minutes.to_f / 1440.0).round) # 1 days to 2 days
241
- else I18n.l(from_time.to_date, :format => :published_date)
310
+ when 60..1440 then :hours_ago.l(:count => (distance_in_minutes.to_f / 60.0).round)
311
+ when 1440..2880 then :days_ago.l(:count => (distance_in_minutes.to_f / 1440.0).round) # 1.5 days to 2 days
312
+ else I18n.l(from_time, :format => :short)
242
313
  end
243
314
  end
244
315
 
@@ -248,7 +319,7 @@ module BaseHelper
248
319
  elsif date.to_date.eql?(Time.now.to_date - 1)
249
320
  display = :yesterday.l
250
321
  else
251
- display = I18n.l(date.to_date, :format => :date_ago)
322
+ display = I18n.l(date.to_date, :format => :short)
252
323
  end
253
324
  end
254
325
 
@@ -277,8 +348,27 @@ module BaseHelper
277
348
 
278
349
  def tiny_mce_init_if_needed
279
350
  if !@uses_tiny_mce.blank?
280
- tinymce_js = tinymce_javascript(@tiny_mce_configuration)
281
- javascript_tag(tinymce_js)
351
+ javascript_tag(tiny_mce_js)
352
+ end
353
+ end
354
+
355
+ def tiny_mce_js
356
+ selector = @tiny_mce_configuration['selector']
357
+ "jQuery(function(){jQuery('#{selector}').RichTextEditor(#{@tiny_mce_configuration.to_json})});".html_safe
358
+ end
359
+
360
+ def flash_class(level)
361
+ case level
362
+ when :notice then "alert-info"
363
+ when :error then "alert-danger"
364
+ when :alert then "alert-warning"
282
365
  end
283
366
  end
367
+
368
+ def tag_auto_complete_field(id, options = {})
369
+ options[:url][:format] = 'json'
370
+ html = ""
371
+ html << render(:partial => 'shared/tag_auto_complete', :locals => {:id => id, :options => options})
372
+ html.html_safe
373
+ end
284
374
  end