social_stream-base 0.5.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 (733) hide show
  1. data/.gitignore +12 -0
  2. data/.rspec +1 -0
  3. data/.yardopts +2 -0
  4. data/Gemfile +9 -0
  5. data/LICENSE +20 -0
  6. data/README.rdoc +68 -0
  7. data/Rakefile +28 -0
  8. data/app/controllers/activities_controller.rb +19 -0
  9. data/app/controllers/api_controller.rb +36 -0
  10. data/app/controllers/authentications_controller.rb +17 -0
  11. data/app/controllers/comments_controller.rb +12 -0
  12. data/app/controllers/contacts_controller.rb +43 -0
  13. data/app/controllers/conversations_controller.rb +102 -0
  14. data/app/controllers/frontpage_controller.rb +23 -0
  15. data/app/controllers/groups_controller.rb +35 -0
  16. data/app/controllers/home_controller.rb +3 -0
  17. data/app/controllers/likes_controller.rb +41 -0
  18. data/app/controllers/messages_controller.rb +87 -0
  19. data/app/controllers/notifications_controller.rb +72 -0
  20. data/app/controllers/omniauth_callbacks_controller.rb +17 -0
  21. data/app/controllers/permissions_controller.rb +15 -0
  22. data/app/controllers/posts_controller.rb +11 -0
  23. data/app/controllers/profiles_controller.rb +9 -0
  24. data/app/controllers/relation/customs_controller.rb +16 -0
  25. data/app/controllers/spheres_controller.rb +12 -0
  26. data/app/controllers/subjects_controller.rb +7 -0
  27. data/app/controllers/tags_controller.rb +15 -0
  28. data/app/controllers/users_controller.rb +30 -0
  29. data/app/helpers/activities_helper.rb +21 -0
  30. data/app/helpers/contacts_helper.rb +26 -0
  31. data/app/helpers/groups_helper.rb +3 -0
  32. data/app/helpers/location_helper.rb +48 -0
  33. data/app/helpers/notifications_helper.rb +23 -0
  34. data/app/helpers/permissions_helper.rb +16 -0
  35. data/app/helpers/profiles_helper.rb +31 -0
  36. data/app/helpers/subjects_helper.rb +6 -0
  37. data/app/helpers/toolbar_helper.rb +83 -0
  38. data/app/helpers/users_helper.rb +4 -0
  39. data/app/models/ability.rb +2 -0
  40. data/app/models/activity.rb +198 -0
  41. data/app/models/activity_object.rb +31 -0
  42. data/app/models/activity_object_activity.rb +14 -0
  43. data/app/models/activity_verb.rb +22 -0
  44. data/app/models/actor.rb +431 -0
  45. data/app/models/authentication.rb +3 -0
  46. data/app/models/comment.rb +3 -0
  47. data/app/models/contact.rb +121 -0
  48. data/app/models/group.rb +49 -0
  49. data/app/models/like.rb +49 -0
  50. data/app/models/permission.rb +180 -0
  51. data/app/models/post.rb +3 -0
  52. data/app/models/profile.rb +53 -0
  53. data/app/models/relation/custom.rb +122 -0
  54. data/app/models/relation/public.rb +42 -0
  55. data/app/models/relation.rb +83 -0
  56. data/app/models/relation_permission.rb +4 -0
  57. data/app/models/sphere.rb +9 -0
  58. data/app/models/tie.rb +332 -0
  59. data/app/models/tie_activity.rb +42 -0
  60. data/app/models/user.rb +125 -0
  61. data/app/views/activities/_activity.html.erb +5 -0
  62. data/app/views/activities/_child.html.erb +18 -0
  63. data/app/views/activities/_comments.html.erb +3 -0
  64. data/app/views/activities/_index.html.erb +22 -0
  65. data/app/views/activities/_jquery.html.erb +100 -0
  66. data/app/views/activities/_new.html.erb +30 -0
  67. data/app/views/activities/_options.html.erb +12 -0
  68. data/app/views/activities/_root.html.erb +37 -0
  69. data/app/views/activities/_walls.html.erb +34 -0
  70. data/app/views/activities/index.js.erb +1 -0
  71. data/app/views/activity_objects/_activity_object.html.erb +1 -0
  72. data/app/views/actors/_actor.html.erb +0 -0
  73. data/app/views/api/activity_atom_feed.atom.builder +40 -0
  74. data/app/views/avatars/index.html.erb +28 -0
  75. data/app/views/comments/_comment.html.erb +1 -0
  76. data/app/views/comments/_new.html.erb +19 -0
  77. data/app/views/comments/create.js.erb +4 -0
  78. data/app/views/comments/destroy.js.erb +2 -0
  79. data/app/views/contacts/_contact.html.erb +20 -0
  80. data/app/views/contacts/_edit.html.erb +76 -0
  81. data/app/views/contacts/_form.html.erb +77 -0
  82. data/app/views/contacts/_index.html.erb +33 -0
  83. data/app/views/contacts/_pendings.html.erb +11 -0
  84. data/app/views/contacts/_suggestions.html.erb +27 -0
  85. data/app/views/contacts/_suggestions_and_pendings.html.erb +6 -0
  86. data/app/views/contacts/edit.html.erb +5 -0
  87. data/app/views/contacts/index.html.erb +39 -0
  88. data/app/views/contacts/index.js.erb +3 -0
  89. data/app/views/contacts/new.html.erb +5 -0
  90. data/app/views/conversations/_conversation.html.erb +37 -0
  91. data/app/views/conversations/_conversation_full.html.erb +53 -0
  92. data/app/views/conversations/_conversations.html.erb +5 -0
  93. data/app/views/conversations/_index.html.erb +11 -0
  94. data/app/views/conversations/_menu_options.html.erb +19 -0
  95. data/app/views/conversations/_show.html.erb +13 -0
  96. data/app/views/conversations/edit.html.erb +10 -0
  97. data/app/views/conversations/index.html.erb +23 -0
  98. data/app/views/conversations/index.js.erb +9 -0
  99. data/app/views/conversations/show.html.erb +51 -0
  100. data/app/views/conversations/show.js.erb +41 -0
  101. data/app/views/devise/passwords/edit.html.erb +21 -0
  102. data/app/views/devise/passwords/new.html.erb +16 -0
  103. data/app/views/devise/registrations/new.html.erb +37 -0
  104. data/app/views/devise/sessions/new.html.erb +30 -0
  105. data/app/views/frontpage/_header.html.erb +25 -0
  106. data/app/views/frontpage/_search.html.erb +13 -0
  107. data/app/views/frontpage/_sponsor.html.erb +12 -0
  108. data/app/views/frontpage/host_meta.xml.builder +11 -0
  109. data/app/views/frontpage/index.html.erb +96 -0
  110. data/app/views/groups/_group.html.erb +10 -0
  111. data/app/views/groups/_index.html.erb +35 -0
  112. data/app/views/groups/_new.html.erb +74 -0
  113. data/app/views/groups/_sidebar_index.html.erb +31 -0
  114. data/app/views/groups/_sidebar_show.html.erb +3 -0
  115. data/app/views/groups/index.html.erb +62 -0
  116. data/app/views/groups/index.js.erb +1 -0
  117. data/app/views/groups/new.html.erb +15 -0
  118. data/app/views/groups/show.html.erb +30 -0
  119. data/app/views/home/_groups.html.erb +24 -0
  120. data/app/views/home/_menu.html.erb +46 -0
  121. data/app/views/home/_sidebar.html.erb +2 -0
  122. data/app/views/home/index.html.erb +22 -0
  123. data/app/views/layouts/_account.html.erb +16 -0
  124. data/app/views/layouts/_flash.html.erb +5 -0
  125. data/app/views/layouts/_footer.html.erb +16 -0
  126. data/app/views/layouts/_header.erb +40 -0
  127. data/app/views/layouts/_representation.html.erb +23 -0
  128. data/app/views/layouts/application.html.erb +58 -0
  129. data/app/views/layouts/frontpage.html.erb +42 -0
  130. data/app/views/layouts/test.html +61 -0
  131. data/app/views/likes/create.js.erb +2 -0
  132. data/app/views/likes/destroy.js.erb +1 -0
  133. data/app/views/location/_location.html.erb +3 -0
  134. data/app/views/messages/_form.html.erb +39 -0
  135. data/app/views/messages/_message.html.erb +31 -0
  136. data/app/views/messages/_new.html.erb +13 -0
  137. data/app/views/messages/new.html.erb +57 -0
  138. data/app/views/messages/new.js.erb +41 -0
  139. data/app/views/notification_mailer/new_notification_email.html.erb +21 -0
  140. data/app/views/notification_mailer/new_notification_email.text.erb +11 -0
  141. data/app/views/notifications/_index.html.erb +21 -0
  142. data/app/views/notifications/_notification.html.erb +47 -0
  143. data/app/views/notifications/_show.html.erb +3 -0
  144. data/app/views/notifications/activities/_follow_body.html.erb +2 -0
  145. data/app/views/notifications/activities/_follow_subject.html.erb +2 -0
  146. data/app/views/notifications/activities/_like_body.html.erb +5 -0
  147. data/app/views/notifications/activities/_like_object_body.html.erb +2 -0
  148. data/app/views/notifications/activities/_like_object_subject.html.erb +2 -0
  149. data/app/views/notifications/activities/_like_subject.html.erb +5 -0
  150. data/app/views/notifications/activities/_like_subject_body.html.erb +1 -0
  151. data/app/views/notifications/activities/_like_subject_subject.html.erb +2 -0
  152. data/app/views/notifications/activities/_make-friend_body.html.erb +3 -0
  153. data/app/views/notifications/activities/_make-friend_subject.html.erb +2 -0
  154. data/app/views/notifications/activities/_post_body.html.erb +2 -0
  155. data/app/views/notifications/activities/_post_subject.html.erb +1 -0
  156. data/app/views/notifications/activities/_update_body.html.erb +1 -0
  157. data/app/views/notifications/activities/_update_subject.html.erb +1 -0
  158. data/app/views/notifications/index.html.erb +19 -0
  159. data/app/views/notifications/index.js.erb +8 -0
  160. data/app/views/notifications/show.html.erb +5 -0
  161. data/app/views/permissions/_index.html.erb +39 -0
  162. data/app/views/permissions/index.js.erb +10 -0
  163. data/app/views/posts/_post.html.erb +3 -0
  164. data/app/views/posts/create.js.erb +5 -0
  165. data/app/views/posts/destroy.js.erb +2 -0
  166. data/app/views/profiles/_contact.html.erb +81 -0
  167. data/app/views/profiles/_experience.html.erb +22 -0
  168. data/app/views/profiles/_personal.html.erb +74 -0
  169. data/app/views/profiles/_profile.html.erb +50 -0
  170. data/app/views/profiles/_tags.html.erb +22 -0
  171. data/app/views/profiles/edit.html.erb +221 -0
  172. data/app/views/profiles/show.html.erb +25 -0
  173. data/app/views/profiles/update.js.erb +20 -0
  174. data/app/views/relation/customs/_form.html.erb +29 -0
  175. data/app/views/relation/customs/_index.html.erb +30 -0
  176. data/app/views/relation/customs/_list.html.erb +36 -0
  177. data/app/views/relation/customs/create.js.erb +20 -0
  178. data/app/views/relation/customs/index.js.erb +2 -0
  179. data/app/views/relation/customs/update.js.erb +6 -0
  180. data/app/views/spheres/_form.html.erb +28 -0
  181. data/app/views/spheres/_jquery.erb +130 -0
  182. data/app/views/spheres/_list.html.erb +19 -0
  183. data/app/views/spheres/create.js.erb +20 -0
  184. data/app/views/spheres/index.html.erb +74 -0
  185. data/app/views/subjects/_contacts.html.erb +18 -0
  186. data/app/views/subjects/_tabs.html.erb +38 -0
  187. data/app/views/ties/_edit.html.erb +70 -0
  188. data/app/views/ties/_form.html.erb +6 -0
  189. data/app/views/ties/create.js.erb +26 -0
  190. data/app/views/ties/edit.html.erb +1 -0
  191. data/app/views/ties/suggestion.html.erb +1 -0
  192. data/app/views/ties/suggestion.js.erb +1 -0
  193. data/app/views/toolbar/_home.html.erb +9 -0
  194. data/app/views/toolbar/_home_menu.html.erb +9 -0
  195. data/app/views/toolbar/_home_menu_options.html.erb +29 -0
  196. data/app/views/toolbar/_home_menu_options_subjects.html.erb +12 -0
  197. data/app/views/toolbar/_logo.html.erb +16 -0
  198. data/app/views/toolbar/_message_menu.html.erb +17 -0
  199. data/app/views/toolbar/_notifications_menu.html.erb +3 -0
  200. data/app/views/toolbar/_profile.html.erb +13 -0
  201. data/app/views/toolbar/_profile_menu.html.erb +15 -0
  202. data/app/views/toolbar/_profile_menu_basic_options.html.erb +5 -0
  203. data/app/views/toolbar/_profile_menu_tie_options.html.erb +35 -0
  204. data/app/views/users/_groups.html.erb +23 -0
  205. data/app/views/users/_index.html.erb +33 -0
  206. data/app/views/users/_sidebar_index.html.erb +1 -0
  207. data/app/views/users/index.html.erb +47 -0
  208. data/app/views/users/index.js.erb +1 -0
  209. data/app/views/users/info.html.erb +0 -0
  210. data/app/views/users/show.html.erb +34 -0
  211. data/app/views/users/show.xml.builder +28 -0
  212. data/bin/social_stream +57 -0
  213. data/bin/social_stream_heroku +76 -0
  214. data/config/locales/en.yml +341 -0
  215. data/config/routes.rb +69 -0
  216. data/lib/generators/social_stream/base/install_generator.rb +57 -0
  217. data/lib/generators/social_stream/base/templates/initializer.rb +17 -0
  218. data/lib/generators/social_stream/base/templates/migration.rb +299 -0
  219. data/lib/generators/social_stream/base/templates/public/images/HTML5.png +0 -0
  220. data/lib/generators/social_stream/base/templates/public/images/HTML5_Semantics.png +0 -0
  221. data/lib/generators/social_stream/base/templates/public/images/HTML5_Styling.png +0 -0
  222. data/lib/generators/social_stream/base/templates/public/images/Jcrop.gif +0 -0
  223. data/lib/generators/social_stream/base/templates/public/images/boxy/boxy-ne.png +0 -0
  224. data/lib/generators/social_stream/base/templates/public/images/boxy/boxy-nw.png +0 -0
  225. data/lib/generators/social_stream/base/templates/public/images/boxy/boxy-se.png +0 -0
  226. data/lib/generators/social_stream/base/templates/public/images/boxy/boxy-sw.png +0 -0
  227. data/lib/generators/social_stream/base/templates/public/images/btn/1-facebook.png +0 -0
  228. data/lib/generators/social_stream/base/templates/public/images/btn/_notes/btn_certificates.png.mno +4 -0
  229. data/lib/generators/social_stream/base/templates/public/images/btn/arrowBlue.png +0 -0
  230. data/lib/generators/social_stream/base/templates/public/images/btn/arrows-ffffff.png +0 -0
  231. data/lib/generators/social_stream/base/templates/public/images/btn/bold.png +0 -0
  232. data/lib/generators/social_stream/base/templates/public/images/btn/btn_activities.png +0 -0
  233. data/lib/generators/social_stream/base/templates/public/images/btn/btn_bookmark.png +0 -0
  234. data/lib/generators/social_stream/base/templates/public/images/btn/btn_browse.png +0 -0
  235. data/lib/generators/social_stream/base/templates/public/images/btn/btn_certificates.png +0 -0
  236. data/lib/generators/social_stream/base/templates/public/images/btn/btn_check.png +0 -0
  237. data/lib/generators/social_stream/base/templates/public/images/btn/btn_close.png +0 -0
  238. data/lib/generators/social_stream/base/templates/public/images/btn/btn_comment.png +0 -0
  239. data/lib/generators/social_stream/base/templates/public/images/btn/btn_comment_add.png +0 -0
  240. data/lib/generators/social_stream/base/templates/public/images/btn/btn_conferences.png +0 -0
  241. data/lib/generators/social_stream/base/templates/public/images/btn/btn_config.png +0 -0
  242. data/lib/generators/social_stream/base/templates/public/images/btn/btn_date.png +0 -0
  243. data/lib/generators/social_stream/base/templates/public/images/btn/btn_delete.png +0 -0
  244. data/lib/generators/social_stream/base/templates/public/images/btn/btn_documents.png +0 -0
  245. data/lib/generators/social_stream/base/templates/public/images/btn/btn_down.png +0 -0
  246. data/lib/generators/social_stream/base/templates/public/images/btn/btn_edit.png +0 -0
  247. data/lib/generators/social_stream/base/templates/public/images/btn/btn_embebed.png +0 -0
  248. data/lib/generators/social_stream/base/templates/public/images/btn/btn_exit.png +0 -0
  249. data/lib/generators/social_stream/base/templates/public/images/btn/btn_find.png +0 -0
  250. data/lib/generators/social_stream/base/templates/public/images/btn/btn_follow.png +0 -0
  251. data/lib/generators/social_stream/base/templates/public/images/btn/btn_foward.png +0 -0
  252. data/lib/generators/social_stream/base/templates/public/images/btn/btn_friend.png +0 -0
  253. data/lib/generators/social_stream/base/templates/public/images/btn/btn_gallery.png +0 -0
  254. data/lib/generators/social_stream/base/templates/public/images/btn/btn_group.png +0 -0
  255. data/lib/generators/social_stream/base/templates/public/images/btn/btn_help.png +0 -0
  256. data/lib/generators/social_stream/base/templates/public/images/btn/btn_home.png +0 -0
  257. data/lib/generators/social_stream/base/templates/public/images/btn/btn_inbox.png +0 -0
  258. data/lib/generators/social_stream/base/templates/public/images/btn/btn_info.png +0 -0
  259. data/lib/generators/social_stream/base/templates/public/images/btn/btn_like.png +0 -0
  260. data/lib/generators/social_stream/base/templates/public/images/btn/btn_next.png +0 -0
  261. data/lib/generators/social_stream/base/templates/public/images/btn/btn_notification.png +0 -0
  262. data/lib/generators/social_stream/base/templates/public/images/btn/btn_notification_delete.png +0 -0
  263. data/lib/generators/social_stream/base/templates/public/images/btn/btn_notifications.png +0 -0
  264. data/lib/generators/social_stream/base/templates/public/images/btn/btn_outline.png +0 -0
  265. data/lib/generators/social_stream/base/templates/public/images/btn/btn_page_link.png +0 -0
  266. data/lib/generators/social_stream/base/templates/public/images/btn/btn_partner.png +0 -0
  267. data/lib/generators/social_stream/base/templates/public/images/btn/btn_photo.png +0 -0
  268. data/lib/generators/social_stream/base/templates/public/images/btn/btn_printer.png +0 -0
  269. data/lib/generators/social_stream/base/templates/public/images/btn/btn_profile.png +0 -0
  270. data/lib/generators/social_stream/base/templates/public/images/btn/btn_rank.png +0 -0
  271. data/lib/generators/social_stream/base/templates/public/images/btn/btn_security.png +0 -0
  272. data/lib/generators/social_stream/base/templates/public/images/btn/btn_send.png +0 -0
  273. data/lib/generators/social_stream/base/templates/public/images/btn/btn_spam.png +0 -0
  274. data/lib/generators/social_stream/base/templates/public/images/btn/btn_star.png +0 -0
  275. data/lib/generators/social_stream/base/templates/public/images/btn/btn_tag.png +0 -0
  276. data/lib/generators/social_stream/base/templates/public/images/btn/btn_video.png +0 -0
  277. data/lib/generators/social_stream/base/templates/public/images/btn/btn_write.png +0 -0
  278. data/lib/generators/social_stream/base/templates/public/images/btn/close.png +0 -0
  279. data/lib/generators/social_stream/base/templates/public/images/btn/date.png +0 -0
  280. data/lib/generators/social_stream/base/templates/public/images/btn/edit.png +0 -0
  281. data/lib/generators/social_stream/base/templates/public/images/btn/error.png +0 -0
  282. data/lib/generators/social_stream/base/templates/public/images/btn/facebook.png +0 -0
  283. data/lib/generators/social_stream/base/templates/public/images/btn/flag.png +0 -0
  284. data/lib/generators/social_stream/base/templates/public/images/btn/flyer.png +0 -0
  285. data/lib/generators/social_stream/base/templates/public/images/btn/group_left.png +0 -0
  286. data/lib/generators/social_stream/base/templates/public/images/btn/group_right.png +0 -0
  287. data/lib/generators/social_stream/base/templates/public/images/btn/index_71.png +0 -0
  288. data/lib/generators/social_stream/base/templates/public/images/btn/info.png +0 -0
  289. data/lib/generators/social_stream/base/templates/public/images/btn/italic.png +0 -0
  290. data/lib/generators/social_stream/base/templates/public/images/btn/keynote.png +0 -0
  291. data/lib/generators/social_stream/base/templates/public/images/btn/like.png +0 -0
  292. data/lib/generators/social_stream/base/templates/public/images/btn/linkedin.png +0 -0
  293. data/lib/generators/social_stream/base/templates/public/images/btn/live.png +0 -0
  294. data/lib/generators/social_stream/base/templates/public/images/btn/message_conversation.png +0 -0
  295. data/lib/generators/social_stream/base/templates/public/images/btn/message_inbox.png +0 -0
  296. data/lib/generators/social_stream/base/templates/public/images/btn/message_new.png +0 -0
  297. data/lib/generators/social_stream/base/templates/public/images/btn/message_sentbox.png +0 -0
  298. data/lib/generators/social_stream/base/templates/public/images/btn/message_trash.png +0 -0
  299. data/lib/generators/social_stream/base/templates/public/images/btn/new.png +0 -0
  300. data/lib/generators/social_stream/base/templates/public/images/btn/next_conference.png +0 -0
  301. data/lib/generators/social_stream/base/templates/public/images/btn/next_space.png +0 -0
  302. data/lib/generators/social_stream/base/templates/public/images/btn/nolike.png +0 -0
  303. data/lib/generators/social_stream/base/templates/public/images/btn/notifications.png +0 -0
  304. data/lib/generators/social_stream/base/templates/public/images/btn/pixel.png +0 -0
  305. data/lib/generators/social_stream/base/templates/public/images/btn/point_blue.png +0 -0
  306. data/lib/generators/social_stream/base/templates/public/images/btn/point_gray.png +0 -0
  307. data/lib/generators/social_stream/base/templates/public/images/btn/search.png +0 -0
  308. data/lib/generators/social_stream/base/templates/public/images/btn/shadow.png +0 -0
  309. data/lib/generators/social_stream/base/templates/public/images/btn/share.png +0 -0
  310. data/lib/generators/social_stream/base/templates/public/images/btn/subtime.png +0 -0
  311. data/lib/generators/social_stream/base/templates/public/images/btn/success.png +0 -0
  312. data/lib/generators/social_stream/base/templates/public/images/btn/tag_cloud.png +0 -0
  313. data/lib/generators/social_stream/base/templates/public/images/btn/time.png +0 -0
  314. data/lib/generators/social_stream/base/templates/public/images/btn/twitter-follow-icon.png +0 -0
  315. data/lib/generators/social_stream/base/templates/public/images/btn/twitter.png +0 -0
  316. data/lib/generators/social_stream/base/templates/public/images/btn/uno.png +0 -0
  317. data/lib/generators/social_stream/base/templates/public/images/btn/viewer.png +0 -0
  318. data/lib/generators/social_stream/base/templates/public/images/btn/warning.png +0 -0
  319. data/lib/generators/social_stream/base/templates/public/images/cancel.png +0 -0
  320. data/lib/generators/social_stream/base/templates/public/images/frontpage/collaborate.png +0 -0
  321. data/lib/generators/social_stream/base/templates/public/images/frontpage/comments.png +0 -0
  322. data/lib/generators/social_stream/base/templates/public/images/frontpage/green_sq.png +0 -0
  323. data/lib/generators/social_stream/base/templates/public/images/frontpage/join.gif +0 -0
  324. data/lib/generators/social_stream/base/templates/public/images/frontpage/meet.png +0 -0
  325. data/lib/generators/social_stream/base/templates/public/images/frontpage/people.png +0 -0
  326. data/lib/generators/social_stream/base/templates/public/images/frontpage/purple_sq.png +0 -0
  327. data/lib/generators/social_stream/base/templates/public/images/frontpage/right_comments.gif +0 -0
  328. data/lib/generators/social_stream/base/templates/public/images/frontpage/right_organizers.gif +0 -0
  329. data/lib/generators/social_stream/base/templates/public/images/frontpage/right_people.gif +0 -0
  330. data/lib/generators/social_stream/base/templates/public/images/frontpage/right_social.gif +0 -0
  331. data/lib/generators/social_stream/base/templates/public/images/frontpage/right_tags.gif +0 -0
  332. data/lib/generators/social_stream/base/templates/public/images/frontpage/right_webcam.gif +0 -0
  333. data/lib/generators/social_stream/base/templates/public/images/frontpage/share.png +0 -0
  334. data/lib/generators/social_stream/base/templates/public/images/frontpage/tags.png +0 -0
  335. data/lib/generators/social_stream/base/templates/public/images/frontpage/yellow_sq.png +0 -0
  336. data/lib/generators/social_stream/base/templates/public/images/header-logo.png +0 -0
  337. data/lib/generators/social_stream/base/templates/public/images/html5-badge-h-css3-semantics.png +0 -0
  338. data/lib/generators/social_stream/base/templates/public/images/icon_checkbox.png +0 -0
  339. data/lib/generators/social_stream/base/templates/public/images/icons/favicon.ico +0 -0
  340. data/lib/generators/social_stream/base/templates/public/images/left.png +0 -0
  341. data/lib/generators/social_stream/base/templates/public/images/loader.gif +0 -0
  342. data/lib/generators/social_stream/base/templates/public/images/logo.png +0 -0
  343. data/lib/generators/social_stream/base/templates/public/images/logos/actor/group.png +0 -0
  344. data/lib/generators/social_stream/base/templates/public/images/logos/actor/remote_subject.png +0 -0
  345. data/lib/generators/social_stream/base/templates/public/images/logos/actor/remote_user.png +0 -0
  346. data/lib/generators/social_stream/base/templates/public/images/logos/actor/user.png +0 -0
  347. data/lib/generators/social_stream/base/templates/public/images/logos/original/group.png +0 -0
  348. data/lib/generators/social_stream/base/templates/public/images/logos/original/user.png +0 -0
  349. data/lib/generators/social_stream/base/templates/public/images/logos/profile/group.png +0 -0
  350. data/lib/generators/social_stream/base/templates/public/images/logos/profile/user.png +0 -0
  351. data/lib/generators/social_stream/base/templates/public/images/logos/representation/group.png +0 -0
  352. data/lib/generators/social_stream/base/templates/public/images/logos/representation/user.png +0 -0
  353. data/lib/generators/social_stream/base/templates/public/images/logos/tie/group.png +0 -0
  354. data/lib/generators/social_stream/base/templates/public/images/logos/tie/user.png +0 -0
  355. data/lib/generators/social_stream/base/templates/public/images/pbar-ani.gif +0 -0
  356. data/lib/generators/social_stream/base/templates/public/images/right.png +0 -0
  357. data/lib/generators/social_stream/base/templates/public/images/title_background.png +0 -0
  358. data/lib/generators/social_stream/base/templates/public/javascripts/ajax.paginate.js +46 -0
  359. data/lib/generators/social_stream/base/templates/public/javascripts/avatars.js +8 -0
  360. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/.htaccess +24 -0
  361. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/adapters/jquery.js +6 -0
  362. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/ckeditor.js +141 -0
  363. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/ckeditor_basic.js +8 -0
  364. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/ckeditor_basic_source.js +20 -0
  365. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/ckeditor_source.js +25 -0
  366. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/config.js +21 -0
  367. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/contents.css +45 -0
  368. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/images/spacer.gif +0 -0
  369. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/_languages.js +6 -0
  370. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/_translationstatus.txt +60 -0
  371. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/af.js +6 -0
  372. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/ar.js +6 -0
  373. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/bg.js +6 -0
  374. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/bn.js +6 -0
  375. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/bs.js +6 -0
  376. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/ca.js +6 -0
  377. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/cs.js +6 -0
  378. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/cy.js +6 -0
  379. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/da.js +6 -0
  380. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/de.js +6 -0
  381. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/el.js +6 -0
  382. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/en-au.js +6 -0
  383. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/en-ca.js +6 -0
  384. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/en-gb.js +6 -0
  385. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/en.js +6 -0
  386. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/eo.js +6 -0
  387. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/es.js +6 -0
  388. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/et.js +6 -0
  389. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/eu.js +6 -0
  390. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/fa.js +6 -0
  391. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/fi.js +6 -0
  392. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/fo.js +6 -0
  393. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/fr-ca.js +6 -0
  394. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/fr.js +6 -0
  395. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/gl.js +6 -0
  396. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/gu.js +6 -0
  397. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/he.js +6 -0
  398. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/hi.js +6 -0
  399. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/hr.js +6 -0
  400. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/hu.js +6 -0
  401. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/is.js +6 -0
  402. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/it.js +6 -0
  403. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/ja.js +6 -0
  404. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/km.js +6 -0
  405. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/ko.js +6 -0
  406. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/lt.js +6 -0
  407. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/lv.js +6 -0
  408. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/mn.js +6 -0
  409. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/ms.js +6 -0
  410. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/nb.js +6 -0
  411. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/nl.js +6 -0
  412. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/no.js +6 -0
  413. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/pl.js +6 -0
  414. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/pt-br.js +6 -0
  415. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/pt.js +6 -0
  416. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/ro.js +6 -0
  417. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/ru.js +6 -0
  418. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/sk.js +6 -0
  419. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/sl.js +6 -0
  420. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/sr-latn.js +6 -0
  421. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/sr.js +6 -0
  422. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/sv.js +6 -0
  423. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/th.js +6 -0
  424. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/tr.js +6 -0
  425. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/uk.js +6 -0
  426. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/vi.js +6 -0
  427. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/zh-cn.js +6 -0
  428. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/lang/zh.js +6 -0
  429. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +7 -0
  430. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/a11yhelp/lang/en.js +6 -0
  431. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/a11yhelp/lang/he.js +6 -0
  432. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/about/dialogs/about.js +6 -0
  433. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  434. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/adobeair/plugin.js +6 -0
  435. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/autogrow/plugin.js +6 -0
  436. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +7 -0
  437. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +7 -0
  438. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
  439. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/div/dialogs/div.js +8 -0
  440. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/find/dialogs/find.js +9 -0
  441. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/flash/dialogs/flash.js +9 -0
  442. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/flash/images/placeholder.png +0 -0
  443. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/dialogs/button.js +6 -0
  444. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/dialogs/checkbox.js +6 -0
  445. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/dialogs/form.js +6 -0
  446. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/dialogs/hiddenfield.js +6 -0
  447. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/dialogs/radio.js +6 -0
  448. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/dialogs/select.js +9 -0
  449. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/dialogs/textarea.js +6 -0
  450. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/dialogs/textfield.js +6 -0
  451. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  452. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/iframe/dialogs/iframe.js +7 -0
  453. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/iframe/images/placeholder.png +0 -0
  454. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/iframedialog/plugin.js +6 -0
  455. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/image/dialogs/image.js +13 -0
  456. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/link/dialogs/anchor.js +6 -0
  457. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/link/dialogs/link.js +11 -0
  458. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/link/images/anchor.gif +0 -0
  459. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +6 -0
  460. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  461. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/pastefromword/filter/default.js +10 -0
  462. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/pastetext/dialogs/pastetext.js +6 -0
  463. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/placeholder/dialogs/placeholder.js +6 -0
  464. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/placeholder/lang/en.js +6 -0
  465. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/placeholder/placeholder.gif +0 -0
  466. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/placeholder/plugin.js +6 -0
  467. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/scayt/dialogs/options.js +8 -0
  468. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/scayt/dialogs/toolbar.css +6 -0
  469. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  470. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  471. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  472. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  473. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  474. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  475. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  476. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  477. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  478. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  479. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  480. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/dialogs/smiley.js +7 -0
  481. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  482. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  483. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  484. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  485. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  486. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  487. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  488. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  489. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/heart.gif +0 -0
  490. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  491. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  492. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  493. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  494. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  495. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  496. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  497. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  498. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  499. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  500. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  501. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  502. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +7 -0
  503. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/specialchar/lang/en.js +6 -0
  504. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/styles/styles/default.js +6 -0
  505. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/table/dialogs/table.js +9 -0
  506. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/tableresize/plugin.js +7 -0
  507. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +8 -0
  508. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/templates/dialogs/templates.js +7 -0
  509. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/templates/templates/default.js +6 -0
  510. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  511. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  512. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  513. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/dialogs/uicolor.js +7 -0
  514. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/lang/en.js +6 -0
  515. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/lang/he.js +6 -0
  516. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/plugin.js +6 -0
  517. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  518. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  519. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  520. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  521. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  522. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/yui/assets/yui.css +6 -0
  523. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/uicolor/yui/yui.js +76 -0
  524. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +49 -0
  525. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
  526. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/wsc/dialogs/wsc.css +6 -0
  527. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +7 -0
  528. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/dialog.css +9 -0
  529. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/editor.css +13 -0
  530. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/icons.png +0 -0
  531. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/icons_rtl.png +0 -0
  532. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  533. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/images/dialog_sides.png +0 -0
  534. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  535. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/images/mini.gif +0 -0
  536. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/images/noimage.png +0 -0
  537. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/images/sprites.png +0 -0
  538. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  539. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  540. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/skin.js +7 -0
  541. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/kama/templates.css +6 -0
  542. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/dialog.css +9 -0
  543. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/editor.css +14 -0
  544. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/icons.png +0 -0
  545. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/icons_rtl.png +0 -0
  546. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  547. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  548. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  549. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/images/mini.gif +0 -0
  550. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/images/noimage.png +0 -0
  551. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/images/sprites.png +0 -0
  552. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  553. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/skin.js +6 -0
  554. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/office2003/templates.css +6 -0
  555. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/dialog.css +9 -0
  556. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/editor.css +13 -0
  557. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/icons.png +0 -0
  558. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/icons_rtl.png +0 -0
  559. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  560. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  561. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  562. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/images/mini.gif +0 -0
  563. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/images/noimage.png +0 -0
  564. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/images/sprites.png +0 -0
  565. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  566. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/images/toolbar_start.gif +0 -0
  567. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/skin.js +6 -0
  568. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/skins/v2/templates.css +6 -0
  569. data/lib/generators/social_stream/base/templates/public/javascripts/ckeditor/themes/default/theme.js +8 -0
  570. data/lib/generators/social_stream/base/templates/public/javascripts/hoverIntent.js +84 -0
  571. data/lib/generators/social_stream/base/templates/public/javascripts/jqcloud-0.1.3.min.js +11 -0
  572. data/lib/generators/social_stream/base/templates/public/javascripts/jquery-ui-1.8.4.custom.min.js +763 -0
  573. data/lib/generators/social_stream/base/templates/public/javascripts/jquery-ui-personalized-1.5.2.packed.js +1 -0
  574. data/lib/generators/social_stream/base/templates/public/javascripts/jquery-ui.min.js +401 -0
  575. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.Jcrop.min.js +163 -0
  576. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.ba-url.js +1091 -0
  577. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.boxy.js +570 -0
  578. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.fcbkcomplete.min.js +77 -0
  579. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.fileupload-ui.js +259 -0
  580. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.fileupload.js +475 -0
  581. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.form.js +815 -0
  582. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.js +7179 -0
  583. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.livequery.js +250 -0
  584. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.min.js +167 -0
  585. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.scrollTo.min.js +11 -0
  586. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.ui.mouse.js +156 -0
  587. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.ui.slider.js +684 -0
  588. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.ui.widget.js +236 -0
  589. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.validate.js +1124 -0
  590. data/lib/generators/social_stream/base/templates/public/javascripts/main.js +28 -0
  591. data/lib/generators/social_stream/base/templates/public/javascripts/menu-collapsed.js +42 -0
  592. data/lib/generators/social_stream/base/templates/public/javascripts/menu.js +25 -0
  593. data/lib/generators/social_stream/base/templates/public/javascripts/rails.js +158 -0
  594. data/lib/generators/social_stream/base/templates/public/javascripts/superfish.js +121 -0
  595. data/lib/generators/social_stream/base/templates/public/javascripts/ui.checkbox.js +309 -0
  596. data/lib/generators/social_stream/base/templates/public/javascripts/ui.dropdownchecklist.js +777 -0
  597. data/lib/generators/social_stream/base/templates/public/stylesheets/default/activities.css +72 -0
  598. data/lib/generators/social_stream/base/templates/public/stylesheets/default/avatars.css +79 -0
  599. data/lib/generators/social_stream/base/templates/public/stylesheets/default/base.css +194 -0
  600. data/lib/generators/social_stream/base/templates/public/stylesheets/default/carousel.css +23 -0
  601. data/lib/generators/social_stream/base/templates/public/stylesheets/default/contacts.css +88 -0
  602. data/lib/generators/social_stream/base/templates/public/stylesheets/default/fcbkComplete.css +44 -0
  603. data/lib/generators/social_stream/base/templates/public/stylesheets/default/footer.css +26 -0
  604. data/lib/generators/social_stream/base/templates/public/stylesheets/default/frontpage.css +54 -0
  605. data/lib/generators/social_stream/base/templates/public/stylesheets/default/header.css +209 -0
  606. data/lib/generators/social_stream/base/templates/public/stylesheets/default/home.css +45 -0
  607. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/fcbkcomplete/close.gif +0 -0
  608. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/loading.gif +0 -0
  609. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  610. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  611. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  612. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  613. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  614. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  615. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  616. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  617. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-icons_222222_256x240.png +0 -0
  618. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-icons_2e83ff_256x240.png +0 -0
  619. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-icons_454545_256x240.png +0 -0
  620. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-icons_888888_256x240.png +0 -0
  621. data/lib/generators/social_stream/base/templates/public/stylesheets/default/images/ui-icons_cd0a0a_256x240.png +0 -0
  622. data/lib/generators/social_stream/base/templates/public/stylesheets/default/jqcloud.css +15 -0
  623. data/lib/generators/social_stream/base/templates/public/stylesheets/default/jquery-ui.css +620 -0
  624. data/lib/generators/social_stream/base/templates/public/stylesheets/default/jquery.Jcrop.css +35 -0
  625. data/lib/generators/social_stream/base/templates/public/stylesheets/default/jquery.fileupload-ui.css +73 -0
  626. data/lib/generators/social_stream/base/templates/public/stylesheets/default/jquery.ui.slider.css +24 -0
  627. data/lib/generators/social_stream/base/templates/public/stylesheets/default/jquery.ui.slidertheme.css +32 -0
  628. data/lib/generators/social_stream/base/templates/public/stylesheets/default/menu.css +27 -0
  629. data/lib/generators/social_stream/base/templates/public/stylesheets/default/messages.css +126 -0
  630. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  631. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  632. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  633. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  634. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  635. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  636. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  637. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  638. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-icons_222222_256x240.png +0 -0
  639. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  640. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-icons_454545_256x240.png +0 -0
  641. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-icons_888888_256x240.png +0 -0
  642. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  643. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/jquery-ui-1.7.3.custom.css +405 -0
  644. data/lib/generators/social_stream/base/templates/public/stylesheets/default/smoothness/jquery-ui-1.8.4.custom.css +572 -0
  645. data/lib/generators/social_stream/base/templates/public/stylesheets/default/spheres.css +226 -0
  646. data/lib/generators/social_stream/base/templates/relations.yml +43 -0
  647. data/lib/paperclip/social_stream.rb +6 -0
  648. data/lib/social_stream/ability.rb +83 -0
  649. data/lib/social_stream/base/version.rb +5 -0
  650. data/lib/social_stream/base.rb +58 -0
  651. data/lib/social_stream/controllers/helpers.rb +83 -0
  652. data/lib/social_stream/models/object.rb +77 -0
  653. data/lib/social_stream/models/subject.rb +114 -0
  654. data/lib/social_stream/models/supertype.rb +44 -0
  655. data/lib/social_stream/populate.rb +26 -0
  656. data/lib/social_stream/test_helpers/controllers.rb +119 -0
  657. data/lib/social_stream/test_helpers.rb +11 -0
  658. data/lib/social_stream-base.rb +98 -0
  659. data/lib/tasks/db/populate.rake +194 -0
  660. data/social_stream-base.gemspec +69 -0
  661. data/spec/controllers/comments_controller_spec.rb +42 -0
  662. data/spec/controllers/contacts_controller_spec.rb +41 -0
  663. data/spec/controllers/frontpage_controller_spec.rb +16 -0
  664. data/spec/controllers/groups_controller_spec.rb +136 -0
  665. data/spec/controllers/home_controller_spec.rb +39 -0
  666. data/spec/controllers/likes_controller_spec.rb +29 -0
  667. data/spec/controllers/permissions_controller_spec.rb +46 -0
  668. data/spec/controllers/posts_controller_spec.rb +129 -0
  669. data/spec/controllers/profiles_controller_spec.rb +102 -0
  670. data/spec/controllers/relation_customs_controller_spec.rb +133 -0
  671. data/spec/controllers/representations_spec.rb +74 -0
  672. data/spec/controllers/spheres_controller_spec.rb +108 -0
  673. data/spec/controllers/subjects_controller.rb +14 -0
  674. data/spec/controllers/users_controller_spec.rb +74 -0
  675. data/spec/dummy/.gitignore +4 -0
  676. data/spec/dummy/Rakefile +7 -0
  677. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  678. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  679. data/spec/dummy/config/application.rb +45 -0
  680. data/spec/dummy/config/boot.rb +10 -0
  681. data/spec/dummy/config/database.yml +30 -0
  682. data/spec/dummy/config/environment.rb +5 -0
  683. data/spec/dummy/config/environments/development.rb +26 -0
  684. data/spec/dummy/config/environments/production.rb +49 -0
  685. data/spec/dummy/config/environments/test.rb +35 -0
  686. data/spec/dummy/config/environments/test_pg.rb +35 -0
  687. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  688. data/spec/dummy/config/initializers/devise.rb +176 -0
  689. data/spec/dummy/config/initializers/inflections.rb +10 -0
  690. data/spec/dummy/config/initializers/mailboxer.rb +8 -0
  691. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  692. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  693. data/spec/dummy/config/initializers/session_store.rb +8 -0
  694. data/spec/dummy/config/initializers/social_stream.rb +17 -0
  695. data/spec/dummy/config/locales/en.yml +5 -0
  696. data/spec/dummy/config/relations.yml +43 -0
  697. data/spec/dummy/config/routes.rb +60 -0
  698. data/spec/dummy/config.ru +4 -0
  699. data/spec/dummy/db/migrate/.gitkeep +0 -0
  700. data/spec/dummy/db/schema.rb +7 -0
  701. data/spec/dummy/db/seeds.rb +8 -0
  702. data/spec/dummy/public/404.html +26 -0
  703. data/spec/dummy/public/422.html +26 -0
  704. data/spec/dummy/public/500.html +26 -0
  705. data/spec/dummy/public/favicon.ico +0 -0
  706. data/spec/dummy/script/rails +6 -0
  707. data/spec/factories/activity.rb +10 -0
  708. data/spec/factories/actor.rb +5 -0
  709. data/spec/factories/comment.rb +4 -0
  710. data/spec/factories/group.rb +4 -0
  711. data/spec/factories/post.rb +4 -0
  712. data/spec/factories/relation_custom.rb +4 -0
  713. data/spec/factories/sphere.rb +5 -0
  714. data/spec/factories/tie.rb +37 -0
  715. data/spec/factories/user.rb +6 -0
  716. data/spec/integration/navigation_spec.rb +9 -0
  717. data/spec/models/activity_spec.rb +365 -0
  718. data/spec/models/actor_spec.rb +19 -0
  719. data/spec/models/group_spec.rb +12 -0
  720. data/spec/models/like_spec.rb +68 -0
  721. data/spec/models/post_spec.rb +33 -0
  722. data/spec/models/profile_spec.rb +39 -0
  723. data/spec/models/relation_custom_spec.rb +14 -0
  724. data/spec/models/tie_activity_spec.rb +109 -0
  725. data/spec/models/tie_spec.rb +166 -0
  726. data/spec/models/user_spec.rb +22 -0
  727. data/spec/social_stream_spec.rb +7 -0
  728. data/spec/spec_helper.rb +34 -0
  729. data/spec/support/cancan.rb +1 -0
  730. data/spec/support/db.rb +21 -0
  731. data/spec/support/devise.rb +4 -0
  732. data/spec/support/migrations.rb +24 -0
  733. metadata +1218 -0
