social_stream-base 0.6.0 → 0.6.1

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.
@@ -24,6 +24,6 @@ module ActivitiesHelper
24
24
  return Activity.new unless user_signed_in?
25
25
 
26
26
  Activity.new :contact_id => current_subject.contact_to!(receiver).id,
27
- :relation_ids => receiver.activity_relations(current_subject, :from => :receiver).map(&:id)
27
+ :relation_ids => current_subject.activity_relations(receiver, :from => :receiver).map(&:id)
28
28
  end
29
29
  end
@@ -38,8 +38,11 @@ module ToolbarHelper
38
38
  #
39
39
  # <% toolbar :profile => @group, :option => :contacts %>
40
40
  #
41
-
42
41
  def toolbar(options = {}, &block)
42
+ old_toolbar(options,&block)
43
+ end
44
+
45
+ def old_toolbar(options = {}, &block)
43
46
  if options[:option] && block_given?
44
47
  menu_options[options[:option]] = capture(&block)
45
48
  end
@@ -56,21 +59,21 @@ module ToolbarHelper
56
59
  when Mime::JS
57
60
  response = <<-EOJ
58
61
 
59
- $('#toolbar').html("#{ escape_javascript(content) }");
60
- initMenu();
61
- expandSubMenu('#{ options[:option] }');
62
- EOJ
62
+ $('#toolbar').html("#{ escape_javascript(content) }");
63
+ initMenu();
64
+ expandSubMenu('#{ options[:option] }');
65
+ EOJ
63
66
 
64
67
  response.html_safe
65
68
  else
66
- content_for(:toolbar) do
67
- content
68
- end
69
- content_for(:javascript) do
70
- <<-EOJ
71
- expandSubMenu('#{ options[:option] }');
72
- EOJ
73
- end
69
+ content_for(:toolbar) do
70
+ content
71
+ end
72
+ content_for(:javascript) do
73
+ <<-EOJ
74
+ expandSubMenu('#{ options[:option] }');
75
+ EOJ
76
+ end
74
77
  end
75
78
  end
76
79
 
@@ -80,4 +83,23 @@ module ToolbarHelper
80
83
  def menu_options #:nodoc:
81
84
  @menu_options ||= {}
82
85
  end
86
+
87
+ def default_toolbar_menu
88
+ items = [{:key => :notifications,
89
+ :name => image_tag("btn/btn_notification.png", :class => "menu_icon")+t('notification.other')+' ('+ current_subject.mailbox.notifications.not_trashed.unread.count.to_s+')',
90
+ :url => notifications_path}]
91
+
92
+ items << {:key => :dummy1, :name => "Dummy 1", :url => "#", :items => [
93
+ {:key => :dummy1_1, :name => "Dummy 1.1", :url => "#"},
94
+ {:key => :dummy1_2, :name => "Dummy 1.2", :url => "#"}
95
+ ]}
96
+
97
+ return render_items items
98
+ end
99
+
100
+ def render_items(items)
101
+ menu = render_navigation :items => items
102
+ menu = menu.gsub(/\<ul\>/,'<ul class="menu">')
103
+ return raw menu
104
+ end
83
105
  end
@@ -209,10 +209,17 @@ class Activity < ActiveRecord::Base
209
209
 
210
210
  case action
211
211
  when 'create'
212
- return contact.sender_id == Actor.normalize_id(subject) &&
213
- relation_ids.any? &&
214
- Relation.
215
- allow(subject, action, 'activity', :in => relation_ids).all.size == relation_ids.size
212
+ return false if contact.sender_id != Actor.normalize_id(subject)
213
+
214
+ rels = Relation.normalize(relation_ids)
215
+
216
+ foreign_rels = rels.select{ |r| r.actor_id != contact.sender_id }
217
+
218
+ # Only posting to own relations
219
+ return true if foreign_rels.blank?
220
+
221
+ return Relation.
222
+ allow(subject, action, 'activity', :in => foreign_rels).all.size == foreign_rels.size
216
223
  when 'read'
217
224
  return true if [contact.sender_id, contact.receiver_id].include?(Actor.normalize_id(subject)) || relations.select{ |r| r.is_a?(Relation::Public) }.any?
