social_stream-base 0.17.3 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/app/assets/images/flags/pt.png +0 -0
  2. data/app/assets/javascripts/social_stream.toolbar.js +41 -0
  3. data/app/assets/stylesheets/settings.css +1 -0
  4. data/app/controllers/activity_actions_controller.rb +44 -0
  5. data/app/controllers/followers_controller.rb +39 -0
  6. data/app/helpers/activities_helper.rb +10 -10
  7. data/app/helpers/activity_actions_helper.rb +35 -0
  8. data/app/helpers/contacts_helper.rb +1 -1
  9. data/app/helpers/followers_helper.rb +5 -0
  10. data/app/helpers/toolbar_helper.rb +55 -68
  11. data/app/models/activity_action.rb +28 -0
  12. data/app/models/activity_object.rb +11 -2
  13. data/app/models/actor.rb +23 -33
  14. data/app/models/contact.rb +32 -43
  15. data/app/models/group.rb +2 -6
  16. data/app/models/relation.rb +1 -1
  17. data/app/models/relation/follow.rb +14 -0
  18. data/app/models/tie.rb +30 -30
  19. data/app/models/user.rb +8 -0
  20. data/app/views/activities/_options.html.erb +0 -1
  21. data/app/views/activity_actions/_follow_form.html.erb +10 -0
  22. data/app/views/activity_actions/_follow_sentence.html.erb +3 -0
  23. data/app/views/activity_actions/_update_form.js.erb +2 -0
  24. data/app/views/activity_actions/create.js.erb +1 -0
  25. data/app/views/activity_actions/update.js.erb +1 -0
  26. data/app/views/avatars/index.html.erb +1 -1
  27. data/app/views/cheesecake/index.html.erb +1 -1
  28. data/app/views/contacts/{_link.html.erb → _link_custom.html.erb} +0 -0
  29. data/app/views/contacts/_link_follow.html.erb +12 -0
  30. data/app/views/contacts/edit.html.erb +1 -1
  31. data/app/views/contacts/index.html.erb +1 -1
  32. data/app/views/contacts/index.js.erb +1 -1
  33. data/app/views/contacts/new.html.erb +1 -1
  34. data/app/views/conversations/index.html.erb +1 -1
  35. data/app/views/conversations/index.js.erb +1 -1
  36. data/app/views/conversations/show.html.erb +1 -1
  37. data/app/views/conversations/show.js.erb +1 -1
  38. data/app/views/devise/registrations/edit.html.erb +1 -1
  39. data/app/views/followers/destroy.js.erb +1 -0
  40. data/app/views/followers/index.html.erb +5 -0
  41. data/app/views/followers/update.js.erb +1 -0
  42. data/app/views/groups/_show.html.erb +1 -1
  43. data/app/views/groups/new.html.erb +1 -1
  44. data/app/views/layouts/_header_dropdown_menu.html.erb +5 -3
  45. data/app/views/messages/new.html.erb +1 -1
  46. data/app/views/messages/new.js.erb +1 -1
  47. data/app/views/objects/_show.html.erb +1 -1
  48. data/app/views/profiles/edit.html.erb +1 -1
  49. data/app/views/profiles/show.html.erb +1 -1
  50. data/app/views/relation/customs/index.html.erb +1 -1
  51. data/app/views/settings/index.html.erb +1 -1
  52. data/app/views/settings/index.js.erb +1 -0
  53. data/app/views/ties/index.html.erb +1 -1
  54. data/app/views/toolbar/_logo.html.erb +0 -7
  55. data/app/views/users/_show.html.erb +1 -1
  56. data/config/locales/en.yml +16 -6
  57. data/config/locales/es.yml +15 -6
  58. data/config/locales/pt.yml +507 -0
  59. data/config/locales/rails.pt.yml +192 -0
  60. data/config/routes.rb +20 -7
  61. data/db/migrate/20120316093946_create_activity_actions.rb +15 -0
  62. data/db/migrate/20120316113728_activity_action_follow.rb +23 -0
  63. data/lib/generators/social_stream/base/install_generator.rb +0 -4
  64. data/lib/generators/social_stream/base/templates/initializer.rb +7 -0
  65. data/lib/inherited_resources/social_stream.rb +18 -0
  66. data/lib/rails/social_stream.rb +23 -0
  67. data/lib/social_stream-base.rb +7 -3
  68. data/lib/social_stream/base/dependencies.rb +3 -2
  69. data/lib/social_stream/base/engine.rb +6 -6
  70. data/lib/social_stream/base/version.rb +1 -1
  71. data/lib/social_stream/models/channeled.rb +8 -0
  72. data/lib/social_stream/models/object.rb +1 -3
  73. data/lib/social_stream/models/subtype.rb +31 -25
  74. data/lib/social_stream/models/supertype.rb +54 -19
  75. data/lib/social_stream/views/toolbar/base.rb +143 -0
  76. data/lib/tasks/db/populate.rake +1 -1
  77. data/social_stream-base.gemspec +1 -3
  78. data/spec/dummy/config/initializers/social_stream.rb +7 -0
  79. data/spec/models/activity_action_spec.rb +26 -0
  80. data/spec/models/tie_spec.rb +2 -2
  81. metadata +91 -84
  82. data/app/assets/javascripts/toolbar.js +0 -22
  83. data/app/views/layouts/_settings.html.erb +0 -18
  84. data/app/views/toolbar/_home.html.erb +0 -15
  85. data/app/views/toolbar/_messages.html.erb +0 -15
  86. data/app/views/toolbar/_profile.html.erb +0 -28
  87. data/lib/generators/social_stream/base/templates/navigation.rb +0 -4
  88. data/lib/social_stream/toolbar_config/base.rb +0 -94
