social_stream 0.17.0 → 0.17.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.
data/README.rdoc CHANGED
@@ -2,6 +2,9 @@
2
2
  Social Stream is an engine for Ruby on Rails. It provides a robust and flexible core
3
3
  with social networking features and activity streams for building websites.
4
4
 
5
+ {<img src="https://secure.travis-ci.org/ging/social_stream.png" />}[http://travis-ci.org/ging/social_stream]
6
+ {<img src="https://gemnasium.com/ging/social_stream.png" />}[https://gemnasium.com/ging/social_stream]
7
+
5
8
  == Social networking
6
9
  Social networks are a new paradigm on web application design. Social networking platforms stand
7
10
  among the most popular websites, while many content oriented applications are supporting social
@@ -43,6 +46,10 @@ Do not forget to migrate your database
43
46
 
44
47
  rake db:migrate
45
48
 
49
+ Since {Social Stream}[http://github.com/ging/social_stream] depends on {Devise}[https://github.com/plataformatec/devise], make sure you follow {its setup instructions}[https://github.com/plataformatec/devise/tree/master/lib/generators/templates#readme]. Specifically, make sure you set the default URL options for your environments at <tt>config/environments/*.rb</tt> with something like:
50
+
51
+ config.action_mailer.default_url_options = { :host => 'localhost:3000' }
52
+
46
53
  = Social Stream modules
47
54
 
48
55
  Social Stream is divided in modules. Developers can customize their social
@@ -32,24 +32,71 @@
32
32
 
33
33
  #contacts_grid {
34
34
  width: 300px;
35
- height: 370px;
35
+ height: 336px;
36
36
  overflow: hidden;
37
37
  position: relative;
38
38
  float: left;
39
39
  }
40
+ #contacts_grid_extra {
41
+ width: 270px;
42
+ padding: 5px;
43
+ height: 10px;
44
+ border: solid 1px $input-border-color;
45
+ text-align: center;
46
+ float: right;
47
+ margin-right: 20px;
48
+ cursor: pointer;
49
+ }
40
50
  #contacts_grid .actor {
41
- width: 64px;
42
- height: 64px;
51
+ width: 48px;
52
+ height: 48px;
43
53
  float: left;
44
- margin: 5px;
54
+ margin: 4px;
45
55
  }
46
56
  #contacts_grid .actor.focused {
47
- border: 2px solid #00F;
48
- background-color: #006;
49
- margin: 3px;
57
+ border: 2px solid $main-color;
58
+ margin: 0px;
50
59
  }
51
60
  #contacts_grid .actor img {
52
- width: 64px;
53
- height: 64px;
61
+ width: 48px;
62
+ height: 48px;
63
+ }
64
+ #contacts_grid .actor.focused img {
65
+ width: 52px;
66
+ height: 52px;
67
+ }
68
+ #contacts_grid .actor.focused {
69
+ width: 52px;
70
+ height: 52px;
71
+ float: left;
72
+ margin: 0px;
73
+ }
74
+ #contacts_grid .actor .logo {
75
+ display: inline-block;
76
+ }
77
+ #contacts_grid .actor .link, #contacts_grid .actor .brief {
78
+ display: none;
79
+ }
80
+ .cheesecake_actor_tipsy.tipsy {
81
+ padding-top: 2px;
82
+ display: none;
83
+ }
84
+ .cheesecake_actor_tipsy.tipsy .tipsy-arrow {
85
+ display: none;
86
+ }
87
+ .cheesecake_actor_tipsy.tipsy .tipsy-inner {
88
+ background-color: $text-over-main;
89
+ padding: 9px;
90
+ border: 1px solid $main-color;
91
+ }
92
+ .cheesecake_actor_tipsy.tipsy .sub-block {
93
+ width: 100%;
94
+ word-wrap: break-word;
95
+ height: 50px;
96
+ overflow: hidden;
97
+ display: inline-block;
98
+ text-align: left;
99
+ }
100
+ .cheesecake_actor_tipsy.tipsy .logo {
101
+ display: none;
54
102
  }
55
-
@@ -31,7 +31,7 @@
31
31
  #representation { display: inline; padding-left:3px; padding-right:3px;}
32
32
  .switch_pending_count { color: $text-over-main; text-align: right;
33
33
  background: transparent url('btn/header_notifications.png') no-repeat center center;
34
- padding: 2px 10px 4px 11px !important; margin: 0 5px 0 5px !important; float: right; }
34
+ padding: 2px 10px 4px 11px !important; margin: 2px 5px 0 5px !important; float: right; }
35
35
  .txt_config {color: $text-over-main; vertical-align: top; display: inline; padding-top: 2px;
36
36
  border-right: thin solid; padding-right: 3px;}
