social_stream 0.20.0 → 0.20.1
Sign up to get free protection for your applications and to get access to all the features.
- data/base/app/assets/images/btn/cheese_close_edit.png +0 -0
- data/base/app/assets/images/btn/cheese_edit.png +0 -0
- data/base/app/assets/stylesheets/cheesecake.css.scss +55 -1
- data/base/app/models/contact.rb +1 -0
- data/base/app/views/cheesecake/_cheesecake.html.erb +14 -16
- data/base/app/views/cheesecake/_index.html.erb +25 -2
- data/base/app/views/cheesecake/_sector_form.html.erb +81 -1
- data/base/lib/social_stream/base/version.rb +1 -1
- data/base/spec/models/contact_spec.rb +11 -0
- data/documents/lib/paperclip/social_stream-documents.rb +14 -0
- data/documents/lib/social_stream/documents/version.rb +1 -1
- data/documents/social_stream-documents.gemspec +1 -1
- data/lib/social_stream/version.rb +1 -1
- data/presence/app/assets/javascripts/chat_audio.js +1 -1
- data/presence/app/assets/javascripts/chat_interface_manager.js.erb +14 -2
- data/presence/app/assets/javascripts/chat_parser.js +1 -1
- data/presence/app/assets/javascripts/chat_window_manager.js +6 -0
- data/presence/app/assets/javascripts/xmpp_client_management.js.erb +2 -1
- data/presence/app/assets/stylesheets/chat.css.scss +3 -0
- data/presence/app/views/chat/_contacts.html.erb +4 -4
- data/presence/lib/social_stream/presence/version.rb +1 -1
- data/presence/social_stream-presence.gemspec +1 -1
- data/social_stream.gemspec +3 -3
- metadata +30 -28
Binary file
|
Binary file
|
@@ -5,6 +5,17 @@
|
|
5
5
|
padding: 20px;
|
6
6
|
padding-top: 0px;
|
7
7
|
}
|
8
|
+
#edit_sector_button {
|
9
|
+
position: absolute;
|
10
|
+
top: 75px;
|
11
|
+
left: 410px;
|
12
|
+
display: none;
|
13
|
+
z-index: 3000;
|
14
|
+
}
|
15
|
+
#edit_sector_button img {
|
16
|
+
width: 24px;
|
17
|
+
height: 24px;
|
18
|
+
}
|
8
19
|
#contacts_cheesecake {
|
9
20
|
width: 440px;
|
10
21
|
height: 440px;
|
@@ -13,7 +24,7 @@
|
|
13
24
|
float: left;
|
14
25
|
position: relative;
|
15
26
|
}
|
16
|
-
#
|
27
|
+
#sector_editor {
|
17
28
|
float: left;
|
18
29
|
position: relative;
|
19
30
|
width: 0px;
|
@@ -257,3 +268,46 @@
|
|
257
268
|
.cheesecake_actor_tipsy.tipsy .logo {
|
258
269
|
display: none;
|
259
270
|
}
|
271
|
+
#sector_form {
|
272
|
+
width: 300px;
|
273
|
+
height: 450px;
|
274
|
+
float: right;
|
275
|
+
}
|
276
|
+
#sector_form .title {
|
277
|
+
width: 300px;
|
278
|
+
text-align: center;
|
279
|
+
font-size: 13px;
|
280
|
+
padding: 20px 0px 15px 0px;
|
281
|
+
}
|
282
|
+
#sector_form .title #edited_sector_name {
|
283
|
+
font-size: 14px;
|
284
|
+
font-weight: bold;
|
285
|
+
}
|
286
|
+
#sector_form #edited_sector_color_out {
|
287
|
+
border: 1px solid $main-color;
|
288
|
+
background: $header-notification-color;
|
289
|
+
width: 14px;
|
290
|
+
height: 14px;
|
291
|
+
padding: 3px;
|
292
|
+
}
|
293
|
+
#sector_form #edited_sector_color_in {
|
294
|
+
background: $secondary-color;
|
295
|
+
width: 14px;
|
296
|
+
height: 14px;
|
297
|
+
}
|
298
|
+
#sector_form .subsector {
|
299
|
+
border: 1px solid $input-border-color;
|
300
|
+
background: $fill-color;
|
301
|
+
width: 260px;
|
302
|
+
min-height: 20px;
|
303
|
+
}
|
304
|
+
#sector_form .subsector .title {
|
305
|
+
width: 260px;
|
306
|
+
text-align: center;
|
307
|
+
font-size: 11px;
|
308
|
+
padding: 5px 0px 5px 0px;
|
309
|
+
}
|
310
|
+
#sector_form .subsector .title .edited_subsector_name {
|
311
|
+
font-size: 11px;
|
312
|
+
font-weight: bold;
|
313
|
+
}
|
data/base/app/models/contact.rb
CHANGED
@@ -50,6 +50,7 @@ class Contact < ActiveRecord::Base
|
|
50
50
|
scope :not_reflexive, where(arel_table[:sender_id].not_eq(arel_table[:receiver_id]))
|
51
51
|
|
52
52
|
scope :pending, active.
|
53
|
+
positive.
|
53
54
|
not_reflexive.
|
54
55
|
joins("LEFT JOIN contacts AS inverse_contacts ON inverse_contacts.id = contacts.inverse_id").
|
55
56
|
where(arel_table[:inverse_id].eq(nil).or(arel_table.alias("inverse_contacts")[:ties_count].eq(0)))
|
@@ -37,41 +37,39 @@ $(function(){
|
|
37
37
|
var cheese = new socialCheesecake.Cheesecake(cheesecakeData);
|
38
38
|
cheese.syncSectorFocusCallbacks = false;
|
39
39
|
cheese.onSectorFocusBegin = function(cheesecake,callback){
|
40
|
-
if(cheese.highlightedSector.auxiliar){
|
40
|
+
if((cheese.highlightedSector)&&(cheese.highlightedSector.auxiliar)){
|
41
41
|
$("#contacts_explorer").animate({width: 0},500,function(){
|
42
42
|
$("#contacts_explorer").hide();
|
43
43
|
});
|
44
|
-
|
45
|
-
|
46
|
-
$("#sector_form").animate({width: 300},500);
|
47
|
-
},100);
|
44
|
+
$("#sector_editor").show();
|
45
|
+
$("#sector_editor").animate({width: 300},500);
|
48
46
|
}else{
|
49
47
|
$("#contacts_grid_available").fadeOut("fast", callback);
|
50
48
|
}
|
51
49
|
};
|
52
50
|
cheese.onSectorFocusEnd = function(cheesecake){
|
53
|
-
if(cheese.highlightedSector.auxiliar){
|
51
|
+
if((cheese.highlightedSector)&&(cheese.highlightedSector.auxiliar)){
|
54
52
|
|
55
53
|
}else{
|
56
|
-
$("#contacts_grid_available").fadeIn("fast");
|
54
|
+
$("#contacts_grid_available").fadeIn("fast");
|
55
|
+
$("#edit_sector_button").fadeIn("fast");
|
57
56
|
}
|
58
57
|
};
|
59
58
|
cheese.onSectorUnfocusBegin = function(cheesecake,callback){
|
60
|
-
if(cheese.highlightedSector.auxiliar){
|
59
|
+
if((cheese.highlightedSector)&&(cheese.highlightedSector.auxiliar)){
|
61
60
|
|
62
61
|
}else{
|
63
|
-
$("#contacts_grid_available").fadeOut("fast", callback);
|
62
|
+
$("#contacts_grid_available").fadeOut("fast", callback);
|
63
|
+
$("#edit_sector_button").fadeOut("fast");
|
64
64
|
}
|
65
65
|
};
|
66
66
|
cheese.onSectorUnfocusEnd = function(cheesecake){
|
67
|
-
if(cheese.highlightedSector.auxiliar){
|
68
|
-
$("#
|
69
|
-
$("#
|
67
|
+
if((cheese.highlightedSector)&&(cheese.highlightedSector.auxiliar)){
|
68
|
+
$("#sector_editor").animate({width: 0},500,function(){
|
69
|
+
$("#sector_editor").hide();
|
70
70
|
});
|
71
|
-
|
72
|
-
|
73
|
-
$("#contacts_explorer").animate({width: 300},500);
|
74
|
-
},100);
|
71
|
+
$("#contacts_explorer").show();
|
72
|
+
$("#contacts_explorer").animate({width: 300},500);
|
75
73
|
}else{
|
76
74
|
$("#contacts_grid_available").fadeIn("fast");
|
77
75
|
}
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
<div id="edit_sector_button"><%= image_tag "btn/cheese_edit.png" %></div>
|
2
2
|
<div id="contacts_cheesecake"></div>
|
3
|
-
<div id="
|
3
|
+
<div id="sector_editor">
|
4
4
|
<%= render :partial => "sector_form" %>
|
5
5
|
</div>
|
6
6
|
<div id="contacts_explorer">
|
@@ -108,5 +108,28 @@
|
|
108
108
|
});
|
109
109
|
}
|
110
110
|
});
|
111
|
+
var edit_sector_click = function(){
|
112
|
+
$("#edit_sector_button").off("click.edit");
|
113
|
+
$("#edit_sector_button").fadeOut("fast",function(){
|
114
|
+
$("#edit_sector_button").html("<%= escape_javascript image_tag "btn/cheese_close_edit.png" %>");
|
115
|
+
$("#edit_sector_button").fadeIn("fast");
|
116
|
+
});
|
117
|
+
$("#contacts_explorer").stop().animate({width: 0},500);
|
118
|
+
$("#sector_editor").stop().animate({width: 300},500, function(){
|
119
|
+
$("#edit_sector_button").on("click.close_edit",close_edit_sector_click);
|
120
|
+
});
|
121
|
+
}
|
122
|
+
var close_edit_sector_click = function(){
|
123
|
+
$("#edit_sector_button").off("click.close_edit");
|
124
|
+
$("#edit_sector_button").fadeOut("fast",function(){
|
125
|
+
$("#edit_sector_button").html("<%= escape_javascript image_tag "btn/cheese_edit.png" %>");
|
126
|
+
$("#edit_sector_button").fadeIn("fast");
|
127
|
+
});
|
128
|
+
$("#sector_editor").stop().animate({width: 0},500);
|
129
|
+
$("#contacts_explorer").stop().animate({width: 300},500,function(){
|
130
|
+
$("#edit_sector_button").on("click.edit",edit_sector_click);
|
131
|
+
});
|
132
|
+
}
|
133
|
+
$("#edit_sector_button").on("click.edit",edit_sector_click);
|
111
134
|
<%= render :partial => 'cheesecake' %>
|
112
135
|
<% end %>
|
@@ -1 +1,81 @@
|
|
1
|
-
|
1
|
+
<form id="sector_form">
|
2
|
+
<div class="title">
|
3
|
+
Editing <span id="edited_sector_name">New sector</span>
|
4
|
+
</div>
|
5
|
+
<div class="block">
|
6
|
+
<div class="form_row">
|
7
|
+
<div class="form_label">
|
8
|
+
Name:
|
9
|
+
</div>
|
10
|
+
<div class="form_field">
|
11
|
+
<input type="text" class="form_tag" value="New sector">
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
<div class="form_row">
|
15
|
+
<div class="form_label">
|
16
|
+
Color:
|
17
|
+
</div>
|
18
|
+
<div class="form_field">
|
19
|
+
<div id="edited_sector_color_out">
|
20
|
+
<div id="edited_sector_color_in"></div>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
<% for i in 1..4 do %>
|
25
|
+
<div class="form_row">
|
26
|
+
<div class="subsector">
|
27
|
+
<div class="title">
|
28
|
+
Subsector <span class="edited_subsector_name">New subsector <%= i %></span>
|
29
|
+
</div>
|
30
|
+
<div class="content" <%= i==1 ? '' : 'style=display:none;' %>>
|
31
|
+
<div class="form_row">
|
32
|
+
<div class="form_label">
|
33
|
+
Name:
|
34
|
+
</div>
|
35
|
+
<div class="form_field">
|
36
|
+
<input type="text" class="form_tag" value="New subsector <%= i %>">
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<div class="form_row">
|
40
|
+
<div class="form_label">
|
41
|
+
Permissions:
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
<div class="form_row">
|
45
|
+
<div class="form_field">
|
46
|
+
<table class="tableCheckBoxOptions">
|
47
|
+
<% default_permissions.each_with_index do |p, i| %>
|
48
|
+
<tr>
|
49
|
+
<td>
|
50
|
+
<div contain=<%= dom_id p %> class="checkboxPermissionOptionLeft">
|
51
|
+
<input id=<%= dom_id p %> class="permission" type="checkbox"/>
|
52
|
+
<label for=<%= dom_id p %>><%= p.description(:brief) %></label>
|
53
|
+
<div class="clearfloat"></div>
|
54
|
+
</div></td>
|
55
|
+
</tr>
|
56
|
+
<% end %>
|
57
|
+
</table>
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
</div>
|
63
|
+
<% end %>
|
64
|
+
</div>
|
65
|
+
</form>
|
66
|
+
|
67
|
+
<%= javascript_tag do %>
|
68
|
+
$(function(){
|
69
|
+
$(".subsector .title").off("click.toggle");
|
70
|
+
$(".subsector .title").on("click.toggle",function(){
|
71
|
+
if(!$(this).parent().find(".content").is(':visible')){
|
72
|
+
$(".subsector .content").each(function(){
|
73
|
+
if($(this).parent().find(".content").is(':visible')){
|
74
|
+
$(this).slideToggle();
|
75
|
+
}
|
76
|
+
});
|
77
|
+
$(this).parent().find(".content").slideToggle();
|
78
|
+
}
|
79
|
+
})
|
80
|
+
});
|
81
|
+
<% end %>
|
@@ -35,6 +35,17 @@ describe Contact do
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
context "reject" do
|
39
|
+
before do
|
40
|
+
@contact = Factory(:reject).contact
|
41
|
+
@contact.inverse!
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should not appear as pending" do
|
45
|
+
@contact.receiver.pending_contacts.should_not include(@contact.inverse!)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
38
49
|
context "a pair" do
|
39
50
|
before do
|
40
51
|
@friend = Factory(:friend)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# Monkey patch https://github.com/thoughtbot/paperclip/issues/293#issuecomment-2484541
|
2
|
+
# Monkey patch https://github.com/thoughtbot/paperclip/commit/2583a27df497e72ec7a200b6aa707948e88fd166
|
2
3
|
#
|
3
4
|
# Remove with paperclip > 2.5.0
|
4
5
|
require 'paperclip'
|
@@ -45,4 +46,17 @@ module Paperclip::ClassMethods
|
|
45
46
|
attachment.send(:flush_errors)
|
46
47
|
end
|
47
48
|
end
|
49
|
+
|
50
|
+
def validates_attachment_presence name, options = {}
|
51
|
+
message = options[:message] || :empty
|
52
|
+
validates_each :"#{name}_file_name" do |record, attr, value|
|
53
|
+
if_clause_passed = options[:if].nil? || (options[:if].respond_to?(:call) ? options[:if].call(record) != false : record.send(options[:if]))
|
54
|
+
unless_clause_passed = options[:unless].nil? || (options[:unless].respond_to?(:call) ? !!options[:unless].call(record) == false : !record.send(options[:unless]))
|
55
|
+
|
56
|
+
if if_clause_passed && unless_clause_passed && value.blank?
|
57
|
+
record.errors.add(name, message)
|
58
|
+
record.errors.add("#{name}_file_name", message)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
48
62
|
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.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.15.1')
|
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')
|
@@ -23,7 +23,7 @@ function initSound(sound){
|
|
23
23
|
var html5audio=document.createElement('audio')
|
24
24
|
|
25
25
|
if (html5audio.canPlayType){
|
26
|
-
path = 'assets/chat/' + sound;
|
26
|
+
path = '/assets/chat/' + sound;
|
27
27
|
window[sound] = new Audio();
|
28
28
|
|
29
29
|
for(i=0; i<html5_audiotypes.length; i++){
|
@@ -183,6 +183,7 @@ function updateChatWindow(){
|
|
183
183
|
setStatusWidgetTitle(userStatus);
|
184
184
|
$(".user_presence a[title]").tooltip();
|
185
185
|
setUserFunctions();
|
186
|
+
updateConnectedUsersOfMainChatBox();
|
186
187
|
if (afterNewConnectionFlag){
|
187
188
|
afterNewConnectionFlag = false;
|
188
189
|
restoreChatData();
|
@@ -230,7 +231,7 @@ function getAllConnectedSlugs(){
|
|
230
231
|
connectedSlugs=[];
|
231
232
|
connectionBoxes = $('div.user_presence[slug]');
|
232
233
|
$.each(connectionBoxes, function(index, value) {
|
233
|
-
|
234
|
+
if($(value).css("display")!="none"){
|
234
235
|
connectedSlugs.push($(value).attr("slug"))
|
235
236
|
}
|
236
237
|
});
|
@@ -321,4 +322,15 @@ function notifyWhenUsersDisconnect(){
|
|
321
322
|
function hideAllNotifications(){
|
322
323
|
var notification = $("div.ui-chatbox-notify");
|
323
324
|
hideChatNotification(notification);
|
324
|
-
}
|
325
|
+
}
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
////////////////////
|
330
|
+
//Update connected users of MainChatBox
|
331
|
+
////////////////////
|
332
|
+
|
333
|
+
function updateConnectedUsersOfMainChatBox(){
|
334
|
+
var connectedUsers = getAllConnectedSlugs().length;
|
335
|
+
changeMainChatBoxHeaderTitle( '<%=I18n.t('chat.title')%>' + " (" + connectedUsers + ")");
|
336
|
+
}
|
@@ -143,7 +143,7 @@ function splitFirst(word,key){
|
|
143
143
|
function buildIconImage(icon){
|
144
144
|
if (icon in chatIcons){
|
145
145
|
image_file = chatIcons[icon]
|
146
|
-
return "<img class=\"chatEmoticon\" src=\"assets/emoticons/" + image_file + "\"/>";
|
146
|
+
return "<img class=\"chatEmoticon\" src=\"/assets/emoticons/" + image_file + "\"/>";
|
147
147
|
}
|
148
148
|
return icon
|
149
149
|
}
|
@@ -250,6 +250,8 @@ function createMainChatBox(){
|
|
250
250
|
$("#chat_partial").css("margin-left",-3)
|
251
251
|
$(".dropdown dd ul").css("min-width",147)
|
252
252
|
|
253
|
+
//Header title
|
254
|
+
updateConnectedUsersOfMainChatBox();
|
253
255
|
}
|
254
256
|
}
|
255
257
|
}
|
@@ -270,3 +272,7 @@ function modifyChatPartialIfMainBox(chatPartial){
|
|
270
272
|
|
271
273
|
return chatPartial;
|
272
274
|
}
|
275
|
+
|
276
|
+
function changeMainChatBoxHeaderTitle(title){
|
277
|
+
$($(mainChatBox.parent().parent()).find(".ui-chatbox-titlebar").find("span")[0]).html(title);
|
278
|
+
}
|
@@ -2,7 +2,6 @@
|
|
2
2
|
//Global constants
|
3
3
|
////////////////////
|
4
4
|
var domain = '<%=SocialStream::Presence.domain%>';
|
5
|
-
var sound_path = "/assets/audio/chat/onMessage";
|
6
5
|
|
7
6
|
|
8
7
|
////////////////////
|
@@ -319,6 +318,7 @@ function processAvailablePresenceStanza(presence){
|
|
319
318
|
if (cacheConnectedUsers.indexOf(slug) != -1) {
|
320
319
|
showConnectionBoxFromSlug(slug);
|
321
320
|
hideChatNotificationForSlug(slug);
|
321
|
+
updateConnectedUsersOfMainChatBox();
|
322
322
|
}
|
323
323
|
} else {
|
324
324
|
setTimeout("refreshChatWindow()", 3000);
|
@@ -334,6 +334,7 @@ function processUnavailablePresenceStanza(presence){
|
|
334
334
|
if (getConnectionBoxFromSlug(slug)!=null){
|
335
335
|
hideConnectionBoxFromSlug(slug)
|
336
336
|
showChatNotificationForSlug(slug,$(getConnectionBoxFromSlug(slug)).attr("name") + " is offline");
|
337
|
+
updateConnectedUsersOfMainChatBox();
|
337
338
|
}
|
338
339
|
}
|
339
340
|
}
|
@@ -28,6 +28,8 @@
|
|
28
28
|
.ui-chatbox-titlebar {
|
29
29
|
padding: 3px 3px 3px 3px;
|
30
30
|
height: 20px;
|
31
|
+
background-color: $secondary-color;
|
32
|
+
color: $main-color;
|
31
33
|
}
|
32
34
|
|
33
35
|
.ui-chatbox-content {
|
@@ -53,6 +55,7 @@
|
|
53
55
|
margin: 5px 5px 5px 5px;
|
54
56
|
border: 1px solid $separation-color;
|
55
57
|
height: 35px;
|
58
|
+
color: $main-color;
|
56
59
|
}
|
57
60
|
|
58
61
|
|
@@ -12,10 +12,10 @@
|
|
12
12
|
<dt><a href=""><span><%=t('chat.status.choose')%></span></a></dt>
|
13
13
|
<dd>
|
14
14
|
<ul id="statusList">
|
15
|
-
<li><a id="available" href="#" class="option"><img class="flag" src="assets/status/available.png" alt=""/> <%=t('chat.status.available')%> <span class="value">available</span></a></li>
|
16
|
-
<li><a id="away" href="#" class="option"><img class="flag" src="assets/status/away.png" alt=""/> <%=t('chat.status.away')%> <span class="value">away</span></a></li>
|
17
|
-
<li><a id="dnd" href="#" class="option"><img class="flag" src="assets/status/dnd.png" alt=""/> <%=t('chat.status.dnd')%> <span class="value">dnd</span></a></li>
|
18
|
-
<li><a id="offline" href="#" class="option"><img class="flag" src="assets/status/offline.png" alt=""/> <%=t('chat.status.offline')%> <span class="value">offline</span></a></li>
|
15
|
+
<li><a id="available" href="#" class="option"><img class="flag" src="/assets/status/available.png" alt=""/> <%=t('chat.status.available')%> <span class="value">available</span></a></li>
|
16
|
+
<li><a id="away" href="#" class="option"><img class="flag" src="/assets/status/away.png" alt=""/> <%=t('chat.status.away')%> <span class="value">away</span></a></li>
|
17
|
+
<li><a id="dnd" href="#" class="option"><img class="flag" src="/assets/status/dnd.png" alt=""/> <%=t('chat.status.dnd')%> <span class="value">dnd</span></a></li>
|
18
|
+
<li><a id="offline" href="#" class="option"><img class="flag" src="/assets/status/offline.png" alt=""/> <%=t('chat.status.offline')%> <span class="value">offline</span></a></li>
|
19
19
|
</ul>
|
20
20
|
</dd>
|
21
21
|
</div>
|
data/social_stream.gemspec
CHANGED
@@ -11,11 +11,11 @@ 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.15.
|
15
|
-
s.add_runtime_dependency('social_stream-documents', '~> 0.10.
|
14
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.15.1')
|
15
|
+
s.add_runtime_dependency('social_stream-documents', '~> 0.10.1')
|
16
16
|
s.add_runtime_dependency('social_stream-events', '~> 0.7.0')
|
17
17
|
s.add_runtime_dependency('social_stream-linkser', '~> 0.5.0')
|
18
|
-
s.add_runtime_dependency('social_stream-presence', '~> 0.6.
|
18
|
+
s.add_runtime_dependency('social_stream-presence', '~> 0.6.1')
|
19
19
|
|
20
20
|
# Development Gem dependencies
|
21
21
|
#
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.20.
|
4
|
+
version: 0.20.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,29 +14,29 @@ date: 2012-02-06 00:00:00.000000000Z
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: social_stream-base
|
17
|
-
requirement: &
|
17
|
+
requirement: &82379940 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.15.
|
22
|
+
version: 0.15.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *82379940
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: social_stream-documents
|
28
|
-
requirement: &
|
28
|
+
requirement: &82379690 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.10.
|
33
|
+
version: 0.10.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *82379690
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: social_stream-events
|
39
|
-
requirement: &
|
39
|
+
requirement: &82379420 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 0.7.0
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *82379420
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: social_stream-linkser
|
50
|
-
requirement: &
|
50
|
+
requirement: &82379060 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,21 +55,21 @@ dependencies:
|
|
55
55
|
version: 0.5.0
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *82379060
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: social_stream-presence
|
61
|
-
requirement: &
|
61
|
+
requirement: &82378730 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.6.
|
66
|
+
version: 0.6.1
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *82378730
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: capybara
|
72
|
-
requirement: &
|
72
|
+
requirement: &82378380 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 0.3.9
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *82378380
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: sqlite3
|
83
|
-
requirement: &
|
83
|
+
requirement: &82356550 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *82356550
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: ruby-debug19
|
94
|
-
requirement: &
|
94
|
+
requirement: &82356300 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *82356300
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rspec-rails
|
105
|
-
requirement: &
|
105
|
+
requirement: &82356030 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: 2.8.0
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *82356030
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: factory_girl
|
116
|
-
requirement: &
|
116
|
+
requirement: &82355770 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ~>
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: 1.3.2
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *82355770
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: forgery
|
127
|
-
requirement: &
|
127
|
+
requirement: &82355450 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: 0.4.2
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *82355450
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: ci_reporter
|
138
|
-
requirement: &
|
138
|
+
requirement: &82355150 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - ~>
|
@@ -143,7 +143,7 @@ dependencies:
|
|
143
143
|
version: 1.6.4
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
|
-
version_requirements: *
|
146
|
+
version_requirements: *82355150
|
147
147
|
description: Social Stream is a Ruby on Rails engine for building social network websites.
|
148
148
|
It supports contacts, posts, file uploads, private messages and many more.
|
149
149
|
email:
|
@@ -226,6 +226,8 @@ files:
|
|
226
226
|
- base/app/assets/images/btn/btn_star.png
|
227
227
|
- base/app/assets/images/btn/btn_tag.png
|
228
228
|
- base/app/assets/images/btn/btn_write.png
|
229
|
+
- base/app/assets/images/btn/cheese_close_edit.png
|
230
|
+
- base/app/assets/images/btn/cheese_edit.png
|
229
231
|
- base/app/assets/images/btn/close.png
|
230
232
|
- base/app/assets/images/btn/date.png
|
231
233
|
- base/app/assets/images/btn/delete.png
|