social_stream-base 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (591) hide show
  1. data/.gitignore +1 -0
  2. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/HTML5.png +0 -0
  3. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/HTML5_Semantics.png +0 -0
  4. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/HTML5_Styling.png +0 -0
  5. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/Jcrop.gif +0 -0
  6. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/boxy/boxy-ne.png +0 -0
  7. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/boxy/boxy-nw.png +0 -0
  8. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/boxy/boxy-se.png +0 -0
  9. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/boxy/boxy-sw.png +0 -0
  10. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/1-facebook.png +0 -0
  11. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/_notes/btn_certificates.png.mno +0 -0
  12. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/arrowBlue.png +0 -0
  13. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/arrows-ffffff.png +0 -0
  14. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/bold.png +0 -0
  15. data/{lib/generators/social_stream/base/templates/public/images/btn/btn_profile.png → app/assets/images/btn/btn_account.png} +0 -0
  16. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_activities.png +0 -0
  17. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_bookmark.png +0 -0
  18. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_browse.png +0 -0
  19. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_check.png +0 -0
  20. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_close.png +0 -0
  21. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_comment.png +0 -0
  22. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_comment_add.png +0 -0
  23. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_config.png +0 -0
  24. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_date.png +0 -0
  25. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_delete.png +0 -0
  26. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_down.png +0 -0
  27. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_edit.png +0 -0
  28. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_exit.png +0 -0
  29. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_find.png +0 -0
  30. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_follow.png +0 -0
  31. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_foward.png +0 -0
  32. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_friend.png +0 -0
  33. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_gallery.png +0 -0
  34. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_group.png +0 -0
  35. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_help.png +0 -0
  36. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_home.png +0 -0
  37. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_inbox.png +0 -0
  38. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_info.png +0 -0
  39. data/app/assets/images/btn/btn_invitation.png +0 -0
  40. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_like.png +0 -0
  41. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_next.png +0 -0
  42. data/app/assets/images/btn/btn_notification.png +0 -0
  43. data/app/assets/images/btn/btn_notification_delete.png +0 -0
  44. data/app/assets/images/btn/btn_notification_read.png +0 -0
  45. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_notifications.png +0 -0
  46. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_page_link.png +0 -0
  47. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_partner.png +0 -0
  48. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_photo.png +0 -0
  49. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_printer.png +0 -0
  50. data/app/assets/images/btn/btn_profile.png +0 -0
  51. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_rank.png +0 -0
  52. data/app/assets/images/btn/btn_read.png +0 -0
  53. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_security.png +0 -0
  54. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_send.png +0 -0
  55. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_spam.png +0 -0
  56. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_star.png +0 -0
  57. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_tag.png +0 -0
  58. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/btn_write.png +0 -0
  59. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/close.png +0 -0
  60. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/date.png +0 -0
  61. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/edit.png +0 -0
  62. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/error.png +0 -0
  63. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/facebook.png +0 -0
  64. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/flag.png +0 -0
  65. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/group_left.png +0 -0
  66. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/group_right.png +0 -0
  67. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/index_71.png +0 -0
  68. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/info.png +0 -0
  69. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/italic.png +0 -0
  70. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/like.png +0 -0
  71. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/linkedin.png +0 -0
  72. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/message_conversation.png +0 -0
  73. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/message_inbox.png +0 -0
  74. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/message_new.png +0 -0
  75. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/message_sentbox.png +0 -0
  76. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/message_trash.png +0 -0
  77. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/new.png +0 -0
  78. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/next_conference.png +0 -0
  79. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/next_space.png +0 -0
  80. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/nolike.png +0 -0
  81. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/notifications.png +0 -0
  82. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/pixel.png +0 -0
  83. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/point_blue.png +0 -0
  84. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/point_gray.png +0 -0
  85. data/app/assets/images/btn/post.png +0 -0
  86. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/search.png +0 -0
  87. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/shadow.png +0 -0
  88. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/share.png +0 -0
  89. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/subtime.png +0 -0
  90. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/success.png +0 -0
  91. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/tag_cloud.png +0 -0
  92. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/twitter-follow-icon.png +0 -0
  93. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/twitter.png +0 -0
  94. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/uno.png +0 -0
  95. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/viewer.png +0 -0
  96. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/btn/warning.png +0 -0
  97. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/cancel.png +0 -0
  98. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/collaborate.png +0 -0
  99. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/comments.png +0 -0
  100. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/green_sq.png +0 -0
  101. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/join.gif +0 -0
  102. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/meet.png +0 -0
  103. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/people.png +0 -0
  104. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/purple_sq.png +0 -0
  105. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/right_comments.gif +0 -0
  106. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/right_organizers.gif +0 -0
  107. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/right_people.gif +0 -0
  108. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/right_social.gif +0 -0
  109. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/right_tags.gif +0 -0
  110. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/right_webcam.gif +0 -0
  111. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/share.png +0 -0
  112. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/tags.png +0 -0
  113. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/frontpage/yellow_sq.png +0 -0
  114. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/header-logo.png +0 -0
  115. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/html5-badge-h-css3-semantics.png +0 -0
  116. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/icon_checkbox.png +0 -0
  117. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/icons/favicon.ico +0 -0
  118. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/left.png +0 -0
  119. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/loader.gif +0 -0
  120. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logo.png +0 -0
  121. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/actor/group.png +0 -0
  122. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/actor/remote_subject.png +0 -0
  123. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/actor/remote_user.png +0 -0
  124. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/actor/user.png +0 -0
  125. data/{lib/generators/social_stream/base/templates/public/images/logos/tie → app/assets/images/logos/contact}/group.png +0 -0
  126. data/{lib/generators/social_stream/base/templates/public/images/logos/tie → app/assets/images/logos/contact}/user.png +0 -0
  127. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/original/group.png +0 -0
  128. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/original/user.png +0 -0
  129. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/profile/group.png +0 -0
  130. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/profile/user.png +0 -0
  131. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/representation/group.png +0 -0
  132. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/logos/representation/user.png +0 -0
  133. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/right.png +0 -0
  134. data/{lib/generators/social_stream/base/templates/public → app/assets}/images/title_background.png +0 -0
  135. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ajax.paginate.js +0 -0
  136. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/.htaccess +0 -0
  137. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/adapters/jquery.js +0 -0
  138. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/ckeditor.js +0 -0
  139. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/ckeditor_basic.js +0 -0
  140. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/ckeditor_basic_source.js +0 -0
  141. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/ckeditor_source.js +0 -0
  142. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/config.js +0 -0
  143. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/contents.css +0 -0
  144. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/images/spacer.gif +0 -0
  145. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/_languages.js +0 -0
  146. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/_translationstatus.txt +0 -0
  147. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/af.js +0 -0
  148. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/ar.js +0 -0
  149. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/bg.js +0 -0
  150. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/bn.js +0 -0
  151. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/bs.js +0 -0
  152. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/ca.js +0 -0
  153. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/cs.js +0 -0
  154. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/cy.js +0 -0
  155. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/da.js +0 -0
  156. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/de.js +0 -0
  157. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/el.js +0 -0
  158. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/en-au.js +0 -0
  159. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/en-ca.js +0 -0
  160. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/en-gb.js +0 -0
  161. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/en.js +0 -0
  162. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/eo.js +0 -0
  163. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/es.js +0 -0
  164. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/et.js +0 -0
  165. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/eu.js +0 -0
  166. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/fa.js +0 -0
  167. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/fi.js +0 -0
  168. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/fo.js +0 -0
  169. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/fr-ca.js +0 -0
  170. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/fr.js +0 -0
  171. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/gl.js +0 -0
  172. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/gu.js +0 -0
  173. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/he.js +0 -0
  174. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/hi.js +0 -0
  175. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/hr.js +0 -0
  176. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/hu.js +0 -0
  177. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/is.js +0 -0
  178. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/it.js +0 -0
  179. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/ja.js +0 -0
  180. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/km.js +0 -0
  181. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/ko.js +0 -0
  182. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/lt.js +0 -0
  183. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/lv.js +0 -0
  184. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/mn.js +0 -0
  185. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/ms.js +0 -0
  186. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/nb.js +0 -0
  187. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/nl.js +0 -0
  188. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/no.js +0 -0
  189. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/pl.js +0 -0
  190. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/pt-br.js +0 -0
  191. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/pt.js +0 -0
  192. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/ro.js +0 -0
  193. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/ru.js +0 -0
  194. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/sk.js +0 -0
  195. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/sl.js +0 -0
  196. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/sr-latn.js +0 -0
  197. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/sr.js +0 -0
  198. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/sv.js +0 -0
  199. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/th.js +0 -0
  200. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/tr.js +0 -0
  201. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/uk.js +0 -0
  202. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/vi.js +0 -0
  203. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/zh-cn.js +0 -0
  204. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/lang/zh.js +0 -0
  205. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +0 -0
  206. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/a11yhelp/lang/en.js +0 -0
  207. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/a11yhelp/lang/he.js +0 -0
  208. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/about/dialogs/about.js +0 -0
  209. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  210. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/adobeair/plugin.js +0 -0
  211. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/autogrow/plugin.js +0 -0
  212. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +0 -0
  213. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +0 -0
  214. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +0 -0
  215. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/div/dialogs/div.js +0 -0
  216. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/find/dialogs/find.js +0 -0
  217. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/flash/dialogs/flash.js +0 -0
  218. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/flash/images/placeholder.png +0 -0
  219. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/dialogs/button.js +0 -0
  220. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/dialogs/checkbox.js +0 -0
  221. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/dialogs/form.js +0 -0
  222. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/dialogs/hiddenfield.js +0 -0
  223. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/dialogs/radio.js +0 -0
  224. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/dialogs/select.js +0 -0
  225. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/dialogs/textarea.js +0 -0
  226. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/dialogs/textfield.js +0 -0
  227. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  228. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/iframe/dialogs/iframe.js +0 -0
  229. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/iframe/images/placeholder.png +0 -0
  230. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/iframedialog/plugin.js +0 -0
  231. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/image/dialogs/image.js +0 -0
  232. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/link/dialogs/anchor.js +0 -0
  233. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/link/dialogs/link.js +0 -0
  234. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/link/images/anchor.gif +0 -0
  235. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +0 -0
  236. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  237. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/pastefromword/filter/default.js +0 -0
  238. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/pastetext/dialogs/pastetext.js +0 -0
  239. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/placeholder/dialogs/placeholder.js +0 -0
  240. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/placeholder/lang/en.js +0 -0
  241. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/placeholder/placeholder.gif +0 -0
  242. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/placeholder/plugin.js +0 -0
  243. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/scayt/dialogs/options.js +0 -0
  244. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/scayt/dialogs/toolbar.css +0 -0
  245. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  246. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  247. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  248. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  249. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  250. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  251. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  252. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  253. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  254. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  255. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  256. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/dialogs/smiley.js +0 -0
  257. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  258. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  259. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  260. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  261. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  262. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  263. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  264. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  265. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/heart.gif +0 -0
  266. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  267. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  268. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  269. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  270. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  271. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  272. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  273. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  274. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  275. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  276. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  277. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  278. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +0 -0
  279. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/specialchar/lang/en.js +0 -0
  280. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/styles/styles/default.js +0 -0
  281. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/table/dialogs/table.js +0 -0
  282. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/tableresize/plugin.js +0 -0
  283. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +0 -0
  284. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/templates/dialogs/templates.js +0 -0
  285. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/templates/templates/default.js +0 -0
  286. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  287. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  288. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  289. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/dialogs/uicolor.js +0 -0
  290. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/lang/en.js +0 -0
  291. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/lang/he.js +0 -0
  292. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/plugin.js +0 -0
  293. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  294. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  295. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  296. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  297. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  298. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/yui/assets/yui.css +0 -0
  299. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/uicolor/yui/yui.js +0 -0
  300. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +0 -0
  301. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +0 -0
  302. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/wsc/dialogs/wsc.css +0 -0
  303. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +0 -0
  304. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/dialog.css +0 -0
  305. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/editor.css +0 -0
  306. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/icons.png +0 -0
  307. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/icons_rtl.png +0 -0
  308. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  309. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/images/dialog_sides.png +0 -0
  310. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  311. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/images/mini.gif +0 -0
  312. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/images/noimage.png +0 -0
  313. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/images/sprites.png +0 -0
  314. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  315. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  316. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/skin.js +0 -0
  317. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/kama/templates.css +0 -0
  318. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/dialog.css +0 -0
  319. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/editor.css +0 -0
  320. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/icons.png +0 -0
  321. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/icons_rtl.png +0 -0
  322. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  323. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  324. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  325. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/images/mini.gif +0 -0
  326. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/images/noimage.png +0 -0
  327. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/images/sprites.png +0 -0
  328. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  329. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/skin.js +0 -0
  330. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/office2003/templates.css +0 -0
  331. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/dialog.css +0 -0
  332. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/editor.css +0 -0
  333. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/icons.png +0 -0
  334. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/icons_rtl.png +0 -0
  335. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  336. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  337. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  338. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/images/mini.gif +0 -0
  339. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/images/noimage.png +0 -0
  340. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/images/sprites.png +0 -0
  341. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  342. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/images/toolbar_start.gif +0 -0
  343. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/skin.js +0 -0
  344. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/skins/v2/templates.css +0 -0
  345. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ckeditor/themes/default/theme.js +0 -0
  346. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/hoverIntent.js +0 -0
  347. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/jqcloud-0.1.3.min.js +0 -0
  348. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/jquery.ba-url.js +0 -0
  349. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/jquery.boxy.js +0 -0
  350. data/app/assets/javascripts/jquery.fcbkcomplete.js +553 -0
  351. data/app/assets/javascripts/jquery.fcbkcomplete.min.js +2 -0
  352. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/jquery.livequery.js +0 -0
  353. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/jquery.scrollTo.min.js +0 -0
  354. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/jquery.validate.js +0 -0
  355. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/main.js +0 -0
  356. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/menu-collapsed.js +0 -0
  357. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/menu.js +0 -0
  358. data/app/assets/javascripts/modernizr.min.js +4 -0
  359. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/rails.js +0 -0
  360. data/app/assets/javascripts/settings.js +35 -0
  361. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/superfish.js +0 -0
  362. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ui.checkbox.js +0 -0
  363. data/{lib/generators/social_stream/base/templates/public → app/assets}/javascripts/ui.dropdownchecklist.js +218 -73
  364. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/activities.css +0 -0
  365. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/base.css +21 -7
  366. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/carousel.css +0 -0
  367. data/app/assets/stylesheets/contacts.css +91 -0
  368. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/fcbkComplete.css +3 -3
  369. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/footer.css +0 -0
  370. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/frontpage.css +12 -12
  371. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/header.css +9 -8
  372. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/home.css +0 -0
  373. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/add-policy.png +0 -0
  374. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/fcbkcomplete/close.gif +0 -0
  375. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/loading.gif +0 -0
  376. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  377. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  378. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  379. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  380. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  381. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  382. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  383. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  384. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-icons_222222_256x240.png +0 -0
  385. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-icons_2e83ff_256x240.png +0 -0
  386. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-icons_454545_256x240.png +0 -0
  387. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-icons_888888_256x240.png +0 -0
  388. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/images/ui-icons_cd0a0a_256x240.png +0 -0
  389. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/jqcloud.css +0 -0
  390. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/jquery-ui.css +0 -0
  391. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/jquery.ui.slider.css +0 -0
  392. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/jquery.ui.slidertheme.css +0 -0
  393. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/menu.css +0 -0
  394. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/messages.css +7 -3
  395. data/app/assets/stylesheets/settings.css +9 -0
  396. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  397. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  398. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  399. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  400. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  401. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  402. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  403. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  404. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-icons_222222_256x240.png +0 -0
  405. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  406. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-icons_454545_256x240.png +0 -0
  407. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-icons_888888_256x240.png +0 -0
  408. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  409. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/jquery-ui-1.7.3.custom.css +0 -0
  410. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/smoothness/jquery-ui-1.8.4.custom.css +0 -0
  411. data/{lib/generators/social_stream/base/templates/public/stylesheets/default → app/assets/stylesheets}/spheres.css +1 -1
  412. data/app/controllers/activities_controller.rb +2 -2
  413. data/app/controllers/api_controller.rb +5 -1
  414. data/app/controllers/contacts_controller.rb +13 -13
  415. data/app/controllers/conversations_controller.rb +3 -3
  416. data/app/controllers/groups_controller.rb +1 -1
  417. data/app/controllers/invitations_controller.rb +20 -0
  418. data/app/controllers/messages_controller.rb +0 -1
  419. data/app/controllers/notifications_controller.rb +2 -4
  420. data/app/controllers/settings_controller.rb +43 -0
  421. data/app/controllers/users_controller.rb +1 -1
  422. data/app/helpers/activities_helper.rb +8 -0
  423. data/app/helpers/contacts_helper.rb +5 -9
  424. data/app/helpers/notifications_helper.rb +12 -16
  425. data/app/helpers/permissions_helper.rb +2 -2
  426. data/app/mailers/invitation_mailer.rb +9 -0
  427. data/app/models/activity.rb +99 -43
  428. data/app/models/actor.rb +158 -106
  429. data/app/models/audience.rb +9 -0
  430. data/app/models/contact.rb +110 -88
  431. data/app/models/group.rb +11 -12
  432. data/app/models/permission.rb +26 -88
  433. data/app/models/relation/custom.rb +10 -8
  434. data/app/models/relation/public.rb +3 -12
  435. data/app/models/relation.rb +69 -3
  436. data/app/models/tie.rb +42 -237
  437. data/app/models/user.rb +14 -10
  438. data/app/views/activities/_index.html.erb +7 -3
  439. data/app/views/activities/_jquery.html.erb +26 -1
  440. data/app/views/activities/_new.html.erb +14 -19
  441. data/app/views/activities/_options.html.erb +1 -1
  442. data/app/views/activities/_walls.html.erb +1 -1
  443. data/app/views/avatars/index.html.erb +2 -1
  444. data/app/views/avatars/update.js.erb +15 -0
  445. data/app/views/comments/_new.html.erb +10 -6
  446. data/app/views/contacts/_contact.html.erb +1 -1
  447. data/app/views/contacts/_form.html.erb +29 -50
  448. data/app/views/contacts/_index.html.erb +1 -1
  449. data/app/views/contacts/edit.html.erb +2 -1
  450. data/app/views/contacts/index.html.erb +1 -1
  451. data/app/views/contacts/new.html.erb +1 -1
  452. data/app/views/conversations/_conversation.html.erb +1 -0
  453. data/app/views/conversations/_conversation_full.html.erb +3 -3
  454. data/app/views/conversations/_conversations.html.erb +1 -1
  455. data/app/views/devise/passwords/edit.html.erb +3 -3
  456. data/app/views/devise/passwords/new.html.erb +3 -0
  457. data/app/views/devise/sessions/new.html.erb +3 -0
  458. data/app/views/frontpage/_header.html.erb +3 -3
  459. data/app/views/frontpage/index.html.erb +1 -1
  460. data/app/views/groups/_index.html.erb +1 -1
  461. data/app/views/groups/_new.html.erb +0 -1
  462. data/app/views/home/index.html.erb +1 -1
  463. data/app/views/invitation_mailer/send_invitation.html.erb +40 -0
  464. data/app/views/invitation_mailer/send_invitation.text.erb +15 -0
  465. data/app/views/invitations/_new.html.erb +35 -0
  466. data/app/views/invitations/new.html.erb +16 -0
  467. data/app/views/layouts/_account.html.erb +17 -15
  468. data/app/views/layouts/_header.erb +6 -4
  469. data/app/views/layouts/_representation.html.erb +7 -3
  470. data/app/views/layouts/_settings.html.erb +18 -0
  471. data/app/views/layouts/application.html.erb +3 -2
  472. data/app/views/layouts/frontpage.html.erb +3 -1
  473. data/app/views/messages/new.html.erb +0 -1
  474. data/app/views/messages/new.js.erb +0 -1
  475. data/app/views/notifications/_index.html.erb +1 -1
  476. data/app/views/notifications/_notification.html.erb +10 -18
  477. data/app/views/notifications/index.html.erb +1 -1
  478. data/app/views/objects/_new.html.erb +14 -0
  479. data/app/views/permissions/_index.html.erb +0 -6
  480. data/app/views/posts/_fields.erb +1 -0
  481. data/app/views/posts/_new.html.erb +1 -0
  482. data/app/views/posts/create.js.erb +3 -1
  483. data/app/views/profiles/_contact.html.erb +2 -2
  484. data/app/views/profiles/_experience.html.erb +2 -2
  485. data/app/views/profiles/_personal.html.erb +1 -1
  486. data/app/views/profiles/_profile.html.erb +1 -15
  487. data/app/views/profiles/_tags.html.erb +1 -1
  488. data/app/views/profiles/edit.html.erb +30 -34
  489. data/app/views/relation/customs/_index.html.erb +1 -3
  490. data/app/views/settings/_api_key.html.erb +26 -0
  491. data/app/views/settings/_index.html.erb +11 -0
  492. data/app/views/settings/_notifications.html.erb +34 -0
  493. data/app/views/settings/index.html.erb +20 -0
  494. data/app/views/settings/index.js.erb +9 -0
  495. data/app/views/subjects/_contacts.html.erb +1 -1
  496. data/app/views/toolbar/_home_menu_options.html.erb +12 -0
  497. data/app/views/toolbar/_invitations_menu.html.erb +3 -0
  498. data/app/views/toolbar/_logo.html.erb +1 -1
  499. data/app/views/toolbar/_message_menu.html.erb +1 -1
  500. data/app/views/toolbar/_notifications_menu.html.erb +1 -1
  501. data/app/views/toolbar/_profile_menu_options.html.erb +10 -0
  502. data/app/views/toolbar/_profile_menu_tie_options.html.erb +4 -13
  503. data/app/views/users/_index.html.erb +1 -1
  504. data/app/views/users/show.html.erb +1 -1
  505. data/config/locales/en.yml +66 -66
  506. data/config/routes.rb +10 -1
  507. data/{lib/generators/social_stream/base/templates/migration.rb → db/migrate/20110610112023_create_social_stream.rb} +53 -33
  508. data/lib/acts_as_taggable_on/acts_as_taggable_on/dirty.rb +37 -0
  509. data/lib/acts_as_taggable_on/social_stream.rb +58 -0
  510. data/lib/generators/social_stream/base/install_generator.rb +6 -15
  511. data/lib/generators/social_stream/base/templates/initializer.rb +7 -3
  512. data/lib/generators/social_stream/base/templates/relations.yml +8 -12
  513. data/lib/social_stream/ability.rb +12 -11
  514. data/lib/social_stream/base/version.rb +1 -1
  515. data/lib/social_stream/base.rb +1 -13
  516. data/lib/social_stream/models/object.rb +26 -14
  517. data/lib/social_stream/test_helpers/controllers.rb +3 -2
  518. data/lib/social_stream-base.rb +7 -3
  519. data/lib/tasks/db/populate.rake +10 -8
  520. data/lib/tasks/resque.rake +3 -0
  521. data/social_stream-base.gemspec +10 -11
  522. data/spec/controllers/comments_controller_spec.rb +14 -7
  523. data/spec/controllers/contacts_controller_spec.rb +23 -24
  524. data/spec/controllers/groups_controller_spec.rb +31 -4
  525. data/spec/controllers/notifications_controller_spec.rb +47 -0
  526. data/spec/controllers/posts_controller_spec.rb +34 -27
  527. data/spec/controllers/representations_spec.rb +2 -2
  528. data/spec/controllers/spheres_controller_spec.rb +15 -7
  529. data/spec/controllers/users_controller_spec.rb +9 -5
  530. data/spec/dummy/.gitignore +1 -0
  531. data/spec/dummy/config/application.rb +9 -10
  532. data/spec/dummy/config/database.yml +4 -1
  533. data/spec/dummy/config/environments/development.rb +8 -4
  534. data/spec/dummy/config/environments/production.rb +18 -13
  535. data/spec/dummy/config/environments/test.rb +6 -2
  536. data/spec/dummy/config/initializers/secret_token.rb +1 -1
  537. data/spec/dummy/config/initializers/session_store.rb +1 -1
  538. data/spec/dummy/config/initializers/social_stream.rb +7 -3
  539. data/spec/dummy/config/initializers/wrap_parameters.rb +12 -0
  540. data/spec/dummy/config/locales/en.yml +1 -1
  541. data/spec/dummy/config/relations.yml +8 -12
  542. data/spec/dummy/config/routes.rb +1 -1
  543. data/spec/factories/activity.rb +4 -2
  544. data/spec/factories/comment.rb +2 -1
  545. data/spec/factories/contact.rb +12 -0
  546. data/spec/factories/post.rb +2 -1
  547. data/spec/factories/tie.rb +3 -5
  548. data/spec/integration/navigation_spec.rb +1 -1
  549. data/spec/models/activity_spec.rb +188 -172
  550. data/spec/models/contact_spec.rb +16 -0
  551. data/spec/models/group_spec.rb +13 -0
  552. data/spec/models/relation_spec.rb +78 -0
  553. data/spec/models/tie_spec.rb +4 -132
  554. data/spec/models/user_spec.rb +4 -0
  555. data/spec/support/migrations.rb +1 -1
  556. metadata +526 -535
  557. data/app/models/tie_activity.rb +0 -42
  558. data/app/views/notifications/_show.html.erb +0 -3
  559. data/app/views/notifications/show.html.erb +0 -5
  560. data/lib/generators/social_stream/base/templates/public/images/btn/btn_certificates.png +0 -0
  561. data/lib/generators/social_stream/base/templates/public/images/btn/btn_conferences.png +0 -0
  562. data/lib/generators/social_stream/base/templates/public/images/btn/btn_documents.png +0 -0
  563. data/lib/generators/social_stream/base/templates/public/images/btn/btn_embebed.png +0 -0
  564. data/lib/generators/social_stream/base/templates/public/images/btn/btn_notification.png +0 -0
  565. data/lib/generators/social_stream/base/templates/public/images/btn/btn_notification_delete.png +0 -0
  566. data/lib/generators/social_stream/base/templates/public/images/btn/btn_outline.png +0 -0
  567. data/lib/generators/social_stream/base/templates/public/images/btn/btn_video.png +0 -0
  568. data/lib/generators/social_stream/base/templates/public/images/btn/flyer.png +0 -0
  569. data/lib/generators/social_stream/base/templates/public/images/btn/keynote.png +0 -0
  570. data/lib/generators/social_stream/base/templates/public/images/btn/live.png +0 -0
  571. data/lib/generators/social_stream/base/templates/public/images/btn/time.png +0 -0
  572. data/lib/generators/social_stream/base/templates/public/images/pbar-ani.gif +0 -0
  573. data/lib/generators/social_stream/base/templates/public/javascripts/avatars.js +0 -8
  574. data/lib/generators/social_stream/base/templates/public/javascripts/jquery-ui-1.8.4.custom.min.js +0 -763
  575. data/lib/generators/social_stream/base/templates/public/javascripts/jquery-ui-personalized-1.5.2.packed.js +0 -1
  576. data/lib/generators/social_stream/base/templates/public/javascripts/jquery-ui.min.js +0 -401
  577. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.Jcrop.min.js +0 -163
  578. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.fcbkcomplete.min.js +0 -77
  579. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.fileupload-ui.js +0 -259
  580. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.fileupload.js +0 -475
  581. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.form.js +0 -815
  582. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.js +0 -7179
  583. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.min.js +0 -167
  584. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.ui.mouse.js +0 -156
  585. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.ui.slider.js +0 -684
  586. data/lib/generators/social_stream/base/templates/public/javascripts/jquery.ui.widget.js +0 -236
  587. data/lib/generators/social_stream/base/templates/public/stylesheets/default/avatars.css +0 -79
  588. data/lib/generators/social_stream/base/templates/public/stylesheets/default/contacts.css +0 -88
  589. data/lib/generators/social_stream/base/templates/public/stylesheets/default/jquery.Jcrop.css +0 -35
  590. data/lib/generators/social_stream/base/templates/public/stylesheets/default/jquery.fileupload-ui.css +0 -73
  591. data/spec/models/tie_activity_spec.rb +0 -109