@@ -38,9 +38,7 @@ module SocialStream
38
38
 
39
39
  # Build the post activity when this object is not saved
40
40
  def build_post_activity
41
- Activity.new :author => author,
42
- :user_author => user_author,
43
- :owner => owner,
41
+ Activity.new :channel => channel!,
44
42
  :relation_ids => Array(_relation_ids)
45
43
  end
46
44
 
@@ -1,21 +1,12 @@
1
1
  module SocialStream #:nodoc:
2
2
  module Models
3
3
  # Common methods for models that have a {SocialStream::Models::Supertype}
4
+ #
5
+ # Examples of subtypes are {User} and {Group}, which have {Actor} as supertype,
6
+ # or {Post} and {Comment}, which have {ActivityObject} as supertype
7
+ #
8
+ # Methods are documented taking User as example of {SocialStream::Models::Subtype}
4
9
  module Subtype
5
- # Add the class method {#subtype_of} to ActiveRecord::Base
6
- module ActiveRecord
7
- extend ActiveSupport::Concern
8
-
9
- module ClassMethods
10
- # This class is a subtype. Its supertype class is name
11
- def subtype_of name, options = {}
12
- @supertype_name = name
13
- @supertype_options = options
14
- include SocialStream::Models::Subtype
15
- end
16
- end
17
- end
18
-
19
10
  extend ActiveSupport::Concern
20
11
 
21
12
  included do
@@ -23,29 +14,30 @@ module SocialStream #:nodoc:
23
14
  attr_reader :supertype_name, :supertype_options
24
15
  end
25
16
 
26
- belongs_to supertype_name, {
27
- :validate => true,
28
- :autosave => true,
29
- :dependent => :destroy
30
- }.merge(supertype_options[:belongs] || {})
17
+ belongs_to supertype_name, { # belongs_to :actor, {
18
+ :validate => true, # :validate => true
19
+ :autosave => true, # :autosave => true
20
+ :dependent => :destroy # :dependent => :destroy
21
+ }.merge(supertype_options[:belongs] || {}) # }.merge(supertype_options[:belongs] || {})
31
22
 
32
23
  class_eval <<-EOS
33
- def #{ supertype_name }! # def actor!
34
- #{ supertype_name } || # actor ||
24
+ def #{ supertype_name }! # def actor!
25
+ #{ supertype_name } || # actor ||
35
26
  # FIXME: ruby1.9 remove .inspect
36
27
  build_#{ supertype_name }(#{ supertype_options[:build].inspect }) # build_actor(:subject_type => "User")
37
- end # end
28
+ end # end
38
29
 
39
30
  EOS
40
31
 
41
- alias_method :supertype!, "#{ supertype_name }!"
32
+ alias_method :supertype!, "#{ supertype_name }!" # alias_method :supertype!, :actor!
42
33
 
43
- before_validation :supertype!
34
+ # Load the supertype to ensure it is saved along with this instance
35
+ before_validation :supertype! # before_validation :actor!
44
36
  end
45
37
 
46
38
  module ClassMethods
47
39
  def supertype_foreign_key
48
- "#{ supertype_name }_id"
40
+ "#{ supertype_name }_id" # "actor_id"
49
41
  end
50
42
  end
51
43
 
@@ -77,6 +69,20 @@ module SocialStream #:nodoc:
77
69
 
78
70
  ! exceptions.include?(method)
79
71
  end
72
+
73
+ # Add the class method {#subtype_of} to ActiveRecord::Base
74
+ module ActiveRecord
75
+ extend ActiveSupport::Concern
76
+
77
+ module ClassMethods
78
+ # This class is a subtype. Its supertype class is name
79
+ def subtype_of name, options = {}
80
+ @supertype_name = name
81
+ @supertype_options = options
82
+ include SocialStream::Models::Subtype
83
+ end
84
+ end
85
+ end
80
86
  end
81
87
  end
82
88
  end
@@ -2,36 +2,58 @@ module SocialStream #:nodoc:
2
2
  module Models
3
3
  # Common methods for models having many {SocialStream::Models::Subtype subtypes}.
4
4
  # Currently, there are two {SocialStream::Models::Supertype supertypes}:
5
- # * {Actor}: participates in the social network and has {Tie Ties} with other actors. Its subtypes are {SocialStream::Models::Subject subjects}, such as {User} or {Group}
6
- # * {ActivityObject}: created and managed by {Actor Actors} in {Activity Activities}. Its subtypes are {SocialStream::Models::Object objects}, like {Post} or {Comment}
5
+ # * {Actor}: participates in the social network and has {Tie Ties} with other actors.
6
+ # Its subtypes are {SocialStream::Models::Subject subjects}, such as {User} or {Group}
7
+ # * {ActivityObject}: created and managed by {Actor Actors} in {Activity Activities}.
8
+ # Its subtypes are {SocialStream::Models::Object objects}, like {Post} or {Comment}
9
+ #
10
+ # Methods are documented for the case of {Actor} supertype
7
11
  module Supertype
8
- # Include the class method {#supertype_of} to ActiveRecord::Base
9
- module ActiveRecord
10
- extend ActiveSupport::Concern
11
-
12
- module ClassMethods
13
- # This class is a supertype. Subtype classes are known as name
14
- def supertype_of name
15
- @subtypes_name = name
16
- include SocialStream::Models::Supertype
17
- end
18
- end
19
- end
20
12
  extend ActiveSupport::Concern