37
37
  .txt_config2 {color: $text-over-main; vertical-align: top; display: inline; padding-top: 2px; padding-right: 3px;}
@@ -51,7 +51,7 @@
51
51
  #header_dropdown_menu ul li a{padding: .40em 1em .70em 2.5em;}
52
52
  #header_dropdown_menu ul li a:hover{color:$main-color;}
53
53
  #header_dropdown_menu ul li ul li a{padding: .40em 1em .70em 1em;}
54
- #header_dropdown_menu ul li ul li ul li {width: 170px;}
54
+ #header_dropdown_menu ul li ul li ul li {width: 170px; min-height: 25px; }
55
55
  #header_dropdown_menu ul li ul li ul li a{padding: .40em 1em .70em 2.5em; display:inline;}
56
56
  #header_dropdown_menu ul li ul li ul{position: absolute; left: -170px;}
57
57
  #header_dropdown_menu a.session_change{background: transparent url('btn/arrow_session_change.png') no-repeat 3px 6px;}
@@ -27,7 +27,11 @@ class SettingsController < ApplicationController
27
27
  #Preferred language setting
28
28
  if params[:language].present?
29
29
  lang = params[:language].to_s
30
- current_user.language = lang[0..1]
30
+ if lang == 'browser'
31
+ current_user.language = nil
32
+ else
33
+ current_user.language = lang[0..1]
34
+ end
31
35
  end
32
36
  end
33
37
 
@@ -99,9 +99,9 @@ class Relation::Custom < Relation
99
99
 
100
100
  # JSON compatible with SocialCheesecake
101
101
  def to_cheesecake_hash(options = {})
102
- { :name => name }.tap do |hash|
102
+ {:id => id, :name => name}.tap do |hash|
103
103
  if options[:subsector]
104
- hash[:actors] = ties.map{ |t| [t.contact.receiver_id] }.uniq
104
+ hash[:actors] = ties.map{ |t| [t.contact.receiver_id, t.contact.receiver.name] }.uniq
105
105
  else
