Commit 1672fd6e155776ac81083d07dd32ec7ddbf4bcba
1 parent
fb7ddece
Exists in
master
and in
27 other branches
suggestions: send email only if user enabled the email_suggestions option
Showing
4 changed files
with
29 additions
and
2 deletions
Show diff stats
app/models/profile.rb
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | # which by default is the one returned by Environment:default. |
4 | 4 | class Profile < 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, :redirection_after_login | |
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, :redirection_after_login, :email_suggestions | |
7 | 7 | |
8 | 8 | # use for internationalizable human type names in search facets |
9 | 9 | # reimplement on subclasses |
... | ... | @@ -163,6 +163,7 @@ class Profile < ActiveRecord::Base |
163 | 163 | settings_items :public_content, :type => :boolean, :default => true |
164 | 164 | settings_items :description |
165 | 165 | settings_items :fields_privacy, :type => :hash, :default => {} |
166 | + settings_items :email_suggestions, :type => :boolean, :default => false | |
166 | 167 | |
167 | 168 | validates_length_of :description, :maximum => 550, :allow_nil => true |
168 | 169 | ... | ... |
app/views/profile_editor/edit.html.erb
... | ... | @@ -51,6 +51,12 @@ |
51 | 51 | 'profile_data[redirect_l10n]', true, @profile.redirect_l10n |
52 | 52 | )%> |
53 | 53 | |
54 | + <h2><%= _('Suggestions') %></h2> | |
55 | + <%= labelled_check_box( | |
56 | + _('Send me relationship suggestions by email'), | |
57 | + 'profile_data[email_suggestions]', true, @profile.email_suggestions | |
58 | + )%> | |
59 | + | |
54 | 60 | <%= |
55 | 61 | @plugins.dispatch(:profile_editor_extras).map do |content| |
56 | 62 | content.kind_of?(Proc) ? self.instance_exec(&content) : content | ... | ... |
lib/profile_suggestions_job.rb
... | ... | @@ -13,7 +13,7 @@ class ProfileSuggestionsJob < Struct.new(:person_id) |
13 | 13 | begin |
14 | 14 | person = Person.find(person_id) |
15 | 15 | ProfileSuggestion.calculate_suggestions(person) |
16 | - UserMailer.profiles_suggestions_email(person).deliver | |
16 | + UserMailer.profiles_suggestions_email(person).deliver if person.email_suggestions | |
17 | 17 | rescue Exception => exception |
18 | 18 | logger.error("Error with suggestions for person ID %d: %s" % [person_id, exception.to_s]) |
19 | 19 | end | ... | ... |
test/unit/profile_suggestions_job_test.rb
... | ... | @@ -98,4 +98,24 @@ class ProfileSuggestionsJobTest < ActiveSupport::TestCase |
98 | 98 | assert_equivalent [community], person.suggested_communities |
99 | 99 | end |
100 | 100 | |
101 | + should 'send suggestion e-mail only if the user enabled it' do | |
102 | + person = create_user('person').person | |
103 | + person.email_suggestions = true | |
104 | + person.save! | |
105 | + job = ProfileSuggestionsJob.new(person.id) | |
106 | + assert_difference 'ActionMailer::Base.deliveries.count', 1 do | |
107 | + job.perform | |
108 | + end | |
109 | + end | |
110 | + | |
111 | + should 'not send suggestion e-mail if the user disabled it' do | |
112 | + person = create_user('person').person | |
113 | + person.email_suggestions = false | |
114 | + person.save! | |
115 | + job = ProfileSuggestionsJob.new(person.id) | |
116 | + assert_no_difference 'ActionMailer::Base.deliveries.count' do | |
117 | + job.perform | |
118 | + end | |
119 | + end | |
120 | + | |
101 | 121 | end | ... | ... |