data/app/models/actor.rb CHANGED
@@ -28,24 +28,33 @@ class Actor < ActiveRecord::Base
28
28
  :validate => true,
29
29
  :autosave => true
30
30
 
31
- has_many :sent_ties,
32
- :class_name => "Tie",
31
+ has_many :sent_contacts,
32
+ :class_name => 'Contact',
33
33
  :foreign_key => 'sender_id',
34
- :dependent => :destroy
34
+ :dependent => :destroy
35
+
36
+ has_many :received_contacts,
37
+ :class_name => 'Contact',
38
+ :foreign_key => 'receiver_id',
39
+ :dependent => :destroy
40
+
41
+ has_many :sent_ties,
42
+ :through => :sent_contacts,
43
+ :source => :ties
35
44
 
36
45
  has_many :received_ties,
37
- :class_name => "Tie",
38
- :foreign_key => 'receiver_id',
39
- :dependent => :destroy
46
+ :through => :received_contacts,
47
+ :source => :ties
40
48
 
41
49
  has_many :senders,
42
- :through => :received_ties,
50
+ :through => :received_contacts,
43
51
  :uniq => true
44
52
 
45
53
  has_many :receivers,
46
- :through => :sent_ties,
54
+ :through => :sent_contacts,
47
55
  :uniq => true
