social_stream 0.22.0 → 0.22.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.
Files changed (37) hide show
  1. data/base/app/assets/javascripts/social_stream.search.js.erb +27 -0
  2. data/base/app/assets/stylesheets/activities.css.scss +2 -0
  3. data/base/app/controllers/search_controller.rb +5 -2
  4. data/base/app/helpers/activities_helper.rb +19 -0
  5. data/base/app/helpers/search_helper.rb +37 -7
  6. data/base/app/models/actor.rb +2 -1
  7. data/base/app/models/group.rb +2 -0
  8. data/base/app/views/activities/_likes.html.erb +5 -0
  9. data/base/app/views/activities/_root.html.erb +3 -0
  10. data/base/app/views/cheesecake/_cheesecake.html.erb +1 -1
  11. data/base/app/views/search/_form.html.erb +27 -48
  12. data/base/config/locales/en.yml +21 -3
  13. data/base/config/locales/es.yml +14 -3
  14. data/base/lib/social_stream/base/version.rb +1 -1
  15. data/documents/config/locales/en.yml +12 -3
  16. data/documents/config/locales/es.yml +12 -4
  17. data/documents/lib/social_stream/documents/version.rb +1 -1
  18. data/documents/lib/social_stream/toolbar_config/documents.rb +2 -2
  19. data/documents/social_stream-documents.gemspec +1 -1
  20. data/events/app/views/events/index.html.erb +2 -2
  21. data/events/config/locales/en.yml +4 -1
  22. data/events/config/locales/es.yml +4 -1
  23. data/events/lib/social_stream/events/version.rb +1 -1
  24. data/events/social_stream-events.gemspec +1 -1
  25. data/lib/social_stream/version.rb +1 -1
  26. data/presence/app/assets/javascripts/social_stream-presence.js +1 -0
  27. data/presence/app/assets/javascripts/xmpp_client_management.js.erb +14 -2
  28. data/presence/lib/social_stream/presence/engine.rb +6 -0
  29. data/presence/lib/social_stream/presence/models/group_manager.rb +41 -0
  30. data/presence/lib/social_stream/presence/version.rb +1 -1
  31. data/presence/lib/social_stream/presence/xmpp_server_order.rb +84 -10
  32. data/presence/lib/social_stream-presence.rb +1 -1
  33. data/presence/lib/tasks/presence/synchronize.rake +15 -0
  34. data/presence/social_stream-presence.gemspec +4 -4
  35. data/presence/vendor/assets/javascripts/strophe.muc.js +934 -0
  36. data/social_stream.gemspec +3 -3
  37. metadata +33 -29
@@ -0,0 +1,27 @@
1
+ SocialStream.Search = (function(SS, $, undefined){
2
+ function init(){
3
+ $.preloadImages ("<%= asset_path "mini-loading.gif" %>");
4
+
5
+ $('#search_form').submit(function() {
6
+ query = $('#global_search_input').val();
7
+ if((query=="")||(query.length < 2)||(query == I18n.t('search.write'))){
8
+ $('#too_short_error').show();
9
+ $('#global_search_input').removeClass("searching");
10
+ $('#global_search_input').blur();
11
+ $('#global_search_input').focus();
12
+ return false;
13
+ }else{
14
+ $('#global_search_input').addClass("searching");
15
+ $('#global_search_input').blur();
16
+ }
17
+ return true;
18
+ });
19
+
20
+ $("#global_search_input").Watermark(I18n.t('search.write'));
21
+ }
22
+
23
+ return {
24
+ init: init
25
+ }
26
+
27
+ }) (SocialStream, jQuery);
@@ -86,3 +86,5 @@
86
86
  .copy_new_comment{visibility: hidden; padding:6px; padding-bottom: 1.5em;font-size:inherit; line-height: 1.15em;
87
87
  margin-bottom:7px;}
88
88
  .input_new_comments_container{min-height: 30px; position: relative; }
89
+
90
+ .activity_likes{ margin-bottom: 2px; }
@@ -26,8 +26,11 @@ class SearchController < ApplicationController
26
26
  private
27
27
 
28
28
  def search mode
29
- models = SocialStream.extended_search_models
30
- models = SocialStream.quick_search_models if mode.to_s.eql? "quick"
29
+ models = ( mode.to_s.eql?("quick") ?
30
+ SocialStream.extended_search_models :
31
+ SocialStream.quick_search_models
32
+ ).dup
33
+
31
34
  models.map! {|model_sym| model_sym.to_s.classify.constantize}
