social_stream 0.22.1 → 0.23.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/base/app/assets/javascripts/activities.js.erb +0 -85
  2. data/base/app/assets/javascripts/social_stream.comments.js +63 -0
  3. data/base/app/assets/javascripts/social_stream.objects.js +23 -0
  4. data/base/app/assets/javascripts/social_stream.timeline.js +37 -10
  5. data/base/app/assets/javascripts/social_stream.wall.js.erb +135 -118
  6. data/base/app/assets/stylesheets/cheesecake.css.scss +6 -3
  7. data/base/app/models/activity_object.rb +18 -0
  8. data/base/app/models/activity_object_property.rb +5 -0
  9. data/base/app/views/activities/_new.html.erb +1 -1
  10. data/base/app/views/activities/_wall.html.erb +1 -1
  11. data/base/app/views/cheesecake/_cheesecake.html.erb +44 -10
  12. data/base/app/views/cheesecake/_index.html.erb +18 -130
  13. data/base/app/views/cheesecake/_sector_form.html.erb +176 -17
  14. data/base/app/views/comments/_new.html.erb +0 -14
  15. data/base/app/views/objects/_show.html.erb +6 -0
  16. data/base/app/views/toolbar/_home.html.erb +1 -1
  17. data/base/app/views/toolbar/_messages.html.erb +1 -1
  18. data/base/app/views/toolbar/_profile.html.erb +1 -1
  19. data/base/config/locales/es.yml +7 -0
  20. data/base/db/migrate/20120302215722_activity_object_properties.rb +24 -0
  21. data/base/lib/social_stream/ability/base.rb +2 -2
  22. data/base/lib/social_stream/base/version.rb +1 -1
  23. data/documents/app/assets/javascripts/social_stream-documents.js +5 -1
  24. data/documents/app/models/document.rb +4 -3
  25. data/documents/app/models/picture.rb +4 -0
  26. data/documents/lib/social_stream/documents/version.rb +1 -1
  27. data/documents/social_stream-documents.gemspec +1 -1
  28. data/events/app/assets/images/poster.png +0 -0
  29. data/events/app/assets/javascripts/social_stream-events.js +7 -0
  30. data/events/app/assets/javascripts/social_stream.events.poster.js +21 -0
  31. data/events/app/assets/stylesheets/events.css.scss +25 -0
  32. data/events/app/helpers/events_helper.rb +9 -0
  33. data/events/app/models/activity_object_property/poster.rb +2 -0
  34. data/events/app/models/event.rb +18 -0
  35. data/events/app/views/events/_event.html.erb +39 -27
  36. data/events/app/views/events/_form_poster.html.erb +8 -0
  37. data/events/app/views/events/edit.js.erb +5 -0
  38. data/events/config/locales/en.yml +2 -0
  39. data/events/config/locales/es.yml +2 -0
  40. data/events/lib/social_stream-events.rb +2 -1
  41. data/events/lib/social_stream/events/engine.rb +6 -0
  42. data/events/lib/social_stream/events/models/document.rb +26 -0
  43. data/events/lib/social_stream/events/version.rb +1 -1
  44. data/events/social_stream-events.gemspec +1 -1
  45. data/lib/social_stream/version.rb +1 -1
  46. data/linkser/lib/social_stream/linkser/version.rb +1 -1
  47. data/linkser/social_stream-linkser.gemspec +1 -1
  48. data/presence/app/assets/images/games/ter/classic_aspa.png +0 -0
  49. data/presence/app/assets/images/games/ter/classic_board.png +0 -0
  50. data/presence/app/assets/images/games/ter/classic_circle.png +0 -0
  51. data/presence/app/assets/images/games/ter/modern_aspa.png +0 -0
  52. data/presence/app/assets/images/games/ter/modern_board.png +0 -0
  53. data/presence/app/assets/images/games/ter/modern_circle.png +0 -0
  54. data/presence/app/assets/javascripts/jquery.ui.chatbox.sstreampresence.js +34 -3
  55. data/presence/app/assets/javascripts/presence.js.erb +4 -0
  56. data/presence/app/assets/javascripts/{xmpp_client_management.js.erb → presence_XmppClient.js.erb} +417 -49
  57. data/presence/app/assets/javascripts/{chat_audio.js.erb → presence_audio.js.erb} +0 -0
  58. data/presence/app/assets/javascripts/presence_game.js.erb +76 -0
  59. data/presence/app/assets/javascripts/presence_game_ter.js.erb +384 -0
  60. data/presence/app/assets/javascripts/presence_notifications.js +191 -0
  61. data/presence/app/assets/javascripts/{chat_parser.js → presence_parser.js} +0 -0
  62. data/presence/app/assets/javascripts/{chat_persistence.js → presence_persistence.js} +84 -70
  63. data/presence/app/assets/javascripts/{store.js → presence_store.js} +0 -0
  64. data/presence/app/assets/javascripts/{chat_interface_manager.js.erb → presence_uiManager.js.erb} +42 -132
  65. data/presence/app/assets/javascripts/{chat_utilities.js → presence_utilities.js} +10 -34
  66. data/presence/app/assets/javascripts/{videochat.js.erb → presence_videochat.js.erb} +4 -24
  67. data/presence/app/assets/javascripts/{chat_window_manager.js → presence_windowManager.js} +275 -217
  68. data/presence/app/assets/javascripts/social_stream-presence.js +0 -2
  69. data/presence/app/assets/stylesheets/chat.css.scss +12 -1
  70. data/presence/app/views/chat/_contacts.html.erb +5 -5
  71. data/presence/app/views/chat/_index.html.erb +10 -2
  72. data/presence/config/locales/en.yml +9 -1
  73. data/presence/config/locales/es.yml +9 -1
  74. data/presence/ejabberd/ejabberd_files.zip +0 -0
  75. data/presence/ejabberd/ejabberd_scripts/emanagement +132 -2
  76. data/presence/ejabberd/installer.sh +1 -0
  77. data/presence/ejabberd/mod_muc_admin/mod_muc_admin.beam +0 -0
  78. data/presence/ejabberd/mod_muc_admin/mod_muc_admin.erl +871 -0
  79. data/presence/ejabberd/mod_sspresence/mod_sspresence.beam +0 -0
  80. data/presence/lib/social_stream/presence/models/buddy_manager.rb +32 -26
  81. data/presence/lib/social_stream/presence/models/group_manager.rb +12 -2
  82. data/presence/lib/social_stream/presence/version.rb +1 -1
  83. data/presence/lib/social_stream/presence/xmpp_server_order.rb +2 -2
  84. data/presence/social_stream-presence.gemspec +1 -1
  85. data/presence/vendor/assets/javascripts/strophe.muc.js +1 -1
  86. data/social_stream.gemspec +5 -5
  87. metadata +63 -41
  88. data/events/app/assets/javascripts/0_init.js +0 -4