48
56
 
57
+ has_many :relations
49
58
  has_many :spheres
50
59
 
51
60
  has_many :relation_customs,
@@ -75,13 +84,20 @@ class Actor < ActiveRecord::Base
75
84
  scope :distinct_initials, select('DISTINCT SUBSTR(actors.name,1,1) as initial').order("initial ASC")
76
85
 
77
86
  scope :contacted_to, lambda { |a|
78
- joins(:sent_ties).merge(Tie.received_by(a).intended)
87
+ joins(:sent_contacts).merge(Contact.active.received_by(a))
79
88
  }
80
89
 
81
90
  scope :contacted_from, lambda { |a|
82
- joins(:received_ties).merge(Tie.sent_by(a).intended)
91
+ joins(:received_contacts).merge(Contact.active.sent_by(a))
83
92
  }
84
-
93
+
94
+ scope :followed_by, lambda { |a|
95
+ select("DISTINCT actors.*").
96
+ joins(:received_ties => { :relation => :permissions }).
97
+ merge(Contact.sent_by(a)).
98
+ merge(Permission.follow)
99
+ }
100
+
85
101
  after_create :create_initial_relations
86
102
 
87
103
  after_create :save_or_create_profile
@@ -123,29 +139,12 @@ class Actor < ActiveRecord::Base
123
139
  end
