Commit 302e1cd4c1068dd714bee0bca4d0f0074c9635f9

Authored by Antonio Terceiro
1 parent 888d186f

ActionItem1165: better handling of webmail

app/models/mail_conf.rb
@@ -17,8 +17,8 @@ class MailConf @@ -17,8 +17,8 @@ class MailConf
17 config['enabled'] || false 17 config['enabled'] || false
18 end 18 end
19 19
20 - def webmail_url  
21 - config['webmail_url'] 20 + def webmail_url(username, domain)
  21 + config['webmail_url'] % [username, domain]
22 end 22 end
23 23
24 end 24 end
app/models/user.rb
@@ -39,8 +39,13 @@ class User < ActiveRecord::Base @@ -39,8 +39,13 @@ class User < ActiveRecord::Base
39 @person_data || {} 39 @person_data || {}
40 end 40 end
41 41
  42 + attr_accessor :had_email_disabled
  43 + before_update do |user|
  44 + user.had_email_disabled = !User.find(user.id).enable_email
  45 + true
  46 + end
42 after_update do |user| 47 after_update do |user|
43 - if !User.find(user.id).enable_email and user.enable_email and !user.environment.nil? 48 + if user.had_email_disabled && user.enable_email && !user.environment.nil?
44 User::Mailer.deliver_activation_email_notify(user) 49 User::Mailer.deliver_activation_email_notify(user)
45 end 50 end
46 end 51 end
@@ -53,7 +58,7 @@ class User < ActiveRecord::Base @@ -53,7 +58,7 @@ class User < ActiveRecord::Base
53 subject _("[%{environment}] Welcome to %{environment} mail!") % { :environment => user.environment.name } 58 subject _("[%{environment}] Welcome to %{environment} mail!") % { :environment => user.environment.name }
54 body :name => user.name, 59 body :name => user.name,
55 :email => user_email, 60 :email => user_email,
56 - :webmail => MailConf.webmail_url, 61 + :webmail => MailConf.webmail_url(user.login, user.person.preferred_domain && user.person.preferred_domain.name || user.environment.default_hostname(true)),
57 :environment => user.environment.name, 62 :environment => user.environment.name,
58 :url => url_for(:host => user.environment.default_hostname, :controller => 'home') 63 :url => url_for(:host => user.environment.default_hostname, :controller => 'home')
59 end 64 end
app/views/shared/user_menu.rhtml
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 31
32 <% if MailConf.enabled? && current_user.enable_email %> 32 <% if MailConf.enabled? && current_user.enable_email %>
33 <li> 33 <li>
34 - <%= link_to '<span class="icon-menu-mail"></span>' + _('Webmail'), MailConf.webmail_url %> 34 + <%= link_to '<span class="icon-menu-mail"></span>' + _('Webmail'), MailConf.webmail_url(user.identifier, user.preferred_domain && user.preferred_domain.name || user.environment.default_hostname(true)) %>
35 </li> 35 </li>
36 <% end %> 36 <% end %>
37 37
test/unit/mail_conf_test.rb
@@ -31,8 +31,8 @@ class MailConfTest &lt; ActiveSupport::TestCase @@ -31,8 +31,8 @@ class MailConfTest &lt; ActiveSupport::TestCase
31 should 'provide webmail url preference' do 31 should 'provide webmail url preference' do
32 MailConf.stubs(:config_file).returns(CONFIG_FILE) 32 MailConf.stubs(:config_file).returns(CONFIG_FILE)
33 File.expects(:exists?).with(CONFIG_FILE).returns(true) 33 File.expects(:exists?).with(CONFIG_FILE).returns(true)
34 - YAML.expects(:load_file).with(CONFIG_FILE).returns({ 'enabled' => false, 'webmail_url' => 'http://some.url/webmail' })  
35 - assert_equal 'http://some.url/webmail', MailConf.webmail_url 34 + YAML.expects(:load_file).with(CONFIG_FILE).returns({ 'enabled' => false, 'webmail_url' => 'http://some.url/webmail/%s/%s' })
  35 + assert_equal 'http://some.url/webmail/login/example.com', MailConf.webmail_url('login', 'example.com')
36 end 36 end
37 37
38 end 38 end
test/unit/user_mailer_test.rb
@@ -21,10 +21,7 @@ class UserMailerTest &lt; Test::Unit::TestCase @@ -21,10 +21,7 @@ class UserMailerTest &lt; Test::Unit::TestCase
21 end 21 end
22 22
23 should 'deliver notify when activate email' do 23 should 'deliver notify when activate email' do
24 - u = Person.find(:first).user  
25 - u.environment = Environment.default  
26 - u.enable_email = false  
27 - u.save! 24 + u = create_user('testuser')
28 assert_difference ActionMailer::Base.deliveries, :size do 25 assert_difference ActionMailer::Base.deliveries, :size do
29 u.enable_email = true 26 u.enable_email = true
30 u.save! 27 u.save!
@@ -32,8 +29,7 @@ class UserMailerTest &lt; Test::Unit::TestCase @@ -32,8 +29,7 @@ class UserMailerTest &lt; Test::Unit::TestCase
32 end 29 end
33 30
34 should 'not deliver notify when disactivate email' do 31 should 'not deliver notify when disactivate email' do
35 - u = Person.find(:first).user  
36 - u.environment = Environment.default 32 + u = create_user('testuser')
37 u.enable_email = true 33 u.enable_email = true
38 u.save! 34 u.save!
39 assert_no_difference ActionMailer::Base.deliveries, :size do 35 assert_no_difference ActionMailer::Base.deliveries, :size do