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 17 config['enabled'] || false
18 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 22 end
23 23  
24 24 end
... ...
app/models/user.rb
... ... @@ -39,8 +39,13 @@ class User < ActiveRecord::Base
39 39 @person_data || {}
40 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 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 49 User::Mailer.deliver_activation_email_notify(user)
45 50 end
46 51 end
... ... @@ -53,7 +58,7 @@ class User < ActiveRecord::Base
53 58 subject _("[%{environment}] Welcome to %{environment} mail!") % { :environment => user.environment.name }
54 59 body :name => user.name,
55 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 62 :environment => user.environment.name,
58 63 :url => url_for(:host => user.environment.default_hostname, :controller => 'home')
59 64 end
... ...
app/views/shared/user_menu.rhtml
... ... @@ -31,7 +31,7 @@
31 31  
32 32 <% if MailConf.enabled? && current_user.enable_email %>
33 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 35 </li>
36 36 <% end %>
37 37  
... ...
test/unit/mail_conf_test.rb
... ... @@ -31,8 +31,8 @@ class MailConfTest &lt; ActiveSupport::TestCase
31 31 should 'provide webmail url preference' do
32 32 MailConf.stubs(:config_file).returns(CONFIG_FILE)
33 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 36 end
37 37  
38 38 end
... ...
test/unit/user_mailer_test.rb
... ... @@ -21,10 +21,7 @@ class UserMailerTest &lt; Test::Unit::TestCase
21 21 end
22 22  
23 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 25 assert_difference ActionMailer::Base.deliveries, :size do
29 26 u.enable_email = true
30 27 u.save!
... ... @@ -32,8 +29,7 @@ class UserMailerTest &lt; Test::Unit::TestCase
32 29 end
33 30  
34 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 33 u.enable_email = true
38 34 u.save!
39 35 assert_no_difference ActionMailer::Base.deliveries, :size do
... ...