social_stream 0.20.2 → 0.21.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.
Files changed (64) hide show
  1. data/base/app/assets/images/btn/permission_negative.png +0 -0
  2. data/base/app/assets/images/btn/permission_positive.png +0 -0
  3. data/base/app/assets/javascripts/activities.js.erb +2 -118
  4. data/base/app/assets/javascripts/social_stream-base.js +3 -0
  5. data/base/app/assets/javascripts/social_stream.timeline.js +42 -0
  6. data/base/app/assets/javascripts/social_stream.wall.js.erb +125 -0
  7. data/base/app/assets/stylesheets/cheesecake.css.scss +9 -1
  8. data/base/app/helpers/notifications_helper.rb +1 -5
  9. data/base/app/models/activity.rb +21 -2
  10. data/base/app/models/comment.rb +5 -0
  11. data/base/app/models/permission.rb +16 -1
  12. data/base/app/models/post.rb +5 -0
  13. data/base/app/views/activities/_new.html.erb +7 -6
  14. data/base/app/views/activities/_wall.html.erb +6 -0
  15. data/base/app/views/cheesecake/_index.html.erb +17 -0
  16. data/base/app/views/cheesecake/_sector_form.html.erb +15 -6
  17. data/base/app/views/comments/_new.html.erb +2 -2
  18. data/base/app/views/comments/create.js.erb +1 -3
  19. data/base/app/views/notifications/activities/_post.html.erb +0 -3
  20. data/base/app/views/permissions/_index.html.erb +2 -2
  21. data/base/app/views/posts/create.js.erb +1 -4
  22. data/base/config/locales/en.yml +33 -23
  23. data/base/config/locales/es.yml +53 -24
  24. data/base/db/migrate/20120208135718_group_title_and_description_in_activity_object.rb +52 -0
  25. data/base/lib/social_stream/base/version.rb +1 -1
  26. data/base/spec/factories/activity.rb +1 -1
  27. data/documents/db/migrate/20120208143721_documents_group_title_and_description_in_activity_object.rb +28 -0
  28. data/documents/lib/social_stream/documents/version.rb +1 -1
  29. data/documents/social_stream-documents.gemspec +1 -1
  30. data/documents/spec/factories/document.rb +1 -0
  31. data/documents/spec/factories/picture.rb +1 -0
  32. data/events/db/migrate/20120208143756_events_group_title_and_description_in_activity_object.rb +26 -0
  33. data/events/lib/social_stream/events/version.rb +1 -1
  34. data/events/social_stream-events.gemspec +1 -1
  35. data/lib/social_stream/version.rb +1 -1
  36. data/linkser/app/views/links/create.js.erb +1 -3
  37. data/linkser/db/migrate/20120208143739_linkser_group_title_and_description_in_activity_object.rb +30 -0
  38. data/linkser/lib/social_stream/linkser/version.rb +1 -1
  39. data/linkser/social_stream-linkser.gemspec +1 -1
  40. data/presence/app/assets/images/black_arrow7.png +0 -0
  41. data/presence/app/assets/images/black_arrow8.png +0 -0
  42. data/presence/app/assets/images/black_arrow9.png +0 -0
  43. data/presence/app/assets/javascripts/chat_interface_manager.js.erb +191 -23
  44. data/presence/app/assets/javascripts/chat_persistence.js +15 -6
  45. data/presence/app/assets/javascripts/chat_utilities.js +13 -0
  46. data/presence/app/assets/javascripts/chat_window_manager.js +101 -20
  47. data/presence/app/assets/javascripts/social_stream-presence.js +2 -0
  48. data/presence/app/assets/javascripts/xmpp_client_management.js.erb +6 -5
  49. data/presence/app/assets/stylesheets/chat.css.scss +43 -3
  50. data/presence/app/assets/stylesheets/social_stream-presence.css +1 -0
  51. data/presence/app/helpers/xmpp_helper.rb +4 -2
  52. data/presence/app/views/chat/_contacts.html.erb +55 -42
  53. data/presence/config/locales/en.yml +4 -1
  54. data/presence/config/locales/es.yml +3 -1
  55. data/presence/db/migrate/20110928135031_add_status_column_to_user.rb +1 -1
  56. data/presence/lib/social_stream/presence/version.rb +1 -1
  57. data/presence/social_stream-presence.gemspec +1 -1
  58. data/presence/vendor/assets/javascripts/jquery.flexselect.js +265 -0
  59. data/presence/vendor/assets/javascripts/jquery.tools.tooltip.js +2 -1
  60. data/presence/vendor/assets/javascripts/liquidmetal.js +90 -0
  61. data/presence/vendor/assets/stylesheets/flexselect.css +39 -0
  62. data/social_stream.gemspec +5 -5
  63. metadata +45 -32
  64. data/base/app/views/activities/_filter.html.erb +0 -83