218
225
  when 'update'
data/app/models/actor.rb CHANGED
@@ -13,6 +13,7 @@
13
13
  class Actor < ActiveRecord::Base
14
14
  @subtypes_name = :subject
15
15
  include SocialStream::Models::Supertype
16
+ include SocialStream::Models::Object
16
17
 
17
18
  delegate :tag_list, :tag_list=, :tagged_with, :tag_counts, :to => :activity_object
18
19
 
@@ -1,3 +1,5 @@
1
1
  class Comment < ActiveRecord::Base
2
+ include SocialStream::Models::Object
3
+
2
4
  validates_presence_of :text
3
5
  end
@@ -51,6 +51,8 @@ class Contact < ActiveRecord::Base
51
51
  scope :active, where(arel_table[:ties_count].gt(0))
52
52
 
53
53
  validates_presence_of :sender_id, :receiver_id
54
+ validates_uniqueness_of :sender_id, :scope => :receiver_id
55
+ validates_uniqueness_of :receiver_id, :scope => :sender_id
54
56
 
55
57
  after_create :set_inverse
56
58
  after_create :send_message
data/app/models/group.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  class Group < ActiveRecord::Base
2
+ include SocialStream::Models::Subject
3
+
2
4
  attr_accessor :_founder
3
5
  attr_accessor :_participants
4
6
 
data/app/models/post.rb CHANGED
@@ -1,3 +1,5 @@
1
1
  class Post < ActiveRecord::Base
2
+ include SocialStream::Models::Object
3
+
2
4
  validates_presence_of :text
3
5
  end
data/app/models/user.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'devise/orm/active_record'
2
2
 
3
3
  class User < ActiveRecord::Base
4
+ include SocialStream::Models::Subject
5
+
4
6
  has_many :authentications
5
7
  devise *SocialStream.devise_modules
6
8
 
@@ -11,8 +11,8 @@
11
11
  <div id="wrapper_activities_header">
12
12
  <div id="activities_title" class="content_size">
13
13
  <% SocialStream.activity_forms.each do |element| %>
14
- <div id="header_<%= element %>" class="activities_title_header">
15
- <%= image_tag("btn/"+element.to_s+".png") %> <%=t(element.to_s+'.title')%>
14
+ <div id="header_<%= element %>" class="activities_title_header">
15
+ <%= render :partial => element.to_s.pluralize+'/header' %>
16
16
  </div>
17
17
  <% end %>
18
18
  </div>
@@ -23,4 +23,4 @@
23
23
  <%= render activities %>
24
24
  <%= paginate activities %>
25
25
  </div>
26
- </div>
26
+ </div>
@@ -1,7 +1,7 @@
1
1
  <div class="activity_options">
2
2
  <ul class="activity_options" >
3
3
  <li><div class="post_time_ago"><%= t('time.ago', :time => time_ago_in_words(activity.created_at)) %></div></li>
4
- <% if activity.is_root? && current_subject.activity_relations?(activity.receiver, :in => activity.relations) %>
4
+ <% if activity.is_root? && user_signed_in? && current_subject.activity_relations?(activity.receiver, :in => activity.relations) %>
5
5
  <li><div class="verb_comment"> · <%= link_to t('activity.to_comment'), "#", :class => "to_comment" %> </div></li>
6
6
  <% end %>
7
7
  <li><div class="verb_like" id="like_<%= dom_id(activity) %>"> · <%= link_like(activity)%></div></li>
@@ -11,6 +11,9 @@
11
11
  <div class="space_center">
12
12
  </div>
13
13
 
14
+ <div id="media_wall">
15
+ </div>
16
+
14
17
  <% if current_subject.respond_to?(:recent_groups) %>
15
18
  <div id="my_groups">
16
19
  <%= render :partial => "groups" %>
@@ -7,8 +7,8 @@
7
7
  <%= render :partial => object.class.to_s.tableize+'/fields' , :locals => {:f => f} %>
8
8
 
9
9
  <% if current_subject != receiver %>
