social_stream-base 0.7.8 → 0.7.9

Sign up to get free protection for your applications and to get access to all the features.
Binary file
Binary file
@@ -41,6 +41,12 @@ $(function() {
41
41
  $("#masterSubmitButton").show();
42
42
  }
43
43
  });
44
+ event_input = "<%= I18n.t('event.input') %>";
45
+ $("#event_name").click(function(){
46
+ if(this.value == event_input){
47
+ this.value = "";
48
+ }
49
+ });
44
50
  });
45
51
 
46
52
 
@@ -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: 2px 0px 0px 0px;
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{ width:100%; height: 100px; color: #2A3890;}
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: 20px;
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
- .privacy_add_element{
112
+ #new_relation {
82
113
  text-align: right;
83
114
  padding: 5px 0px 5px 0px;
84
- margin: 0px 10px 15px 0px;
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
@@ -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 => subject.comment_relations(self).map(&:id)
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 contact.reflexive? || relations.present?
286
+ return if relation_ids.present?
277
287
 
278
- self.relations =
279
- contact.receiver.relation_customs.allow(contact.sender, 'create', 'activity')
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
- # Returns the email used for Mailboxer
141
- def mailboxer_email
142
- return email if email.present?
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
- emails << receiver.email
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
- return emails
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 relations if Actor.normalize(subject) == self
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
@@ -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('activity.new.security.title') %></div>
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 => "icon", :size => "15x15") %>
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 %>
@@ -0,0 +1,5 @@
1
+ <% if @custom.errors.present? %>
2
+ $('#new_relation_custom_input_block').html("<%= escape_javascript render(:partial => 'relation/customs/form') %>");
3
+ <% else %>
4
+ alert("<%= escape_javascript t('privacy.rule.saved') %>");
5
+ <% 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 @custom.errors.present? %>
2
- $('#new_relation_custom_input_block').html("<%= escape_javascript render(:partial => 'relation/customs/form') %>");
1
+ <% if params[:section] == 'rules' %>
2
+ <%= render :partial => 'update_rules' %>
3
3
  <% else %>
4
- alert("<%= escape_javascript t('privacy.rule.saved') %>");
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
+
@@ -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"
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "0.7.8".freeze
3
+ VERSION = "0.7.9".freeze
4
4
  end
5
5
  end
@@ -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.4.3')
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: 44px; color: #1F4A75;}
7
- div#wordcloud span.w9 { font-size: 40px; color: #0cf; }
8
- div#wordcloud span.w8 { font-size: 34px; color: #0cf; }
9
- div#wordcloud span.w7 { font-size: 30px; color: #0cf; }
10
- div#wordcloud span.w6 { font-size: 24px; color: #90c5f0;}
11
- div#wordcloud span.w5 { font-size: 20px; color: #90a0dd;}
12
- div#wordcloud span.w4 { font-size: 14px; color: #90c5f0;}
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: 4px; color: #99ccee;}
15
- div#wordcloud span.w1 { font-size: 1px; color: #aab5f0;}
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: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
- - 8
10
- version: 0.7.8
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: 9
208
+ hash: 11
209
209
  segments:
210
210
  - 0
211
- - 4
212
- - 3
213
- version: 0.4.3
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