data/app/models/tie.rb ADDED
@@ -0,0 +1,332 @@
1
+ # A {Tie} is a link between two {Actor Actors} with a {Relation}.
2
+ #
3
+ # The first {Actor} is the sender of the {Tie}. The second {Actor}
4
+ # is the receiver of the {Tie}.
5
+ #
6
+ # = {Tie Ties} and {Activity activities}
7
+ # {Activity Activities} are attached to {Tie ties}. When _Alice_ post in _Bob_'s wall,
8
+ # the {Activity} is attached to the {Tie} from _Alice_ to _Bob_
9
+ #
10
+ # * The sender of the {Tie} is the author of the {Activity}.
11
+ # It is the user that uploads a resource to the website or the social entity that
12
+ # originates the {Activity} (for example: add as contact).
13
+ #
14
+ # * The receiver {Actor} of the {Tie} is the receiver of the {Activity}.
15
+ # The {Activity} will appear in the wall of the receiver, depending on the permissions
16
+ #
17
+ # * The {Relation} sets up the mode in which the {Activity} is shared.
18
+ # It sets the rules, or {Permission Permissions}, by which {Actor} have access
19
+ # to the {Activity}.
20
+ #
21
+ # = Tie strengh
22
+ #
23
+ # Because each {Tie} belongs to a {Relation} and {Relation Relations} have strength
24
+ # hierarchies, {Tie Ties} also have them. A {Tie} is stronger than other if its
25
+ # {Relation} is stronger than the other's. For example, if _Alice_ has a _friend_ {Tie}
26
+ # with _Bob_, and an _acquaintance_ {Tie} with _Charlie_, given that _friend_ {Relation}
27
+ # is stronger than _acquaintance_, the {Tie} with _Bob_ is stronger than the {Tie} with
28
+ # _Charlie_.
29
+ #
30
+ # = Authorization
31
+ # When an {Actor} establishes a {Tie} with other, she is granting a set of
32
+ # {Permission Permissions} to them (posting to her wall, reading her posts, etc..)
33
+ # The set of {Permission Permissions} granted are associated with the {Relation} of
34
+ # the {Tie}.
35
+ #
36
+ # Usually, stronger ties (and relations) have more permissions than weaker ones.
37
+ #
38
+ # = Scopes
39
+ # There are several scopes defined:
40
+ #
41
+ # sent_by(actor):: ties whose sender is actor
42
+ # received_by(actor):: ties whose receiver is actor
43
+ # sent_or_received_by(actor):: the union of the former
44
+ # related_by(relation):: ties with this relation. Accepts relation, relation_name,
45
+ # integer, array
46
+ # replied:: ties having at least another tie in the other way, a tie from a to b
47
+ # is replied if there is a tie from b to a
48
+ # intended:: ties can be desactivated by subjects when they change their connections.
49
+ # This scope gathers the active ones
50
+ #
51
+ class Tie < ActiveRecord::Base
52
+ # Facilitates relation assigment along with find_relation callback
53
+ attr_writer :relation_name
54
+ # Facilitates new relation permissions assigment along with find_or build_relation callback
55
+ attr_accessor :relation_sphere, :relation_permissions
56
+ # Send a message when this tie is created
57
+ attr_accessor :message
58
+
59
+ belongs_to :sender,
60
+ :class_name => "Actor",
61
+ :include => SocialStream.subjects
62
+ belongs_to :receiver,
63
+ :class_name => "Actor",
64
+ :include => SocialStream.subjects
65
+
66
+ belongs_to :relation
67
+
68
+ has_many :tie_activities, :dependent => :destroy
69
+ has_many :activities, :through => :tie_activities
70
+
71
+ scope :recent, order("ties.created_at DESC")
72
+
73
+ scope :sent_by, lambda { |a|
74
+ where(:sender_id => Actor.normalize_id(a))
75
+ }
76
+
77
+ scope :received_by, lambda { |a|
78
+ where(:receiver_id => Actor.normalize_id(a))
79
+ }
80
+
81
+ scope :sent_or_received_by, lambda { |a|
82
+ where(arel_table[:sender_id].eq(Actor.normalize_id(a)).
83
+ or(arel_table[:receiver_id].eq(Actor.normalize_id(a))))
84
+ }
85
+
86
+ scope :related_by, lambda { |r|
87
+ if r.present?
88
+ where(:relation_id => Relation.normalize_id(r))
89
+ end
90
+ }
91
+
92
+ scope :replied, lambda {
93
+ select("DISTINCT ties.*").
94
+ from("ties, ties as ties_2").
95
+ where("ties.sender_id = ties_2.receiver_id AND ties.receiver_id = ties_2.sender_id")
96
+ }
97
+
98
+ scope :replying, lambda { |tie|
99
+ where(:sender_id => tie.receiver_id).
100
+ where(:receiver_id => tie.sender_id)
101
+ }
102
+
103
+ scope :following, lambda { |a|
104
+ where(:receiver_id => Actor.normalize_id(a)).
105
+ joins(:relation => :permissions).merge(Permission.follow)
106
+ }
107
+
108
+ scope :public_relation, lambda {
109
+ joins(:relation).where('relations.type' => 'Relation::Public')
110
+ }
111
+
112
+ scope :intended, where(:intended => true)
113
+
114
+ validates_presence_of :sender_id, :receiver_id, :relation
115
+
116
+ before_validation :find_or_build_relation
117
+
118
+ before_create :save_relation
119
+
120
+ after_create :increment_follower_count
121
+ after_destroy :decrement_follower_count
122
+
123
+ def relation_name
124
+ @relation_name || relation.try(:name)
125
+ end
126
+
127
+ def relation!
128
+ relation ||
129
+ find_relation
130
+ end
131
+
132
+ def sender_subject
133
+ sender.try(:subject)
134
+ end
135
+
136
+ def receiver_subject
137
+ receiver.try(:subject)
138
+ end
139
+
140
+ # Does this tie have the same sender and receiver?
141
+ def reflexive?
142
+ sender_id == receiver_id
143
+ end
144
+
145
+ # Is there any tie from receiver to sender?
146
+ def replied?
147
+ receiver.ties_to?(sender)
148
+ end
149
+
150
+ # The set of ties between sender and receiver
151
+ #
152
+ # Options::
153
+ # * relations: Only ties with relations
154
+ def relation_set(options = {})
155
+ set = self.class.where(:sender_id => sender_id,
156
+ :receiver_id => receiver_id)
157
+
158
+ if options.key?(:relations)
159
+ set =
160
+ set.related_by Relation.normalize_id(options[:relations],
161
+ :sender => sender)
162
+ end
163
+
164
+ set
165
+ end
166
+
167
+ # The tie with relation r inside this relation_set
168
+ def related(r)
169
+ relation_set(:relations => r).first
170
+ end
171
+
172
+ # = Access Control
173
+ #
174
+ # Access control enforcement in ties come from the permissions assigned to other ties through relations.
175
+ # The access_set is the set of ties that grant some permission on a particular tie.
176
+ #
177
+ # Enforcing access control on activities and ties are a matter of finding its access set.
178
+ # There are two approaches for this, checking the permissions on particular tie or finding all the ties
179
+ # granted some permission.
180
+ #
181
+ # == Particular tie
182
+ # ------------------ ------------------
183
+ # | particular tie |--------| access_set |
184
+ # | t | | ties |
185
+ # ------------------ ------------------
186
+ #
187
+ # Because t is given, the scopes are applied to the ties table
188
+ # We get the set of ties that allow permission on t
189
+ #
190
+ # == Finding ties
191
+ # ------------------ join ------------------
192
+ # | finding ties |--------| access_set |
193
+ # | ties | | ties_as |
194
+ # ------------------ ------------------
195
+ #
196
+ # Because we want to find ties, an additional join table (ties_as) is needed for applying access set conditions
197
+ # We get the set of ties that are allowing certain permission
198
+ #
199
+
200
+ # Given a given permission (action, object), the access_set are the set of ties that grant that permission.
201
+ scope :access_set, lambda { |tie, action, object|
202
+ with_permissions(action, object).
203
+ where(Permission.parameter_conditions(tie))
204
+ }
205
+
206
+ scope :allowing_set, lambda { |action, object|
207
+ query =
208
+ select("DISTINCT ties.*").
209
+ from("ties INNER JOIN relations ON relations.id = ties.relation_id, ties as ties_as INNER JOIN relations AS relations_as ON relations_as.id = ties_as.relation_id INNER JOIN relation_permissions ON relations_as.id = relation_permissions.relation_id INNER JOIN permissions ON permissions.id = relation_permissions.permission_id").
210
+ where("permissions.action" => action).
211
+ where("permissions.object" => object)
212
+
213
+ conds = Permission.parameter_conditions
214
+ # FIXME: Patch to support public activities
215
+ if action == 'read' && object == 'activity'
216
+ conds = "( #{ conds } ) OR #{ sanitize_sql('relations.type' => 'Relation::Public') }"
217
+ end
218
+
219
+ query.where(conds)
220
+ }
221
+
222
+ scope :allowing, lambda { |actor, action, object|
223
+ allowing_set(action, object).
224
+ where("ties_as.receiver_id" => Actor.normalize_id(actor))
225
+ }
226
+
227
+ # The set of ties that permit this tie allow to allow action on object
228
+ def access_set(action, object)
229
+ self.class.access_set(self, action, object)
230
+ end
231
+
232
+ # The set of ties allowing user to perform action on object
233
+ def allowing(user, action, object)
234
+ access_set(action, object).received_by(user)
235
+ end
236
+
237
+ # Does this tie allows user to perform action on object?
238
+ #
239
+ # We allow all actions on reflexive ties
240
+ def allow?(user, action, object)
241
+ return true if Actor.normalize_id(user) == sender_id && reflexive?
242
+
243
+ # FIXME: Patch to support public activities.
244
+ if relation.is_a?(Relation::Public)
245
+ return relation.allow?(user, action, object)
246
+ end
247
+
248
+ allowing(user, action, object).any?
249
+ end
250
+
251
+ scope :with_permissions, lambda { |action, object|
252
+ joins(:relation => :permissions).
253
+ where('permissions.action' => action).
254
+ where('permissions.object' => object)
255
+ }
256
+
257
+ # All the ties that are allowed to follow activities from this tie
258
+ def followers
259
+ followers = Tie.received_by(sender).with_permissions('follow', nil)
260
+
261
+ unless relation.is_a?(Relation::Public)
262
+ allowed = access_set('read', 'activity').map(&:receiver_id)
263
+
264
+ followers = followers.sent_by(allowed)
265
+ end
266
+
267
+ followers
268
+ end
269
+
270
+ private
271
+
272
+ # Before validation callback
273
+ # Assigns relation or builds it based on the param
274
+ def find_or_build_relation
275
+ return if find_relation || relation_name.blank?
276
+
277
+ self.relation = Relation::Custom.new :name => relation_name,
278
+ :sphere => nil
279
+
280
+ relation.permission_ids = relation_permissions
281
+ end
282
+
283
+ # Infers relation from its name and the type of the actors
284
+ def find_relation
285
+ return if relation_name.blank?
286
+
287
+ if relation_name == relation.try(:name)
288
+ relation
289
+ elsif sender.present?
290
+ self.relation = sender.relation_custom(relation_name)
291
+ end
292
+ end
293
+
294
+ def save_relation
295
+ relation.save! if relation.new_record?
296
+ end
297
+
298
+ # after_create callback
299
+ #
300
+ # Increment the {Actor}'s follower_count
301
+ def increment_follower_count
302
+ return if reflexive? ||
303
+ !relation.permissions.include?(Permission.follow.first)
304
+
305
+ # Because we allow several ties from the same sender to the same receiver,
306
+ # we check the receiver does not already have a follower tie from this sender
307
+ return if sender.sent_ties.
308
+ received_by(receiver).
309
+ with_permissions('follow', nil).
310
+ where("ties.id != ?", id).
311
+ present?
312
+
313
+ receiver.increment!(:follower_count)
314
+ end
315
+
316
+ # after_destroy callback
317
+ #
318
+ # Decrement the {Actor}'s follower_count
319
+ def decrement_follower_count
320
+ return if reflexive? ||
321
+ !relation.permissions.include?(Permission.follow.first)
322
+
323
+ # Because we allow several ties from the same sender to the same receiver,
324
+ # we check the receiver does not still have a follower tie from this sender
325
+ return if sender.sent_ties.
326
+ received_by(receiver).
327
+ with_permissions('follow', nil).
328
+ present?
329
+
330
+ receiver.decrement!(:follower_count)
331
+ end
332
+ end
@@ -0,0 +1,42 @@
1
+ class TieActivity < ActiveRecord::Base
2
+ belongs_to :activity
3
+ belongs_to :tie
4
+
5
+ after_create :disseminate
6
+
7
+ private
8
+
9
+ # Make a copy to all the ties that are both interesed and allowed to reach the activity
10
+ def disseminate
11
+ return unless original?
12
+
13
+ followers = tie.followers
14
+
15
+ # FIXME: here we need to check moderation and diffussion of the received activity.
16
+ #
17
+ # Sometimes, diffussion is not required, i.e. when the sender adds the receiver as contact
18
+ # Other times, the receiver must explicitly allow to post to her wall, and the dissemination permissions
19
+ # can control who else related with the receiver should receive the activity
20
+ receiver_ties =
21
+ Tie.
22
+ with_permissions('create', 'activity').
23
+ replying(tie)
24
+
25
+ if receiver_ties.present?
26
+ followers |= receiver_ties
27
+
28
+ # Disseminate to the followers of the receiver
29
+ receiver_ties.each do |t|
30
+ followers |= t.followers
31
+ end
32
+ end
33
+
34
+ # All the ties following the activities attached to this tie, allowed to read
35
+ # this activity
36
+ followers.each do |t|
37
+ self.class.create!(:activity_id => activity_id,
38
+ :tie => t,
39
+ :original => false)
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,125 @@
1
+ require 'devise/orm/active_record'
2
+
3
+ class User < ActiveRecord::Base
4
+ has_many :authentications
5
+ devise *SocialStream.devise_modules
6
+
7
+ # Setup accessible (or protected) attributes for your model
8
+ attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :profile_attributes
9
+
10
+ validates_presence_of :email
11
+
12
+ validates_format_of :email, :with => Devise.email_regexp, :allow_blank => true
13
+ # TODO: uniqueness of email, which is in actor
14
+
15
+ with_options :if => :password_required? do |v|
16
+ v.validates_presence_of :password
17
+ v.validates_confirmation_of :password
18
+ v.validates_length_of :password, :within => Devise.password_length, :allow_blank => true
19
+ end
20
+
21
+ def recent_groups
22
+ contacts(:type => :group, :direction => :sent) do |q|
23
+ q.select("ties.created_at").
24
+ merge(Tie.recent)
25
+ end
26
+ end
27
+
28
+ # Subjects this user can acts as
29
+ def represented
30
+ contacts(:direction => :received) do |q|
31
+ q.joins(:sent_ties => { :relation => :permissions }).merge(Permission.represent)
32
+ end
33
+ end
34
+
35
+ protected
36
+
37
+ # From devise
38
+ def password_required?
39
+ !persisted? || !password.nil? || !password_confirmation.nil?
40
+ end
41
+
42
+ class << self
43
+ %w( email slug name ).each do |a|
44
+ eval <<-EOS
45
+ def find_by_#{ a }(#{ a }) # def find_by_email(email)
46
+ find :first, # find(:first,
47
+ :include => :actor, # :include => :actor,
48
+ :conditions => # :conditions =>
49
+ { 'actors.#{ a }' => #{ a } } # { 'actors.email' => email }
50
+ end # end
51
+ EOS
52
+ end
53
+
54
+ # Overwrite devise default find method to support login with email,
55
+ # presence ID and login
56
+ def find_for_authentication(conditions)
57
+ if ( login = conditions[:email] ).present?
58
+ if login =~ /@/
59
+ find_by_email(login)
60
+ else
61
+ find_by_slug(login)
62
+ end
63
+ else
64
+ super
65
+ end
66
+ end
67
+
68
+ def find_or_initialize_with_error_by(attribute, value, error=:invalid)
69
+ if attribute == :email
70
+ find_or_initialize_with_error_by_email(value, error)
71
+ else
72
+ super
73
+ end
74
+ end
75
+
76
+ # Overwrite devise default method to support finding with actor.email
77
+ def find_or_initialize_with_error_by_email(value, error)
78
+ if value.present?
79
+ record = find_by_email(value)
80
+ end
81
+
82
+ unless record
83
+ record = new
84
+
85
+ if value.present?
86
+ record.email = value
87
+ else
88
+ error = :blank
89
+ end
90
+
91
+ record.errors.add(:email, error)
92
+ end
93
+
94
+ record
95
+ end
96
+
97
+ def find_or_create_for_facebook_oauth(access_token,signed_in_resource=nil)
98
+ data = access_token['extra']['user_hash']
99
+ print data
100
+ auth = Authentication.find_by_provider_and_uid(access_token["provider"],access_token["uid"])
101
+ user = User.find_by_email(data["email"])
102
+
103
+ if user == nil
104
+ user = User.create!(:name => data["name"], :email => data["email"], :password => Devise.friendly_token[0,20])
105
+ end
106
+ if auth == nil
107
+ auth = Authentication.create!(:user_id => user.id, :uid =>access_token["uid"], :provider => access_token["provider"])
108
+ end
109
+ user
110
+ end
111
+
112
+ def find_or_create_for_linkedin_oauth(access_token,signed_in_resource=nil)
113
+ auth = Authentication.find_by_uid_and_provider(access_token["uid"],access_token["provider"])
114
+ if auth==nil
115
+ user = User.create!(:name => access_token["user_info"]["name"], :email => 'demo@socialstream.com', :password => Devise.friendly_token[0,20])
116
+ auth = Authentication.create!(:user_id => user.id, :uid =>access_token["uid"], :provider => access_token["provider"])
117
+ user
118
+ else
119
+ user = User.find_by_id(auth.user_id)
120
+ user
121
+ end
122
+ end
123
+
124
+ end
125
+ end
@@ -0,0 +1,5 @@
1
+ <% if activity.is_root? %>
2
+ <%= render :partial => "activities/root", :locals => { :activity => activity } %>
3
+ <% else %>
4
+ <%= render :partial => "activities/child", :locals => { :activity => activity } %>
5
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <%= div_for activity, :class => "subactivity" do %>
2
+ <div class="actor_logo_subactivity">
3
+ <%= link_to image_tag(activity.sender_subject.logo.url(:actor),
4
+ :alt => activity.sender_subject.name),
5
+ activity.sender_subject %>
6
+ </div>
7
+ <div class="activity_content">
8
+ <div class="actor_name-activity_objects">
9
+ <%= link_to(activity.sender_subject.name, activity.sender_subject) %>
10
+ <span class="subactivity_objects">
11
+ <%= render activity.activity_objects %>
12
+ </span>
13
+ </div>
14
+ <%= render :partial => 'activities/options',
15
+ :locals => { :activity => activity } %>
16
+ </div>
17
+ <% end %>
18
+ <div class="space_comments"></div>
@@ -0,0 +1,3 @@
1
+ <div class="activity_comments" id="comments_<%= dom_id(activity) %>">
2
+ <%= render activity.comments %>
3
+ </div>
@@ -0,0 +1,22 @@
1
+ <% content_for :headers do %>
2
+ <%= stylesheet_link_tag "activities", :media => "screen, projection" %>
3
+ <%= stylesheet_link_tag "jquery-ui", :media => "screen, projection" %>
4
+ <% end %>
5
+
6
+ <% content_for :javascript do %>
7
+ <%= render :partial => 'activities/jquery' %>
8
+ <% end -%>
9
+
10
+ <div id="wrapper_activities">
11
+ <div id="wrapper_activities_header">
12
+ <div id="activities_title" class="content_size">
13
+ <%= image_tag("btn/btn_activities.png") %> <%=t('activity.other')%>
14
+ </div>
15
+ <%= render :partial => 'activities/new', :locals => { :receiver => owner } %>
16
+ </div>
17
+
18
+ <div id="wall">
19
+ <%= render activities %>
20
+ <%= will_paginate activities %>
21
+ </div>
22
+ </div>
@@ -0,0 +1,100 @@
1
+ //javascript for main activities input
2
+ title = "<%= t('activity.input') %>";
3
+ $("#input_activities").click(function(){
4
+ if(this.value == title){
5
+ this.value="";
6
+ $("#activities_share_btn").show();
7
+ }
8
+ });
9
+
10
+
11
+ //javascript for comments
12
+ $(".input_new_comments").val("<%= t('comment.input') %>");
13
+ $(".activities_comment_btn").hide();
14
+
15
+ //usa livequery para usar el javascript luego de una accion con AJAX
16
+ $(".input_new_comments").livequery("click",function(){
17
+ if(this.value == "<%= t('comment.input') %>"){
18
+ $(this).val("");
19
+ }
20
+ $(".activities_comment_btn").hide();
21
+ $(this).parent(".new_comment").children(".activities_comment_btn").show();
22
+ });
23
+ $(".input_new_comments").livequery("blur",function(){
24
+ if(this.value == ""){
25
+ $(".activities_comment_btn").hide();
26
+ $(this).val("<%= t('comment.input') %>");
27
+ }
28
+ });
29
+
30
+ $(".input_new_comments").click(function(){
31
+ if(this.value == "<%= t('comment.input') %>"){
32
+ $(this).val("");
33
+ }
34
+ $(".activities_comment_btn").hide();
35
+ $(this).parent(".new_comment").children(".activities_comment_btn").show();
36
+ });
37
+
38
+ //javascript for tocomment option
39
+ $(".to_comment").livequery("click", function(){
40
+ $(this).parents(".activity_content").find(".input_new_comments").click();
41
+ $(this).parents(".activity_content").find(".input_new_comments").focus();
42
+ return false;
43
+ });
44
+ $(".to_comment").livequery("blur", function(){
45
+ $(this).parents(".activity_content").find(".input_new_comments").blur();
46
+ return false;
47
+ });
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+ //move he last list item before the first item. The purpose of this is if the user clicks to slide left he will be able to see the last item.
58
+ $('#carousel_ul li:first').before($('#carousel_ul li:last'));
59
+
60
+
61
+ //when user clicks the image for sliding right
62
+ $('#right_scroll img').livequery("click",function(){
63
+
64
+ //get the width of the items ( i like making the jquery part dynamic, so if you change the width in the css you won't have o change it here too ) '
65
+ var item_width = $('#carousel_ul li').outerWidth() + 10;
66
+
67
+ //calculae the new left indent of the unordered list
68
+ var left_indent = parseInt($('#carousel_ul').css('left')) - item_width;
69
+
70
+ //make the sliding effect using jquery's anumate function '
71
+ $('#carousel_ul:not(:animated)').animate({'left' : left_indent},500,function(){
72
+
73
+ //get the first list item and put it after the last list item (that's how the infinite effects is made) '
74
+ $('#carousel_ul li:last').after($('#carousel_ul li:first'));
75
+
76
+ //and get the left indent to the default -210px
77
+ $('#carousel_ul').css({'left' : '-210px'});
78
+ });
79
+ });
80
+
81
+ //when user clicks the image for sliding left
82
+ $('#left_scroll img').livequery("click",function(){
83
+
84
+ var item_width = $('#carousel_ul li').outerWidth() + 10;
85
+
86
+ /* same as for sliding right except that it's current left indent + the item width (for the sliding right it's - item_width) */
87
+ var left_indent = parseInt($('#carousel_ul').css('left')) + item_width;
88
+
89
+ $('#carousel_ul:not(:animated)').animate({'left' : left_indent},500,function(){
90
+
91
+ /* when sliding to left we are moving the last item before the first list item */
92
+ $('#carousel_ul li:first').before($('#carousel_ul li:last'));
93
+
94
+ /* and again, when we make that change we are setting the left indent of our unordered list to the default -210px */
95
+ $('#carousel_ul').css({'left' : '-210px'});
96
+ });
97
+
98
+
99
+ });
100
+
@@ -0,0 +1,30 @@
1
+ <% if receiver.activity_ties_for?(current_subject) %>
2
+ <% content_for :javascript do %>
3
+
4
+ securityImage = "<%= escape_javascript(image_tag('btn/btn_security.png', :id => 'security_image', :alt => 'security')) %>";
5
+ downImage = "<%= escape_javascript(image_tag('btn/btn_down.png')) %>";
6
+
7
+ $("#security").dropdownchecklist( { closeRadioOnClick: true } );
8
+ $("#security_image").parent().width(28);
9
+ $("#security_image").parent().parent().width(28);
10
+ <% end %>
11
+
12
+ <div id="activities_header" class="content_size">
13
+ <%= form_for Post.new(:text => t('activity.input'),
14
+ :_activity_tie_id => receiver.activity_ties_for(current_subject).first.id),
15
+ :remote => true do |f| %>
16
+ <%= f.text_field :text, :id => "input_activities", :size => 85 %>
17
+ <div id="activities_share_btn">
18
+
19
+ <% if receiver.activity_ties_for(current_subject).count > 1 %>
20
+ <div id="securities">
21
+ <%= f.select :_activity_tie_id, receiver.activity_ties_for(current_subject).sort{ |t, u| t.relation <=> u.relation }.map{ |t| [ t.relation_name, t.id ] }, {}, :id => 'security' %>
22
+ </div>
23
+ <% else %>
24
+ <%= f.hidden_field :_activity_tie_id %>
25
+ <% end %>
26
+ <%= f.submit t('share'), :class =>"myButtonBlue" %>
27
+ </div>
28
+ <% end -%>
29
+ </div>
30
+ <% end %>