124
140
  end
125
141
 
126
-
127
-
128
142
  # The subject instance for this actor
129
143
  def subject
130
144
  subtype_instance ||
131
145
  activity_object.try(:object)
132
146
  end
133
-
134
- # All the ties sent or received by this actor
135
- def ties
136
- Tie.sent_or_received_by(self)
137
- end
138
147
 
139
- # The relations that belong to this actor.
140
- #
141
- # The are both {Relation::Custom} and {Relation::Public} so
142
- # we get them from the reciprocal ties
143
- def relations
144
- Relation.
145
- joins(:ties).
146
- merge(Tie.sent_by(self).received_by(self))
147
- end
148
-
149
148
  # A given relation defined and managed by this actor
150
149
  def relation_custom(name)
151
150
  relation_customs.find_by_name(name)
@@ -187,7 +186,7 @@ class Actor < ActiveRecord::Base
187
186
  end
188
187
 
189
188
  if options[:relations].present?
190
- as = as.merge(Tie.related_by(options[:relations]))
189
+ as = as.joins(:ties).merge(Tie.related_by(options[:relations]))
191
190
  end
192
191
 
193
192
  as
@@ -199,7 +198,7 @@ class Actor < ActiveRecord::Base
199
198
  # options before the mapping to subjects
200
199
  #
