social_stream-base 0.7.8 → 0.7.9
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.
- data/app/assets/images/btn/delete.png +0 -0
- data/app/assets/images/icons/favicon.ico +0 -0
- data/app/assets/javascripts/activities.js.erb +6 -0
- data/app/assets/javascripts/relation_customs.js +3 -0
- data/app/assets/stylesheets/activities.css +2 -2
- data/app/assets/stylesheets/base.css +1 -1
- data/app/assets/stylesheets/relation_customs.css +38 -31
- data/app/mailers/notification_mailer.rb +1 -1
- data/app/models/activity.rb +18 -4
- data/app/models/actor.rb +22 -12
- data/app/models/relation.rb +3 -0
- data/app/views/activities/_new.html.erb +1 -1
- data/app/views/activities/_options.html.erb +3 -0
- data/app/views/groups/_sidebar_index.html.erb +2 -2
- data/app/views/permissions/_index.html.erb +2 -3
- data/app/views/relation/customs/_list.html.erb +37 -0
- data/app/views/relation/customs/_update_rules.js.erb +5 -0
- data/app/views/relation/customs/index.html.erb +0 -10
- data/app/views/relation/customs/update.js.erb +8 -3
- data/config/locales/en.yml +8 -4
- data/lib/social_stream/base/version.rb +1 -1
- data/social_stream-base.gemspec +1 -1
- data/spec/controllers/settings_controller_spec.rb +41 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/vendor/assets/stylesheets/jqcloud.css +9 -9
- metadata +10 -7
Binary file
|
Binary file
|
@@ -34,6 +34,7 @@ function checkBoxEnable(id) {
|
|
34
34
|
};
|
35
35
|
|
36
36
|
$(':checkbox[id^="relation_custom"]:checked:not(#' + id + ')').checkBox('changeCheckStatus', false);
|
37
|
+
$('div[contain$='+id+'] div.options').show();
|
37
38
|
|
38
39
|
$.ajax({
|
39
40
|
url: "../permissions",
|
@@ -68,6 +69,8 @@ function checkBoxDisable(id) {
|
|
68
69
|
$("#permissions").html("");
|
69
70
|
$("#permissions").hide();
|
70
71
|
|
72
|
+
$('div[contain$='+id+'] div.options').hide();
|
73
|
+
|
71
74
|
break;
|
72
75
|
|
73
76
|
case "permission":
|
@@ -16,10 +16,10 @@
|
|
16
16
|
#input_activities { border-color: #0656a4; color: #2A3890; padding: 5px 5px 5px 5px;
|
17
17
|
border:1px solid #BDC7D8; width:95%;}
|
18
18
|
#activities_share_btn { text-align: right; padding: 5px 16px 0px 10px; vertical-align: middle;}
|
19
|
-
#securities{ display:inline-block; text-align:left; float: left;}
|
19
|
+
#securities{ display:inline-block; text-align:left; float: left; padding-left:5px;}
|
20
20
|
|
21
21
|
/******************* WALL - ACTIVITY ***************/
|
22
|
-
.activity { text-align:left; display: block; vertical-align: top; padding:
|
22
|
+
.activity { text-align:left; display: block; vertical-align: top; padding: 10px 0px 0px 0px;
|
23
23
|
display: inline-block; color: #000; width: 100%; font-size: 13px; color: #2A3890;}
|
24
24
|
.actor_logo { width: 38px; padding: 8px 0px 5px 5px; display: inline-block; vertical-align: top;}
|
25
25
|
.activity_content { padding: 8px 0px 0px 0px; display: inline-block; color: #000; width: 90%;}
|
@@ -46,7 +46,7 @@ label.validation_error{color: #D8000C;background-color: #FFBABA;border: 1px soli
|
|
46
46
|
/************Forms SECTION **************/
|
47
47
|
input.other_blue{ background:#497FC1; border:0px; cursor:pointer; font-size:1.0em; line-height:135%;
|
48
48
|
margin-right:4px; color:white; padding:1px;}
|
49
|
-
textarea.new_contact_text_area{
|
49
|
+
textarea.new_contact_text_area{ height: 100px; color: #2A3890;}
|
50
50
|
.colum_field_title{ text-align: center; }
|
51
51
|
.needed{color:#D8000C;font-weight: normal;}
|
52
52
|
.select_relations select{ font-size: 12px; color: white; background-color:#1F4A75;}
|
@@ -19,7 +19,8 @@ span.ui-helper-hidden {
|
|
19
19
|
display: block;
|
20
20
|
font-family: sans-serif;
|
21
21
|
padding: 2px;
|
22
|
-
margin-left:
|
22
|
+
margin-left: 10px;
|
23
|
+
float: left;
|
23
24
|
}
|
24
25
|
|
25
26
|
#relation_customs label.ui-checkbox, #permissions label.ui-checkbox {
|
@@ -46,12 +47,42 @@ span.ui-radio-state-checked-hover {
|
|
46
47
|
background-position: 0 -200px;
|
47
48
|
}
|
48
49
|
|
50
|
+
#relation_customs input {
|
51
|
+
float: left;
|
52
|
+
}
|
53
|
+
|
54
|
+
#relation_customs span {
|
55
|
+
float: left;
|
56
|
+
}
|
57
|
+
|
49
58
|
form {
|
50
59
|
overflow: hidden;
|
51
60
|
height: 1%;
|
52
61
|
margin: 0px 0;
|
53
62
|
}
|
54
63
|
|
64
|
+
#relation_customs .options {
|
65
|
+
float: right;
|
66
|
+
display: none;
|
67
|
+
}
|
68
|
+
|
69
|
+
#relation_customs .button {
|
70
|
+
margin-left: 0;
|
71
|
+
}
|
72
|
+
|
73
|
+
#cancel_new_relation_custom {
|
74
|
+
margin-right: 10px;
|
75
|
+
}
|
76
|
+
|
77
|
+
.relation_custom_name_form {
|
78
|
+
display: none;
|
79
|
+
}
|
80
|
+
|
81
|
+
.cancel_edit_relation_custom {
|
82
|
+
margin-right: 10px;
|
83
|
+
float: right;
|
84
|
+
}
|
85
|
+
|
55
86
|
.ui-helper-hidden-accessible {
|
56
87
|
position: absolute;
|
57
88
|
left: -999em;
|
@@ -78,10 +109,14 @@ form {
|
|
78
109
|
padding: 15px 20px 15px 20px;
|
79
110
|
}
|
80
111
|
|
81
|
-
|
112
|
+
#new_relation {
|
82
113
|
text-align: right;
|
83
114
|
padding: 5px 0px 5px 0px;
|
84
|
-
margin: 0px 10px 15px
|
115
|
+
margin: 0px 10px 15px 30px;
|
116
|
+
}
|
117
|
+
|
118
|
+
#new_relation_custom_input_block {
|
119
|
+
display: none;
|
85
120
|
}
|
86
121
|
|
87
122
|
input.privacy_input_new{
|
@@ -135,34 +170,6 @@ span.privacy_span_new {
|
|
135
170
|
margin: 0px 0px 0px 0px;
|
136
171
|
}
|
137
172
|
|
138
|
-
#slider-range{
|
139
|
-
height:120px;
|
140
|
-
margin-left: auto;
|
141
|
-
margin-right: auto;
|
142
|
-
background-color: #1f4a75;
|
143
|
-
}
|
144
|
-
|
145
|
-
.slider-div{
|
146
|
-
float: right;
|
147
|
-
margin-right: 5px;
|
148
|
-
}
|
149
|
-
|
150
|
-
.slider-header, .slider-footer{
|
151
|
-
text-align: center;
|
152
|
-
border: 0;
|
153
|
-
color: #1f4a75;
|
154
|
-
font-weight: bold;
|
155
|
-
width: 100%;
|
156
|
-
}
|
157
|
-
|
158
|
-
.slider-header {
|
159
|
-
margin-bottom: 10px;
|
160
|
-
}
|
161
|
-
|
162
|
-
.slider-footer {
|
163
|
-
margin-top: 10px;
|
164
|
-
}
|
165
|
-
|
166
173
|
.privacy_block_section{
|
167
174
|
margin-top: 50px;
|
168
175
|
}
|
@@ -23,7 +23,7 @@ class NotificationMailer < ActionMailer::Base
|
|
23
23
|
#subject = notifications.subject_decoded
|
24
24
|
#END OF DIFFERENCE----------------------------
|
25
25
|
subject = strip_tags(subject) unless subject.html_safe?
|
26
|
-
mail(:to => receiver.send(Mailboxer.email_method), :subject => t('mailboxer.notification_mailer.subject', :subject => subject)) do |format|
|
26
|
+
mail(:to => receiver.send(Mailboxer.email_method,notification), :subject => t('mailboxer.notification_mailer.subject', :subject => subject)) do |format|
|
27
27
|
format.text {render __method__}
|
28
28
|
format.html {render __method__}
|
29
29
|
end
|
data/app/models/activity.rb
CHANGED
@@ -160,7 +160,7 @@ class Activity < ActiveRecord::Base
|
|
160
160
|
def new_like(subject)
|
161
161
|
a = children.new :verb => "like",
|
162
162
|
:contact => subject.contact_to!(receiver),
|
163
|
-
:relation_ids =>
|
163
|
+
:relation_ids => self.relation_ids
|
164
164
|
|
165
165
|
if direct_activity_object.present?
|
166
166
|
a.activity_objects << direct_activity_object
|
@@ -267,16 +267,30 @@ class Activity < ActiveRecord::Base
|
|
267
267
|
allow?(subject, 'destroy')
|
268
268
|
end
|
269
269
|
|
270
|
+
# The {Relation} with which activity is shared
|
271
|
+
def audience_in_words(subject)
|
272
|
+
visible_relations =
|
273
|
+
relations.select{ |r| r.actor_id == Actor.normalize_id(subject) || r.is_a?(Relation::Public) }
|
274
|
+
|
275
|
+
visible_relations.present? ?
|
276
|
+
I18n.t('activity.audience.visible', :audience => visible_relations.map(&:name).join(", ")) :
|
277
|
+
I18n.t('activity.audience.hidden', :audience => relations.map(&:actor).map(&:name).join(", "))
|
278
|
+
end
|
279
|
+
|
270
280
|
private
|
271
281
|
|
272
282
|
# Before validation callback
|
273
283
|
#
|
274
284
|
# Fill the relations when posting to other subject's wall
|
275
285
|
def fill_relations
|
276
|
-
return if
|
286
|
+
return if relation_ids.present?
|
277
287
|
|
278
|
-
self.
|
279
|
-
contact.
|
288
|
+
self.relation_ids =
|
289
|
+
if contact.reflexive?
|
290
|
+
Array(receiver.relation_public.id)
|
291
|
+
else
|
292
|
+
receiver.relation_customs.allow(contact.sender, 'create', 'activity').map(&:id)
|
293
|
+
end
|
280
294
|
end
|
281
295
|
|
282
296
|
#Send notifications to actors based on proximity, interest and permissions
|
data/app/models/actor.rb
CHANGED
@@ -137,17 +137,33 @@ class Actor < ActiveRecord::Base
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
-
#
|
141
|
-
|
142
|
-
|
140
|
+
#Returning the email address of the model if an email should be sent for this object (Message or Notification).
|
141
|
+
#If the actor is a Group and has no email address, an array with the email of the highest rank members will be
|
142
|
+
#returned isntead.
|
143
|
+
#
|
144
|
+
#If no mail has to be sent, return nil.
|
145
|
+
def mailboxer_email(object)
|
146
|
+
#If actor has disabled the emails, return nil.
|
147
|
+
return nil if !notify_by_email
|
148
|
+
#If actor has enabled the emails and has email
|
149
|
+
return "#{name} <#{email}>" if email.present?
|
150
|
+
#If actor is a Group, has enabled emails but no mail we return the highest_rank ones.
|
143
151
|
if (group = self.subject).is_a? Group
|
144
152
|
relation = group.relation_customs.sort.first
|
145
153
|
receivers = group.contact_actors(:direction => :sent, :relations => relation)
|
146
154
|
emails = Array.new
|
147
155
|
receivers.each do |receiver|
|
148
|
-
|
156
|
+
receiver_emails = receiver.mailboxer_email(object)
|
157
|
+
case receiver_emails
|
158
|
+
when String
|
159
|
+
emails << receiver_emails
|
160
|
+
when Array
|
161
|
+
receveir_emails.each do |receveir_email|
|
162
|
+
emails << receiver_email
|
163
|
+
end
|
164
|
+
end
|
149
165
|
end
|
150
|
-
|
166
|
+
return emails
|
151
167
|
end
|
152
168
|
end
|
153
169
|
|
@@ -282,7 +298,7 @@ class Actor < ActiveRecord::Base
|
|
282
298
|
#
|
283
299
|
#
|
284
300
|
def activity_relations(subject, options = {})
|
285
|
-
return
|
301
|
+
return relation_customs if Actor.normalize(subject) == self
|
286
302
|
|
287
303
|
Array.new
|
288
304
|
end
|
@@ -404,12 +420,6 @@ class Actor < ActiveRecord::Base
|
|
404
420
|
a
|
405
421
|
end
|
406
422
|
|
407
|
-
#Returning whether an email should be sent for this object (Message or Notification).
|
408
|
-
#Required by Mailboxer gem.
|
409
|
-
def should_email?(object)
|
410
|
-
return notify_by_email
|
411
|
-
end
|
412
|
-
|
413
423
|
# Use slug as parameter
|
414
424
|
def to_param
|
415
425
|
slug
|
data/app/models/relation.rb
CHANGED
@@ -32,6 +32,9 @@ class Relation < ActiveRecord::Base
|
|
32
32
|
has_many :ties, :dependent => :destroy
|
33
33
|
has_many :contacts, :through => :ties
|
34
34
|
|
35
|
+
has_many :audiences, :dependent => :destroy
|
36
|
+
has_many :activities, :through => :audiences
|
37
|
+
|
35
38
|
scope :mode, lambda { |st, rt|
|
36
39
|
where(:sender_type => st, :receiver_type => rt)
|
37
40
|
}
|
@@ -17,7 +17,7 @@
|
|
17
17
|
</div>
|
18
18
|
|
19
19
|
<% if current_subject == receiver %>
|
20
|
-
<div id="securities"><%= select_tag :_relation_ids, options_for_select(current_subject.activity_relations(receiver).sort.map{ |r| [ r.name, r.id ] }), :id => 'security', :multiple => true, :title => t('
|
20
|
+
<div id="securities"><%= select_tag :_relation_ids, options_for_select(current_subject.activity_relations(receiver).sort.map{ |r| [ r.name, r.id ] }), :id => 'security', :multiple => true, :title => t('relation_public.name') %></div>
|
21
21
|
<% end %>
|
22
22
|
|
23
23
|
<div id="activities_share_btn">
|
@@ -1,5 +1,8 @@
|
|
1
1
|
<div class="activity_options">
|
2
2
|
<ul class="activity_options" >
|
3
|
+
<% if user_signed_in? %>
|
4
|
+
<li><div class="security"><%= image_tag('btn/btn_security.png', :title => activity.audience_in_words(current_subject)) %></div></li>
|
5
|
+
<% end %>
|
3
6
|
<li><div class="post_time_ago"><%= t('time.ago', :time => time_ago_in_words(activity.created_at)) %></div></li>
|
4
7
|
<% if activity.is_root? && user_signed_in? %>
|
5
8
|
<li><div class="verb_comment"> · <%= link_to t('activity.to_comment'), "#", :class => "to_comment" %> </div></li>
|
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
<div class="block">
|
4
4
|
<div class="header">
|
5
|
-
<%= image_tag('btn/btn_tag.png', :class => "
|
5
|
+
<%= image_tag('btn/btn_tag.png', :class => "header_icon") %>
|
6
6
|
<div class="header_text">
|
7
7
|
<%= t 'group.cloud' %>
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div id="wordcloud" class="content"></div>
|
11
|
-
</div
|
11
|
+
</div>
|
12
12
|
|
13
13
|
<%= render :partial => 'contacts/suggestions_and_pendings' %>
|
14
14
|
|
@@ -4,8 +4,6 @@
|
|
4
4
|
|
5
5
|
<p class="sectionTitle"><%= raw t('permission.of_relation.choose', :name => h(@relation.name)) %></p>
|
6
6
|
|
7
|
-
<div class="privacy_add_element"></div>
|
8
|
-
|
9
7
|
<table class="tableCheckBoxOptions">
|
10
8
|
<% default_permissions.each_with_index do |p, i| %>
|
11
9
|
<tr>
|
@@ -13,6 +11,7 @@
|
|
13
11
|
<div contain=<%= dom_id p %> class="checkboxPermissionOptionLeft">
|
14
12
|
<input id=<%= dom_id p %> optionOf="permissions" type="checkbox"/>
|
15
13
|
<label for=<%= dom_id p %>><%= p.description(:brief) %></label>
|
14
|
+
<div class="clearfloat"></div>
|
16
15
|
</div>
|
17
16
|
</td>
|
18
17
|
<% if i == 0 %>
|
@@ -28,7 +27,7 @@
|
|
28
27
|
|
29
28
|
<%= raw t('privacy.intro', :relation => h(@relation.name)) %>
|
30
29
|
|
31
|
-
<%= semantic_form_for @relation, :remote => true do |f| %>
|
30
|
+
<%= semantic_form_for @relation, :url => polymorphic_path(@relation, :section => 'rules'), :remote => true do |f| %>
|
32
31
|
<%= f.input :permissions, :as => :check_boxes, :collection => default_permissions.map{ |p| [p.description(:detailed, @relation), p.id] } %>
|
33
32
|
<%= f.submit t('button.save'), :class => 'button' %>
|
34
33
|
<% end %>
|
@@ -4,10 +4,34 @@
|
|
4
4
|
<div contain="<%= dom_id(r) %>" class="checkboxOptionLeft">
|
5
5
|
<input id=<%= dom_id(r) %> type="checkbox"/>
|
6
6
|
<label for=<%= dom_id(r) %>><%=r.name%></label>
|
7
|
+
<div class="options">
|
8
|
+
<%= link_to image_tag("btn/edit.png", :class => "menu_icon", :title => t('relation_custom.edit')), '#', :class => "relation_custom_edit_link" %>
|
9
|
+
<%= link_to image_tag("btn/delete.png", :class => "menu_icon", :title => t('relation_custom.delete')), r, :class => "relation_custom_delete_link", :method => :delete, :confirm => t('relation_custom.confirm_delete') %>
|
10
|
+
|
11
|
+
</div>
|
12
|
+
<div class="relation_custom_name_form">
|
13
|
+
<%= form_for r, :remote => true do |f| %>
|
14
|
+
<p><%= f.text_field :name, :class => "privacy_input_new", :size => 18 %></p>
|
15
|
+
<%= f.submit nil, :class => "button" %>
|
16
|
+
<button class="button cancel_edit_relation_custom" ><%= t('button.cancel') %></button>
|
17
|
+
<% end %>
|
18
|
+
</div>
|
19
|
+
<div class="clearfloat"></div>
|
7
20
|
</div>
|
8
21
|
<%= raw cycle("</td>", "</td></tr>", :name => "end_cell") %>
|
9
22
|
<% end %>
|
10
23
|
|
24
|
+
<%= raw cycle("<tr><td>", "<td>", :name => "begin_cell") %>
|
25
|
+
<div id="new_relation">
|
26
|
+
<div id="new_relation_custom_title_block">
|
27
|
+
<a href="#"><span id="new_relation_custom_title" class="privacy_span_new"><%= t('relation_custom.new') %></span></a>
|
28
|
+
</div>
|
29
|
+
<div id="new_relation_custom_input_block">
|
30
|
+
<%= render :partial => 'relation/customs/form' %>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
<%= raw cycle("</td>", "</td></tr>", :name => "end_cell") %>
|
34
|
+
|
11
35
|
<%= raw("</tr>") if list.size.odd? %>
|
12
36
|
|
13
37
|
</table>
|
@@ -15,5 +39,18 @@
|
|
15
39
|
<%= javascript_tag do %>
|
16
40
|
$(function() {
|
17
41
|
$('input[id^="relation_custom"]').checkBox();
|
42
|
+
|
43
|
+
$('.relation_custom_edit_link').click(function() {
|
44
|
+
$(this).parent().hide();
|
45
|
+
$(this).parent().siblings('label').hide();
|
46
|
+
$(this).parent().siblings('.relation_custom_name_form').show();
|
47
|
+
});
|
48
|
+
|
49
|
+
$(".cancel_edit_relation_custom").click(function() {
|
50
|
+
$(this).parent().parent().hide();
|
51
|
+
$(this).parent().parent().siblings('label, .options').show();
|
52
|
+
|
53
|
+
return false;
|
54
|
+
});
|
18
55
|
})
|
19
56
|
<% end %>
|
@@ -7,19 +7,9 @@
|
|
7
7
|
<div id="relation_customs" class="privacy_block_section first_block_section">
|
8
8
|
<p class="sectionTitle"><%= t 'relation_custom.choose' %></p>
|
9
9
|
|
10
|
-
<div class="privacy_add_element">
|
11
|
-
<div id="new_relation_custom_title_block">
|
12
|
-
<a href="#"><span id="new_relation_custom_title" class="privacy_span_new"><%= t('relation_custom.new') %></span></a>
|
13
|
-
</div>
|
14
|
-
<div id="new_relation_custom_input_block">
|
15
|
-
<%= render :partial => 'relation/customs/form' %>
|
16
|
-
</div>
|
17
|
-
</div>
|
18
10
|
|
19
11
|
<%= javascript_tag do %>
|
20
12
|
$(function() {
|
21
|
-
$("#new_relation_custom_input_block").hide();
|
22
|
-
|
23
13
|
$("#new_relation_custom_title").click(function() {
|
24
14
|
$("#new_relation_custom_title_block").hide();
|
25
15
|
$("#new_relation_custom_input_block").show();
|
@@ -1,6 +1,11 @@
|
|
1
|
-
<% if
|
2
|
-
|
1
|
+
<% if params[:section] == 'rules' %>
|
2
|
+
<%= render :partial => 'update_rules' %>
|
3
3
|
<% else %>
|
4
|
-
|
4
|
+
var div = $('div[contain$=<%= dom_id(@custom) %>]');
|
5
|
+
div.children('label').html("<%= escape_javascript @custom.name %>");
|
6
|
+
div.children('label').show();
|
7
|
+
div.children('.options').show();
|
8
|
+
div.children('.relation_custom_name_form').hide();
|
5
9
|
<% end %>
|
6
10
|
|
11
|
+
|
data/config/locales/en.yml
CHANGED
@@ -9,14 +9,14 @@ en:
|
|
9
9
|
one: "Account"
|
10
10
|
privacy: "Privacy"
|
11
11
|
activity:
|
12
|
+
audience:
|
13
|
+
visible: "Shared with %{audience}"
|
14
|
+
hidden: "Shared with spheres of %{audience}"
|
12
15
|
confirm_delete: "Delete activity?"
|
13
16
|
delete: "Delete"
|
14
17
|
input: "What are you doing?"
|
15
18
|
last: "Last Activities"
|
16
19
|
like: "I like"
|
17
|
-
new:
|
18
|
-
security:
|
19
|
-
title: "Share with..."
|
20
20
|
one: "Activity"
|
21
21
|
other: "Activities"
|
22
22
|
title: "Activities"
|
@@ -163,6 +163,7 @@ en:
|
|
163
163
|
submit:
|
164
164
|
relation_custom:
|
165
165
|
create: "Save"
|
166
|
+
update: "Update"
|
166
167
|
home: "Home"
|
167
168
|
inbox:
|
168
169
|
one: "Inbox"
|
@@ -297,9 +298,12 @@ en:
|
|
297
298
|
one: "Product"
|
298
299
|
other: "Products"
|
299
300
|
relation_custom:
|
300
|
-
title: "Privacy & context"
|
301
301
|
choose: "1. Choose sphere"
|
302
|
+
confirm_delete: "Delete this sphere?"
|
303
|
+
delete: "Delete"
|
304
|
+
edit: "Change name"
|
302
305
|
new: "+ New sphere"
|
306
|
+
title: "Privacy & context"
|
303
307
|
relation_public:
|
304
308
|
name: "Public"
|
305
309
|
required: "* These fields are required"
|
data/social_stream-base.gemspec
CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
# OAuth provider
|
36
36
|
s.add_runtime_dependency('oauth-plugin','~> 0.4.0.pre1')
|
37
37
|
# Messages
|
38
|
-
s.add_runtime_dependency('mailboxer','~> 0.
|
38
|
+
s.add_runtime_dependency('mailboxer','~> 0.5.0')
|
39
39
|
# Avatar manipulation
|
40
40
|
s.add_runtime_dependency('rmagick','~> 2.13.1')
|
41
41
|
# Tagging
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe SettingsController do
|
4
|
+
include SocialStream::TestHelpers
|
5
|
+
render_views
|
6
|
+
|
7
|
+
before do
|
8
|
+
@user = Factory(:user)
|
9
|
+
@actor = @user.actor
|
10
|
+
sign_in @user
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should render index" do
|
14
|
+
get :index
|
15
|
+
assert_response :success
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should render index after update_all" do
|
19
|
+
put :update_all
|
20
|
+
response.should redirect_to settings_path
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "Notification settings" do
|
24
|
+
it "update notification email settings to Never" do
|
25
|
+
@actor.update_attributes(:notify_by_email => true)
|
26
|
+
@actor.notify_by_email.should==true
|
27
|
+
put :update_all, :settings_section => "notifications", :notify_by_email => "never"
|
28
|
+
@actor.reload
|
29
|
+
@actor.notify_by_email.should==false
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
it "update notification email settings to Always" do
|
34
|
+
@actor.update_attributes(:notify_by_email => false)
|
35
|
+
@actor.notify_by_email.should==false
|
36
|
+
put :update_all, :settings_section => "notifications", :notify_by_email => "always"
|
37
|
+
@actor.reload
|
38
|
+
@actor.notify_by_email.should==true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
Binary file
|
@@ -3,13 +3,13 @@ div#wordcloud a { color: inherit; text-decoration: none;}
|
|
3
3
|
div#wordcloud a:hover { color: #0df;}
|
4
4
|
div#wordcloud a:hover { color: #0cf;}
|
5
5
|
div#wordcloud span { padding: 0;}
|
6
|
-
div#wordcloud span.w10 {font-size:
|
7
|
-
div#wordcloud span.w9 { font-size:
|
8
|
-
div#wordcloud span.w8 { font-size:
|
9
|
-
div#wordcloud span.w7 { font-size:
|
10
|
-
div#wordcloud span.w6 { font-size:
|
11
|
-
div#wordcloud span.w5 { font-size:
|
12
|
-
div#wordcloud span.w4 { font-size:
|
6
|
+
div#wordcloud span.w10 {font-size: 22px; color: #1F4A75;}
|
7
|
+
div#wordcloud span.w9 { font-size: 20px; color: #0cf; }
|
8
|
+
div#wordcloud span.w8 { font-size: 18px; color: #0cf; }
|
9
|
+
div#wordcloud span.w7 { font-size: 13px; color: #0cf; }
|
10
|
+
div#wordcloud span.w6 { font-size: 12px; color: #90c5f0;}
|
11
|
+
div#wordcloud span.w5 { font-size: 13px; color: #90a0dd;}
|
12
|
+
div#wordcloud span.w4 { font-size: 11px; color: #90c5f0;}
|
13
13
|
div#wordcloud span.w3 { font-size: 10px; color: #a0ddff;}
|
14
|
-
div#wordcloud span.w2 { font-size:
|
15
|
-
div#wordcloud span.w1 { font-size:
|
14
|
+
div#wordcloud span.w2 { font-size: 8px; color: #99ccee;}
|
15
|
+
div#wordcloud span.w1 { font-size: 6px; color: #aab5f0;}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 9
|
10
|
+
version: 0.7.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- GING - DIT - UPM
|
@@ -205,12 +205,12 @@ dependencies:
|
|
205
205
|
requirements:
|
206
206
|
- - ~>
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
hash:
|
208
|
+
hash: 11
|
209
209
|
segments:
|
210
210
|
- 0
|
211
|
-
-
|
212
|
-
-
|
213
|
-
version: 0.
|
211
|
+
- 5
|
212
|
+
- 0
|
213
|
+
version: 0.5.0
|
214
214
|
type: :runtime
|
215
215
|
version_requirements: *id012
|
216
216
|
- !ruby/object:Gem::Dependency
|
@@ -529,6 +529,7 @@ files:
|
|
529
529
|
- app/assets/images/btn/btn_write.png
|
530
530
|
- app/assets/images/btn/close.png
|
531
531
|
- app/assets/images/btn/date.png
|
532
|
+
- app/assets/images/btn/delete.png
|
532
533
|
- app/assets/images/btn/edit.png
|
533
534
|
- app/assets/images/btn/error.png
|
534
535
|
- app/assets/images/btn/facebook.png
|
@@ -835,6 +836,7 @@ files:
|
|
835
836
|
- app/views/profiles/update.js.erb
|
836
837
|
- app/views/relation/customs/_form.html.erb
|
837
838
|
- app/views/relation/customs/_list.html.erb
|
839
|
+
- app/views/relation/customs/_update_rules.js.erb
|
838
840
|
- app/views/relation/customs/create.js.erb
|
839
841
|
- app/views/relation/customs/index.html.erb
|
840
842
|
- app/views/relation/customs/update.js.erb
|
@@ -903,6 +905,7 @@ files:
|
|
903
905
|
- spec/controllers/profiles_controller_spec.rb
|
904
906
|
- spec/controllers/relation_customs_controller_spec.rb
|
905
907
|
- spec/controllers/representations_spec.rb
|
908
|
+
- spec/controllers/settings_controller_spec.rb
|
906
909
|
- spec/controllers/subjects_controller.rb
|
907
910
|
- spec/controllers/users_controller_spec.rb
|
908
911
|
- spec/dummy/.gitignore
|