social_stream 0.13.1 → 0.13.2
Sign up to get free protection for your applications and to get access to all the features.
- data/base/app/controllers/comments_controller.rb +2 -12
- data/base/app/views/comments/_new.html.erb +1 -1
- data/base/lib/social_stream/base/version.rb +1 -1
- data/lib/social_stream/version.rb +1 -1
- data/presence/app/assets/javascripts/chat_interface_manager.js.erb +43 -5
- data/presence/app/assets/javascripts/chat_utilities.js +26 -0
- data/presence/app/assets/javascripts/xmpp_client_management.js.erb +5 -1
- data/presence/app/assets/stylesheets/chat.css +24 -0
- data/presence/app/views/chat/_off.html.erb +0 -3
- data/presence/config/locales/en.yml +4 -2
- data/presence/config/locales/es.yml +3 -1
- data/presence/lib/social_stream/presence/version.rb +1 -1
- data/presence/vendor/assets/javascripts/jquery.ui.chatbox.js +18 -2
- data/social_stream.gemspec +1 -1
- metadata +7 -7
@@ -1,18 +1,8 @@
|
|
1
|
-
class CommentsController <
|
2
|
-
|
1
|
+
class CommentsController < ApplicationController
|
2
|
+
include SocialStream::Controllers::Objects
|
3
3
|
|
4
|
-
respond_to :html, :xml, :js
|
5
|
-
|
6
|
-
def destroy
|
7
|
-
@post_activity = resource.post_activity
|
8
|
-
|
9
|
-
destroy!
|
10
|
-
end
|
11
|
-
|
12
4
|
def show
|
13
5
|
parent = resource.post_activity.parent
|
14
6
|
redirect_to polymorphic_path(parent.direct_object,:anchor => dom_id(parent))
|
15
7
|
end
|
16
|
-
|
17
|
-
|
18
8
|
end
|
@@ -15,7 +15,7 @@
|
|
15
15
|
:html => { :class => "new_comment", :id => "new_comment"+dom_id(activity) },
|
16
16
|
:remote => true do |f| %>
|
17
17
|
|
18
|
-
<%= f.hidden_field :
|
18
|
+
<%= f.hidden_field :owner_id %>
|
19
19
|
<%= f.hidden_field :_activity_parent_id %>
|
20
20
|
|
21
21
|
<div class="input_new_comments_container">
|
@@ -18,19 +18,20 @@ statusIcons['dnd'] = "dnd";
|
|
18
18
|
|
19
19
|
var connectButtonTimer;
|
20
20
|
var periodBetweenAttempts=15; //(seg)
|
21
|
-
var connectButtonTimerCounter=periodBetweenAttempts;
|
21
|
+
var connectButtonTimerCounter=periodBetweenAttempts+1;
|
22
22
|
|
23
23
|
function connectButtonTimerFunction(){
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
connectButtonTimerCounter++;
|
25
|
+
if (connectButtonTimerCounter > (periodBetweenAttempts-1)) {
|
26
|
+
clearTimeout(connectButtonTimer);
|
27
27
|
$("#chat_header_title").html('<%=I18n.t('chat.disconnected')%>')
|
28
28
|
}
|
29
29
|
}
|
30
30
|
|
31
31
|
function requestConnectToChat(){
|
32
32
|
if (connectButtonTimerCounter > (periodBetweenAttempts-1)) {
|
33
|
-
connectButtonTimerCounter=0;
|
33
|
+
connectButtonTimerCounter=0;
|
34
|
+
connectButtonTimer = setInterval("connectButtonTimerFunction()", 1000)
|
34
35
|
$("#chat_header_title").html('<%=I18n.t('chat.connecting')%>')
|
35
36
|
return true
|
36
37
|
} else {
|
@@ -292,4 +293,41 @@ function putReceivedMessageOnChatWindow(from_jid,from_slug,body,msgID){
|
|
292
293
|
playSound("onMessageAudio");
|
293
294
|
}
|
294
295
|
|
296
|
+
}
|
297
|
+
|
298
|
+
|
299
|
+
////////////////////
|
300
|
+
//Notifications on chat Window
|
301
|
+
////////////////////
|
302
|
+
|
303
|
+
function showChatNotificationForSlug(slug,msg){
|
304
|
+
var notification = $("#" + slug).parent().find("div.ui-chatbox-notify");
|
305
|
+
showChatNotification(notification,msg);
|
306
|
+
}
|
307
|
+
|
308
|
+
function showChatNotification(notification,msg){
|
309
|
+
notification.html("<p class==\"ui-chatbox-notify-text\">" + msg + "</p>");
|
310
|
+
notification.css("visibility","visible");
|
311
|
+
notification.fadeIn();
|
312
|
+
}
|
313
|
+
|
314
|
+
function hideChatNotificationForSlug(slug){
|
315
|
+
var notification = $("#" + slug).parent().find("div.ui-chatbox-notify");
|
316
|
+
hideChatNotification(notification);
|
317
|
+
}
|
318
|
+
|
319
|
+
function hideChatNotification(notification){
|
320
|
+
notification.fadeOut();
|
321
|
+
notification.css("visibility","hidden");
|
322
|
+
}
|
323
|
+
|
324
|
+
function notifyWhenUsersDisconnect(){
|
325
|
+
var notification = $("div.ui-chatbox-notify");
|
326
|
+
var msg = '<%=I18n.t('chat.notify.offline')%>';
|
327
|
+
showChatNotification(notification,msg);
|
328
|
+
}
|
329
|
+
|
330
|
+
function hideAllNotifications(){
|
331
|
+
var notification = $("div.ui-chatbox-notify");
|
332
|
+
hideChatNotification(notification);
|
295
333
|
}
|
@@ -65,6 +65,19 @@ function blinkTitleOnMessage(username){
|
|
65
65
|
|
66
66
|
|
67
67
|
|
68
|
+
////////////////////
|
69
|
+
//Control user data input on the chatbox
|
70
|
+
////////////////////
|
71
|
+
|
72
|
+
//Return true to allow user to send data to the chatbox.
|
73
|
+
function userChatDataInputControl(){
|
74
|
+
var floodControlBoolean = floodControl();
|
75
|
+
var offlineDataSendControlBoolean = offlineDataSendControl();
|
76
|
+
return (floodControlBoolean && offlineDataSendControlBoolean);
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
|
68
81
|
////////////////////
|
69
82
|
//Antiflood
|
70
83
|
////////////////////
|
@@ -190,6 +203,19 @@ function mustBounceBoxForChatWindow(jqueryUIChatbox){
|
|
190
203
|
|
191
204
|
}
|
192
205
|
|
206
|
+
|
207
|
+
|
208
|
+
////////////////////
|
209
|
+
//Prevent user to send data to the chatbox when he is offline.
|
210
|
+
////////////////////
|
211
|
+
|
212
|
+
function offlineDataSendControl(){
|
213
|
+
return ((!disconnectionFlag) && (isStropheConnected()));
|
214
|
+
}
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
|
193
219
|
////////////////////
|
194
220
|
//Next features...
|
195
221
|
////////////////////
|
@@ -160,6 +160,7 @@ function onConnect(status) {
|
|
160
160
|
log('Strophe is disconnected.');
|
161
161
|
disconnectionFlag = true;
|
162
162
|
clearTimeout(awayTimer);
|
163
|
+
notifyWhenUsersDisconnect();
|
163
164
|
reconnectTimer = setTimeout ("onReconnect()", 5000);
|
164
165
|
} else if (status == Strophe.Status.CONNECTED) {
|
165
166
|
log('Strophe is connected.');
|
@@ -173,13 +174,14 @@ function onConnect(status) {
|
|
173
174
|
sendStatus(userStatus);
|
174
175
|
awayTimer = setInterval("awayTimerFunction()", awayTimerPeriod);
|
175
176
|
timer = setInterval("timerFunction()", timerPeriod);
|
177
|
+
hideAllNotifications();
|
176
178
|
}
|
177
179
|
|
178
180
|
updateChatWindow();
|
179
181
|
}
|
180
182
|
|
181
183
|
function onReconnect(){
|
182
|
-
|
184
|
+
|
183
185
|
if ((!isStropheConnected())&&(userStatus!="offline")) {
|
184
186
|
|
185
187
|
if (reconnectAttempts>0) {
|
@@ -273,6 +275,7 @@ function processAvailablePresenceStanza(presence){
|
|
273
275
|
setUserIconStatus(slug, status);
|
274
276
|
if (cacheConnectedUsers.indexOf(slug) != -1) {
|
275
277
|
showConnectionBoxFromSlug(slug);
|
278
|
+
hideChatNotificationForSlug(slug);
|
276
279
|
}
|
277
280
|
} else {
|
278
281
|
setTimeout("refreshChatWindow()", 3000);
|
@@ -287,6 +290,7 @@ function processUnavailablePresenceStanza(presence){
|
|
287
290
|
if (slug != user_slug) {
|
288
291
|
if (getConnectionBoxFromSlug(slug)!=null){
|
289
292
|
hideConnectionBoxFromSlug(slug)
|
293
|
+
showChatNotificationForSlug(slug,$(getConnectionBoxFromSlug(slug)).attr("name") + " is offline");
|
290
294
|
}
|
291
295
|
}
|
292
296
|
}
|
@@ -62,6 +62,30 @@
|
|
62
62
|
clear: both;
|
63
63
|
}
|
64
64
|
|
65
|
+
div.ui-chatbox-notify{
|
66
|
+
visibility: hidden;
|
67
|
+
background: #E5E5E5;
|
68
|
+
background-color: #E5E5E5;
|
69
|
+
color: black;
|
70
|
+
z-index: 1;
|
71
|
+
position:absolute;
|
72
|
+
top: 0;
|
73
|
+
margin-top: 30px;
|
74
|
+
padding: 4px 0px 4px 0px;
|
75
|
+
width: 236px;
|
76
|
+
text-align: center;
|
77
|
+
border-style:solid;
|
78
|
+
border-width:1px;
|
79
|
+
border-color: #CCCCCC;
|
80
|
+
opacity:0.95;
|
81
|
+
filter:alpha(opacity=95); /* For IE8 and earlier */
|
82
|
+
}
|
83
|
+
|
84
|
+
p.ui-chatbox-notify-text{
|
85
|
+
text-align: center;
|
86
|
+
font-weight: bold;
|
87
|
+
}
|
88
|
+
|
65
89
|
|
66
90
|
/* Ticks */
|
67
91
|
|
@@ -3,7 +3,7 @@ en:
|
|
3
3
|
connecting: "Chat Connecting"
|
4
4
|
reconnecting: "Chat Reconnecting"
|
5
5
|
disconnected: "Chat Disconnected"
|
6
|
-
unableconnect: "Chat
|
6
|
+
unableconnect: "Chat Out of Service"
|
7
7
|
title: "Chat"
|
8
8
|
password: "Password"
|
9
9
|
status:
|
@@ -15,4 +15,6 @@ en:
|
|
15
15
|
settings:
|
16
16
|
title: "Enable and configure Social Stream Chat"
|
17
17
|
checkbox: "Enable or disable Social Stream Chat"
|
18
|
-
update: "Update Settings"
|
18
|
+
update: "Update Settings"
|
19
|
+
notify:
|
20
|
+
offline: "You are offline"
|
@@ -3,7 +3,7 @@ es:
|
|
3
3
|
connecting: "Chat Conectando"
|
4
4
|
reconnecting: "Chat Reconectando"
|
5
5
|
disconnected: "Chat Desconectado"
|
6
|
-
unableconnect: "Chat
|
6
|
+
unableconnect: "Chat Fuera de servicio"
|
7
7
|
title: "Chat"
|
8
8
|
password: "Contraseña"
|
9
9
|
status:
|
@@ -16,4 +16,6 @@ es:
|
|
16
16
|
title: "Activación y configuración del chat de Social Stream"
|
17
17
|
checkbox: "Activar o desactivar chat"
|
18
18
|
update: "Guardar configuración"
|
19
|
+
notify:
|
20
|
+
offline: "Desconectado"
|
19
21
|
|
@@ -167,7 +167,9 @@
|
|
167
167
|
.addClass('ui-icon-minusthick ' + 'chat-thick ' + ' chat-minusthick')
|
168
168
|
.text('minimize')
|
169
169
|
.appendTo(uiChatboxTitlebarMinimize),
|
170
|
-
|
170
|
+
|
171
|
+
|
172
|
+
// content
|
171
173
|
uiChatboxContent = (self.uiChatboxContent = $('<div></div>'))
|
172
174
|
.addClass('ui-widget-content ' +
|
173
175
|
'ui-chatbox-content '
|
@@ -179,6 +181,19 @@
|
|
179
181
|
'ui-chatbox-log'
|
180
182
|
)
|
181
183
|
.appendTo(uiChatboxContent),
|
184
|
+
|
185
|
+
//Notification div
|
186
|
+
uiChatboxNotify = (self.uiChatboxNotify = $('<div></div>'))
|
187
|
+
.addClass('ui-widget-content ' +
|
188
|
+
'ui-chatbox-notify'
|
189
|
+
)
|
190
|
+
.click(function(event) {
|
191
|
+
// anything?
|
192
|
+
self.uiChatboxNotify.fadeOut();
|
193
|
+
})
|
194
|
+
.appendTo(uiChatboxContent),
|
195
|
+
|
196
|
+
|
182
197
|
uiChatboxInput = (self.uiChatboxInput = $('<div></div>'))
|
183
198
|
.addClass('ui-widget-content ' +
|
184
199
|
'ui-chatbox-input'
|
@@ -195,7 +210,8 @@
|
|
195
210
|
.appendTo(uiChatboxInput)
|
196
211
|
.keydown(function(event) {
|
197
212
|
if(event.keyCode && event.keyCode == $.ui.keyCode.ENTER) {
|
198
|
-
|
213
|
+
var userChatDataInputControlBoolean = (((typeof userChatDataInputControl == 'function')&&(userChatDataInputControl()))||((typeof userChatDataInputControl != 'function')));
|
214
|
+
if (userChatDataInputControlBoolean) {
|
199
215
|
msg = $.trim($(this).val());
|
200
216
|
if (msg.length > 0) {
|
201
217
|
self.options.messageSent(self.options.id, self.options.user, msg);
|
data/social_stream.gemspec
CHANGED
@@ -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.10.
|
14
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.10.2')
|
15
15
|
s.add_runtime_dependency('social_stream-documents', '~> 0.5.0')
|
16
16
|
s.add_runtime_dependency('social_stream-events', '~> 0.1.0')
|
17
17
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 47
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 13
|
9
|
-
-
|
10
|
-
version: 0.13.
|
9
|
+
- 2
|
10
|
+
version: 0.13.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- GING - DIT - UPM
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
19
|
+
date: 2011-12-01 00:00:00 +01:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -27,12 +27,12 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - ~>
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
hash:
|
30
|
+
hash: 51
|
31
31
|
segments:
|
32
32
|
- 0
|
33
33
|
- 10
|
34
|
-
-
|
35
|
-
version: 0.10.
|
34
|
+
- 2
|
35
|
+
version: 0.10.2
|
36
36
|
type: :runtime
|
37
37
|
version_requirements: *id001
|
38
38
|
- !ruby/object:Gem::Dependency
|