201
200
  # See #contact_actors for options
202
- def contacts(options = {})
201
+ def contact_subjects(options = {})
203
202
  as = contact_actors(options)
204
203
 
205
204
  if block_given?
@@ -208,6 +207,11 @@ class Actor < ActiveRecord::Base
208
207
 
209
208
  as.map(&:subject)
210
209
  end
210
+
211
+ # Return a contact to subject. Create it if it does not exist
212
+ def contact_to!(subject)
213
+ Contact.find_or_create_by_sender_id_and_receiver_id id, Actor.normalize_id(subject)
214
+ end
211
215
 
212
216
  # This is an scaffold for a recomendations engine
213
217
  #
@@ -227,16 +231,16 @@ class Actor < ActiveRecord::Base
227
231
  # @return [Contact]
228
232
  def suggestion(options = {})
229
233
  candidates_types =
230
- options[:type].present? ?
231
- Array(options[:type]) :
232
- self.class.subtypes
234
+ ( options[:type].present? ?
235
+ Array(options[:type]) :
236
+ self.class.subtypes )
233
237
 
234
238
  candidates_classes = candidates_types.map{ |t| t.to_s.classify.constantize }
235
239
 
236
240
  # Candidates are all the instance of "type" minus all the subjects
237
241
  # that are receiving any tie from this actor