21
13
 
22
14
  included do
23
- subtypes.each do |s|
24
- has_one s, :dependent => :destroy
25
- end
15
+ subtypes.each do |s| # [ :user, :group ].each do |s|
16
+ has_one s, :dependent => :destroy # has_one s, :dependent => :destroy
17
+ end # end
26
18
  end
27
19
 
28
20
  module ClassMethods
29
- def subtypes_name
21
+ def subtypes_name # :subject
30
22
  @subtypes_name
31
23
  end
32
24
 
33
25
  def subtypes
34
- SocialStream.__send__ subtypes_name.to_s.tableize # SocialStream.subjects # in Actor
26
+ SocialStream.__send__ subtypes_name.to_s.tableize # SocialStream.subjects # => [:user, :group ]
27
+ end
28
+
29
+ # Get the supertype id from an object, if possible
30
+ def normalize_id(a)
31
+ case a
32
+ when Integer
33
+ a
34
+ when Array
35
+ a.map{ |e| normalize_id(e) }
36
+ else
37
+ normalize(a).id
38
+ end
39
+ end
40
+
41
+ # Get supertype from object, if possible
42
+ def normalize(a)
43
+ case a
44
+ when self
45
+ a
46
+ when Integer
47
+ find a
48
+ when Array
49
+ a.map{ |e| normalize(e) }
50
+ else
51
+ begin
52
+ a.supertype!
53
+ rescue
54
+ raise "Unable to normalize #{ self } #{ a.inspect }"
55
+ end
56
+ end
35
57
  end
36
58
  end
37
59
 
@@ -41,6 +63,19 @@ module SocialStream #:nodoc:
41
63
  __send__ object_class.constantize.base_class.to_s.underscore # __send__ "document"
42
64
  end # end
43
65
  end
66
+
67
+ # Include the class method {#supertype_of} to ActiveRecord::Base
68
+ module ActiveRecord
69
+ extend ActiveSupport::Concern
70
+
71
+ module ClassMethods
72
+ # This class is a supertype. Subtype classes are known as name
73
+ def supertype_of name
74
+ @subtypes_name = name
75
+ include SocialStream::Models::Supertype
76
+ end
77
+ end
78
+ end
44
79
  end
45
80
  end
46
81
  end
@@ -0,0 +1,143 @@
1
+ module SocialStream
2
+ module Views
3
+ module Toolbar
4
+ module Base
5
+ def toolbar_items type, options = {}
6
+ SocialStream::Views::List.new.tap do |items|
7
+ case type
8
+ when :home, :messages
9
+ items << {
10
+ :key => :subject,
11
+ :html => render(:partial => 'toolbar/subject')
12
+ }
13
+
14
+ items << {
15
+ :key => :menu,
16
+ :html => toolbar_menu(type, options)
17
+ }
18
+ when :profile
19
+ subject = options[:subject]
20
+ raise "Need a subject options for profile toolbar" if subject.blank?
21
+
22
+ items << {
23
+ :key => :logo,
24
+ :html => render(:partial => 'toolbar/logo', :locals => { :subject => subject })
25
+ }
26
+
27
+ items << {
28
+ :key => :menu,
29
+ :html => toolbar_menu(type, options)
30
+ }
31
+ end
32
+ end
33
+ end
34
+
35
+ def toolbar_menu_items type, options = {}
36
+ SocialStream::Views::List.new.tap do |items|
37
+ case type
38
+ when :home
39
+ #Contacts
40
+ items << {
41
+ :key => :contacts,
42
+ :html => link_to(image_tag("btn/btn_friend.png")+t('contact.other'), "#", :id => 'toolbar_menu-contacts'),
43
+ :items => [
44
+ {
45
+ :key => :current,
46
+ :html => link_to(image_tag("btn/btn_friend.png")+t('contact.current'), contacts_path)
47
+ },
48
+ {
49
+ :key => :contacts_graph,
50
+ :html => link_to(image_tag("btn/btn_friend.png")+t('contact.graph.one'), ties_path)
51
+ },
52
+ {
53
+ :key => :pending,
54
+ :html => link_to(image_tag("btn/btn_friend.png")+t('contact.pending.other'), pending_contacts_path)
55
+ },
56
+ {
57
+ :key => :invitations,
58
+ :html => link_to(image_tag("btn/btn_invitation.png")+t('invitation.toolbar'), new_invitation_path)
59
+ }
60
+ ]
61
+ }
62
+
63
+ # Groups
64
+ items << {
65
+ :key => :groups,
66
+ :html => link_to(image_tag("btn/btn_group.png") + t('group.other'), '#', :id => "toolbar_menu-groups"),
67
+ :items => [
68
+ {
69
+ :key => :new_group ,
70
+ :html => link_to(image_tag("btn/btn_group.png")+t('group.new.action'), new_group_path)
71
+ }
72
+ ]
73
+ }
74
+ when :profile
75
+ subject = options[:subject]
76
+ raise "Need a subject options for profile toolbar" if subject.blank?
77
+
78
+ #Information button
79
+ items << {
80
+ :key => :subject_info,
81
+ :html => link_to(image_tag("btn/btn_edit.png")+t('menu.information'), [subject, :profile])
82
+ }
83
+
84
+ if subject != current_subject
85
+ #Like button
86
+ items << {
87
+ :key => :like_button,
88
+ :html => link_to(link_like_params(subject)[0],
89
+ link_like_params(subject)[1],
90
+ :id => link_like_params(subject)[2])
91
+ }
92
+
93
+ if user_signed_in?
94
+ #Relation button
95
+ items << {
96
+ :key => :subject_relation,
97
+ :html => link_to(image_tag("btn/btn_friend.png") + current_subject.contact_to!(subject).status,
98
+ edit_contact_path(current_subject.contact_to!(subject)))
99
+ }
100
+
101
+ #Send message button
102
+ items << {
103
+ :key => :send_message,
104
+ :html => link_to(image_tag("btn/btn_send.png")+t('message.send'),
105
+ new_message_path(:receiver => subject.slug))
106
+ }
107
+ end
108
+ end
109
+ when :messages
110
+ # Messages
111
+ items << {
112
+ :key => :message_new,
113
+ :html => link_to(image_tag("btn/message_new.png")+ t('message.new'),
114
+ new_message_path,
115
+ :remote=> false)
116
+ }
117
+
118
+ items << {
119
+ :key => :message_inbox,
120
+ :html => link_to(image_tag("btn/message_inbox.png")+t('message.inbox')+' (' + current_subject.unread_messages_count.to_s + ')',
121
+ conversations_path,
122
+ :remote=> false)
123
+ }
124
+
125
+ items << {
126
+ :key => :message_sentbox,
127
+ :html => link_to(image_tag("btn/message_sentbox.png")+t('message.sentbox'),
128
+ conversations_path(:box => :sentbox),
129
+ :remote=> false)
130
+ }
131
+
132
+ items << {
133
+ :key => :message_trash,
134
+ :html => link_to(image_tag("btn/message_trash.png")+t('message.trash'),
135
+ conversations_path(:box => :trash))
136
+ }
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
@@ -266,7 +266,7 @@ namespace :db do
266
266
  if avatar.present? && File.exists?(avatar)