@@ -31,17 +31,3 @@
31
31
  </div>
32
32
  </div>
33
33
  <% end %>
34
-
35
- <%= javascript_tag do %>
36
- $(function() {
37
- $("#comment_text_<%= dom_id(activity) %>").Watermark("<%= I18n.t('comment.input') %>","#666");
38
-
39
- $("#comment_text_<%= dom_id(activity) %>")
40
- .change(function(){autoSize("<%= dom_id(activity) %>");})
41
- .keydown(function(){autoSize("<%= dom_id(activity) %>");})
42
- .keyup(function(){autoSize("<%= dom_id(activity) %>");});
43
- autoSize("<%= dom_id(activity) %>");
44
-
45
- SocialStream.Wall.activateAntiRebounds();
46
- });
47
- <% end %>
@@ -1,3 +1,9 @@
1
1
  <% toolbar :profile => object.owner_subject %>
2
2
 
3
3
  <%= render object.post_activity %>
4
+
5
+ <%= javascript_tag do %>
6
+ $(function() {
7
+ SocialStream.Objects.init();
8
+ });
9
+ <% end %>
@@ -8,7 +8,7 @@
8
8
  </div>
9
9
 
10
10
  <% if defined?(SocialStream::Presence) and SocialStream::Presence.enable %>
11
- <%= render :partial => 'chat/index' , :locals => {:flow => false} %>
11
+ <%= render :partial => 'chat/index' , :locals => {:flow => false } %>
12
12
  <% end %>
13
13
 
14
14
  <div class="block space_center">
@@ -11,5 +11,5 @@
11
11
  </div>
12
12
 
13
13
  <% if defined?(SocialStream::Presence) and SocialStream::Presence.enable %>
14
- <%= render :partial => 'chat/index' , :locals => {:flow => true} %>
14
+ <%= render :partial => 'chat/index' , :locals => {:flow => false } %>
15
15
  <% end %>
@@ -23,6 +23,6 @@
23
23
  </div>
24
24
 
25
25
  <% if defined?(SocialStream::Presence) and SocialStream::Presence.enable %>
