social_stream 0.27.3 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/base/app/models/activity.rb +4 -2
- data/base/app/models/activity_action.rb +3 -2
- data/base/app/models/activity_object.rb +17 -10
- data/base/app/models/actor.rb +14 -1
- data/base/app/models/comment.rb +24 -0
- data/base/app/views/activities/_comments.html.erb +3 -1
- data/base/db/migrate/20120621135650_add_comment_count_to_activity_object.rb +24 -0
- data/base/db/migrate/20120627115244_fix_activity_object_follower_count.rb +17 -0
- data/base/lib/social_stream/base/version.rb +1 -1
- data/base/social_stream-base.gemspec +1 -1
- data/base/spec/integration/activity.rb +15 -0
- data/base/spec/models/activity_action_spec.rb +8 -0
- data/documents/lib/social_stream/documents/version.rb +1 -1
- data/documents/social_stream-documents.gemspec +1 -1
- data/events/app/assets/stylesheets/events.css.scss +2 -1
- data/events/lib/social_stream/events/version.rb +1 -1
- data/events/social_stream-events.gemspec +1 -1
- data/lib/social_stream/version.rb +1 -1
- data/linkser/lib/social_stream/linkser/version.rb +1 -1
- data/linkser/social_stream-linkser.gemspec +1 -1
- data/presence/lib/social_stream/presence/version.rb +1 -1
- data/presence/social_stream-presence.gemspec +1 -1
- data/social_stream.gemspec +5 -5
- metadata +15 -12
data/base/app/models/activity.rb
CHANGED
@@ -182,12 +182,14 @@ class Activity < ActiveRecord::Base
|
|
182
182
|
|
183
183
|
# The first activity object of this activity
|
184
184
|
def direct_activity_object
|
185
|
-
|
185
|
+
@direct_activity_object ||=
|
186
|
+
activity_objects.first
|
186
187
|
end
|
187
188
|
|
188
189
|
# The first object of this activity
|
189
190
|
def direct_object
|
190
|
-
|
191
|
+
@direct_object ||=
|
192
|
+
direct_activity_object.try(:object)
|
191
193
|
end
|
192
194
|
|
193
195
|
# The title for this activity in the stream
|
@@ -5,8 +5,6 @@ class ActivityAction < ActiveRecord::Base
|
|
5
5
|
belongs_to :actor
|
6
6
|
belongs_to :activity_object
|
7
7
|
|
8
|
-
before_save :change_follower_count
|
9
|
-
|
10
8
|
scope :sent_by, lambda{ |actor|
|
11
9
|
where(:actor_id => Actor.normalize_id(actor))
|
12
10
|
}
|
@@ -27,8 +25,11 @@ class ActivityAction < ActiveRecord::Base
|
|
27
25
|
authored_or_owned.sent_by(subject)
|
28
26
|
}
|
29
27
|
|
28
|
+
|
30
29
|
before_create :follow_by_author_and_owner
|
31
30
|
|
31
|
+
after_save :change_follower_count
|
32
|
+
|
32
33
|
private
|
33
34
|
|
34
35
|
# Updates the follower_count counter in the {ActivityObject}
|
@@ -92,6 +92,21 @@ class ActivityObject < ActiveRecord::Base
|
|
92
92
|
merge(ActivityObjectAudience.where(:relation_id => Relation.ids_shared_with(subject)))
|
93
93
|
}
|
94
94
|
|
95
|
+
# Obtain the {ActivityAction} between this {ActivityObject}
|
96
|
+
# and the {Actor} identified by actor_id
|
97
|
+
def received_action_by(actor_id)
|
98
|
+
received_actions.
|
99
|
+
find{ |a| a.actor_id == actor_id }
|
100
|
+
end
|
101
|
+
|
102
|
+
# Obtain received_action_by(actor_id) or create it if it does
|
103
|
+
# not exist
|
104
|
+
def received_action_by!(actor_id)
|
105
|
+
received_action_by(actor_id) ||
|
106
|
+
received_actions.build(:actor_id => actor_id)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Get the first {ActivityAction} that has activated the role flag
|
95
110
|
def received_role_action(role)
|
96
111
|
received_actions.
|
97
112
|
find{ |a| a.__send__ "#{ role }?" }
|
@@ -106,16 +121,9 @@ class ActivityObject < ActiveRecord::Base
|
|
106
121
|
|
107
122
|
def #{ role }_id=(actor_id) # def author_id=(actor_id)
|
108
123
|
action = # action =
|
109
|
-
|
110
|
-
find{ |a| a.actor_id == actor_id } # select{ |a| a.actor_id == actor_id }
|
124
|
+
received_action_by!(actor_id) # received_action_by!(actor_id)
|
111
125
|
#
|
112
|
-
|
113
|
-
action.#{ role } = true # action.author = true
|
114
|
-
else # else
|
115
|
-
received_actions. # received_actions.
|
116
|
-
build :actor_id => actor_id, # build :actor_id => actor_id,
|
117
|
-
:#{ role } => true # :author => true
|
118
|
-
end # end
|
126
|
+
action.#{ role } = true # action.author = true
|
119
127
|
#
|
120
128
|
actor_id # actor_id
|
121
129
|
end # end
|
@@ -133,7 +141,6 @@ class ActivityObject < ActiveRecord::Base
|
|
133
141
|
def #{ role }_subject # def author_subject
|
134
142
|
#{ role }.subject # author.subject
|
135
143
|
end # end
|
136
|
-
|
137
144
|
EOC
|
138
145
|
|
139
146
|
class_eval code, __FILE__, __LINE__ - code.lines.count - 2
|
data/base/app/models/actor.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# type of a {Tie} is a {Relation}. Each actor can define and customize their relations own
|
6
6
|
# {Relation Relations}.
|
7
7
|
#
|
8
|
-
# Every {Actor} has an Avatar, a {Profile} with personal
|
8
|
+
# Every {Actor} has an Avatar, a {Profile} with personal or group information, contact data, etc.
|
9
9
|
#
|
10
10
|
# {Actor Actors} perform {ActivityAction actions} (like, suscribe, etc.) on
|
11
11
|
# {ActivityObject activity objects} ({Post posts}, {Comment commments}, pictures, events..)
|
@@ -81,6 +81,19 @@ class Actor < ActiveRecord::Base
|
|
81
81
|
:source => :activity_object,
|
82
82
|
:conditions => { 'activity_actions.follow' => true }
|
83
83
|
|
84
|
+
has_many :authored_activities,
|
85
|
+
:class_name => "Activity",
|
86
|
+
:foreign_key => :author_id,
|
87
|
+
:dependent => :destroy
|
88
|
+
has_many :user_authored_activities,
|
89
|
+
:class_name => "Activity",
|
90
|
+
:foreign_key => :user_author_id,
|
91
|
+
:dependent => :destroy
|
92
|
+
has_many :owned_activities,
|
93
|
+
:class_name => "Activity",
|
94
|
+
:foreign_key => :owner_id,
|
95
|
+
:dependent => :destroy
|
96
|
+
|
84
97
|
scope :alphabetic, order('actors.name')
|
85
98
|
|
86
99
|
scope :letter, lambda { |param|
|
data/base/app/models/comment.rb
CHANGED
@@ -4,6 +4,9 @@ class Comment < ActiveRecord::Base
|
|
4
4
|
alias_attribute :text, :description
|
5
5
|
validates_presence_of :text
|
6
6
|
|
7
|
+
after_create :increment_comment_count
|
8
|
+
before_destroy :decrement_comment_count
|
9
|
+
|
7
10
|
define_index do
|
8
11
|
activity_object_index
|
9
12
|
end
|
@@ -15,4 +18,25 @@ class Comment < ActiveRecord::Base
|
|
15
18
|
def title
|
16
19
|
description.truncate(30, :separator =>' ')
|
17
20
|
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# after_create callback
|
25
|
+
#
|
26
|
+
# Increment comment counter in parent's activity_object with a comment
|
27
|
+
def increment_comment_count
|
28
|
+
return if self.post_activity.parent.blank?
|
29
|
+
|
30
|
+
self.post_activity.parent.direct_activity_object.increment!(:comment_count)
|
31
|
+
end
|
32
|
+
|
33
|
+
# before_destroy callback
|
34
|
+
#
|
35
|
+
# Decrement comment counter in parent's activity_object when comment is destroyed
|
36
|
+
def decrement_comment_count
|
37
|
+
return if self.post_activity.blank? || self.post_activity.parent.blank?
|
38
|
+
|
39
|
+
self.post_activity.parent.direct_activity_object.decrement!(:comment_count)
|
40
|
+
end
|
41
|
+
|
18
42
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class AddCommentCountToActivityObject < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
add_column :activity_objects, :comment_count, :integer, :default => 0
|
4
|
+
|
5
|
+
ActivityObject.record_timestamps = false
|
6
|
+
ActivityObject.reset_column_information
|
7
|
+
|
8
|
+
ActivityObject.all.each do |ao|
|
9
|
+
parent_activity = ao.activities.first
|
10
|
+
|
11
|
+
# Actors have not parent activities
|
12
|
+
next if parent_activity.blank?
|
13
|
+
|
14
|
+
ao.update_attribute(:comment_count, Activity.includes(:activity_objects).where('activity_objects.object_type' => "Comment").where(:ancestry => [parent_activity.id]).size)
|
15
|
+
end
|
16
|
+
|
17
|
+
ActivityObject.record_timestamps = true
|
18
|
+
ActivityObject.reset_column_information
|
19
|
+
end
|
20
|
+
|
21
|
+
def down
|
22
|
+
remove_column :activity_objects, :comment_count
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Reset follower_count for all the ActivityObjects that are not Actors
|
2
|
+
# See: https://github.com/ging/social_stream/issues/274
|
3
|
+
class FixActivityObjectFollowerCount < ActiveRecord::Migration
|
4
|
+
def up
|
5
|
+
ActivityObject.record_timestamps = false
|
6
|
+
|
7
|
+
ActivityObject.where("object_type != ?", "Actor").all.each do |ao|
|
8
|
+
ao.update_attribute :follower_count, ao.received_actions.where(:follow => true).count
|
9
|
+
end
|
10
|
+
|
11
|
+
ActivityObject.record_timestamps = true
|
12
|
+
ActivityObject.reset_column_information
|
13
|
+
end
|
14
|
+
|
15
|
+
def down
|
16
|
+
end
|
17
|
+
end
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
# jQuery
|
35
35
|
s.add_runtime_dependency('jquery-rails', '>= 1.0.9')
|
36
36
|
# Authorization
|
37
|
-
s.add_runtime_dependency('cancan', '
|
37
|
+
s.add_runtime_dependency('cancan', '1.6.7')
|
38
38
|
# Pagination
|
39
39
|
s.add_runtime_dependency('kaminari', '~> 0.13.0')
|
40
40
|
# OAuth client
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Activity do
|
4
|
+
before(:all) do
|
5
|
+
@activity = Factory(:activity)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should be destroyed along with its author" do
|
9
|
+
author = @activity.author
|
10
|
+
|
11
|
+
author.destroy
|
12
|
+
|
13
|
+
Activity.find_by_id(@activity.id).should be_nil
|
14
|
+
end
|
15
|
+
end
|
@@ -31,6 +31,10 @@ describe ActivityAction do
|
|
31
31
|
it "should not be duplicated" do
|
32
32
|
@post.received_actions.count.should == 2
|
33
33
|
end
|
34
|
+
|
35
|
+
it "should initialize follower count" do
|
36
|
+
@post.reload.follower_count.should == 2
|
37
|
+
end
|
34
38
|
end
|
35
39
|
|
36
40
|
describe "where posting to self" do
|
@@ -41,6 +45,10 @@ describe ActivityAction do
|
|
41
45
|
it "should not be duplicated" do
|
42
46
|
@post.received_actions.count.should == 1
|
43
47
|
end
|
48
|
+
|
49
|
+
it "should initialize follower count" do
|
50
|
+
@post.reload.follower_count.should == 1
|
51
|
+
end
|
44
52
|
end
|
45
53
|
|
46
54
|
describe "where building the post" do
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.files = `git ls-files`.split("\n")
|
13
13
|
|
14
14
|
# Gem dependencies
|
15
|
-
s.add_runtime_dependency('social_stream-base', '~> 0.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.22.0')
|
16
16
|
s.add_runtime_dependency('paperclip-ffmpeg', '~> 0.7.0')
|
17
17
|
s.add_runtime_dependency('paperclip','= 2.4.5')
|
18
18
|
s.add_runtime_dependency('delayed_paperclip','2.4.5.1')
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.files = `git ls-files`.split("\n")
|
13
13
|
|
14
14
|
# Gem dependencies
|
15
|
-
s.add_runtime_dependency('social_stream-base', '~> 0.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.22.0')
|
16
16
|
s.add_runtime_dependency('rails-scheduler', '~> 0.0.8')
|
17
17
|
|
18
18
|
# Development Gem dependencies
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.files = `git ls-files`.split("\n")
|
13
13
|
|
14
14
|
# Gem dependencies
|
15
|
-
s.add_runtime_dependency('social_stream-base', '~> 0.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.22.0')
|
16
16
|
s.add_runtime_dependency('linkser', '~> 0.0.12')
|
17
17
|
# Development Gem dependencies
|
18
18
|
s.add_development_dependency('sqlite3-ruby')
|
data/social_stream.gemspec
CHANGED
@@ -11,11 +11,11 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.files = `git ls-files`.split("\n")
|
12
12
|
|
13
13
|
# Gem dependencies
|
14
|
-
s.add_runtime_dependency('social_stream-base', '~> 0.
|
15
|
-
s.add_runtime_dependency('social_stream-documents', '~> 0.
|
16
|
-
s.add_runtime_dependency('social_stream-events', '~> 0.
|
17
|
-
s.add_runtime_dependency('social_stream-linkser', '~> 0.
|
18
|
-
s.add_runtime_dependency('social_stream-presence', '~> 0.
|
14
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.22.0')
|
15
|
+
s.add_runtime_dependency('social_stream-documents', '~> 0.16.0')
|
16
|
+
s.add_runtime_dependency('social_stream-events', '~> 0.14.0')
|
17
|
+
s.add_runtime_dependency('social_stream-linkser', '~> 0.13.0')
|
18
|
+
s.add_runtime_dependency('social_stream-presence', '~> 0.15.0')
|
19
19
|
|
20
20
|
# Development Gem dependencies
|
21
21
|
#
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.28.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-06-
|
13
|
+
date: 2012-06-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: social_stream-base
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.22.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,7 +27,7 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - ~>
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: 0.
|
30
|
+
version: 0.22.0
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: social_stream-documents
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
@@ -35,7 +35,7 @@ dependencies:
|
|
35
35
|
requirements:
|
36
36
|
- - ~>
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: 0.
|
38
|
+
version: 0.16.0
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.
|
46
|
+
version: 0.16.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: social_stream-events
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.14.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - ~>
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.
|
62
|
+
version: 0.14.0
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: social_stream-linkser
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
requirements:
|
68
68
|
- - ~>
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.
|
70
|
+
version: 0.13.0
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -75,7 +75,7 @@ dependencies:
|
|
75
75
|
requirements:
|
76
76
|
- - ~>
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 0.
|
78
|
+
version: 0.13.0
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
80
|
name: social_stream-presence
|
81
81
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,7 +83,7 @@ dependencies:
|
|
83
83
|
requirements:
|
84
84
|
- - ~>
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: 0.
|
86
|
+
version: 0.15.0
|
87
87
|
type: :runtime
|
88
88
|
prerelease: false
|
89
89
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -91,7 +91,7 @@ dependencies:
|
|
91
91
|
requirements:
|
92
92
|
- - ~>
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: 0.
|
94
|
+
version: 0.15.0
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: capybara
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -743,6 +743,8 @@ files:
|
|
743
743
|
- base/db/migrate/20120411132550_add_visit_count_to_activity_object.rb
|
744
744
|
- base/db/migrate/20120411151413_relation_public_permissions.rb
|
745
745
|
- base/db/migrate/20120526171311_remove_activity_channels.rb
|
746
|
+
- base/db/migrate/20120621135650_add_comment_count_to_activity_object.rb
|
747
|
+
- base/db/migrate/20120627115244_fix_activity_object_follower_count.rb
|
746
748
|
- base/lib/acts_as_taggable_on/acts_as_taggable_on/dirty.rb
|
747
749
|
- base/lib/acts_as_taggable_on/social_stream.rb
|
748
750
|
- base/lib/generators/social_stream/base/install_generator.rb
|
@@ -879,6 +881,7 @@ files:
|
|
879
881
|
- base/spec/factories/relation_custom.rb
|
880
882
|
- base/spec/factories/tie.rb
|
881
883
|
- base/spec/factories/user.rb
|
884
|
+
- base/spec/integration/activity.rb
|
882
885
|
- base/spec/integration/navigation_spec.rb
|
883
886
|
- base/spec/integration/resque_access_spec.rb
|
884
887
|
- base/spec/models/activity_action_spec.rb
|