106
106
  hash[:subsectors] = ( weaker.present? ?
107
107
  weaker.map{ |w| w.to_cheesecake_hash(:subsector => true) } :
@@ -2,3 +2,23 @@
2
2
  <%= image_tag(actor.logo.url , :size => "64x64", :alt => actor.name ) %>
3
3
  <% end %>
4
4
 
5
+ <div id="<%= dom_id(actor)%>_details" style="display:none;">
6
+ <%= link_to truncate_name(actor.name), actor.subject %>
7
+ </div>
8
+
9
+ <%= javascript_tag do %>
10
+ $(document).ready(function(){
11
+ $('#<%= dom_id(actor)%>').tipsy({
12
+ delayIn: 700,
13
+ delayOut: 0,
14
+ gravity: 'n',
15
+ className: 'cheesecake_actor_tipsy',
16
+ html: true,
17
+ hoverable: true,
18
+ opacity: 0.95,
19
+ title: function(){
20
+ return $('#<%= dom_id(actor)%>_details').html();
21
+ }
22
+ });
23
+ });
24
+ <% end %>
@@ -3,12 +3,21 @@
3
3
  <div id="contacts_filter">
4
4
  <%= text_field_tag :filter_query, nil,:autocomplete => :off, :id => :contacts_filter_input %>
5
5
  </div>
6
- <div id="contacts_grid">
7
-
6
+ <div id="contacts_grid">
8
7
  <% @actors.each do |actor|%>
9
8
  <%= render :partial => "actors/actor_cheesecake", :locals => {:actor => actor} %>
10
9
  <% end %>
11
10
  </div>
11
+ <div id="contacts_grid_extra" style="display:none;">
12
+ <span id="contacts_grid_extra_total"></span> <span id="contacts_grid_extra_text"></span>
13
+ </div>
14
+ <%= javascript_tag do %>
15
+ $("#contacts_grid_extra").click(function(){
16
+ $("#contacts_grid").css("overflow-y","scroll");
17
+ $("#contacts_grid").scrollTo("+=308px", 800, {axis:'y'});
18
+ $("#contacts_grid_extra").hide();
19
+ });
20
+ <% end %>
12
21
  <br class="clearfloat">
13
22
  <%= javascript_tag do %>
14
23
  $(function(){
@@ -31,8 +40,51 @@
31
40
  rMax : 200,
32
41
  center: {x : 220, y : 220}
33
42
  };
43
+ cheesecakeData.highlightedSectorCallback = function(cheesecake){
44
+ $("#contacts_grid").css("overflow-y","hidden");
45
+ var sector = cheesecake.highlightedSector;
46
+ var actors = [];
47
+ var visibles = 0;
48
+ var extra_text = ["<%= t('cheesecake.hidden_contact.one')%>","<%= t('cheesecake.hidden_contact.other')%>"];
49
+ if(sector){
50
+ actors = sector.actors;
51
+ }else{
52
+ actors = cheesecake.grid.actors;
53
+ }
54
+ for(var i in actors){
55
+ if(actors[i].isVisible()){
56
+ visibles++;
57
+ }
58
+ }
59
+ if(visibles <= 30){
60
+ $("#contacts_grid_extra").hide();
61
+ }else{
62
+ $("#contacts_grid_extra_total").html(visibles - 30);
63
+ if((visibles - 30) == 1){
64
+ $("#contacts_grid_extra_text").html(extra_text[0]);
65
+ }else{
66
+ $("#contacts_grid_extra_text").html(extra_text[1]);
67
+ }
68
+ $("#contacts_grid_extra").show();
69
+ $("#contacts_grid").scrollTo(0, 0);
70
+ }
71
+ }
34
72
  cheesecakeData.sectors = <%= raw(current_subject.cheesecake_json) %>.sectors;
35
73
  var cheese = new socialCheesecake.Cheesecake(cheesecakeData);
74
+ $("#contacts_filter_input").keyup(function(){
75
+ cheese.searchEngine.filter($("#contacts_filter_input").val());
76
+ cheesecakeData.highlightedSectorCallback(cheese);
77
+ });
78
+ if(cheese.grid.actors.length > 30){
79
+ var extra_text = ["<%= t('cheesecake.hidden_contact.one')%>","<%= t('cheesecake.hidden_contact.other')%>"];
80
+ $("#contacts_grid_extra_total").html(cheese.grid.actors.length - 30);
81
+ if((cheese.grid.actors.length - 30) == 1){
82
+ $("#contacts_grid_extra_text").html(extra_text[0]);
83
+ }else{
84
+ $("#contacts_grid_extra_text").html(extra_text[1]);
85
+ }
86
+ $("#contacts_grid_extra").show();
87
+ }
36
88
  }
37
89
  <% end %>
38
90
  </div>
@@ -6,7 +6,7 @@
6
6
  <% representations.each do |representation| %>
7
7
  <li>
8
8
  <%= content_tag :span do %>
9
- <%= link_to truncate_name(representation.name, :length => 15), { :s => representation.slug }, { :style => "background: transparent url('#{ image_path representation.logo.url(:representation)}') no-repeat left center;margin-left:2px;" } %>
9
+ <%= link_to truncate_name(representation.name, :length => 15), { :s => representation.slug }, { :style => "background: transparent url('#{ image_path representation.logo.url(:representation)}') no-repeat 0% 5px;margin-left:2px;" } %>
10
10
  <% pending_total = representation.mailbox.notifications.not_trashed.unread.count %>
11
11
  <%= link_to content_tag(:span, pending_total.to_s, :class => "switch_pending_count"), notifications_path(:s => representation.slug), { :style => 'margin: 1px; padding: 0;' } if pending_total > 0 %>
12
12
  <% end %>
@@ -17,7 +17,7 @@
17
17
  <div class="form_row">
18
18
  <div class="form_label"><%= label_tag :language, t('settings.lang_change.name') %></div>
19
19
  <div class="form_field">
20
- <%= select_tag(:language, options_for_select(I18n.available_locales.map{|l| [ l.to_s, l.to_s ] }, current_user.language), :class => 'form_tag', :onchange => "$(\'#form_lang\').submit();" )%>
20
+ <%= select_tag(:language, options_for_select([[t('lang.browser'), 'browser']] + I18n.available_locales.map{|l| [ t("lang_names.#{l.to_s}") + ' (' + l.to_s + ')' , l.to_s ] }, (current_user.language.blank? ? 'browser' : current_user.language)), :class => 'form_tag', :onchange => "$(\'#form_lang\').submit();" )%>
21
21
  </div>
22
22
  </div>
23
23
  <div class="actions center">
@@ -90,6 +90,10 @@ en:
90
90
  create: "Create"
91
91
  save: "Save"
92
92
  update: "Update"
93
+ cheesecake:
94
+ hidden_contact:
95
+ one: "contact hidden"
96
+ other: "contacts hidden"
93
97
  comment:
94
98
  input: "Write a comment..."
95
99
  confirm_delete: "Delete comment?"
@@ -475,3 +479,6 @@ en:
475
479
  all: "All users"
476
480
  all_n: "All users (%{count})"
477
481
  welcome: "Welcome to %{site}!"
482
+ lang:
483
+ browser: "Auto-detect browser language"
484
+ none: "Language independent content"
@@ -90,6 +90,10 @@ es:
90
90
  create: "Crear"
91
91
  save: "Guardar"
92
92
  update: "Actualizar"
93
+ cheesecake:
94
+ hidden_contact:
95
+ one: "contacto oculto"
96
+ other: "contactos ocultos"
93
97
  comment:
94
98
  input: "Comentar..."
95
99
  confirm_delete: "¿Borrar commentario?"
@@ -474,4 +478,7 @@ es:
474
478
  all: "Todos los usuarios"
475
479
  all_n: "Todos los usuarios (%{count})"
476
480
  welcome: "¡Bienvenid@ a %{site}!"
481
+ lang:
482
+ browser: "Autodetectar el idioma del navegador"
483
+ none: "Contenido independiente del idioma"
477
484
 
@@ -0,0 +1,9 @@
1
+ class RemoveLanguageDefault < ActiveRecord::Migration
2
+ def up
3
+ change_column_default('users', 'language', nil)
4
+ end
5
+
6
+ def down
7
+ change_column_default('users', 'language', 'en')
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "0.12.0".freeze
3
+ VERSION = "0.12.1".freeze
4
4
  end
5
5
  end
@@ -10,7 +10,7 @@ module SocialStream
10
10
  module InstanceMethods
11
11
  # Overwrite {SocialStream::Controllers::Helpers::InstanceMethods#profile_subject}
12
12
  def profile_subject
13
- !resource.new? && resource || current_subject
13
+ !resource.new_record? && resource || current_subject
14
14
  end
15
15
  end
16
16
  end
@@ -12,6 +12,7 @@ namespace :db do
12
12
  require 'forgery'
13
13
 
14
14
  LOGOS_PATH = File.join(Rails.root, 'lib', 'logos')
15
+ LOGOS_TOTAL = (ENV["LOGOS_TOTAL"] || 10).to_i if ENV["LOGOS_TOTAL"].present?
15
16
  USERS = (ENV["USERS"] || 9).to_i
16
17
  GROUPS = (ENV["GROUPS"] || 10).to_i
17
18
  CHEESECAKE = (ENV["CHEESECAKE"].present? || false)
@@ -41,8 +42,13 @@ namespace :db do
41
42
 
42
43
  def set_logos(klass)
43
44
  klass.all.each do |i|
44
- logo = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
45
- avatar = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
45
+ if LOGOS_TOTAL
46
+ logo = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ rand(LOGOS_TOTAL) + 1 }.*")].first
47
+ avatar = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ rand(LOGOS_TOTAL) + 1 }.*")].first
48
+ else
49
+ logo = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
50
+ avatar = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
51
+ end
46
52
 