@@ -6,12 +6,6 @@
6
6
  :receiver => receiver
7
7
  } %>
8
8
  <% end %>
9
-
10
- <%= javascript_tag do %>
11
- $(function(){
12
- activate_anti_rebounds();
13
- });
14
- <% end %>
15
9
  </div>
16
10
 
17
11
  <div id="activity_form_select">
@@ -54,3 +48,10 @@
54
48
  <%= submit_tag(t('share'), :class => "button submitActivity", :id => "masterSubmitButton") %>
55
49
  </div>
56
50
  <% end %>
51
+
52
+ <%= javascript_tag do %>
53
+ $(function(){
54
+ SocialStream.Wall.setup();
55
+ });
56
+ <% end %>
57
+
@@ -3,3 +3,9 @@
3
3
  <%= paginate activities %>
4
4
  </div>
5
5
 
6
+ <%= javascript_tag do %>
7
+ $(function(){
8
+ SocialStream.Timeline.setup();
9
+ });
10
+ <% end %>
11
+
@@ -151,6 +151,23 @@
151
151
  $("#edited_subsector_name_" + event.data[0]).html($("#form_subsector_name_" + event.data[0]).val());
152
152
  event.data[1].changeLabel($("#form_subsector_name_" + event.data[0]).val());
153
153
  });
154
+ $("#subsector_" + i).find(".permissions_field .permission").each(function(){
155
+ var permission_field = $(this);
156
+ var update_state = function(){
157
+ var label_class = permission_field.attr("id").replace("form_", "edited_");
158
+ if(permission_field.is(":checked")){
159
+ $("." + label_class).removeClass("negative").addClass("positive");
160
+ $("." + label_class).find(".negative_message").hide();
161
+ $("." + label_class).find(".positive_message").show();
162
+ }else{
163
+ $("." + label_class).removeClass("positive").addClass("negative");
164
+ $("." + label_class).find(".positive_message").hide();
165
+ $("." + label_class).find(".negative_message").show();
166
+ }
167
+ }
168
+ update_state();
169
+ permission_field.on("change",update_state);
170
+ });
154
171
  $("#subsector_" + i).show();
