Commit 302e1cd4c1068dd714bee0bca4d0f0074c9635f9
1 parent
888d186f
Exists in
master
and in
29 other branches
ActionItem1165: better handling of webmail
Showing
5 changed files
with
14 additions
and
13 deletions
Show diff stats
app/models/mail_conf.rb
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 < 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 < 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 < 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 | ... | ... |