47
53
  if avatar.present? && File.exists?(avatar)
48
54
  Avatar.copy_to_temp_file(avatar)
@@ -120,16 +126,18 @@ namespace :db do
120
126
  available_actors.each do |a|
121
127
  actors = available_actors.dup - Array(a)
122
128
  relations = a.relation_customs + Array.wrap(a.relation_reject)
123
- break if actors.size==0
124
- Forgery::Basic.number(:at_most => actors.size).times do
125
- actor = actors.delete_at((rand * actors.size).to_i)
126
- a.contact_to!(actor).relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id) unless a==actor
127
- end
129
+ break if actors.size==0
128
130
  if CHEESECAKE
129
131
  actor = Actor.first
130
132
  unless a==actor
131
133
  puts a.name + " connecting with " + actor.name
132
- a.contact_to!(actor).relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id)
134
+ a.contact_to!(actor).relation_ids = Array(Forgery::Extensions::Array.new(a.relation_customs).random.id)
135
+ actor.contact_to!(a).relation_ids = Array(Forgery::Extensions::Array.new(actor.relation_customs).random.id)
136
+ end
137
+ else
138
+ Forgery::Basic.number(:at_most => actors.size).times do
139
+ actor = actors.delete_at((rand * actors.size).to_i)
140
+ a.contact_to!(actor).relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id) unless a==actor
133
141
  end
134
142
  end
135
143
  end
@@ -56,7 +56,7 @@ Gem::Specification.new do |s|
56
56
  # Autolink text blocks
57
57
  s.add_runtime_dependency('rails_autolink', '~> 1.0.4')