10
- <% receiver.activity_relations(current_subject, :from => :receiver).each do |r| %>
10
+ <% current_subject.activity_relations(receiver, :from => :receiver).each do |r| %>
11
11
  <%= f.hidden_field "_relation_ids][", :value => r.id %>
12
12
  <% end %>
13
13
  <% end %>
14
- <% end %>
14
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= image_tag("btn/post.png") %> <%=t('post.title')%>
@@ -10,7 +10,7 @@
10
10
  <div class ="content">
11
11
  <div class="contact space_center">
12
12
  <% cs.each do |contact| %>
13
- <%= link_to(image_tag(contact.logo.url, :alt => contact.name , :size => "28x28"), contact) %>
13
+ <%= link_to(image_tag(contact.logo.url(:contact), :alt => contact.name , :size => "28x28"), contact) %>
14
14
  <% end %>
15
15
  </div>
16
16
  </div>
@@ -5,5 +5,9 @@
5
5
 
6
6
  <div id="menu_lateral">
7
7
  <%= render :partial => "toolbar/home_menu_options" %>
8
+ <hr>
9
+ Testing SimpleNavigation<br>Please move along
10
+ <hr>
11
+ <%= yield(:toolbar_menu).empty? ? default_toolbar_menu : yield(:toolbar_menu)%>
8
12
  </div>
9
13
 
@@ -40,6 +40,10 @@ class SocialStream::Base::InstallGenerator < Rails::Generators::Base #:nodoc:
40
40
  'app/views/layouts/application.html.erb'
41
41
  end
42
42
 
43
+ def create_navigation_config
44
+ copy_file 'navigation.rb', 'config/navigation.rb'
45
+ end
46
+
43
47
  def create_migration_file
44
48
  require 'rake'
45
49
  Rails.application.load_tasks
@@ -31,6 +31,8 @@ require 'acts_as_taggable_on/social_stream'
31
31
  require 'formtastic'
32
32
  #Background tasks
33
33
  require 'resque/server'
34
+ #Simple Navigation for menu
35
+ require 'simple-navigation'
34
36
 
35
37
  # Provides your Rails application with social network and activity stream support
36
38
  module SocialStream
@@ -8,12 +8,6 @@ module SocialStream
8
8
  config.app_generators.messages :mailboxer
9
9
  config.app_generators.taggings :acts_as_taggable_on
10
10
 
11
- config.to_prepare do
12
- %w( actor activity_object ).each do |supertype|
13
- supertype.classify.constantize.load_subtype_features
14
- end
15
- end
16
-
17
11
  initializer "social_stream-base.inflections" do
18
12
  ActiveSupport::Inflector.inflections do |inflect|
19
13
  inflect.singular /^([Tt]ie)s$/, '\1'
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "0.6.0".freeze
3
+ VERSION = "0.6.1".freeze
4
4
  end
5
5
  end
@@ -18,15 +18,6 @@ module SocialStream #:nodoc:
18
18
  def subtypes
19
19
  SocialStream.__send__ @subtypes_name.to_s.tableize # SocialStream.subjects # in Actor
20
20
  end
21
-
22
- def load_subtype_features
23
- features = "SocialStream::Models::#{ @subtypes_name.to_s.classify }".constantize
24
-
25
- subtypes.each do |s|
26
- s = s.to_s.classify.constantize
27
- s.__send__(:include, features) unless s.ancestors.include?(features)
28
- end
29
- end
30
21
  end
31
22
 
32
23
  module InstanceMethods
@@ -101,9 +101,7 @@ namespace :db do
101
101
 
102
102
  Forgery::Basic.number(:at_most => actors.size).times do
103
103
  actor = actors.delete_at((rand * actors.size).to_i)
104
- Contact.create! :sender_id => a.id,
105
- :receiver_id => actor.id,
106
- :relation_ids => Array(relations.random.id)
104
+ a.contact_to!(actor).relation_ids = Array(relations.random.id)
107
105
  end
108
106
  end
109
107
 
@@ -35,17 +35,18 @@ Gem::Specification.new do |s|
35
35
  # OAuth provider
36
36
  s.add_runtime_dependency('oauth-plugin','~> 0.4.0.pre1')
37
37
  # Messages