32
35
  result = ThinkingSphinx.search(get_search_query, :classes => models)
33
36
  result = authorization_filter result
@@ -34,4 +34,23 @@ module ActivitiesHelper
34
34
  Post.new :author_id => Actor.normalize_id(current_subject),
35
35
  :owner_id => Actor.normalize_id(receiver)
36
36
  end
37
+
38
+ def like_sentence(activity)
39
+ likers_shown = 3
40
+ likers_count = activity.likes.count
41
+ likers_other = likers_count - likers_shown
42
+
43
+ # TODO: select likers from current_subject's contacts
44
+ likers =
45
+ activity.likes.first(likers_shown).
46
+ map{ |a| a.sender_subject }.
47
+ map{ |l| link_to l.name, l }.
48
+ join(", ")
49
+
50
+ if likers_other > 0
51
+ t("activity.like_sentence.many", :likers => likers, :count => likers_other).html_safe
52
+ else
53
+ t("activity.like_sentence.few", :likers => likers, :count => likers_count).html_safe
54
+ end
55
+ end
37
56
  end
@@ -1,10 +1,4 @@
1
1
  module SearchHelper
2
-
3
- def focus_search_link text, search_class, query
4
- search_class = search_class.to_s if search_class.is_a? Class or search_class.is_a? Symbol
5
- link_to text, search_path(:focus => search_class.downcase.pluralize, :search_query => query ), :remote => true
6
- end
7
-
8
2
  def too_short_query?
9
3
  return true if params[:search_query].blank?
10
4
  bare_query = strip_tags(params[:search_query]) unless bare_query.html_safe?
@@ -35,4 +29,40 @@ module SearchHelper
35
29
  bare_query = strip_tags(params[:search_query]) unless bare_query.html_safe?
36
30
  return bare_query.strip.split
37
31
  end
38
- end
32
+
33
+ def search_class(type, model_sym)
34
+ case type
35
+ when :selected
36
+ params[:focus].present? &&
37
+ params[:focus].eql?(model_sym.to_s) &&
38
+ 'selected' || ''
39
+ when :disabled
40
+ search_results?(model_sym) &&
41
+ '' || 'disabled'
42
+ else
43
+ raise "Unknown select search class type"
44
+ end
45
+ end
46
+
47
+ def search_results?(model_sym)
48
+ ThinkingSphinx.count(get_search_query,
49
+ :classes => [model_sym.to_s.classify.constantize]) > 0
50
+ end
51
+
52
+ def search_tab(model_sym)
53
+ span_options = {}
54
+ span_options[:class] = "#{ search_class(:selected, model_sym) } #{ search_class(:disabled, model_sym) } #{ model_sym.to_s.pluralize.downcase }"
55
+
56
+ results = search_results?(model_sym)
57
+
58
+ unless results
59
+ span_options[:title] = t('search.no_subject_found', :subject => model_sym.to_s)
60
+ end
61
+
62
+ link_to_if results,
63
+ content_tag(:span, t("#{ model_sym }.title.other"), span_options),
64
+ search_path(:focus => model_sym,
65
+ :search_query => params[:search_query]),
66
+ :remote => true
67
+ end
68
+ end
@@ -31,7 +31,8 @@ class Actor < ActiveRecord::Base
31
31
 
32
32
  has_many :avatars,
33
33
  :validate => true,
34
- :autosave => true
34
+ :autosave => true,
35
+ :dependent => :destroy
35
36
  has_one :avatar,
36
37
  :conditions => { :active => true }
37
38
 
@@ -53,3 +53,5 @@ class Group < ActiveRecord::Base
53
53
  end
54
54
  end
55
55
  end
56
+
57
+ ActiveSupport.run_load_hooks(:group, Group)
@@ -0,0 +1,5 @@
1
+ <% if activity.likes.present? %>
2
+ <div class="activity_likes subactivity " id="likes_<%= dom_id(activity) %>">
3
+ <%= like_sentence(activity) %>
4
+ </div>
5
+ <% end %>
@@ -19,6 +19,9 @@
19
19
  <%= render :partial => 'activities/options',
20
20
  :locals => { :activity => activity } %>
21
21
 
22
+ <%= render :partial => 'activities/likes',
23
+ :locals => { :activity => activity } %>
24
+
22
25
  <%= render :partial => 'activities/comments',
23
26
  :locals => { :activity => activity } %>
24
27
 