58
58
  # SocialCheesecake
59
- s.add_runtime_dependency('social_cheesecake','~> 0.1.0')
59
+ s.add_runtime_dependency('social_cheesecake','~> 0.2.0')
60
60
 
61
61
  # Development gem dependencies
62
62
  #
@@ -57,8 +57,8 @@ describe Actor do
57
57
  it "should build json" do
58
58
  hash = {
59
59
  :sectors => @user.relation_customs.map do |r|
60
- { :name => r.name,
61
- :subsectors => [ { :name => r.name, :actors => [] } ]
60
+ { :id => r.id, :name => r.name,
61
+ :subsectors => [ { :id => r.id, :name => r.name, :actors => [] } ]
62
62
  }
63
63
  end
64
64
  }
@@ -1,3 +1,3 @@
1
1
  module SocialStream
2
- VERSION = "0.17.0".freeze
2
+ VERSION = "0.17.1".freeze
3
3
  end
@@ -11,7 +11,7 @@ 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.12.0')
14
+ s.add_runtime_dependency('social_stream-base', '~> 0.12.1')
15
15
  s.add_runtime_dependency('social_stream-documents', '~> 0.7.0')
16
16
  s.add_runtime_dependency('social_stream-events', '~> 0.4.0')
17
17
  s.add_runtime_dependency('social_stream-linkser', '~> 0.2.0')
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.17.0
4
+ version: 0.17.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,22 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-01-11 00:00:00.000000000Z
13
+ date: 2012-01-13 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: social_stream-base
17
- requirement: &70413200 !ruby/object:Gem::Requirement
17
+ requirement: &80375130 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: 0.12.0
22
+ version: 0.12.1
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70413200
25
+ version_requirements: *80375130
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: social_stream-documents
28
- requirement: &70412910 !ruby/object:Gem::Requirement
28
+ requirement: &81047060 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.7.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70412910
36
+ version_requirements: *81047060
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: social_stream-events
39
- requirement: &70412610 !ruby/object:Gem::Requirement
39
+ requirement: &81455940 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 0.4.0
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70412610
47
+ version_requirements: *81455940
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: social_stream-linkser
50
- requirement: &70412250 !ruby/object:Gem::Requirement
50
+ requirement: &81467210 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 0.2.0
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *70412250
58
+ version_requirements: *81467210
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: social_stream-presence
61
- requirement: &70411770 !ruby/object:Gem::Requirement
61
+ requirement: &81470040 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 0.3.0
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *70411770
69
+ version_requirements: *81470040
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: capybara
72
- requirement: &70411290 !ruby/object:Gem::Requirement
72
+ requirement: &81471880 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 0.3.9
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70411290
80
+ version_requirements: *81471880
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: sqlite3
83
- requirement: &70410410 !ruby/object:Gem::Requirement
83
+ requirement: &81473830 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70410410
91
+ version_requirements: *81473830
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: rspec-rails
94
- requirement: &70409910 !ruby/object:Gem::Requirement
94
+ requirement: &82029890 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: 2.5.0
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *70409910
102
+ version_requirements: *82029890
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: factory_girl
105
- requirement: &70409500 !ruby/object:Gem::Requirement
105
+ requirement: &83136780 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 1.3.2
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *70409500
113
+ version_requirements: *83136780
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: forgery
116
- requirement: &70408970 !ruby/object:Gem::Requirement
116
+ requirement: &83519560 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: 0.4.2
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *70408970
124
+ version_requirements: *83519560
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: ci_reporter
127
- requirement: &70400070 !ruby/object:Gem::Requirement
127
+ requirement: &83620270 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,7 +132,7 @@ dependencies:
132
132
  version: 1.6.4
133
133
  type: :development
134
134
  prerelease: false
135
- version_requirements: *70400070
135
+ version_requirements: *83620270
136
136
  description: Social Stream is a Ruby on Rails engine for building social network websites.
137
137
  It supports contacts, posts, file uploads, private messages and many more.
138
138
  email:
@@ -627,6 +627,7 @@ files:
627
627
  - base/db/migrate/20111221103509_add_language_field.rb
628
628
  - base/db/migrate/20120103103125_add_channels.rb
629
629
  - base/db/migrate/20120109081509_update_notify_permissions.rb
630
+ - base/db/migrate/20120111120920_remove_language_default.rb
630
631
  - base/lib/acts_as_taggable_on/acts_as_taggable_on/dirty.rb
631
632
  - base/lib/acts_as_taggable_on/social_stream.rb
632
633
  - base/lib/generators/social_stream/base/install_generator.rb