267
267
  Avatar.copy_to_temp_file(avatar)
268
268
  dimensions = Avatar.get_image_dimensions(avatar)
269
- l = Avatar.new(:actor => i.actor,:logo => File.open(avatar), :name => File.basename(avatar), :crop_x => 0, :crop_y => 0, :crop_w => dimensions[:width], :crop_h => dimensions[:height] )
269
+ l = Avatar.new(:actor => i.actor, :name => File.basename(avatar), :crop_x => 0, :crop_y => 0, :crop_w => dimensions[:width], :crop_h => dimensions[:height] )
270
270
  l.active = true
271
271
  l.save!
272
272
  end
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
28
28
  # Slug generation
29
29
  s.add_runtime_dependency('stringex', '~> 1.3.0')
30
30
  # Avatar attachments
31
- s.add_runtime_dependency('avatars_for_rails', '~> 0.2.2')
31
+ s.add_runtime_dependency('avatars_for_rails', '~> 0.2.5')
32
32
  # jQuery
33
33
  s.add_runtime_dependency('jquery-rails', '>= 1.0.9')
34
34
  # Authorization
@@ -45,8 +45,6 @@ Gem::Specification.new do |s|
45
45
  s.add_runtime_dependency('acts-as-taggable-on','~> 2.2.2')
46
46
  # HTML Forms
47
47
  s.add_runtime_dependency('formtastic','~> 1.2.3')
48
- # Simple navigation for menu
49
- s.add_runtime_dependency('simple-navigation', '~> 3.5.1')
50
48
  # Background jobs
51
49
  s.add_runtime_dependency('resque','~> 1.20.0')
52
50
  # Modernizr.js javascript library
@@ -20,6 +20,13 @@ SocialStream.setup do |config|
20
20
  # You can write your own activity objects
21
21
  #
22
22
  # config.activity_forms = [ :post, :document, :foo, :bar ]
23
+
24
+ # Config the relation model of your network
25
+ #
26
+ # :custom - users define their own relation types, and post with privacy, like Google+
27
+ # :follow - user just follow other users, like Twitter
28
+ #
29
+ # config.relation_model = :custom
23
30
 
24
31
  # Quick search (header) and Extended search models and its order. Remember to create
25
32
  # the indexes with thinking-sphinx if you are using customized models.
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActivityAction do
4
+ context "a following contact" do
5
+ before do
6
+ @tie = Factory(:friend)
7
+ end
8
+
9
+ it "should create follow action" do
10
+ action = @tie.sender.action_to(@tie.receiver)
11
+
12
+ action.should be_present
13
+ action.should be_follow
14
+ end
15
+
16
+ it "should remove follow action" do
17
+ action = @tie.sender.action_to(@tie.receiver)
18
+
19
+ action.should be_present
20
+
21
+ @tie.destroy
22
+
23
+ action.reload.should_not be_follow
24
+ end
25
+ end
26
+ end
@@ -13,8 +13,8 @@ describe Tie do
13
13
  merge(Permission.follow).
14
14
  first
15
15
 
16
- Tie.create :contact_id => sender.contact_to!(receiver).id,
17
- :relation_id => follower_relation.id
16
+ Tie.create! :contact_id => sender.contact_to!(receiver).id,
17
+ :relation_id => follower_relation.id
18
18
 