238
242
  candidates = candidates_classes.inject([]) do |cs, klass|
239
- cs += klass.all - contacts(:type => klass, :direction => :sent)
243
+ cs += klass.all - contact_subjects(:type => klass.to_s.underscore, :direction => :sent)
240
244
  cs -= Array(subject) if subject.is_a?(klass)
241
245
  cs
242
246
  end
@@ -245,98 +249,124 @@ class Actor < ActiveRecord::Base
245
249
 
246
250
  return nil unless candidate.present?
247
251
 
248
- Contact.new self, candidate.actor.id
252
+ Contact.new :sender => self, :receiver => candidate.actor
249
253
  end
250
254
 
251
- # Set of ties sent by this actor received by a
252
- def ties_to(a)
253
- sent_ties.received_by(a).intended
255
+ # Set of ties sent by this actor received by subject
256
+ def ties_to(subject)
257
+ sent_ties.merge(Contact.received_by(subject))
254
258
  end
255
259
 
256
- # Get the first of the ties created to a, or create a new one with the {Relation::Public}
257
- def ties_to!(a)
258
- ties_to(a).present? ?
259
- ties_to(a) :
260
- Array(sent_ties.create!(:receiver => a,
261
- :relation => relation_public))
260
+ def ties_to?(subject)
261
+ ties_to(subject).present?
262
262
  end
263
-
263
+
264
+
264
265
  def ties_to?(a)
265
266
  ties_to(a).present?
266
267
  end
267
268
 
268
- # The sent {Tie ties} by this {Actor} that grant subject the permission to perform action on object
269
- def allow(subject, action, object = nil)
270
- return [] if subject.blank?
271
-
272
- sent_ties.allowing(subject, action, object)
273
- end
274
-
275
- # Does this {Actor} have any {Tie} to subject that grants her the permission of performing action on object
276
- def allow?(subject, action, object = nil)
277
- allow(subject, action, object).any?
278
- end
279
-
280
269
  # Can this actor be represented by subject. Does she has permissions for it?
281
270
  def represented_by?(subject)
282
271
  return false if subject.blank?
283
272
 
284
273
  self.class.normalize(subject) == self ||
285
- allow?(subject, 'represent')
274
+ sent_ties.
275
+ merge(Contact.received_by(subject)).
276
+ joins(:relation => :permissions).
277
+ merge(Permission.represent).
278
+ any?
286
279
  end
287
280
 
288
- # The set of ties from this {Actor} to itself.
289
- def reflexive_ties
290
- sent_ties.received_by(self)
281
+ # The relations that allow attaching an activity to them. This method is used for caching
282
+ def active_relations
283
+ @active_relations ||= { :sender => {}, :receiver => {} }
291
284
  end
292
285
 
293
- # This Actor's public {Tie}
294
- def public_tie
295
- reflexive_ties.related_by(relation_public).first
286
+ # An {Activity} can be shared with multiple {audicences Audience}, which corresponds to a {Relation}.
287
+ #
288
+ # This method returns all the {relations Relation} that this actor can use to broadcast an Activity
289
+ #
290
+ # Options:
291
+ # from:: limit the relations to one side, from the :sender or the :receiver of the activity
292
+ #
293
+ def activity_relations(subject, options = {})
294
+ return relations if Actor.normalize(subject) == self
295
+
296
+ case options[:from]
297
+ when :sender
298
+ sender_activity_relations(subject)
299
+ when :receiver
300
+ receiver_activity_relations(subject)
301
+ else
302
+ sender_activity_relations(subject) +
303
+ receiver_activity_relations(subject)
304
+ end
296
305
  end
297
306
 
298
- # Find a tie to subject with the {#relation_public}
299
- def public_tie_to(subject)
300
- sent_ties.received_by(subject).related_by(relation_public).first
307
+ # Are there any activity_relations present?
308
+ def activity_relations?(*args)
309
+ activity_relations(*args).any?
301
310
  end
302
311
 
303
- # Find or create a tie to subject with the {#relation_public}
304
- def public_tie_to!(subject)
305
- public_tie_to(subject) ||
306
- sent_ties.create!(:receiver_id => Actor.normalize_id(subject),
307
- :relation_id => relation_public.id,
308
- :intended => false)
312
+ # Relations from this actor that can be read by subject
313
+ def sender_activity_relations(subject)
314
+ active_relations[:sender][subject] ||=
315
+ Relation.allow(subject, 'read', 'activity', :owner => self)
309
316
  end
310
317
 
311
- # The ties that allow attaching an activity to them. This method is used for caching
312
- def active_ties
313
- @active_ties ||= {}
318
+ def receiver_activity_relations(subject)
319
+ active_relations[:receiver][subject] ||=
320
+ Relation.allow(self, 'create', 'activity', :owner => subject)
314
321
  end
315
322
 
316
- # This {Actor} #allow s subject to create activities and subject has at least one tie to subject
317
- def activity_ties_for(subject)
318
- active_ties[subject] ||=
319
- ( allow?(subject, 'create', 'activity') ?
320
- subject.ties_to!(self) :
321
- [] )
323
+ # Builds a hash of options their spheres as keys
324
+ def grouped_activity_relations(subject)
325
+ rels = activity_relations(subject)
326
+
327
+ spheres =
328
+ rels.map{ |r| r.respond_to?(:sphere) ? r.sphere : I18n.t('relation_public.name') }.uniq
329
+
330
+ spheres.sort!{ |x, y|
331
+ case x
332
+ when Sphere
333
+ case y
334
+ when Sphere
335
+ x.id <=> y.id
336
+ else
337
+ -1
338
+ end
339
+ else
340
+ 1
341
+ end
342
+ }
343
+
344
+ spheres.map{ |s|
345
+ case s
346
+ when Sphere
347
+ [ s.name, rels.select{ |r| r.respond_to?(:sphere) && r.sphere == s }.sort.map{ |u| [ u.name, u.id ] } ]
348
+ else
349
+ [ s, rels.select{ |r| r.is_a?(Relation::Public) }.map{ |u| [ u.name, u.id ] } ]
350
+ end
351
+ }
322
352
  end