26
- <%= render :partial => 'chat/index' , :locals => {:flow => true} %>
26
+ <%= render :partial => 'chat/index' , :locals => {:flow => true , :group => @group } %>
27
27
  <% end %>
28
28
 
@@ -45,6 +45,13 @@ es:
45
45
  delete: "Borrar"
46
46
  last: "Últimas actividades"
47
47
  like: "Me gusta"
48
+ like_sentence:
49
+ few:
50
+ one: "A %{likers} le gusta esto"
51
+ other: "A %{likers} les gusta esto"
52
+ many:
53
+ one: "A %{likers} y %{count} persona más les gusta esto"
54
+ other: "A %{likers} y %{count} personas más les gusta esto"
48
55
  one: "Actividad"
49
56
  other: "Actividades"
50
57
  privacy:
@@ -0,0 +1,24 @@
1
+ class ActivityObjectProperties < ActiveRecord::Migration
2
+ def up
3
+ create_table :activity_object_properties do |t|
4
+ t.integer :activity_object_id
5
+ t.integer :property_id
6
+ t.string :type
7
+
8
+ t.timestamp
9
+ end
10
+
11
+ add_index "activity_object_properties", "activity_object_id"
12
+ add_index "activity_object_properties", "property_id"
13
+
14
+ add_foreign_key "activity_object_properties", "activity_objects", :name => "index_activity_object_properties_on_activity_object_id", :column => :activity_object_id
15
+ add_foreign_key "activity_object_properties", "activity_objects", :name => "index_activity_object_properties_on_property_id", :column => :property_id
16
+ end
17
+
18
+ def down
19
+ remove_foreign_key "activity_object_properties", :name => "index_activity_object_properties_on_activity_object_id"
20
+ remove_foreign_key "activity_object_properties", :name => "index_activity_object_properties_on_property_id"
21
+
22
+ drop_table :activity_object_properties
23
+ end
24
+ end
@@ -22,11 +22,11 @@ module SocialStream
22
22
  end
23
23
 
24
24
  can :update, klass do |k| # can :update, Post do |post|
25
- k.post_activity.allow?(subject, 'update')
25
+ [k.channel.author_id, k.channel.owner_id].include?(Actor.normalize_id(subject))
26
26
  end
27
27
 
28
28
  can :destroy, klass do |k| # can :destroy, Post do |post|
29
- k.post_activity.allow?(subject, 'destroy')
29
+ [k.channel.author_id, k.channel.owner_id].include?(Actor.normalize_id(subject))
30
30
  end
31
31
  end
32
32
 
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "0.16.4".freeze
3
+ VERSION = "0.17.0".freeze
4
4
  end
5
5
  end
@@ -1,3 +1,7 @@
1
1
  //= require jquery.jplayer
2
+ //= require jquery.ae.image.resize
3
+ //
4
+ //= require_self
2
5
  //= require_tree .
3
- //= require jquery.ae.image.resize
6
+
7
+ SocialStream.Documents = SocialStream.Documents || {};
@@ -70,9 +70,10 @@ class Document < ActiveRecord::Base
70
70
  end
71
71
 
72
72
  protected
73
-
73
+
74
74
  def set_title
75
- self.title ||= self.file_file_name
75
+ self.title = file_file_name if self.title.blank?
76
76
  end
77
-
78
77
  end
78
+
79
+ ActiveSupport.run_load_hooks(:document, Document)
@@ -4,6 +4,8 @@ class Picture < Document
4
4
  :path => ':rails_root/documents/:class/:id_partition/:style',
5
5
  :styles => {:thumb48sq => ["48x48"],
6
6
  :thumbwall => ["130x97#"],
7
+ # midwall preserves A4 proportion: 210x297
8
+ :midwall => ["80x113#"],
7
9
  :preview => ["500>"]
8
10
  }
9
11
 
@@ -23,6 +25,8 @@ class Picture < Document
23
25
  "#{ size.to_s }/photo.png"
24
26
  when 48
25
27
  helper.picture_path self, :format => format, :style => 'thumb48sq'
28
+ when 80
29
+ helper.picture_path self, :format => format, :style => 'midwall'
26
30
  when 130
27
31
  helper.picture_path self, :format => format, :style => 'thumbwall'
28
32
  when 500
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Documents
3
- VERSION = "0.11.2".freeze
3
+ VERSION = "0.11.3".freeze
4
4
  end
5
5
  end
@@ -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.16.4')
15
+ s.add_runtime_dependency('social_stream-base', '~> 0.17.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')
Binary file
@@ -1 +1,8 @@
1
+ //= require social_stream-base
2
+ //
3
+ //= require_self
1
4
  //= require_tree .
