Commit 302e1cd4c1068dd714bee0bca4d0f0074c9635f9
1 parent
888d186f
Exists in
master
and in
28 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 | ... | ... |