323
353
 
324
- # Is there any {Tie} for subject to create an activity to this {Actor} ?
325
- def activity_ties_for?(subject)
326
- activity_ties_for(subject).any?
354
+ # Is this {Actor} allowed to create a comment on activity?
355
+ def can_comment?(activity)
356
+ comment_relations(activity).any?
327
357
  end
328
358
 
329
- def pending_ties
330
- @pending_ties ||=
331
- received_ties.where('ties.sender_id NOT IN (?)', sent_ties.map(&:receiver_id).uniq).map(&:sender_id).uniq.
332
- map{ |i| Tie.new :sender => self,
333
- :receiver_id => i }
359
+ # Are there any relations that allow this actor to create a comment on activity?
360
+ def comment_relations(activity)
361
+ activity.relations.select{ |r| r.is_a?(Relation::Public) } |
362
+ Relation.allow(self, 'create', 'activity', :in => activity.relations)
334
363
  end
335
364
 
336
- # Build a new {Contact} from each of {#pending_ties}
365
+ # Build a new {Contact} from each that has not inverse
337
366
  def pending_contacts
338
- pending_ties.map do |t|
339
- Contact.new(self, t.receiver_id)
367
+ received_contacts.pending.all.map do |c|
368
+ c.inverse ||
369
+ c.receiver.contact_to!(c.sender)
340
370
  end
341
371
  end
342
372
 
@@ -354,21 +384,39 @@ class Actor < ActiveRecord::Base
354
384
  # the wall for members of the group.
355
385
  #
356
386
  def wall(type, options = {})
357
- ts = ties
387
+ args = {}
358
388
 
359
- if type == :profile
360
- ts = ( options[:for].blank? ?
361
- ts.public_relation :
362
- ts.allowing(options[:for], 'read', 'activity') )
389
+ args[:type] = type
390
+ args[:owner] = self
391
+ # Preserve this options
392
+ [ :for, :object_type ].each do |opt|
393
+ args[opt] = options[opt]
363
394
  end
364
395
 
365
- if options[:relation].present?
366
- ts = ts.related_by(Relation.normalize(options[:relation], :sender => self))
396
+ if type == :home
397
+ args[:followed] = Actor.followed_by(self).map(&:id)
367
398
  end
368
399
 
369
- Activity.wall type, ts
400
+ # TODO: this is not scalling for sure. We must use a fact table in the future
401
+ args[:relation_ids] =
402
+ case type
403
+ when :home
404
+ # The relations from followings that can be read
405
+ Relation.allow(self, 'read', 'activity').map(&:id)
406
+ when :profile
407
+ # FIXME: options[:relation]
408
+ #
409
+ # The relations that can be read by options[:for]
410
+ options[:for].present? ?
411
+ Relation.allow(options[:for], 'read', 'activity').map(&:id) :
412
+ []
413
+ else
414
+ raise "Unknown type of wall: #{ type }"
415
+ end
416
+
417
+ Activity.wall args
370
418
  end
371
-
419
+
372
420
  def logo
373
421
  avatar!.logo
374
422
  end
@@ -384,7 +432,7 @@ class Actor < ActiveRecord::Base
384
432
  end
385
433
 
386
434
  def liked_by(subject) #:nodoc:
387
- likes.joins(:ties).where('tie_activities.original' => true).merge(Tie.sent_by(subject))
435
+ likes.joins(:contact).merge(Contact.sent_by(subject))
388
436
  end
389
437
 
390
438
  # Does subject like this {Actor}?
@@ -395,7 +443,7 @@ class Actor < ActiveRecord::Base
395
443
  # Build a new activity where subject like this
396
444
  def new_like(subject)
397
445
  a = Activity.new :verb => "like",
398
- :_tie => subject.public_tie_to!(self)
446
+ :contact => subject.contact_to!(self)
399
447
 
400
448
  a.activity_objects << activity_object
401
449
 
@@ -405,8 +453,12 @@ class Actor < ActiveRecord::Base
405
453
  #Returning whether an email should be sent for this object (Message or Notification).
406
454
  #Required by Mailboxer gem.
407
455
  def should_email?(object)
408
- #TODO
409
- return true
456
+ return notify_by_email
457
+ end
458
+
459
+ # Use slug as parameter
460
+ def to_param
461
+ slug
410
462
  end
411
463
 
412
464
  private
@@ -0,0 +1,9 @@
1
+ # Every {Activity} is shared with one or more {audiences Audience}.
2
+ #
3
+ # Each {Audience} is equivalent to a {Relation}, which defines the {actors Actor}
4
+ # that are assigned to that relation and the {permissions Permission} granted to
5
+ # that {Audience}
6
+ class Audience < ActiveRecord::Base
7
+ belongs_to :activity
8
+ belongs_to :relation
9
+ end
@@ -1,121 +1,143 @@
1
- # Convenience class for managing all the ties between two
2
- # actors at once
3
- class Contact
4
- extend ActiveModel::Naming
5
-
6
- ATTRS = [ :message, :relation_ids ]
7
-
8
- attr_accessor :sender, :receiver, :message
9
-
10
- def initialize(sender, receiver)
11
- @sender = Actor.normalize(sender)
12
- @receiver = Actor.normalize(receiver)
13
- end
1
+ # The link between two {Actor actors}
2
+ #
3
+ # Each {Contact} has many {Tie ties}, which determine the kind of the link through {Relation relations}
4
+ #
5
+ # = {Contact Contacts} and {Activity activities}
6
+ # Each {Activity} is attached to a {Contact}. When _Alice_ post in _Bob_'s wall,
7
+ # the {Activity} is attached to the {Contact} from _Alice_ to _Bob_
8
+ #
9
+ # * The sender of the {Contact} is the author of the {Activity}.
10
+ # It is the user that uploads a resource to the website or the social entity that
11
+ # originates the {Activity} (for example: add as contact).
12
+ #
13
+ # * The receiver {Actor} of the {Contact} is the receiver of the {Activity}.
14
+ # The {Activity} will appear in the wall of the receiver, depending on the permissions
15
+ #
16
+ class Contact < ActiveRecord::Base
17
+ # Send a message when this contact is created or updated
18
+ attr_accessor :message
19
+
20
+ belongs_to :inverse,
21
+ :class_name => "Contact"
22
+
23
+ belongs_to :sender,
24
+ :class_name => "Actor",
25
+ :include => SocialStream.subjects
26
+ belongs_to :receiver,
27
+ :class_name => "Actor",
28
+ :include => SocialStream.subjects
29
+
30
+ has_many :ties
31
+ has_many :relations, :through => :ties
32
+
33
+ scope :sent_by, lambda { |a|
34
+ where(:sender_id => Actor.normalize_id(a))
35
+ }
36
+
37
+ scope :received_by, lambda { |a|
38
+ where(:receiver_id => Actor.normalize_id(a))
39
+ }
40
+
41
+ scope :sent_or_received_by, lambda { |a|
42
+ where(arel_table[:sender_id].eq(Actor.normalize_id(a)).
43
+ or(arel_table[:receiver_id].eq(Actor.normalize_id(a))))
44
+ }
45
+
46
+ scope :recent, order("contacts.created_at DESC")
47
+
48
+ scope :pending, joins("LEFT JOIN contacts AS inverse_contacts ON inverse_contacts.id = contacts.inverse_id").
49
+ where(arel_table[:inverse_id].eq(nil).or(arel_table.alias("inverse_contacts")[:ties_count].eq(0)))
50
+
51
+ scope :active, where(arel_table[:ties_count].gt(0))
52
+
53
+ validates_presence_of :sender_id, :receiver_id
54
+
55
+ after_create :set_inverse
56
+ after_create :send_message
14
57
 