38
- s.add_runtime_dependency('mailboxer','~> 0.2.3')
38
+ s.add_runtime_dependency('mailboxer','~> 0.2.4')
39
39
  # Avatar manipulation
40
40
  s.add_runtime_dependency('rmagick','~> 2.13.1')
41
41
  # Tagging
42
42
  s.add_runtime_dependency('acts-as-taggable-on','~> 2.0.6')
43
43
  # HTML Forms
44
44
  s.add_runtime_dependency('formtastic','~> 1.2.3')
45
+ # Simple navigation for menu
46
+ s.add_runtime_dependency('simple-navigation')
45
47
  #Gem dependencies
46
48
  s.add_runtime_dependency('resque','~> 1.17.1')
47
49
 
48
- # Freeze Rails to 3.0.7 until Mailboxer bug is fixed
49
50
  s.add_runtime_dependency('rails', '3.1.0.rc4')
50
51
 
51
52
  # Development Gem dependencies
@@ -37,4 +37,23 @@ describe ContactsController do
37
37
  first.relation.
38
38
  should == @user.relations.last
39
39
  end
40
+
41
+ it "should create contact" do
42
+ sign_in @user
43
+
44
+ group = Factory(:group)
45
+ contact = @user.contact_to!(group)
46
+
47
+
48
+ put :update, :id => contact.id,
49
+ :contact => { :relation_ids => [ "gotcha", @user.relations.last.id ],
50
+ :message => "Testing" }
51
+
52
+ response.should redirect_to(contact.receiver_subject)
53
+ contact.reload.
54
+ ties.
55
+ first.relation.
56
+ should == @user.relations.last
57
+ end
58
+
40
59
  end
@@ -63,7 +63,8 @@ describe GroupsController do
63
63
  @group = Factory(:member, :contact => Factory(:group_contact, :receiver => @user.actor)).sender_subject
64
64
  get :show, :id => @group.to_param
65
65
 
66
- assert_response :success
66
+ response.should be_success
67
+ response.body.should =~ /activities_share_btn/
67
68
  end
68
69
 
69
70
  it "should render other group" do
@@ -19,7 +19,9 @@ describe HomeController do
19
19
 
20
20
  it "should render" do
21
21
  get :index
22
- assert_response :success
22
+
23
+ response.should be_success
24
+ response.body.should =~ /activities_share_btn/
23
25
  end
24
26
 
25
27
  describe "when representing" do
@@ -16,6 +16,15 @@ describe UsersController do
16
16
  assert_response :success
17
17
  end
18
18
 
19
+ it "should render show with public activity" do
20
+ activity = Factory(:public_activity)
21
+
22
+ get :show, :id => activity.receiver.to_param
23
+
24
+ response.should be_success
25
+ response.body.should =~ /activity_#{ activity.id }/
26
+ end
27
+
19
28
  it "should not render edit" do
20
29
  begin
21
30
  get :edit, :id => Factory(:user).to_param
@@ -0,0 +1,4 @@
1
+ # Configures your navigation
2
+ SimpleNavigation::Configuration.run do |navigation|
3
+
4
+ end
@@ -1,7 +1,16 @@
1
1
  Factory.define :activity do |a|
2
2
  a.contact { Factory(:friend).contact }
3
3
  a.activity_verb { ActivityVerb["post"] }
4
- a.relation_ids { |b| Array(b.sender.relation_custom('friend')) }
4
+ a.relation_ids { |b| Array(b.sender.relation_custom('friend').id) }
5
+ end
6
+
7
+ Factory.define :self_activity, :parent => :activity do |a|
8
+ a.contact { Factory(:self_contact) }
9
+ a.relation_ids { |b| Array(b.sender.relation_custom('friend').id) }
10
+ end
11
+
12
+ Factory.define :public_activity, :parent => :activity do |a|
13
+ a.relation_ids { |b| Array(b.sender.relation_public.id) }
5
14
  end
6
15
 
7
16
  Factory.define :like_activity, :parent => :activity do |a|
@@ -3,6 +3,10 @@ Factory.define :contact do |c|
3
3
  c.receiver { |r| Factory(:user).actor }
4
4
  end
5
5
 
