social_stream 0.20.2 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- data/base/app/assets/images/btn/permission_negative.png +0 -0
- data/base/app/assets/images/btn/permission_positive.png +0 -0
- data/base/app/assets/javascripts/activities.js.erb +2 -118
- data/base/app/assets/javascripts/social_stream-base.js +3 -0
- data/base/app/assets/javascripts/social_stream.timeline.js +42 -0
- data/base/app/assets/javascripts/social_stream.wall.js.erb +125 -0
- data/base/app/assets/stylesheets/cheesecake.css.scss +9 -1
- data/base/app/helpers/notifications_helper.rb +1 -5
- data/base/app/models/activity.rb +21 -2
- data/base/app/models/comment.rb +5 -0
- data/base/app/models/permission.rb +16 -1
- data/base/app/models/post.rb +5 -0
- data/base/app/views/activities/_new.html.erb +7 -6
- data/base/app/views/activities/_wall.html.erb +6 -0
- data/base/app/views/cheesecake/_index.html.erb +17 -0
- data/base/app/views/cheesecake/_sector_form.html.erb +15 -6
- data/base/app/views/comments/_new.html.erb +2 -2
- data/base/app/views/comments/create.js.erb +1 -3
- data/base/app/views/notifications/activities/_post.html.erb +0 -3
- data/base/app/views/permissions/_index.html.erb +2 -2
- data/base/app/views/posts/create.js.erb +1 -4
- data/base/config/locales/en.yml +33 -23
- data/base/config/locales/es.yml +53 -24
- data/base/db/migrate/20120208135718_group_title_and_description_in_activity_object.rb +52 -0
- data/base/lib/social_stream/base/version.rb +1 -1
- data/base/spec/factories/activity.rb +1 -1
- data/documents/db/migrate/20120208143721_documents_group_title_and_description_in_activity_object.rb +28 -0
- data/documents/lib/social_stream/documents/version.rb +1 -1
- data/documents/social_stream-documents.gemspec +1 -1
- data/documents/spec/factories/document.rb +1 -0
- data/documents/spec/factories/picture.rb +1 -0
- data/events/db/migrate/20120208143756_events_group_title_and_description_in_activity_object.rb +26 -0
- data/events/lib/social_stream/events/version.rb +1 -1
- data/events/social_stream-events.gemspec +1 -1
- data/lib/social_stream/version.rb +1 -1
- data/linkser/app/views/links/create.js.erb +1 -3
- data/linkser/db/migrate/20120208143739_linkser_group_title_and_description_in_activity_object.rb +30 -0
- data/linkser/lib/social_stream/linkser/version.rb +1 -1
- data/linkser/social_stream-linkser.gemspec +1 -1
- data/presence/app/assets/images/black_arrow7.png +0 -0
- data/presence/app/assets/images/black_arrow8.png +0 -0
- data/presence/app/assets/images/black_arrow9.png +0 -0
- data/presence/app/assets/javascripts/chat_interface_manager.js.erb +191 -23
- data/presence/app/assets/javascripts/chat_persistence.js +15 -6
- data/presence/app/assets/javascripts/chat_utilities.js +13 -0
- data/presence/app/assets/javascripts/chat_window_manager.js +101 -20
- data/presence/app/assets/javascripts/social_stream-presence.js +2 -0
- data/presence/app/assets/javascripts/xmpp_client_management.js.erb +6 -5
- data/presence/app/assets/stylesheets/chat.css.scss +43 -3
- data/presence/app/assets/stylesheets/social_stream-presence.css +1 -0
- data/presence/app/helpers/xmpp_helper.rb +4 -2
- data/presence/app/views/chat/_contacts.html.erb +55 -42
- data/presence/config/locales/en.yml +4 -1
- data/presence/config/locales/es.yml +3 -1
- data/presence/db/migrate/20110928135031_add_status_column_to_user.rb +1 -1
- data/presence/lib/social_stream/presence/version.rb +1 -1
- data/presence/social_stream-presence.gemspec +1 -1
- data/presence/vendor/assets/javascripts/jquery.flexselect.js +265 -0
- data/presence/vendor/assets/javascripts/jquery.tools.tooltip.js +2 -1
- data/presence/vendor/assets/javascripts/liquidmetal.js +90 -0
- data/presence/vendor/assets/stylesheets/flexselect.css +39 -0
- data/social_stream.gemspec +5 -5
- metadata +45 -32
- data/base/app/views/activities/_filter.html.erb +0 -83
@@ -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.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.16.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')
|
data/events/db/migrate/20120208143756_events_group_title_and_description_in_activity_object.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
class EventsGroupTitleAndDescriptionInActivityObject < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
ao_ts = ActivityObject.record_timestamps
|
4
|
+
ActivityObject.record_timestamps = false
|
5
|
+
|
6
|
+
# Fix 'events' table
|
7
|
+
e_ts = Event.record_timestamps
|
8
|
+
Event.record_timestamps = false
|
9
|
+
|
10
|
+
Event.all.each do |e|
|
11
|
+
e.activity_object.title = e.read_attribute(:title)
|
12
|
+
e.save!
|
13
|
+
end
|
14
|
+
change_table :events do |t|
|
15
|
+
t.remove :title
|
16
|
+
end
|
17
|
+
Event.reset_column_information
|
18
|
+
Event.record_timestamps = e_ts
|
19
|
+
|
20
|
+
ActivityObject.record_timestamps = ao_ts
|
21
|
+
end
|
22
|
+
|
23
|
+
def down
|
24
|
+
raise ActiveRecord::IrreversibleMigration # Due to trans-gem oddities
|
25
|
+
end
|
26
|
+
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.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.16.0')
|
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,9 +1,7 @@
|
|
1
1
|
//Display the new post
|
2
2
|
$("#wall").prepend("<%= escape_javascript(render @link.post_activity) %>");
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
unblock_all_forms();
|
4
|
+
SocialStream.Timeline.newActivity("<%= escape_javascript dom_id(@link.post_activity) %>");
|
7
5
|
|
8
6
|
$("#link_preview").hide();
|
9
7
|
$("#link_preview").html("");
|
data/linkser/db/migrate/20120208143739_linkser_group_title_and_description_in_activity_object.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
class LinkserGroupTitleAndDescriptionInActivityObject < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
ao_ts = ActivityObject.record_timestamps
|
4
|
+
ActivityObject.record_timestamps = false
|
5
|
+
|
6
|
+
# Fix 'links' table
|
7
|
+
l_ts = Link.record_timestamps
|
8
|
+
Link.record_timestamps = false
|
9
|
+
|
10
|
+
Link.all.each do |l|
|
11
|
+
l.activity_object.title = l.read_attribute(:title)
|
12
|
+
l.activity_object.description = l.read_attribute(:description)
|
13
|
+
l.save!
|
14
|
+
end
|
15
|
+
|
16
|
+
change_table :links do |t|
|
17
|
+
t.remove :title
|
18
|
+
t.remove :description
|
19
|
+
end
|
20
|
+
|
21
|
+
Link.reset_column_information
|
22
|
+
Link.record_timestamps = l_ts
|
23
|
+
|
24
|
+
ActivityObject.record_timestamps = ao_ts
|
25
|
+
end
|
26
|
+
|
27
|
+
def down
|
28
|
+
raise ActiveRecord::IrreversibleMigration # Due to trans-gem oddities
|
29
|
+
end
|
30
|
+
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.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.16.0')
|
16
16
|
s.add_runtime_dependency('linkser', '~> 0.0.10')
|
17
17
|
# Development Gem dependencies
|
18
18
|
s.add_development_dependency('sqlite3-ruby')
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,3 +1,5 @@
|
|
1
|
+
var global;
|
2
|
+
|
1
3
|
////////////////////
|
2
4
|
//Reconnect button interface functions
|
3
5
|
////////////////////
|
@@ -30,8 +32,15 @@ function requestConnectToChat(){
|
|
30
32
|
//Chat interface: Connection boxes
|
31
33
|
////////////////////
|
32
34
|
|
35
|
+
var focusSearchContactsFlag=false;
|
36
|
+
|
33
37
|
function setUserFunctions(){
|
34
|
-
|
38
|
+
|
39
|
+
settingTooltips();
|
40
|
+
|
41
|
+
///////////////////////
|
42
|
+
//Open chatbox function
|
43
|
+
///////////////////////
|
35
44
|
$("div.user_presence").click(function(event, ui){
|
36
45
|
var guest_name = $(this).attr("name");
|
37
46
|
var guest_slug = $(this).attr("slug");
|
@@ -43,10 +52,21 @@ function setUserFunctions(){
|
|
43
52
|
};
|
44
53
|
});
|
45
54
|
|
55
|
+
|
56
|
+
//Hide tooltips on mouseleave
|
57
|
+
$("div.user_presence").mouseleave(function(e){
|
58
|
+
var div = $(this);
|
59
|
+
$.each($(".tooltip:visible"), function(index, value) {
|
60
|
+
if ( $($(".tooltip:visible")[0]).html() == $(div).attr("name") ){
|
61
|
+
$($(".tooltip:visible")[index]).hide();
|
62
|
+
}
|
63
|
+
});
|
64
|
+
});
|
46
65
|
|
47
|
-
|
48
|
-
|
49
|
-
|
66
|
+
|
67
|
+
////////////////////
|
68
|
+
//Chat interface: Status selector
|
69
|
+
////////////////////
|
50
70
|
|
51
71
|
//JQuery DropdwanStatus
|
52
72
|
|
@@ -78,15 +98,105 @@ function setUserFunctions(){
|
|
78
98
|
|
79
99
|
$(document).bind('click', function(e) {
|
80
100
|
var $clicked = $(e.target);
|
101
|
+
|
81
102
|
if (! $clicked.parents().hasClass("dropdown")){
|
82
103
|
//Click outside the select...
|
83
104
|
$(".dropdown dd ul").hide();
|
84
105
|
setStatusWidgetTitle(userStatus);
|
85
106
|
}
|
86
107
|
});
|
108
|
+
|
109
|
+
///////////////
|
110
|
+
//Search contacts enabling
|
111
|
+
///////////////
|
112
|
+
$("select.flexselect").flexselect({
|
113
|
+
allowMismatch: true
|
114
|
+
});
|
115
|
+
|
116
|
+
//Select contact function
|
117
|
+
//callback in changeSelectContactValue()
|
118
|
+
|
119
|
+
|
120
|
+
$("#search_chat_contact_flexselect").focus(function(e) {
|
121
|
+
changeContactListVisibility(true);
|
122
|
+
});
|
123
|
+
|
124
|
+
$("#search_chat_contact_flexselect").blur(function(e) {
|
125
|
+
changeContactListVisibility(false);
|
126
|
+
});
|
127
|
+
|
128
|
+
}
|
129
|
+
|
130
|
+
|
131
|
+
function changeSelectContactValue(name,value){
|
132
|
+
$("#search_chat_contact_flexselect").blur();
|
133
|
+
|
134
|
+
if(value == "ZERO_CONTACTS"){
|
135
|
+
return;
|
136
|
+
}
|
137
|
+
|
138
|
+
var guest_slug = value;
|
139
|
+
var guest_name = name;
|
140
|
+
var guest_jid = guest_slug + "@" + domain;
|
141
|
+
if (createChatBox(guest_slug, guest_name, guest_jid, user_name, user_jid)) {
|
142
|
+
} else {
|
143
|
+
window[getChatVariableFromSlug(guest_slug)].chatbox("option", "boxManager").toggleBox(true);
|
144
|
+
};
|
145
|
+
|
146
|
+
//Check for online status and show notification
|
147
|
+
if (getAllConnectedSlugs().indexOf(guest_slug)==-1) {
|
148
|
+
showOfflineChatNotificationForSlug(guest_slug);
|
149
|
+
}
|
87
150
|
|
151
|
+
changeContactListVisibility(false);
|
88
152
|
}
|
89
153
|
|
154
|
+
|
155
|
+
function settingTooltips(){
|
156
|
+
if (mainChatBox == null) {
|
157
|
+
//Enabling default tooltips
|
158
|
+
$(".user_presence a[title]").tooltip();
|
159
|
+
} else {
|
160
|
+
//Enabling tooltips with center left position
|
161
|
+
|
162
|
+
//Changing Tooltip CSS class by JQuery
|
163
|
+
var ss = document.styleSheets;
|
164
|
+
for (var i=0; i<ss.length; i++) {
|
165
|
+
var rules = ss[i].cssRules || ss[i].rules;
|
166
|
+
for (var j=0; j<rules.length; j++) {
|
167
|
+
if (rules[j].selectorText === ".tooltip") {
|
168
|
+
rules[j].style.background = 'url("black_arrow9.png") repeat scroll 0% 0% transparent'
|
169
|
+
}
|
170
|
+
}
|
171
|
+
}
|
172
|
+
$(".user_presence a[title]").tooltip({
|
173
|
+
opacity: 0.95,
|
174
|
+
relative: false,
|
175
|
+
position: 'top left',
|
176
|
+
offset: [0,37]
|
177
|
+
});
|
178
|
+
}
|
179
|
+
}
|
180
|
+
|
181
|
+
|
182
|
+
function changeContactListVisibility(visible){
|
183
|
+
var nItems = $("#search_chat_contact_flexselect_dropdown ul li").length-1;
|
184
|
+
if (visible){
|
185
|
+
focusSearchContactsFlag=true;
|
186
|
+
if(nItems > 9){
|
187
|
+
changeMainChatBoxHeight(mainChatBoxHeightWhileSearchContacts);
|
188
|
+
} else {
|
189
|
+
var mainChatBoxMinRequiredHeight= mainChatBoxaddonsHeight + 20 + nItems * 19;
|
190
|
+
changeMainChatBoxHeight(mainChatBoxMinRequiredHeight);
|
191
|
+
}
|
192
|
+
$(".users_connected").hide();
|
193
|
+
} else {
|
194
|
+
changeMainChatBoxHeight(getChatBoxHeightRequiredForConnectionBoxes());
|
195
|
+
$(".users_connected").show();
|
196
|
+
}
|
197
|
+
}
|
198
|
+
|
199
|
+
|
90
200
|
function setStatusWidgetTitle(status){
|
91
201
|
|
92
202
|
if((status in sstreamChatStatus)){
|
@@ -179,14 +289,18 @@ function updateChatWindow(){
|
|
179
289
|
$.post("/chatWindow", { userConnected: stropheConnectedAndOnlineStatus }, function(data){
|
180
290
|
$(".tooltip").hide() //Prevent tooltips
|
181
291
|
$("#chat_partial").html(modifyChatPartialIfMainBox(data));
|
292
|
+
updateConnectedUsersOfMainChatBox();
|
182
293
|
if (isStropheConnected()) {
|
183
294
|
setStatusWidgetTitle(userStatus);
|
184
|
-
|
185
|
-
setUserFunctions();
|
186
|
-
updateConnectedUsersOfMainChatBox();
|
295
|
+
setUserFunctions();
|
187
296
|
if (afterNewConnectionFlag){
|
188
297
|
afterNewConnectionFlag = false;
|
189
|
-
|
298
|
+
if(afterFirstConnectionFlag){
|
299
|
+
restoreChatData();
|
300
|
+
afterFirstConnectionFlag = false;
|
301
|
+
} else {
|
302
|
+
updateAllNotifications();
|
303
|
+
}
|
190
304
|
}
|
191
305
|
}
|
192
306
|
});
|
@@ -201,11 +315,23 @@ function getConnectionBoxFromSlug(slug){
|
|
201
315
|
}
|
202
316
|
|
203
317
|
var cacheConnectedUsers = [];
|
318
|
+
|
204
319
|
function hideConnectionBoxFromSlug(slug){
|
205
320
|
if ($('div.user_presence[slug=' + slug + ']').length > 0){
|
206
321
|
$('div.user_presence[slug=' + slug + ']').hide();
|
207
322
|
if(cacheConnectedUsers.indexOf(slug)==-1){
|
208
323
|
cacheConnectedUsers.push(slug);
|
324
|
+
}
|
325
|
+
updateMainChatBoxAfterUserDisconnect();
|
326
|
+
|
327
|
+
//Last user disconnected?
|
328
|
+
if (getAllConnectedSlugs().length ==0){
|
329
|
+
if($(".users_connected p.zero_users_connected").length > 0){
|
330
|
+
$(".users_connected p.zero_users_connected").show();
|
331
|
+
} else {
|
332
|
+
var msg = '<%=I18n.t('chat.zerousers')%>';
|
333
|
+
$(".users_connected").append('<p class="zero_users_connected">' + msg + '</p>')
|
334
|
+
}
|
209
335
|
}
|
210
336
|
}
|
211
337
|
}
|
@@ -214,6 +340,7 @@ function showConnectionBoxFromSlug(slug){
|
|
214
340
|
if ($('div.user_presence[slug=' + slug + ']').length > 0){
|
215
341
|
if (!($('div.user_presence[slug=' + slug + ']').is(":visible"))){
|
216
342
|
$('div.user_presence[slug=' + slug + ']').show();
|
343
|
+
$(".users_connected p.zero_users_connected").hide();
|
217
344
|
}
|
218
345
|
}
|
219
346
|
}
|
@@ -229,17 +356,29 @@ function setUserIconStatus(slug, status){
|
|
229
356
|
}
|
230
357
|
|
231
358
|
function getAllConnectedSlugs(){
|
232
|
-
|
359
|
+
return getAllSlugsByChatConnectedState()[0];
|
360
|
+
}
|
361
|
+
|
362
|
+
function getAllDisconnectedSlugs(){
|
363
|
+
return getAllSlugsByChatConnectedState()[1];
|
364
|
+
}
|
365
|
+
|
366
|
+
function getAllSlugsByChatConnectedState(){
|
367
|
+
var onlineSlugs=[];
|
368
|
+
var offlineSlugs=[];
|
369
|
+
var allSlugs=[];
|
233
370
|
connectionBoxes = $('div.user_presence[slug]');
|
234
371
|
$.each(connectionBoxes, function(index, value) {
|
235
|
-
|
236
|
-
|
237
|
-
|
372
|
+
if($(value).css("display")!="none"){
|
373
|
+
onlineSlugs.push($(value).attr("slug"))
|
374
|
+
} else {
|
375
|
+
offlineSlugs.push($(value).attr("slug"))
|
376
|
+
}
|
377
|
+
allSlugs.push($(value).attr("slug"))
|
238
378
|
});
|
239
|
-
return
|
379
|
+
return [onlineSlugs,offlineSlugs,allSlugs]
|
240
380
|
}
|
241
381
|
|
242
|
-
|
243
382
|
////////////////////
|
244
383
|
//Insert received message in chatbox
|
245
384
|
////////////////////
|
@@ -293,20 +432,24 @@ function putReceivedMessageOnChatWindow(from_jid,from_slug,body,msgID){
|
|
293
432
|
//Notifications on chat Window
|
294
433
|
////////////////////
|
295
434
|
|
296
|
-
function showChatNotificationForSlug(slug,msg){
|
297
|
-
var notification = $("#" + slug).parent().find("div.ui-chatbox-notify");
|
298
|
-
showChatNotification(notification,msg);
|
299
|
-
}
|
300
|
-
|
301
435
|
function showChatNotification(notification,msg){
|
302
436
|
notification.html("<p class==\"ui-chatbox-notify-text\">" + msg + "</p>");
|
303
437
|
notification.css("visibility","visible");
|
304
438
|
notification.fadeIn();
|
305
439
|
}
|
306
440
|
|
307
|
-
function
|
441
|
+
function showChatNotificationForSlug(slug,msg){
|
308
442
|
var notification = $("#" + slug).parent().find("div.ui-chatbox-notify");
|
309
|
-
|
443
|
+
showChatNotification(notification,msg);
|
444
|
+
}
|
445
|
+
|
446
|
+
function showOfflineChatNotificationForSlug(slug){
|
447
|
+
var slug_chat_box = getChatBoxForSlug(slug);
|
448
|
+
if(slug_chat_box!=null){
|
449
|
+
var name = slug_chat_box.attr("name")
|
450
|
+
var msg = name + ' ' + '<%=I18n.t('chat.notify.guestOffline')%>';
|
451
|
+
showChatNotificationForSlug(slug,msg);
|
452
|
+
}
|
310
453
|
}
|
311
454
|
|
312
455
|
function hideChatNotification(notification){
|
@@ -314,6 +457,11 @@ function hideChatNotification(notification){
|
|
314
457
|
notification.css("visibility","hidden");
|
315
458
|
}
|
316
459
|
|
460
|
+
function hideChatNotificationForSlug(slug){
|
461
|
+
var notification = $("#" + slug).parent().find("div.ui-chatbox-notify");
|
462
|
+
hideChatNotification(notification);
|
463
|
+
}
|
464
|
+
|
317
465
|
function notifyWhenUsersDisconnect(){
|
318
466
|
var notification = $("div.ui-chatbox-notify");
|
319
467
|
var msg = '<%=I18n.t('chat.notify.offline')%>';
|
@@ -325,6 +473,17 @@ function hideAllNotifications(){
|
|
325
473
|
hideChatNotification(notification);
|
326
474
|
}
|
327
475
|
|
476
|
+
function updateAllNotifications(){
|
477
|
+
hideAllNotifications();
|
478
|
+
if(disconnectionFlag){
|
479
|
+
notifyWhenUsersDisconnect();
|
480
|
+
} else {
|
481
|
+
//Notification for offline contacts
|
482
|
+
$.each(getAllDisconnectedSlugsWithChatBoxes(), function(index, value) {
|
483
|
+
showOfflineChatNotificationForSlug(value)
|
484
|
+
});
|
485
|
+
}
|
486
|
+
}
|
328
487
|
|
329
488
|
|
330
489
|
////////////////////
|
@@ -332,6 +491,15 @@ function hideAllNotifications(){
|
|
332
491
|
////////////////////
|
333
492
|
|
334
493
|
function updateConnectedUsersOfMainChatBox(){
|
335
|
-
|
336
|
-
|
494
|
+
if(mainChatBox!=null){
|
495
|
+
var connectedUsers = getAllConnectedSlugs().length;
|
496
|
+
changeMainChatBoxHeaderTitle( '<%=I18n.t('chat.title')%>' + " (" + connectedUsers + ")");
|
497
|
+
changeMainChatBoxHeight(getChatBoxHeightRequiredForConnectionBoxes());
|
498
|
+
}
|
337
499
|
}
|
500
|
+
|
501
|
+
|
502
|
+
function updateMainChatBoxAfterUserDisconnect(){
|
503
|
+
changeMainChatBoxHeight(getChatBoxHeightRequiredForConnectionBoxes());
|
504
|
+
updateConnectedUsersOfMainChatBox();
|
505
|
+
}
|