15
58
  def sender_subject
16
- sender.subject
59
+ sender.try(:subject)
17
60
  end
18
61
 
19
62
  def receiver_subject
20
- receiver.subject
63
+ receiver.try(:subject)
21
64
  end
22
65
 
23
- def relation_ids
24
- @relation_ids ||=
25
- sender.ties_to(receiver).map(&:relation_id)
66
+ # Does this {Contact} have the same sender and receiver?
67
+ def reflexive?
68
+ sender_id == receiver_id
26
69
  end
27
70
 
28
- def relation_ids=(ids)
29
- # Gotcha related with empty arrays in forms:
30
- #
31
- # http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box
32
- ids.delete("gotcha")
33
-
34
- @relation_ids =
35
- ids.map{ |i|
36
- # We must check that sender has those relation
37
- sender.relations.find(i).id
38
- }
39
- end
40
-
41
- def id
42
- receiver.id
71
+ # Find or create the inverse {Contact}
72
+ def inverse!
73
+ inverse ||
74
+ receiver.contact_to!(sender)
43
75
  end
44
76
 
45
- def to_param
46
- id
77
+ # Is not the inverse of this {Contact}
78
+ def pending?
79
+ inverse &&
80
+ inverse.ties_count > 0
47
81
  end
48
82
 
49
- def to_key
50
- [id]
83
+ # The {ActivityVerb} corresponding to this {Contact}, depending on if
84
+ # it is pending or already replied
85
+ def verb
86
+ pending? ? "follow" : "make-friend"
51
87
  end
52
88
 
53
- def update_attributes(attrs)
54
- ATTRS.each do |attr|
55
- if attrs.key?(attr.to_s) # if attrs.key?("message")
56
- __send__ "#{ attr }=", attrs[attr.to_s] # self.message = attrs["message"]
57
- end # end
58
- end
59
-
60
- save
89
+ # has_many collection=objects method does not trigger destroy callbacks,
90
+ # so follower_count will not be updated
91
+ #
92
+ # We need to update that status here
93
+ def relation_ids=(ids)
94
+ remove_follower(ids)
61
95
 
62
- # TODO: errors
63
- true
96
+ association(:relations).ids_writer(ids)
64
97
  end
65
98
 
66
- def save
67
- @previous = sender.ties_to(receiver).all
68
-
69
- @continued = @previous.select{ |t| relation_ids.include?(t.relation_id) }
70
-
71
- Tie.transaction do
72
- # Change previous ties to not intended
73
- # Do not destroy them, because there can be activities attached to them
74
- (@previous - @continued).each do |t|
75
- t.update_attribute :intended, false
76
- end
77
-
78
- # Activate tie or create it
79
- new_relation_ids = relation_ids - @continued.map(&:relation_id)
99
+ private
80
100
 
81
- # There can be old ties that where marked as intented but
82
- # now they are activated again
83
- @reactivated = sender.
84
- ties_to(receiver).
85
- related_by(new_relation_ids)
101
+ def remove_follower(ids)
102
+ # There was no follower
103
+ return if relation_ids.blank?
86
104
 
87
- @reactivated.each{ |t| t.update_attribute :intended, true }
88
-
89
- @new = (new_relation_ids - @reactivated.map(&:relation_id)).map do |i|
90
- sender.sent_ties.create! :receiver_id => receiver.id,
91
- :relation_id => i
92
- end
105
+ ids = ids.map(&:to_i)
93
106
 
94
- create_activity
95
- send_message
96
- end
97
- end
107
+ return if ids.sort == relation_ids.sort
98
108
 
99
- private
109
+ following = Relation.
110
+ where(:id => relation_ids).
111
+ joins(:permissions).
112
+ merge(Permission.follow).
113
+ any?
100
114
 
101
- # Create the related {Activity}
102
- def create_activity
103
- return if @previous.present?
115
+ if following
116
+ will_follow = Relation.
117
+ where(:id => ids).
118
+ joins(:permissions).
119
+ merge(Permission.follow).
120
+ any?
104
121
 
105
- @new.each do |t|
106
- Activity.create! :_tie => t,
107
- :activity_verb => ActivityVerb[verb]
122
+ if !will_follow
123
+ receiver.decrement!(:follower_count)
124
+ end
108
125
  end
109
126
  end
110
-
111
- def verb
112
- @new.first.replied? ? "make-friend" : "follow"
113
- end
114
-
127
+
115
128
  # Send a message to the contact receiver
116
129
  def send_message
117
130
  if message.present?
118
131
  sender.send_message(receiver, message, I18n.t("activity.verb.#{ contact_verb }.#{ receiver.subject_type }.message", :name => sender.name))
119
132
  end
120
133
  end
134
+
135
+ def set_inverse
136
+ inverse = Contact.sent_by(receiver_id).received_by(sender_id).first
137
+
138
+ return if inverse.blank?
139
+
140
+ update_attribute :inverse_id, inverse.id
141
+ inverse.update_attribute :inverse_id, id
142
+ end
121
143
  end