5
+
6
+ SocialStream.Events = SocialStream.Events || {};
7
+ SocialStream.Events.current = SocialStream.Events.current || {};
8
+
@@ -0,0 +1,21 @@
1
+ SocialStream.Events.Poster = (function(SS, $, undefined){
2
+ var init = function(){
3
+ $('.event_poster_update').hide();
4
+
5
+ $('.event_poster').hover(
6
+ function(){
7
+ $(this).find(".event_poster_update").fadeIn("slow");
8
+
9
+ },
10
+ function(){
11
+ $(this).find(".event_poster_update").fadeOut("slow");
12
+ });
13
+ }
14
+
15
+ SS.Timeline.addInitCallback(init);
16
+
17
+ return {
18
+ init: init
19
+ };
20
+
21
+ })(SocialStream, jQuery);
@@ -15,6 +15,7 @@
15
15
  text-align: center;
16
16
  vertical-align: middle;
17
17
  padding: 10px;
18
+ width: 40px;
18
19
  }
19
20
 
20
21
 
@@ -48,6 +49,30 @@ div.event_date {
48
49
  padding-top: 10px;
49
50
  }
50
51
 
52
+ .event_poster {
53
+ width: 80px;
54
+ height: 113px;
55
+ margin-right: 10px;
56
+ float: left;
57
+ position: relative;
58
+ }
59
+
60
+ .event_poster_update {
61
+ top: 95px;
62
+ left: 10px;
63
+ float: left;
64
+ position: absolute;
65
+ background: $secondary-color;
66
+ text-align: center;
67
+ opacity: 0.8;
68
+ width: 80;
69
+ height: 18px;
70
+ /* For IE 5-7 */
71
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
72
+ /* For IE 8 */
73
+ -MS-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
74
+ }
75
+
51
76
  #calendar {
52
77
  margin-top: 20px;
53
78
  }
@@ -0,0 +1,9 @@
1
+ module EventsHelper
2
+ def event_timeline_thumb(event)
3
+ if event.poster.new_record?
4
+ image_tag("poster.png")
5
+ else
6
+ thumb_for(event.poster, 80)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ class ActivityObjectProperty::Poster < ActivityObjectProperty
2
+ end
@@ -27,6 +27,18 @@ class Event < ActiveRecord::Base
27
27
  end
28
28
  end
29
29
 
30
+ def poster_object
31
+ object_properties.
32
+ where('activity_object_properties.type' => 'ActivityObjectProperty::Poster').
33
+ first
34
+ end
35
+
36
+ def poster
37
+ @poster ||=
38
+ poster_object.try(:document) ||
39
+ build_poster
40
+ end
41
+
30
42
  protected
31
43
 
32
44
  def build_json(start_time = start_at, end_time = end_at)
@@ -41,6 +53,12 @@ class Event < ActiveRecord::Base
41
53
 
42
54
  end
43
55
 
56
+ def build_poster
57
+ Document.new(:event_property_object_id => activity_object_id,
58
+ :owner_id => owner_id)
59
+ end
60
+
61
+
44
62
  private
45
63
 
46
64
  def room_belongs_to_receiver
@@ -1,34 +1,46 @@
1
- <%= link_to event, :class => "event_date" do %>
2
- <div id="event-<%= event.id %>" class="event_date_image">
3
- <div class="event_day">
4
- <%= event.start_at.day %>
5
- </div>
6
- <div class="event_month">
7
- <%= l event.start_at, :format => "%b" %>
8
- </div>
9
- <% unless event.all_day? %>
10
- <div class="event_hour">
11
- <%= l event.start_at, :format => "%H:%M" %>
1
+ <%= div_for event do %>
2
+ <%= link_to event, :class => "event_date" do %>
3
+ <div class="event_date_image">
4
+ <div class="event_day">
5
+ <%= event.start_at.day %>
6
+ </div>
7
+ <div class="event_month">
8
+ <%= l event.start_at, :format => "%b" %>
9
+ </div>
10
+ <% unless event.all_day? %>
11
+ <div class="event_hour">
12
+ <%= l event.start_at, :format => "%H:%M" %>
13
+ </div>
14
+ <% end %>
12
15
  </div>
13
16
  <% end %>
14
- </div>
15
- <% end %>
16
17
 