19
19
  receiver.reload.follower_count.should eq(count + 1)
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_stream-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.3
4
+ version: 0.18.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-13 00:00:00.000000000Z
13
+ date: 2012-03-21 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &79141040 !ruby/object:Gem::Requirement
17
+ requirement: &76396110 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 3.1.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *79141040
25
+ version_requirements: *76396110
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: ancestry
28
- requirement: &79140240 !ruby/object:Gem::Requirement
28
+ requirement: &76394200 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.2.3
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *79140240
36
+ version_requirements: *76394200
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: foreigner
39
- requirement: &79139670 !ruby/object:Gem::Requirement
39
+ requirement: &76392840 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.1.1
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *79139670
47
+ version_requirements: *76392840
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: devise
50
- requirement: &79139300 !ruby/object:Gem::Requirement
50
+ requirement: &76391820 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 1.5.3
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *79139300
58
+ version_requirements: *76391820
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: inherited_resources
61
- requirement: &79138900 !ruby/object:Gem::Requirement
61
+ requirement: &76390440 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.3.0
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *79138900
69
+ version_requirements: *76390440
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: stringex
72
- requirement: &79138540 !ruby/object:Gem::Requirement
72
+ requirement: &76359230 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,21 +77,21 @@ dependencies:
77
77
  version: 1.3.0
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *79138540
80
+ version_requirements: *76359230
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: avatars_for_rails
83
- requirement: &79138140 !ruby/object:Gem::Requirement
83
+ requirement: &76358080 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
87
87
  - !ruby/object:Gem::Version
88
- version: 0.2.2
88
+ version: 0.2.5
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *79138140
91
+ version_requirements: *76358080
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: jquery-rails
94
- requirement: &79137790 !ruby/object:Gem::Requirement
94
+ requirement: &76357470 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: 1.0.9
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *79137790
102
+ version_requirements: *76357470
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: cancan
105
- requirement: &79137410 !ruby/object:Gem::Requirement
105
+ requirement: &76356530 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 1.6.4
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *79137410
113
+ version_requirements: *76356530
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: kaminari
116
- requirement: &79137050 !ruby/object:Gem::Requirement
116
+ requirement: &76355900 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: 0.13.0
122
122
  type: :runtime
123
123
  prerelease: false
124
- version_requirements: *79137050
124
+ version_requirements: *76355900
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: omniauth
127
- requirement: &79136800 !ruby/object:Gem::Requirement
127
+ requirement: &76355320 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: 1.0.2
133
133
  type: :runtime
134
134
  prerelease: false
135
- version_requirements: *79136800
135
+ version_requirements: *76355320
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: omniauth-facebook
138
- requirement: &79136470 !ruby/object:Gem::Requirement
138
+ requirement: &76354690 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ~>
@@ -143,10 +143,10 @@ dependencies:
143
143
  version: 1.2.0
144
144
  type: :runtime
145
145
  prerelease: false
146
- version_requirements: *79136470
146
+ version_requirements: *76354690
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: omniauth-linkedin
149
- requirement: &79136100 !ruby/object:Gem::Requirement
149
+ requirement: &76353230 !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements:
152
152
  - - ~>
@@ -154,10 +154,10 @@ dependencies:
154
154
  version: 0.0.6
155
155
  type: :runtime
156
156
  prerelease: false
157
- version_requirements: *79136100
157
+ version_requirements: *76353230
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: mailboxer
160
- requirement: &79135620 !ruby/object:Gem::Requirement
160
+ requirement: &76343090 !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
163
  - - ~>
@@ -165,10 +165,10 @@ dependencies:
165
165
  version: 0.6.0
166
166
  type: :runtime
167
167
  prerelease: false
168
- version_requirements: *79135620
168
+ version_requirements: *76343090
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: acts-as-taggable-on
171
- requirement: &79124280 !ruby/object:Gem::Requirement
171
+ requirement: &76342140 !ruby/object:Gem::Requirement
172
172
  none: false
173
173
  requirements:
174
174
  - - ~>
@@ -176,10 +176,10 @@ dependencies:
176
176
  version: 2.2.2
177
177
  type: :runtime
178
178
  prerelease: false
179
- version_requirements: *79124280
179
+ version_requirements: *76342140
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: formtastic
182
- requirement: &79123910 !ruby/object:Gem::Requirement
182
+ requirement: &76341120 !ruby/object:Gem::Requirement
183
183
  none: false
184
184
  requirements:
185
185
  - - ~>
@@ -187,21 +187,10 @@ dependencies:
187
187
  version: 1.2.3
188
188
  type: :runtime
189
189
  prerelease: false
190
- version_requirements: *79123910
191
- - !ruby/object:Gem::Dependency
192
- name: simple-navigation
193
- requirement: &79123680 !ruby/object:Gem::Requirement
194
- none: false
195
- requirements:
196
- - - ~>
197
- - !ruby/object:Gem::Version
198
- version: 3.5.1
199
- type: :runtime
200
- prerelease: false
201
- version_requirements: *79123680
190
+ version_requirements: *76341120
202
191
  - !ruby/object:Gem::Dependency
203
192
  name: resque
204
- requirement: &79123440 !ruby/object:Gem::Requirement
193
+ requirement: &76340160 !ruby/object:Gem::Requirement
205
194
  none: false
206
195
  requirements:
207
196
  - - ~>
@@ -209,10 +198,10 @@ dependencies:
209
198
  version: 1.20.0
210
199
  type: :runtime
211
200
  prerelease: false
212
- version_requirements: *79123440
201
+ version_requirements: *76340160
213
202
  - !ruby/object:Gem::Dependency
214
203
  name: modernizr-rails