6
+ Factory.define :self_contact, :parent => :contact do |c|
7
+ c.receiver { |d| d.sender }
8
+ end
9
+
6
10
  Factory.define :group_contact, :parent => :contact do |g|
7
11
  g.sender { |s| Factory(:group).actor }
8
12
  end
@@ -104,6 +104,13 @@ describe Activity do
104
104
  end
105
105
  end
106
106
 
107
+ describe "friend's profile" do
108
+ it "should not include activity" do
109
+ friend = Factory(:friend, :contact => Factory(:contact, :sender => @activity.sender)).receiver
110
+ friend.wall(:profile, :for => @activity.sender).should_not include(@activity)
111
+ end
112
+ end
113
+
107
114
  describe "sender profile" do
108
115
  context "for sender" do
109
116
  it "should include activity" do
@@ -121,6 +128,83 @@ describe Activity do
121
128
  end
122
129
  end
123
130
  end
131
+
132
+ context "with a self friend activity" do
133
+ before do
134
+ @activity = Factory(:self_activity)
135
+ end
136
+
137
+ describe "friend's profile" do
138
+ it "should not include activity" do
139
+ friend = Factory(:friend, :contact => Factory(:contact, :sender => @activity.sender)).receiver
140
+ friend.wall(:profile, :for => @activity.sender).should_not include(@activity)
141
+ end
142
+ end
143
+ end
144
+
145
+ context "with a public activity" do
146
+ before do
147
+ @activity = Factory(:public_activity)
148
+ end
149
+
150
+ describe "sender home" do
151
+ it "should include activity" do
152
+ @activity.sender.wall(:home).should include(@activity)
153
+ end
154
+ end
155
+
156
+ describe "receiver home" do
157
+ it "should include activity" do
158
+ @activity.receiver.wall(:home).should include(@activity)
159
+ end
160
+ end
161
+
162
+ describe "alien home" do
163
+ it "should not include activity" do
164
+ Factory(:user).wall(:home).should_not include(@activity)
165
+ end
166
+ end
167
+
168
+ describe "sender profile" do
169
+ context "for sender" do
170
+ it "should include activity" do
171
+ @activity.sender.wall(:profile, :for => @activity.sender).should include(@activity)
172
+ end
173
+ end
174
+
175
+ context "for receiver" do
176
+ it "should include activity" do
177
+ @activity.sender.wall(:profile, :for => @activity.receiver).should include(@activity)
178
+ end
179
+ end
180
+
181
+ context "for Anonymous" do
182
+ it "should include activity" do
183
+ @activity.sender.wall(:profile, :for => nil).should include(@activity)
184
+ end
185
+ end
186
+ end
187
+
188
+ describe "receiver profile" do
189
+ context "for sender" do
190
+ it "should include activity" do
191
+ @activity.receiver.wall(:profile, :for => @activity.sender).should include(@activity)
192
+ end
193
+ end
194
+
195
+ context "for receiver" do
196
+ it "should include activity" do
197
+ @activity.receiver.wall(:profile, :for => @activity.receiver).should include(@activity)
198
+ end
199
+ end
200
+
201
+ context "for Anonymous" do
202
+ it "should include activity" do
203
+ @activity.receiver.wall(:profile, :for => nil).should include(@activity)
204
+ end
205
+ end
206
+ end
207
+ end
124
208
  end
125
209
 
126
210
  context "user" do
data/spec/spec_helper.rb CHANGED
@@ -27,8 +27,3 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
27
27
  # Load Factories
28
28
  require 'factory_girl'
29
29
  Dir["#{File.dirname(__FILE__)}/factories/*.rb"].each {|f| require f}
30
-
31
- RSpec.configure do |config|
32
- # == Mock Framework
33
- config.mock_with :rspec
34
- end
@@ -0,0 +1,4 @@
1
+ RSpec.configure do |config|
2
+ # == Mock Framework
3
+ config.mock_with :rspec
4
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_stream-base
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 0
10
- version: 0.6.0
9
+ - 1
10
+ version: 0.6.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - GING - DIT - UPM
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-07-01 00:00:00 +02:00
19
+ date: 2011-07-04 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -205,12 +205,12 @@ dependencies:
205
205
  requirements:
206
206
  - - ~>
207
207
  - !ruby/object:Gem::Version
208
- hash: 17
208
+ hash: 31
209
209
  segments:
210
210
  - 0
211
211
  - 2
212
- - 3
213
- version: 0.2.3
212
+ - 4
213
+ version: 0.2.4
214
214
  type: :runtime
215
215
  version_requirements: *id012
216
216
  - !ruby/object:Gem::Dependency
@@ -262,9 +262,23 @@ dependencies:
262
262
  type: :runtime
263
263
  version_requirements: *id015
264
264
  - !ruby/object:Gem::Dependency
265
- name: resque
265
+ name: simple-navigation
266
266
  prerelease: false
267
267
  requirement: &id016 !ruby/object:Gem::Requirement
268
+ none: false
269
+ requirements:
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ hash: 3
273
+ segments:
274
+ - 0
275
+ version: "0"
276
+ type: :runtime
277
+ version_requirements: *id016
278
+ - !ruby/object:Gem::Dependency
279
+ name: resque
280
+ prerelease: false
281
+ requirement: &id017 !ruby/object:Gem::Requirement
268
282
  none: false
269
283
  requirements:
270
284
  - - ~>
@@ -276,11 +290,11 @@ dependencies:
276
290
  - 1
277
291
  version: 1.17.1
278
292
  type: :runtime
279
- version_requirements: *id016
293
+ version_requirements: *id017
280
294
  - !ruby/object:Gem::Dependency
281
295
  name: rails
282
296
  prerelease: false
283
- requirement: &id017 !ruby/object:Gem::Requirement
297
+ requirement: &id018 !ruby/object:Gem::Requirement
284
298
  none: false
285
299
  requirements:
286
300
  - - "="
@@ -294,11 +308,11 @@ dependencies:
294
308
  - 4
295
309
  version: 3.1.0.rc4
296
310
  type: :runtime
297
- version_requirements: *id017
311
+ version_requirements: *id018
298
312
  - !ruby/object:Gem::Dependency
299
313
  name: capybara
300
314
  prerelease: false
301
- requirement: &id018 !ruby/object:Gem::Requirement
315
+ requirement: &id019 !ruby/object:Gem::Requirement
302
316
  none: false
303
317
  requirements:
304
318
  - - ~>
@@ -310,11 +324,11 @@ dependencies:
310
324
  - 9
311
325
  version: 0.3.9
312
326
  type: :development
313
- version_requirements: *id018
327
+ version_requirements: *id019
314
328
  - !ruby/object:Gem::Dependency
315
329
  name: sqlite3-ruby
316
330
  prerelease: false
317
- requirement: &id019 !ruby/object:Gem::Requirement
331
+ requirement: &id020 !ruby/object:Gem::Requirement
318
332
  none: false
319
333
  requirements:
320
334
  - - ">="
@@ -324,11 +338,11 @@ dependencies:
324
338
  - 0
325
339
  version: "0"
326
340
  type: :development
327
- version_requirements: *id019
341
+ version_requirements: *id020
328
342
  - !ruby/object:Gem::Dependency
329
343
  name: ruby-debug
330
344
  prerelease: false
331
- requirement: &id020 !ruby/object:Gem::Requirement
345
+ requirement: &id021 !ruby/object:Gem::Requirement
332
346
  none: false
333
347
  requirements:
334
348
  - - ~>
@@ -340,11 +354,11 @@ dependencies:
340
354
  - 3
341
355
  version: 0.10.3
342
356
  type: :development
343
- version_requirements: *id020
357
+ version_requirements: *id021
344
358
  - !ruby/object:Gem::Dependency
345
359
  name: rspec-rails
346
360
  prerelease: false
347
- requirement: &id021 !ruby/object:Gem::Requirement
361
+ requirement: &id022 !ruby/object:Gem::Requirement
348
362
  none: false
349
363
  requirements:
350
364
  - - ~>
@@ -356,11 +370,11 @@ dependencies:
356
370
  - 1
357
371
  version: 2.6.1
358
372
  type: :development
359
- version_requirements: *id021
373
+ version_requirements: *id022
360
374
  - !ruby/object:Gem::Dependency