17
- <%= javascript_tag do %>
18
- var d = new Date(<%= 1000*event.start_at.to_i %>);
19
- $("#event-<%= event.id %> .event_day").text($.datepicker.formatDate('d', d));
20
- $("#event-<%= event.id %> .event_month").text($.datepicker.formatDate('M', d));
21
- if($("#event-<%= event.id %> .event_hour").length) {
22
- var minutes = d.getMinutes();
23
- if (minutes<10) minutes = "0" + minutes;
24
- $("#event-<%= event.id %> .event_hour").text(d.getHours() + ':' + minutes);
25
- }
26
- <% end %>
18
+ <%= javascript_tag do %>
19
+ var d = new Date(<%= 1000*event.start_at.to_i %>);
20
+ $("#<%= dom_id event %> .event_day").text($.datepicker.formatDate('d', d));
21
+ $("#<%= dom_id event %> .event_month").text($.datepicker.formatDate('M', d));
22
+ if($("#<%= dom_id event %> .event_hour").length) {
23
+ var minutes = d.getMinutes();
24
+ if (minutes<10) minutes = "0" + minutes;
25
+ $("#<%= dom_id event %> .event_hour").text(d.getHours() + ':' + minutes);
26
+ }
27
+ <% end %>
27
28
 
28
- <div class="event_details">
29
- <div class="title">
30
- <%= link_to event.title, event %>
29
+ <div class="event_poster">
30
+ <%= event_timeline_thumb(event) %>
31
+
32
+ <% if can? :update, event %>
33
+ <div class="event_poster_update">
34
+ <%= link_to t('event.poster.update'), edit_event_path(event, :poster => true), :remote => true %>
35
+ </div>
36
+ <% end %>
31
37
  </div>
32
- </div>
38
+
39
+ <div class="event_details">
40
+ <div class="title">
41
+ <%= link_to event.title, event %>
42
+ </div>
43
+ </div>
44
+ <% end %>
33
45
 
34
46
  <div class="clearfloat"></div>
@@ -0,0 +1,8 @@
1
+ <%= form_for @event.poster do |f| %>
2
+ <%= f.hidden_field :event_property_object_id %>
3
+ <%= f.hidden_field :owner_id %>
4
+
5
+ <%= f.file_field :file %>
6
+
7
+ <%= f.submit %>
8
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% if params[:poster] %>
2
+ $("#<%= dom_id @event %> .event_poster").hide("slow");
3
+ $("#<%= dom_id @event %> .event_details").hide("slow");
4
+ $("#<%= dom_id @event %>").append("<%= escape_javascript render(:partial => 'events/form_poster', :locals => { :event => @event }) %>");
5
+ <% end %>
@@ -24,6 +24,8 @@ en:
24
24
  new:
25
25
  title: "New event"
26
26
  one: "an event"
27
+ poster:
28
+ update: "Upload poster"
27
29
  title:
28
30
  one: "Event"
29
31
  other: "Events"
@@ -24,6 +24,8 @@ es:
24
24
  new:
25
25
  title: "Nuevo evento"
26
26
  one: "un evento"
27
+ poster:
28
+ update: "Subir cartel"
27
29
  title:
28
30
  one: "Evento"
29
31
  other: "Eventos"
@@ -17,7 +17,8 @@ module SocialStream
17
17
  autoload :Ability, 'social_stream/events/ability'
18
18
 
19
19
  module Models
20
- autoload :Actor, 'social_stream/events/models/actor'
20
+ autoload :Actor, 'social_stream/events/models/actor'
21
+ autoload :Document, 'social_stream/events/models/document'
21
22
  end
22
23
 
23
24
  SocialStream.objects.push(:event) unless SocialStream.objects.include?(:event)
@@ -13,6 +13,12 @@ module SocialStream
13
13
  end
14
14
  end
15
15
 
16
+ initializer "social_stream-events.document" do
17
+ ActiveSupport.on_load(:document) do
18
+ include SocialStream::Events::Models::Document
19
+ end
20
+ end
21
+
16
22
  initializer "social_stream-events.views.settings" do
17
23
  SocialStream::Views::Settings.module_eval do
18
24
  include SocialStream::Views::Settings::Events
@@ -0,0 +1,26 @@
1
+ module SocialStream
2
+ module Events
3
+ module Models
4
+ module Document
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ attr_accessor :event_property_object_id
9
+
10
+ before_validation(:on => :create) do
11
+ set_event
12
+ end
13
+ end
14
+
15
+ protected
16
+
17
+ def set_event
18
+ return if event_property_object_id.blank?
19
+
20
+ activity_object_holders <<
21
+ ActivityObjectProperty::Poster.new(:activity_object_id => event_property_object_id)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end