215
- requirement: &79123100 !ruby/object:Gem::Requirement
204
+ requirement: &76338660 !ruby/object:Gem::Requirement
216
205
  none: false
217
206
  requirements:
218
207
  - - ~>
@@ -220,10 +209,10 @@ dependencies:
220
209
  version: 2.0.6
221
210
  type: :runtime
222
211
  prerelease: false
223
- version_requirements: *79123100
212
+ version_requirements: *76338660
224
213
  - !ruby/object:Gem::Dependency
225
214
  name: thinking-sphinx
226
- requirement: &79122720 !ruby/object:Gem::Requirement
215
+ requirement: &76337660 !ruby/object:Gem::Requirement
227
216
  none: false
228
217
  requirements:
229
218
  - - ~>
@@ -231,10 +220,10 @@ dependencies:
231
220
  version: 2.0.8
232
221
  type: :runtime
233
222
  prerelease: false
234
- version_requirements: *79122720
223
+ version_requirements: *76337660
235
224
  - !ruby/object:Gem::Dependency
236
225
  name: sass-rails
237
- requirement: &79122370 !ruby/object:Gem::Requirement
226
+ requirement: &76335890 !ruby/object:Gem::Requirement
238
227
  none: false
239
228
  requirements:
240
229
  - - ! '>='
@@ -242,10 +231,10 @@ dependencies:
242
231
  version: 3.1.0
243
232
  type: :runtime
244
233
  prerelease: false
245
- version_requirements: *79122370
234
+ version_requirements: *76335890
246
235
  - !ruby/object:Gem::Dependency
247
236
  name: rails_autolink
248
- requirement: &79121960 !ruby/object:Gem::Requirement
237
+ requirement: &76330610 !ruby/object:Gem::Requirement
249
238
  none: false
250
239
  requirements:
251
240
  - - ~>
@@ -253,10 +242,10 @@ dependencies:
253
242
  version: 1.0.4
254
243
  type: :runtime
255
244
  prerelease: false
256
- version_requirements: *79121960
245
+ version_requirements: *76330610
257
246
  - !ruby/object:Gem::Dependency
258
247
  name: social_cheesecake
259
- requirement: &79121650 !ruby/object:Gem::Requirement
248
+ requirement: &76330050 !ruby/object:Gem::Requirement
260
249
  none: false
261
250
  requirements:
262
251
  - - ~>
@@ -264,10 +253,10 @@ dependencies:
264
253
  version: 0.4.0
265
254
  type: :runtime
266
255
  prerelease: false
267
- version_requirements: *79121650
256
+ version_requirements: *76330050
268
257
  - !ruby/object:Gem::Dependency
269
258
  name: i18n-js
270
- requirement: &79121220 !ruby/object:Gem::Requirement
259
+ requirement: &76329160 !ruby/object:Gem::Requirement
271
260
  none: false
272
261
  requirements:
273
262
  - - ~>
@@ -275,10 +264,10 @@ dependencies:
275
264
  version: 2.1.2
276
265
  type: :runtime
277
266
  prerelease: false
278
- version_requirements: *79121220
267
+ version_requirements: *76329160
279
268
  - !ruby/object:Gem::Dependency
280
269
  name: capybara
281
- requirement: &79120840 !ruby/object:Gem::Requirement
270
+ requirement: &76328570 !ruby/object:Gem::Requirement
282
271
  none: false
283
272
  requirements:
284
273
  - - ~>
@@ -286,10 +275,10 @@ dependencies:
286
275
  version: 0.3.9
287
276
  type: :development
288
277
  prerelease: false
289
- version_requirements: *79120840
278
+ version_requirements: *76328570
290
279
  - !ruby/object:Gem::Dependency
291
280
  name: sqlite3-ruby
292
- requirement: &79120530 !ruby/object:Gem::Requirement
281
+ requirement: &76327780 !ruby/object:Gem::Requirement
293
282
  none: false
294
283
  requirements:
295
284
  - - ! '>='
@@ -297,10 +286,10 @@ dependencies:
297
286
  version: '0'
298
287
  type: :development
299
288
  prerelease: false
300
- version_requirements: *79120530
289
+ version_requirements: *76327780
301
290
  - !ruby/object:Gem::Dependency
302
291
  name: ruby-debug19
303
- requirement: &79119930 !ruby/object:Gem::Requirement
292
+ requirement: &76326580 !ruby/object:Gem::Requirement
304
293
  none: false
305
294
  requirements:
306
295
  - - ! '>='
@@ -308,10 +297,10 @@ dependencies:
308
297
  version: '0'
309
298
  type: :development
310
299
  prerelease: false
311
- version_requirements: *79119930
300
+ version_requirements: *76326580
312
301
  - !ruby/object:Gem::Dependency
313
302
  name: rspec-rails
314
- requirement: &79119150 !ruby/object:Gem::Requirement
303
+ requirement: &76325080 !ruby/object:Gem::Requirement
315
304
  none: false
316
305
  requirements:
317
306
  - - ~>
@@ -319,10 +308,10 @@ dependencies:
319
308
  version: 2.6.1
320
309
  type: :development
321
310
  prerelease: false
322
- version_requirements: *79119150
311
+ version_requirements: *76325080
323
312
  - !ruby/object:Gem::Dependency
324
313
  name: factory_girl
325
- requirement: &79118400 !ruby/object:Gem::Requirement
314
+ requirement: &76322830 !ruby/object:Gem::Requirement
326
315
  none: false
327
316
  requirements:
328
317
  - - ~>
@@ -330,10 +319,10 @@ dependencies:
330
319
  version: 1.3.2
331
320
  type: :development
332
321
  prerelease: false
333
- version_requirements: *79118400
322
+ version_requirements: *76322830
334
323
  - !ruby/object:Gem::Dependency
335
324
  name: forgery
336
- requirement: &79117550 !ruby/object:Gem::Requirement
325
+ requirement: &76318040 !ruby/object:Gem::Requirement
337
326
  none: false
338
327
  requirements:
339
328
  - - ~>
@@ -341,10 +330,10 @@ dependencies:
341
330
  version: 0.4.2
342
331
  type: :development
343
332
  prerelease: false
344
- version_requirements: *79117550
333
+ version_requirements: *76318040
345
334
  - !ruby/object:Gem::Dependency
346
335
  name: ci_reporter
347
- requirement: &79117020 !ruby/object:Gem::Requirement
336
+ requirement: &76316960 !ruby/object:Gem::Requirement
348
337
  none: false
349
338
  requirements:
350
339
  - - ~>
@@ -352,10 +341,10 @@ dependencies:
352
341
  version: 1.6.4
353
342
  type: :development
354
343
  prerelease: false
355
- version_requirements: *79117020
344
+ version_requirements: *76316960
356
345
  - !ruby/object:Gem::Dependency
357
346
  name: nifty-generators
358
- requirement: &79116570 !ruby/object:Gem::Requirement
347
+ requirement: &76316040 !ruby/object:Gem::Requirement
359
348
  none: false
360
349
  requirements:
361
350
  - - ~>
@@ -363,7 +352,7 @@ dependencies:
363
352
  version: 0.4.5
364
353
  type: :development
365
354
  prerelease: false
366
- version_requirements: *79116570
355
+ version_requirements: *76316040
367
356
  description: ! 'Social Stream is a Ruby on Rails engine providing your application
368
357
  with social networking features and activity streams.
369
358
 
@@ -493,6 +482,7 @@ files:
493
482
  - app/assets/images/cleditor/toolbar.gif
494
483
  - app/assets/images/flags/en.png
495
484
  - app/assets/images/flags/es.png
485
+ - app/assets/images/flags/pt.png
496
486
  - app/assets/images/frontpage/collaborate.png
497
487
  - app/assets/images/frontpage/comments.png
498
488
  - app/assets/images/frontpage/green_sq.png
@@ -560,9 +550,9 @@ files:
560
550
  - app/assets/javascripts/social_stream.objects.js
561
551
  - app/assets/javascripts/social_stream.search.js.erb
562
552
  - app/assets/javascripts/social_stream.timeline.js
553
+ - app/assets/javascripts/social_stream.toolbar.js
563
554
  - app/assets/javascripts/social_stream.wall.js.erb
564
555
  - app/assets/javascripts/ties.js
565
- - app/assets/javascripts/toolbar.js
566
556
  - app/assets/javascripts/users.js
567
557
  - app/assets/stylesheets/_colors.scss
568
558
  - app/assets/stylesheets/activities.css.scss.erb
@@ -605,12 +595,14 @@ files:
605
595
  - app/assets/stylesheets/toolbar.css
606
596
  - app/assets/stylesheets/users.css
607
597
  - app/controllers/activities_controller.rb
598
+ - app/controllers/activity_actions_controller.rb
608
599
  - app/controllers/api_controller.rb
609
600
  - app/controllers/authentications_controller.rb
610
601
  - app/controllers/cheesecake_controller.rb
611
602
  - app/controllers/comments_controller.rb
612
603
  - app/controllers/contacts_controller.rb
613
604
  - app/controllers/conversations_controller.rb
605
+ - app/controllers/followers_controller.rb
614
606
  - app/controllers/frontpage_controller.rb
615
607
  - app/controllers/groups_controller.rb
616
608
  - app/controllers/home_controller.rb
@@ -630,7 +622,9 @@ files:
630
622
  - app/controllers/ties_controller.rb
631
623
  - app/controllers/users_controller.rb
632
624
  - app/helpers/activities_helper.rb
625
+ - app/helpers/activity_actions_helper.rb
633
626
  - app/helpers/contacts_helper.rb
627
+ - app/helpers/followers_helper.rb
634
628
  - app/helpers/groups_helper.rb
635
629
  - app/helpers/location_helper.rb
636
630
  - app/helpers/notifications_helper.rb
@@ -645,6 +639,7 @@ files:
645
639
  - app/mailers/invitation_mailer.rb
646
640
  - app/models/ability.rb
647
641
  - app/models/activity.rb
642
+ - app/models/activity_action.rb
648
643
  - app/models/activity_object.rb
649
644
  - app/models/activity_object_activity.rb
650
645
  - app/models/activity_object_property.rb
@@ -662,6 +657,7 @@ files:
662
657
  - app/models/profile.rb
663
658
  - app/models/relation.rb
664
659
  - app/models/relation/custom.rb
660
+ - app/models/relation/follow.rb
665
661
  - app/models/relation/public.rb
666
662
  - app/models/relation/reject.rb
667
663
  - app/models/relation/single.rb
@@ -679,6 +675,11 @@ files:
679
675
  - app/views/activities/_wall.html.erb
680
676
  - app/views/activities/index.html.erb
681
677
  - app/views/activities/index.js.erb