361
375
  name: factory_girl
362
376
  prerelease: false
363
- requirement: &id022 !ruby/object:Gem::Requirement
377
+ requirement: &id023 !ruby/object:Gem::Requirement
364
378
  none: false
365
379
  requirements:
366
380
  - - ~>
@@ -372,11 +386,11 @@ dependencies:
372
386
  - 2
373
387
  version: 1.3.2
374
388
  type: :development
375
- version_requirements: *id022
389
+ version_requirements: *id023
376
390
  - !ruby/object:Gem::Dependency
377
391
  name: forgery
378
392
  prerelease: false
379
- requirement: &id023 !ruby/object:Gem::Requirement
393
+ requirement: &id024 !ruby/object:Gem::Requirement
380
394
  none: false
381
395
  requirements:
382
396
  - - ~>
@@ -388,11 +402,11 @@ dependencies:
388
402
  - 6
389
403
  version: 0.3.6
390
404
  type: :development
391
- version_requirements: *id023
405
+ version_requirements: *id024
392
406
  - !ruby/object:Gem::Dependency
393
407
  name: ci_reporter
394
408
  prerelease: false
395
- requirement: &id024 !ruby/object:Gem::Requirement
409
+ requirement: &id025 !ruby/object:Gem::Requirement
396
410
  none: false
397
411
  requirements:
398
412
  - - ~>
@@ -404,11 +418,11 @@ dependencies:
404
418
  - 4
405
419
  version: 1.6.4
406
420
  type: :development
407
- version_requirements: *id024
421
+ version_requirements: *id025
408
422
  - !ruby/object:Gem::Dependency
409
423
  name: nifty-generators
410
424
  prerelease: false
411
- requirement: &id025 !ruby/object:Gem::Requirement
425
+ requirement: &id026 !ruby/object:Gem::Requirement
412
426
  none: false
413
427
  requirements:
414
428
  - - ~>
@@ -420,7 +434,7 @@ dependencies:
420
434
  - 5
421
435
  version: 0.4.5
422
436
  type: :development
423
- version_requirements: *id025
437
+ version_requirements: *id026
424
438
  description: |-
425
439
  Social Stream is a Ruby on Rails engine providing your application with social networking features and activity streams.
426
440
 
@@ -1016,6 +1030,7 @@ files:
1016
1030
  - app/views/permissions/_index.html.erb
1017
1031
  - app/views/permissions/index.js.erb
1018
1032
  - app/views/posts/_fields.erb
1033
+ - app/views/posts/_header.html.erb
1019
1034
  - app/views/posts/_new.html.erb
1020
1035
  - app/views/posts/_post.html.erb
1021
1036
  - app/views/posts/create.js.erb
@@ -1076,6 +1091,7 @@ files:
1076
1091
  - lib/acts_as_taggable_on/social_stream.rb
1077
1092
  - lib/generators/social_stream/base/install_generator.rb
1078
1093
  - lib/generators/social_stream/base/templates/initializer.rb
1094
+ - lib/generators/social_stream/base/templates/navigation.rb
1079
1095
  - lib/generators/social_stream/base/templates/relations.yml
1080
1096
  - lib/paperclip/social_stream.rb
1081
1097
  - lib/social_stream-base.rb
@@ -1130,6 +1146,7 @@ files:
1130
1146
  - spec/dummy/config/initializers/social_stream.rb
1131
1147
  - spec/dummy/config/initializers/wrap_parameters.rb
1132
1148
  - spec/dummy/config/locales/en.yml
1149
+ - spec/dummy/config/navigation.rb
1133
1150
  - spec/dummy/config/relations.yml
1134
1151
  - spec/dummy/config/routes.rb
1135
1152
  - spec/dummy/db/migrate/.gitkeep
@@ -1168,6 +1185,7 @@ files:
1168
1185
  - spec/support/db.rb
1169
1186
  - spec/support/devise.rb
1170
1187
  - spec/support/migrations.rb
1188
+ - spec/support/mock.rb
1171
1189
  has_rdoc: true
1172
1190
  homepage: http://social-stream.dit.upm.es/
1173
1191
  licenses: []