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.
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