678
+ - app/views/activity_actions/_follow_form.html.erb
679
+ - app/views/activity_actions/_follow_sentence.html.erb
680
+ - app/views/activity_actions/_update_form.js.erb
681
+ - app/views/activity_actions/create.js.erb
682
+ - app/views/activity_actions/update.js.erb
682
683
  - app/views/activity_objects/_activity_object.html.erb
683
684
  - app/views/actors/_actor.html.erb
684
685
  - app/views/actors/_actor_cheesecake.html.erb
@@ -700,7 +701,8 @@ files:
700
701
  - app/views/contacts/_contact.html.erb
701
702
  - app/views/contacts/_form.html.erb
702
703
  - app/views/contacts/_index.html.erb
703
- - app/views/contacts/_link.html.erb
704
+ - app/views/contacts/_link_custom.html.erb
705
+ - app/views/contacts/_link_follow.html.erb
704
706
  - app/views/contacts/_pendings.html.erb
705
707
  - app/views/contacts/_suggestions.html.erb
706
708
  - app/views/contacts/_suggestions_and_pendings.html.erb
@@ -729,6 +731,9 @@ files:
729
731
  - app/views/devise/registrations/new.html.erb
730
732
  - app/views/devise/sessions/new.html.erb
731
733
  - app/views/devise/shared/_links.erb
734
+ - app/views/followers/destroy.js.erb
735
+ - app/views/followers/index.html.erb
736
+ - app/views/followers/update.js.erb
732
737
  - app/views/frontpage/_caracteristics.html.erb
733
738
  - app/views/frontpage/_social_networks.html.erb
734
739
  - app/views/frontpage/_sponsor.html.erb
@@ -766,7 +771,6 @@ files:
766
771
  - app/views/layouts/_header_signed_out.erb
767
772
  - app/views/layouts/_representation.html.erb
768
773
  - app/views/layouts/_search.html.erb
769
- - app/views/layouts/_settings.html.erb
770
774
  - app/views/layouts/application.html.erb
771
775
  - app/views/layouts/frontpage.html.erb
772
776
  - app/views/likes/create.js.erb
@@ -844,10 +848,7 @@ files:
844
848
  - app/views/subjects/_subject.html.erb
845
849
  - app/views/subjects/_subject_with_details.html.erb
846
850
  - app/views/ties/index.html.erb
847
- - app/views/toolbar/_home.html.erb
848
851
  - app/views/toolbar/_logo.html.erb
849
- - app/views/toolbar/_messages.html.erb
850
- - app/views/toolbar/_profile.html.erb
851
852
  - app/views/toolbar/_subject.html.erb
852
853
  - app/views/users/_groups.html.erb
853
854
  - app/views/users/_index.html.erb
@@ -864,7 +865,9 @@ files:
864
865
  - app/views/users/show.xml.builder
865
866
  - config/locales/en.yml
866
867
  - config/locales/es.yml
868
+ - config/locales/pt.yml
867
869
  - config/locales/rails.es.yml
870
+ - config/locales/rails.pt.yml
868
871
  - config/routes.rb
869
872
  - db/migrate/20110610112023_create_social_stream.rb
870
873
  - db/migrate/20110705103202_empty_ties_count.rb
@@ -880,15 +883,18 @@ files:
880
883
  - db/migrate/20120201185454_singleton_single_relations.rb
881
884
  - db/migrate/20120208135718_group_title_and_description_in_activity_object.rb
882
885
  - db/migrate/20120302215722_activity_object_properties.rb
886
+ - db/migrate/20120316093946_create_activity_actions.rb
887
+ - db/migrate/20120316113728_activity_action_follow.rb
883
888
  - lib/acts_as_taggable_on/acts_as_taggable_on/dirty.rb
884
889
  - lib/acts_as_taggable_on/social_stream.rb
885
890
  - lib/generators/social_stream/base/install_generator.rb
886
891
  - lib/generators/social_stream/base/templates/initializer.rb
887
- - lib/generators/social_stream/base/templates/navigation.rb
888
892
  - lib/generators/social_stream/base/templates/relations.yml
889
893
  - lib/generators/social_stream/base/templates/sphinx.yml
890
894
  - lib/i18n-js/social_stream-base.rb
895
+ - lib/inherited_resources/social_stream.rb
891
896
  - lib/paperclip/social_stream.rb
897
+ - lib/rails/social_stream.rb
892
898
  - lib/social_stream-base.rb
893
899
  - lib/social_stream/ability.rb
894
900
  - lib/social_stream/ability/base.rb
@@ -912,10 +918,10 @@ files:
912
918
  - lib/social_stream/populate.rb
913
919
  - lib/social_stream/test_helpers.rb
914
920
  - lib/social_stream/test_helpers/controllers.rb
915
- - lib/social_stream/toolbar_config/base.rb
916
921
  - lib/social_stream/views/list.rb
917
922
  - lib/social_stream/views/settings/base.rb
918
923
  - lib/social_stream/views/sidebar/base.rb
924
+ - lib/social_stream/views/toolbar/base.rb
919
925
  - lib/tasks/db/populate.rake
920
926
  - lib/tasks/workers.rake
921
927
  - social_stream-base.gemspec
@@ -978,6 +984,7 @@ files:
978
984
  - spec/factories/tie.rb
979
985
  - spec/factories/user.rb
980
986
  - spec/integration/navigation_spec.rb
987
+ - spec/models/activity_action_spec.rb
981
988
  - spec/models/activity_authorization_spec.rb
982
989
  - spec/models/activity_spec.rb
983
990
  - spec/models/actor_spec.rb