Commit 789dc2c90bd887241b9ee9a24011c9d594ba25ac

Authored by Carlos Purificação
Committed by Rodrigo Souto
1 parent 753770b3

Adds profile admin task email notification option

Signed-off-by: Marcos Ronaldo <marcos.rpj2@gmail.com>
Signed-off-by: Gustavo Jaruga <darkshades@gmail.com>
app/models/profile.rb
@@ -5,7 +5,7 @@ class Profile &lt; ActiveRecord::Base @@ -5,7 +5,7 @@ class Profile &lt; ActiveRecord::Base
5 5
6 attr_accessible :name, :identifier, :public_profile, :nickname, :custom_footer, :custom_header, :address, :zip_code, :contact_phone, :image_builder, :description, :closed, :template_id, :environment, :lat, :lng, :is_template, :fields_privacy, :preferred_domain_id, :category_ids, :country, :city, :state, :national_region_code, :email, :contact_email, :redirect_l10n, :notification_time, 6 attr_accessible :name, :identifier, :public_profile, :nickname, :custom_footer, :custom_header, :address, :zip_code, :contact_phone, :image_builder, :description, :closed, :template_id, :environment, :lat, :lng, :is_template, :fields_privacy, :preferred_domain_id, :category_ids, :country, :city, :state, :national_region_code, :email, :contact_email, :redirect_l10n, :notification_time,
7 :redirection_after_login, :custom_url_redirection, 7 :redirection_after_login, :custom_url_redirection,
8 - :email_suggestions, :allow_members_to_invite, :invite_friends_only, :secret 8 + :email_suggestions, :allow_members_to_invite, :invite_friends_only, :secret, :profile_admin_mail_notification
9 9
10 # use for internationalizable human type names in search facets 10 # use for internationalizable human type names in search facets
11 # reimplement on subclasses 11 # reimplement on subclasses
@@ -245,6 +245,7 @@ class Profile &lt; ActiveRecord::Base @@ -245,6 +245,7 @@ class Profile &lt; ActiveRecord::Base
245 settings_items :description 245 settings_items :description
246 settings_items :fields_privacy, :type => :hash, :default => {} 246 settings_items :fields_privacy, :type => :hash, :default => {}
247 settings_items :email_suggestions, :type => :boolean, :default => false 247 settings_items :email_suggestions, :type => :boolean, :default => false
  248 + settings_items :profile_admin_mail_notification, :type => :boolean, :default => true
248 249
249 validates_length_of :description, :maximum => 550, :allow_nil => true 250 validates_length_of :description, :maximum => 550, :allow_nil => true
250 251
app/models/task.rb
@@ -67,7 +67,9 @@ class Task &lt; ActiveRecord::Base @@ -67,7 +67,9 @@ class Task &lt; ActiveRecord::Base
67 begin 67 begin
68 target_msg = task.target_notification_message 68 target_msg = task.target_notification_message
69 if target_msg && task.target && !task.target.notification_emails.empty? 69 if target_msg && task.target && !task.target.notification_emails.empty?
70 - TaskMailer.target_notification(task, target_msg).deliver 70 + if target_profile_accepts_notification?(task)
  71 + TaskMailer.target_notification(task, target_msg).deliver
  72 + end
71 end 73 end
72 rescue NotImplementedError => ex 74 rescue NotImplementedError => ex
73 Rails.logger.info ex.to_s 75 Rails.logger.info ex.to_s
@@ -75,6 +77,14 @@ class Task &lt; ActiveRecord::Base @@ -75,6 +77,14 @@ class Task &lt; ActiveRecord::Base
75 end 77 end
76 end 78 end
77 79
  80 + def target_profile_accepts_notification?(task)
  81 + if task.target.kind_of? Organization
  82 + return task.target.profile_admin_mail_notification
  83 + else
  84 + true
  85 + end
  86 + end
  87 +