@@ -77,7 +77,7 @@ $(function(){
77
77
  $("#sector_editor").data("prepare")(subsector.getCheesecake(),subsector);
78
78
  };
79
79
  $("#contacts_filter_input").keyup(function(){
80
- cheese.searchEngine.filter($("#contacts_filter_input").val());
80
+ cheese.filter($("#contacts_filter_input").val());
81
81
  //TODO: Make users unfiltered visible again
82
82
  });
83
83
  cheese.onChange = function(cheesecake){
@@ -1,54 +1,33 @@
1
- <form action="<%= search_path %>" method="get" data-remote="true" id="search_form">
2
- <div class="block">
3
- <div class="error" id="too_short_error" <%= too_short_query? ? 'style=display:block;' : '' %>><%= t('search.at_least') %></div>
4
- <%= hidden_field_tag :focus, params[:focus] %>
5
- <div class="form_row search_row">
6
- <%= text_field_tag :search_query, params[:search_query].present? ? params[:search_query] : nil ,:autocomplete => :off, :id => :global_search_input %>
7
- </div>
8
- <div id="focus_options" class="form_row search_row">
9
- <ul class="menu_plain_list">
10
- <li><%= link_to content_tag(:span,t('search.show_all'),:class => params[:focus].blank? ? 'global selected' : 'global'), search_path(:search_query => params[:search_query]), :remote => true %></li>
11
- <% SocialStream.extended_search_models.each do |model_sym| %>
12
- <% selected_class = (params[:focus].present? and params[:focus].pluralize.downcase.eql?(model_sym.to_s.pluralize.downcase)) ? 'selected' : ''%>
13
- <% disabled = ThinkingSphinx.count(get_search_query, :classes => [model_sym.to_s.classify.constantize])==0 %>
14
- <% disabled_class = (disabled ? 'disabled' : '') %>
15
- <li>
16
- <% unless disabled %>
17
- <%= focus_search_link content_tag(:span, model_sym.to_s.pluralize.capitalize,
18
- :class => selected_class + " " + disabled_class + " " + model_sym.to_s.pluralize.downcase),
19
- model_sym.to_s.classify.constantize,
20
- params[:search_query] %>
21
- <% else %>
22
- <%= content_tag(:span, model_sym.to_s.pluralize.capitalize,
23
- :class => selected_class + " " + disabled_class + " " + model_sym.to_s.pluralize.downcase,
24
- :title => I18n.t('search.no_subject_found', :subject => model_sym.to_s)) %>
25
- <% end %>
26
- </li>
27
- <% end %>
28
- </ul>
29
- </div>
1
+ <%= form_tag search_path, :method => :get,
2
+ :remote => true,
3
+ :id => "search_form" do %>
4
+ <%= hidden_field_tag :focus, params[:focus] %>
5
+ <div class="block">
6
+ <div class="error" id="too_short_error" <%= 'style=display:block;' if too_short_query? %>><%= t('search.at_least') %></div>
7
+
8
+ <div class="form_row search_row">
9
+ <%= text_field_tag :search_query, params[:search_query], :autocomplete => :off, :id => :global_search_input %>
30
10
  </div>
31
- </form>
11
+
12
+ <div id="focus_options" class="form_row search_row">
13
+ <ul class="menu_plain_list">
14
+ <li><%= link_to content_tag(:span,
15
+ t('search.show_all'),
16
+ :class => "global #{ params[:focus].blank? && 'selected' }"),
17
+ search_path(:search_query => params[:search_query]),
18
+ :remote => true %></li>
19
+ <% SocialStream.extended_search_models.each do |model_sym| %>
20
+ <li>
21
+ <%= search_tab(model_sym) %>
22
+ </li>
23
+ <% end %>
24
+ </ul>
25
+ </div>
26
+ </div>
27
+ <% end %>
32
28
 
33
29
  <%= javascript_tag do %>
34
30
  $(function() {
35
- $.preloadImages ("assets/mini-loading.gif");
36
-
37
- $('#search_form').submit(function() {
38
- query = $('#global_search_input').val();
39
- if((query=="")||(query.length < 2)||(query=="<%= t('search.write') %>")){
40
- $('#too_short_error').show();
41
- $('#global_search_input').removeClass("searching");
42
- $('#global_search_input').blur();
43
- $('#global_search_input').focus();
44
- return false;
45
- }else{
46
- $('#global_search_input').addClass("searching");
47
- $('#global_search_input').blur();
48
- }
49
- return true;
50
- });
51
-
52
- $("#global_search_input").Watermark("<%= I18n.t('search.write') %>");
31
+ SocialStream.Search.init();
53
32
  });
54
33
  <% end %>
@@ -45,6 +45,13 @@ en:
45
45
  delete: "Delete"
46
46
  last: "Last Activities"
47
47
  like: "I like"
48
+ like_sentence:
49
+ few:
50
+ one: "%{likers} likes this"
51
+ other: "%{likers} like this"
52
+ many:
53
+ one: "%{likers} and %{count} more person like this"
54
+ other: "%{likers} and %{count} more people like this"
48
55
  one: "Activity"
49
56
  other: "Activities"
50
57
  privacy:
@@ -111,6 +118,9 @@ en:
111
118
  confirm_delete: "Delete comment?"
112
119
  name: "comment"
113
120
  one: "a comment"
121
+ title:
122
+ one: "Comment"
123
+ other: "Comments"
114
124
  view_all: "View all comments"
115
125
  contact:
116
126
  addressbook: "Addressbook"
@@ -226,6 +236,9 @@ en:
226
236
  followed: "Most followed"
227
237
  liked: "Most liked"
228
238
  tags: "Tags"
239
+ title:
240
+ one: "Group"
241
+ other: "Groups"
229
242
  help: "Help"
230
243
  helpers:
231
244
  submit:
@@ -337,7 +350,9 @@ en:
337
350
  input: "What are you doing?"
338
351
  name: "post"
339
352
  one: "a post"
340
- title: "Posts"
353
+ title:
354
+ one: "Post"
355
+ other: "Posts"
341
356
  preposition:
342
357
  and: "and"
343
358
  on: "on"
@@ -496,11 +511,14 @@ en:
496
511
  ago: "%{time} ago"
497
512
  unknown: "Unknown"
498
513
  user:
514
+ all: "All users"
515
+ all_n: "All users (%{count})"
499
516
  by: "By Users"
500
517
  one: "User"
501
518
  other: "Users"
502
- all: "All users"
503
- all_n: "All users (%{count})"
519
+ title:
520
+ one: "User"
521
+ other: "Users"
504
522
  welcome: "Welcome to %{site}!"
505
523
  lang:
506
524
  browser: "Auto-detect browser language"
@@ -112,6 +112,9 @@ es:
112
112
  name: "comentario"
113
113
  one: "un comentario"
114
114
  view_all: "Ver todos los comentarios"
115
+ title:
116
+ one: "Comentario"
117
+ other: "Comentarios"
115
118
  contact:
116
119
  addressbook: "Libreta de direcciones"
117
120
  all_n: "Todos los contactos (%{count})"
@@ -226,6 +229,9 @@ es:
226
229
  followed: "Más seguidos"
227
230
  liked: "Más populares"
228
231
  tags: "Etiquetas"
232
+ title:
233
+ one: "Grupo"
234
+ other: "Grupos"
229
235
  help: "Ayuda"
230
236
  helpers:
231
237
  submit:
@@ -337,7 +343,9 @@ es:
337
343
  input: "¿Qué quieres compartir?"
338
344
  name: "publicación"
339
345
  one: "una publicación"
340
- title: "Textos"
346
+ title:
347
+ one: "Texto"
348
+ other: "Textos"
341
349
  preposition:
342
350
  and: "y"
343
351
  profile:
@@ -514,11 +522,14 @@ es:
514
522
  ago: "hace %{time}"
515
523
  unknown: "Desconocido"
516
524
  user:
525
+ all: "Todos los usuarios"
526
+ all_n: "Todos los usuarios (%{count})"
517
527
  by: "Por usuarios"
518
528
  one: "Usuario"
519
529
  other: "Usuarios"
520
- all: "Todos los usuarios"
521
- all_n: "Todos los usuarios (%{count})"
530
+ title:
531
+ one: "Usuario"
532
+ other: "Usuarios"
522
533
  welcome: "¡Bienvenid@ a %{site}!"
523
534
  lang:
524
535
  browser: "Autodetectar el idioma del navegador"
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "0.16.3".freeze
3
+ VERSION = "0.16.4".freeze
4
4
  end
5
5
  end
@@ -12,6 +12,9 @@ en:
12
12
  not_mine: "Audios"
13
13
  one: "an audio"
14
14
  processing: "Processing audio clip. Please wait..."
15
+ title:
16
+ one: "Audio"
17
+ other: "Audios"
15
18
  document:
16
19
  actions:
17
20
  delete: "Delete"
@@ -38,15 +41,19 @@ en:
38
41
  not_mine: "Files"
39
42
  one: "a file"
40
43
  simple_all: "All"
41
- title: "Files"
44
+ title:
45
+ one: "File"
46
+ other: "Files"
42
47
  picture:
43
48
  confirm_delete: "Delete picture?"
44
- title: "Pictures"
45
49
  mine: "My pictures"
46
50
  msg: "See details..."
47
51
  name: "picture"
48
52
  not_mine: "Pictures"
49
53
  one: "a picture"
54
+ title:
55
+ one: "Picture"
56
+ other: "Pictures"
50
57
  repository:
51
58
  title: "Files"
52
59
  order:
@@ -62,10 +69,12 @@ en:
62
69
  not_mine: "Resources"
63
70
  video:
64
71
  confirm_delete: "Delete video?"
65
- title: "Videos"
66
72
  mine: "My videos"
67
73
  msg: "Uploaded a video:"
68
74
  name: "video"
69
75
  not_mine: "Videos"
70
76
  one: "a video"
71
77
  processing: "Processing video. Please, wait..."
78
+ title:
79
+ one: "Video"
80
+ other: "Videos"
@@ -5,13 +5,15 @@ es:
5
5
  title: "Título"
6
6
  audio:
7
7
  confirm_delete: "¿Borrar audios?"
8
- title: "Audios"
9
8
  mine: "Mis audios"
10
9
  msg: "Subió un audio:"
11
10
  name: "archivo de audio"
12
11
  not_mine: "Audios"
13
12
  one: "un archivo de audio"
14
13
  processing: "Procesando fichero de audio. Espere, por favor..."
14
+ title:
15
+ one: "Audio"
16
+ other: "Audios"
15
17
  document:
16
18
  actions:
17
19
  delete: "Borrar"
@@ -38,15 +40,19 @@ es:
38
40
  not_mine: "Ficheros"
39
41
  one: "un fichero"
40
42
  simple_all: "Todos"
41
- title: "Ficheros"
43
+ title:
44
+ one: "Fichero"
45
+ other: "Ficheros"
42
46
  picture:
43
47
  confirm_delete: "¿Borrar imagen?"
44
- title: "Imágenes"
45
48
  mine: "Mis imágenes"
46
49
  msg: "Ver detalles..."
47
50
  name: "imagen"
48
51
  not_mine: "Imágenes"
49
52
  one: "una imagen"
53
+ title:
54
+ one: "Imagen"
55
+ other: "Imágenes"
50
56
  repository:
51
57
  title: "Ficheros"
52
58
  order:
@@ -62,10 +68,12 @@ es:
62
68
  not_mine: "Recursos"
63
69
  video:
64
70
  confirm_delete: "¿Borrar vídeo?"
65
- title: "Vídeos"
66
71
  mine: "Mis vídeos"
67
72
  msg: "Subió un vídeo:"
68
73
  name: "vídeo"
69
74
  not_mine: "Vídeos"
70
75
  one: "un vídeo"
71
76
  processing: "Procesando vídeo. Espere, por favor..."
77
+ title:
78
+ one: "Vídeo"
79
+ other: "Vídeos"
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Documents
3
- VERSION = "0.11.1".freeze
3
+ VERSION = "0.11.2".freeze
4
4
  end
5
5
  end
@@ -6,7 +6,7 @@ module SocialStream
6
6
 
7
7
  items << {
8
8
  :key => :documents,
9
- :name => image_tag("btn/btn_resource.png",:class =>"menu_icon")+t("document.title"),
9
+ :name => image_tag("btn/btn_resource.png",:class =>"menu_icon")+t("document.title.other"),
10
10
  :url => polymorphic_path([subject, Document.new]),
11
11
  :options => {:link => {:id => "documents_menu"}}
12
12
  }
@@ -17,7 +17,7 @@ module SocialStream
17
17
 
18
18
  items << {
19
19
  :key => :documents,
20
- :name => image_tag("btn/btn_resource.png",:class =>"menu_icon")+t("document.title"),
20
+ :name => image_tag("btn/btn_resource.png",:class =>"menu_icon")+t("document.title.other"),
21
21
  :url => polymorphic_path([current_subject, Document.new]),
22
22
  :options => {:link => {:id => "documents_menu"}}
23
23
  }
@@ -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.2')
15
+ s.add_runtime_dependency('social_stream-base', '~> 0.16.4')
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')
@@ -6,12 +6,12 @@
6
6
  <% end %>
7
7
 
8
8
  <% content_for :title do %>
9
- <%= profile_subject.name + ": " + t('event.title') %>
9
+ <%= profile_subject.name + ": " + t('event.calendar') %>
10
10
  <% end %>
11
11
 
12
12
  <%= location(
13
13
  link_to(profile_subject.name, polymorphic_path(profile_subject)),
14
- link_to(t('event.title'), polymorphic_path([profile_subject, Event.new]))
14
+ link_to(t('event.calendar'), polymorphic_path([profile_subject, Event.new]))
15
15
  ) %>
16
16
 
17
17
  <% toolbar :profile => profile_subject %>
@@ -19,11 +19,14 @@ en:
19
19
  boxy:
20
20
  close_text: "[close]"
21
21
  event:
22
+ calendar: "Calendar"
22
23
  confirm_delete: "Delete event?"
23
24
  new:
24
25
  title: "New event"
25
26
  one: "an event"
26
- title: "Calendar"
27
+ title:
28
+ one: "Event"
29
+ other: "Events"
27
30
  wall_post: "Published an event: %{title}"
28
31
  room:
29
32
  confirm_delete: "Delete room?"
@@ -19,11 +19,14 @@ es:
19
19
  boxy:
20
20
  close_text: "[cerrar]"
21
21
  event:
22
+ calendar: "Calendario"
22
23
  confirm_delete: "¿Borrar evento?"
23
24
  new:
24
25
  title: "Nuevo evento"
25
26
  one: "un evento"
26
- title: "Calendario"
27
+ title:
28
+ one: "Evento"
29
+ other: "Eventos"
27
30
  wall_post: "Publicó un evento: %{title}"
28
31
  room:
29
32
  confirm_delete: "¿Borrar espacio?"
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Events
3
- VERSION = "0.8.1".freeze
3
+ VERSION = "0.8.2".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.2')
15
+ s.add_runtime_dependency('social_stream-base', '~> 0.16.4')
16
16
  s.add_runtime_dependency('rails-scheduler', '~> 0.0.6')
17
17
  s.add_runtime_dependency('coffee-rails', '>= 3.1.0')
18
18
 
@@ -1,3 +1,3 @@
1
1
  module SocialStream
2
- VERSION = "0.22.0".freeze
2
+ VERSION = "0.22.1".freeze
3
3
  end
@@ -1,5 +1,6 @@
1
1
  //= require jquery
2
2
  //= require strophe
3
+ //= require strophe.muc
3
4
  //= require jquery.tools.tooltip
4
5
  //= require jquery.ui.chatbox.sstreampresence
5
6
  //= require jquery.flexselect.sstreampresence
@@ -441,7 +441,7 @@ function handleGetIQStanza(iq,jid,slug){
441
441
  return true;
442
442
  }
443
443
 
444
- //Case: Default behaviour
444
+ //Case 3: Default behaviour
445
445
  sendIQEmpty(jid,iqID);
446
446
 
447
447
  return true;
@@ -466,7 +466,7 @@ function handleGetVideochatIQStanza(jid,iqID,iq,slug){
466
466
  }
467
467
  }
468
468
 
469
- //Send error stanza
469
+ //Send empty stanza
470
470
  sendIQEmpty(jid,iqID);
471
471
  }
472
472
 
@@ -671,3 +671,15 @@ function sendStatus(status){
671
671
  setStatusWidgetTitle(status);
672
672
  }
673
673
  }
674
+
675
+
676
+
677
+ ////////
678
+ //MUC management
679
+ ///////
680
+
681
+ function joinRoom(roomName){
682
+ //domain
683
+ //stropne_connection.muc.init(stropne_connection)
684
+ //stropne_connection.muc.join(room, user_name, onMessage, onPresence, null, null)
685
+ }
@@ -6,6 +6,12 @@ module SocialStream
6
6
  include SocialStream::Presence::Models::BuddyManager
7
7
  end
8
8
  end
9
+
10
+ initializer "social_stream-presence.group" do
11
+ ActiveSupport.on_load(:group) do
12
+ include SocialStream::Presence::Models::GroupManager
13
+ end
14
+ end
9
15
 
10
16
  initializer "social_stream-presence.views.settings" do
11
17
  SocialStream::Views::Settings.module_eval do