155
172
  }else{
156
173
  if(sector.subsectors[i-1]){
@@ -38,7 +38,7 @@
38
38
  <%= t('cheesecake.form.fields.name')%>:
39
39
  </div>
40
40
  <div class="form_field">
41
- <input type="text" class="form_tag" class="form_subsector_name" id="form_subsector_name_<%= i %>" value="New subsector <%= i %>">
41
+ <input type="text" class="form_tag form_subsector_name" id="form_subsector_name_<%= i %>" value="New subsector <%= i %>">
42
42
  </div>
43
43
  </div>
44
44
  <div class="form_row less_padding">
@@ -50,15 +50,22 @@
50
50
  <div class="form_field permissions_field">
51
51
  <% default_permissions.each_with_index do |p, i| %>
52
52
  <div contain=<%= dom_id p %> class="checkboxPermissionOptionLeft">
53
- <input class="permission <%= dom_id p %>" type="checkbox"/>
54
- <label for=<%= dom_id p %>><%= p.description(:brief) %></label>
53
+ <input id="form_subsector_<%= i %>_<%= dom_id p %>" class="permission <%= dom_id p %>" type="checkbox"/>
54
+ <label for="form_subsector_<%= i %>_<%= dom_id p %>"><%= p.description(:brief, :relation => "%RELATION_NAME%", :subject => current_subject) %></label>
55
55
  <div class="clearfloat"></div>
56
56
  </div>
57
57
  <% end %>
58
58
  </div>
59
59
  <div class="permissions_explanation" style="display:none;">
60
60
  <% default_permissions.each_with_index do |p, i| %>
61
- <div class="permission <%= dom_id p %>"> <%= p.description(:detailed) %></div>
61
+ <div class="permission <%= dom_id p %> positive edited_subsector_<%= i %>_<%= dom_id p %>">
62
+ <div class="positive_message">
63
+ <%= p.description(:detailed, :relation => "%RELATION_NAME%", :subject => current_subject, :state => "positive") %>
64
+ </div>
65
+ <div class="negative_message" style="display:none;">
66
+ <%= p.description(:detailed, :relation => "%RELATION_NAME%", :subject => current_subject, :state => "negative") %>
67
+ </div>
68
+ </div>
62
69
  <% end %>
63
70
  </div>
64
71
  </div>
@@ -86,7 +93,7 @@
86
93
  $(".permissions_field").each(function(){
87
94
  $(this).tipsy({
88
95
  delayIn: 500,
89
- delayOut: 0,
96
+ delayOut: 200,
90
97
  gravity: 'e',
91
98
  offset: 100,
92
99
  opacity: 1,
@@ -94,7 +101,9 @@
94
101
  html: true,
95
102
  hoverable: true,
96
103
  title: function(){
97
- return $(this).parent().find('.permissions_explanation').html();
104
+ var html = $(this).parent().find('.permissions_explanation').html();
105
+ var relation = $(this).parent().parent().find('.form_subsector_name').val();
106
+ return html.replace(/%RELATION_NAME%/g, relation);
98
107
  }
99
108
  });
100
109
  });
@@ -33,9 +33,8 @@
33
33
  <% end %>
34
34
 
35
35
  <%= javascript_tag do %>
36
- $(document).ready(function() {
36
+ $(function() {
37
37
  $("#comment_text_<%= dom_id(activity) %>").Watermark("<%= I18n.t('comment.input') %>","#666");
38
- activate_anti_rebounds();
39
38
 
40
39
  $("#comment_text_<%= dom_id(activity) %>")
41
40
  .change(function(){autoSize("<%= dom_id(activity) %>");})
@@ -43,5 +42,6 @@
43
42
  .keyup(function(){autoSize("<%= dom_id(activity) %>");});
44
43
  autoSize("<%= dom_id(activity) %>");
45
44
 
45
+ SocialStream.Wall.activateAntiRebounds();
46
46
  });
47
47
  <% end %>
@@ -5,6 +5,4 @@ $(".input_new_comments").each(function() {
5
5
  $(this).focus().val("").blur();
6
6
  });
7
7
 
8
- setActivityPrivacyTooltips("<%= escape_javascript dom_id(@comment.post_activity) %>");
9
-
10
- unblock_all_forms();
8
+ SocialStream.Timeline.newActivity("<%= escape_javascript dom_id(@comment.post_activity) %>");
@@ -9,8 +9,5 @@
9
9
  </div>
10
10
  <div class="briefing">
11
11
  "<%= link_to(description_of(activity.direct_object), polymorphic_url(activity.direct_object))%>"
12
- <% if SocialStream.activity_forms.include? :document and activity.direct_object.is_a? Document %>
13
-
14
- <% end%>
15
12
  </div>
16
13
 
@@ -10,7 +10,7 @@
10
10
  <td>
11
11
  <div contain=<%= dom_id p %> class="checkboxPermissionOptionLeft">
12
12
  <input id=<%= dom_id p %> class="permission" type="checkbox"/>
13
- <label for=<%= dom_id p %>><%= p.description(:brief) %></label>
13
+ <label for=<%= dom_id p %>><%= p.description(:brief, :subject => current_subject) %></label>
14
14
  <div class="clearfloat"></div>
15
15
  </div>
16
16
  </td>
@@ -28,7 +28,7 @@
28
28
  <%= raw t('privacy.intro', :relation => h(@relation.name)) %>
29
29
 
30
30
  <%= semantic_form_for @relation, :url => polymorphic_path(@relation, :section => 'rules'), :remote => true do |f| %>
31
- <%= f.input :permissions, :as => :check_boxes, :collection => default_permissions.map{ |p| [p.description(:detailed, :relation => @relation.name, :subject => current_subject.name), p.id] } %>
31
+ <%= f.input :permissions, :as => :check_boxes, :collection => default_permissions.map{ |p| [p.description(:detailed, :relation => @relation.name, :subject => current_subject, :state => "positive"), p.id] } %>
32
32
  <%= f.submit t('button.save'), :class => 'button' %>
33
33
  <% end %>
34
34
  </div>
@@ -1,7 +1,4 @@
1
1
  //Display the new post
2
2
  $("#wall").prepend("<%= escape_javascript(render @post.post_activity) %>");
3
3
 
4
- setActivityPrivacyTooltips("<%= escape_javascript dom_id(@post.post_activity) %>");
5
-
6
- unblock_all_forms();
7
-
4
+ SocialStream.Timeline.newActivity("<%= escape_javascript dom_id(@post.post_activity) %>");
@@ -380,29 +380,39 @@ en:
380
380
  other: "Everybody"
381
381
  permission:
382
382
  description:
383
- brief:
384
- create:
385
- activity: "Post to wall"
386
- follow:
387
- nil: "Follow their activity"
388
- read:
389
- activity: "Read wall"
390
- represent:
391
- nil: "Administrate"
392
- notify:
393
- nil: "Notify via email"
394
- detailed:
395
- create:
396
- activity: "Post to \"%{relation}\" wall"
397
- follow:
398
- nil: "Activities of the contacts at %{relation} will appear in our home wall"
399
- read:
400
- activity: "Read posts in \"%{relation}\" wall"
401
- tie: "See contacts in levels: %{relations} and %{public}"
402
- represent:
403
- nil: "Change session to act as %{subject}"
404
- notify:
405
- nil: "Updates of contacts at %{relation} will be sent to your email"
383
+ default:
384
+ brief:
385
+ create:
386
+ activity: "Post to your wall"
387
+ follow:
388
+ nil: "Follow their activity"
389
+ read:
390
+ activity: "Read your wall"
391
+ represent:
392
+ nil: "Administrate"
393
+ notify:
394
+ nil: "Notify"
395
+ detailed:
396
+ create:
397
+ activity:
398
+ positive: "They WILL BE ABLE to post new activities to your wall"
399
+ negative: "They WILL NOT BE ABLE to post new activities to your wall"
400
+ follow:
401
+ nil:
402
+ positive: "Activities of the contacts at %{relation} WILL APPEAR in your home wall"
403
+ negative: "Activities of the contacts at %{relation} WILL APPEAR in your home wall"
404
+ read:
405
+ activity:
406
+ positive: "They WILL BE ABLE to read posts in your wall, except those shared with specific contacts"
407
+ negative: "They WILL NOT BE ABLE to read posts in your wall, except those marked as public"
408
+ represent:
409
+ nil:
410
+ positive: "They WILL BE ABLE to change session and act as %{subject}"
411
+ negative: "They WILL NOT BE ABLE to change session and act as %{subject}"
412
+ notify:
413
+ nil:
414
+ positive: "Activities WILL BE notified to contacts at %{name}"
415
+ negative: "Activities WILL NOT BE notified to contacts at %{name}"
406
416
  of_relation:
407
417
  choose: "2. Permissions in <strong>%{name}</strong> sphere"
408
418
  privacy:
@@ -379,33 +379,62 @@ es:
379
379
  other: "Todo el mundo"
380
380
  permission:
381
381
  description:
382
- brief:
383
- create:
384
- activity: "Publicar en el muro"
385
- follow:
386
- nil: "Seguir su actividad"
387
- read:
388
- activity: "Leer muro"
389
- represent:
390
- nil: "Administrar"
391
- notify:
392
- nil: "Notificar por email"
393
- detailed:
394
- create:
395
- activity: "Publicar en el muro de\"%{relation}\""
396
- follow:
397
- nil: "Las actividades de los contactos en %{relation} aparecerán en tu página de inicio"
398
- read:
399
- activity: "Leer publicaciones en el muro de \"%{relation}\""
400
- tie: "Ver contactos en los niveles: %{relations} y %{public}"
401
- represent:
402
- nil: "Cambiar sesión para actuar en nombre de %{subject}"
403
- notify:
404
- nil: "Las actividades de los contactos en %{relation} se te enviarán al email"
382
+ default:
383
+ brief:
384
+ create:
385
+ activity: "Publicar en vuestro muro"
386
+ follow:
387
+ nil: "Seguir su actividad"
388
+ read:
389
+ activity: "Leer vuestro muro"
390
+ represent:
391
+ nil: "Administrar"
392
+ notify:
393
+ nil: "Notificar"
394
+ detailed:
395
+ create:
396
+ activity:
397
+ positive: "PODRÁN publicar actividades en vuestro muro"
398
+ negative: "NO PODRÁN publicar actividades en vuestro muro"
399
+ follow:
400
+ nil:
401
+ positive: "Las actividades de los contactos en %{relation} APARECERÁN en vuestra página de inicio"
402
+ negative: "Las actividades de los contactos en %{relation} NO APARECERÁN en vuestra página de inicio"
403
+ read:
404
+ activity:
405
+ positive: "PODRÁN leer las publicaciones que aparezcan en vuestro muro, salvo las que compartas solo ciertas personas"
406
+ negative: "NO PODRÁN leer las publicaciones que aparezcan en vuestro muro, salvo las que marques como públicas"
407
+ represent:
408
+ nil:
409
+ positive: "PODRÁN cambiar sesión para actuar en nombre de %{name}"
410
+ negative: "NO PODRÁN cambiar sesión para actuar en nombre de %{name}"
411
+ notify:
412
+ nil:
413
+ positive: "Las actividades SE NOTIFICARÁN a los contactos en %{relation}"
414
+ negative: "Las actividades NO SE NOTIFICARÁN a los contactos en %{relation}"
415
+ user:
416
+ brief:
417
+ create:
418
+ activity: "Publicar en tu muro"
419
+ read:
420
+ activity: "Leer tu muro"
421
+ detailed:
422
+ create:
423
+ activity:
424
+ positive: "PODRÁN publicar actividades en tu muro"
425
+ negative: "NO PODRÁN publicar actividades en tu muro"
426
+ follow:
427
+ nil:
428
+ positive: "Las actividades de los contactos en %{relation} APARECERÁN en tu página de inicio"
429
+ negative: "Las actividades de los contactos en %{relation} NO APARECERÁN en tu página de inicio"
430
+ read:
431
+ activity:
432
+ positive: "PODRÁN leer las publicaciones que aparezcan en tu muro, salvo las que compartas solo con ciertas personas"
433
+ negative: "NO PODRÁN leer las publicaciones que aparezcan en tu muro, salvo las que marques como públicas"
405
434
  of_relation:
406
435
  choose: "2. Permisos para <strong>%{name}</strong>"
407
436
  privacy:
408
- intro: "Los contactos en <strong>%{relation}</strong> solo pueden:"
437
+ intro: "Los contactos en <strong>%{relation}</strong>:"
409
438
  rule:
410
439
  add: "Añadir"
411
440
  title: "Reglas de privacidad"
@@ -0,0 +1,52 @@
1
+ class GroupTitleAndDescriptionInActivityObject < ActiveRecord::Migration
2
+ def up
3
+ ao_ts = ActivityObject.record_timestamps
4
+ ActivityObject.record_timestamps = false
5
+
6
+ change_table :activity_objects do |t|
7
+ t.string :title, :default => ""
8
+ t.text :description
9
+ end
10
+
11
+ # Fix 'comments' table
12
+ c_ts = Comment.record_timestamps
13
+ Comment.record_timestamps = false
14
+
15
+ Comment.all.each do |c|
16
+ # Remove comments that are not properly deleted
17
+ # https://github.com/ging/social_stream/issues/213
18
+ if c.activity_object.activities.blank?
19
+ c.destroy
20
+ next
21
+ end
22
+
23
+ c.activity_object.description = c.read_attribute(:text)
24
+ c.save!
25
+ end
26
+ change_table :comments do |t|
27
+ t.remove :text
28
+ end
29
+ Comment.reset_column_information
30
+ Comment.record_timestamps = c_ts
31
+
32
+ # Fix 'posts' table
33
+ p_ts = Post.record_timestamps
34
+ Post.record_timestamps = false
35
+
36
+ Post.all.each do |p|
37
+ p.activity_object.description = p.read_attribute(:text)
38
+ p.save!
39
+ end
40
+ change_table :posts do |t|
41
+ t.remove :text
42
+ end
43
+ Post.reset_column_information
44
+ Post.record_timestamps = p_ts
45
+
46
+ ActivityObject.record_timestamps = ao_ts
47
+ end
48
+
49
+ def down
50
+ raise ActiveRecord::IrreversibleMigration # Due to trans-gem oddities
51
+ end
52
+ end
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "0.15.2".freeze
3
+ VERSION = "0.16.0".freeze
4
4
  end
5
5
  end
@@ -12,11 +12,11 @@ end
12
12
 
13
13
  Factory.define :activity_object_spec_helper do |a|
14
14
  a.object_type "Post"
15
+ a.description "Post spec helper"
15
16
  end
16
17
 
17
18
  Factory.define :post_spec_helper do |p|
18
19
  p.association :activity_object_spec_helper
19
- p.text "Post spec helper"
20
20
  end
21
21
 
22
22
  #
@@ -0,0 +1,28 @@
1
+ class DocumentsGroupTitleAndDescriptionInActivityObject < ActiveRecord::Migration
2
+ def up
3
+ ao_ts = ActivityObject.record_timestamps
4
+ ActivityObject.record_timestamps = false
5
+
6
+ # Fix 'documents' table
7
+ d_ts = Document.record_timestamps
8
+ Document.record_timestamps = false
9
+
10
+ Document.all.each do |d|
11
+ d.activity_object.title = d.read_attribute(:title)
12
+ d.activity_object.description = d.read_attribute(:description)
13
+ d.save!
14
+ end
15
+ change_table :documents do |t|
16
+ t.remove :title
17
+ t.remove :description
18
+ end
19
+ Document.reset_column_information
20
+ Document.record_timestamps = d_ts
21
+
22
+ ActivityObject.record_timestamps = ao_ts
23
+ end
24
+
25
+ def down
26
+ raise ActiveRecord::IrreversibleMigration # Due to trans-gem oddities
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Documents
3
- VERSION = "0.10.2".freeze
3
+ VERSION = "0.11.0".freeze
4
4
  end
5
5
  end