78 # this method finished the task. It calls #perform, which must be overriden 88 # this method finished the task. It calls #perform, which must be overriden
79 # by subclasses. At the end a message (as returned by #finish_message) is 89 # by subclasses. At the end a message (as returned by #finish_message) is
80 # sent to the requestor with #notify_requestor. 90 # sent to the requestor with #notify_requestor.
app/views/profile_editor/_moderation.html.erb
1 <h2><%= _('Moderation options') %></h2> 1 <h2><%= _('Moderation options') %></h2>
2 <% if profile.community? %> 2 <% if profile.community? %>
3 <div style='margin-bottom: 1em'> 3 <div style='margin-bottom: 1em'>
  4 + <h4><%= _('Email Configuration:')%></h4>
  5 + </div>
  6 + <div style='margin-bottom: 0.5em'>
  7 + <%= check_box(:profile_data, :profile_admin_mail_notification, :style => 'float: left') %>
  8 + <div style='margin-left: 30px'>
  9 + <%= _('Send administrator Email for every task') %>
  10 + </div>
  11 + </div>
  12 +
  13 + <div style='margin-bottom: 1em'>
4 <h4><%= _('Invitation moderation:')%></h4> 14 <h4><%= _('Invitation moderation:')%></h4>
5 </div> 15 </div>
6 <div style='margin-bottom: 0.5em'> 16 <div style='margin-bottom: 0.5em'>
test/functional/profile_editor_controller_test.rb
@@ -1213,4 +1213,11 @@ class ProfileEditorControllerTest &lt; ActionController::TestCase @@ -1213,4 +1213,11 @@ class ProfileEditorControllerTest &lt; ActionController::TestCase
1213 assert_no_tag :tag => 'a', :attributes => { :href => "/myprofile/default_user/profile_roles" } 1213 assert_no_tag :tag => 'a', :attributes => { :href => "/myprofile/default_user/profile_roles" }
1214 end 1214 end
1215 1215
  1216 + should 'save profile admin option to receive email for every task' do
  1217 + comm = fast_create(Community)
  1218 + assert comm.profile_admin_mail_notification
  1219 + post :edit, :profile => comm.identifier, :profile_data => { :profile_admin_mail_notification => '0' }
  1220 + refute comm.reload.profile_admin_mail_notification
  1221 + end
  1222 +
1216 end 1223 end
test/unit/task_test.rb
@@ -182,6 +182,31 @@ class TaskTest &lt; ActiveSupport::TestCase @@ -182,6 +182,31 @@ class TaskTest &lt; ActiveSupport::TestCase
182 task.save! 182 task.save!
183 end 183 end
184 184
  185 + should 'not send notification to target if notification is disabled in profile' do
  186 + task = Task.new
  187 + target = fast_create(Organization)
  188 + target.stubs(:notification_emails).returns(['adm@example.com'])
  189 + target.stubs(:profile_admin_mail_notification).returns(false)
  190 + task.target = target
  191 + task.stubs(:target_notification_message).returns('some non nil message to be sent to target')
  192 + TaskMailer.expects(:target_notification).never
  193 + task.save!
  194 + end
  195 +
  196 + should 'send notification to target if notification is enabled in profile' do
  197 + task = Task.new
  198 + target = fast_create(Organization)
  199 + target.stubs(:notification_emails).returns(['adm@example.com'])
  200 + target.stubs(:profile_admin_mail_notification).returns(true)
  201 + task.target = target
  202 + task.stubs(:target_notification_message).returns('some non nil message to be sent to target')
  203 +
  204 + mailer = mock
  205 + mailer.expects(:deliver).once
  206 + TaskMailer.expects(:target_notification).returns(mailer).once
  207 + task.save!
  208 + end
  209 +
185 should 'be able to list pending tasks' do 210 should 'be able to list pending tasks' do
186 Task.delete_all 211 Task.delete_all
187 t1 = Task.create! 212 t1 = Task.create!