diff --git a/app/models/mail_conf.rb b/app/models/mail_conf.rb
index 540fb52..3d80c46 100644
--- a/app/models/mail_conf.rb
+++ b/app/models/mail_conf.rb
@@ -17,8 +17,8 @@ class MailConf
config['enabled'] || false
end
- def webmail_url
- config['webmail_url']
+ def webmail_url(username, domain)
+ config['webmail_url'] % [username, domain]
end
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 329420f..1268e06 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -39,8 +39,13 @@ class User < ActiveRecord::Base
@person_data || {}
end
+ attr_accessor :had_email_disabled
+ before_update do |user|
+ user.had_email_disabled = !User.find(user.id).enable_email
+ true
+ end
after_update do |user|
- if !User.find(user.id).enable_email and user.enable_email and !user.environment.nil?
+ if user.had_email_disabled && user.enable_email && !user.environment.nil?
User::Mailer.deliver_activation_email_notify(user)
end
end
@@ -53,7 +58,7 @@ class User < ActiveRecord::Base
subject _("[%{environment}] Welcome to %{environment} mail!") % { :environment => user.environment.name }
body :name => user.name,
:email => user_email,
- :webmail => MailConf.webmail_url,
+ :webmail => MailConf.webmail_url(user.login, user.person.preferred_domain && user.person.preferred_domain.name || user.environment.default_hostname(true)),
:environment => user.environment.name,
:url => url_for(:host => user.environment.default_hostname, :controller => 'home')
end
diff --git a/app/views/shared/user_menu.rhtml b/app/views/shared/user_menu.rhtml
index 78fab95..46c32bb 100644
--- a/app/views/shared/user_menu.rhtml
+++ b/app/views/shared/user_menu.rhtml
@@ -31,7 +31,7 @@
<% if MailConf.enabled? && current_user.enable_email %>
- <%= link_to '' + _('Webmail'), MailConf.webmail_url %>
+ <%= link_to '' + _('Webmail'), MailConf.webmail_url(user.identifier, user.preferred_domain && user.preferred_domain.name || user.environment.default_hostname(true)) %>
<% end %>
diff --git a/test/unit/mail_conf_test.rb b/test/unit/mail_conf_test.rb
index 91c58ad..ba3c95b 100644
--- a/test/unit/mail_conf_test.rb
+++ b/test/unit/mail_conf_test.rb
@@ -31,8 +31,8 @@ class MailConfTest < ActiveSupport::TestCase
should 'provide webmail url preference' do
MailConf.stubs(:config_file).returns(CONFIG_FILE)
File.expects(:exists?).with(CONFIG_FILE).returns(true)
- YAML.expects(:load_file).with(CONFIG_FILE).returns({ 'enabled' => false, 'webmail_url' => 'http://some.url/webmail' })
- assert_equal 'http://some.url/webmail', MailConf.webmail_url
+ YAML.expects(:load_file).with(CONFIG_FILE).returns({ 'enabled' => false, 'webmail_url' => 'http://some.url/webmail/%s/%s' })
+ assert_equal 'http://some.url/webmail/login/example.com', MailConf.webmail_url('login', 'example.com')
end
end
diff --git a/test/unit/user_mailer_test.rb b/test/unit/user_mailer_test.rb
index db4b7d6..edfeb65 100644
--- a/test/unit/user_mailer_test.rb
+++ b/test/unit/user_mailer_test.rb
@@ -21,10 +21,7 @@ class UserMailerTest < Test::Unit::TestCase
end
should 'deliver notify when activate email' do
- u = Person.find(:first).user
- u.environment = Environment.default
- u.enable_email = false
- u.save!
+ u = create_user('testuser')
assert_difference ActionMailer::Base.deliveries, :size do
u.enable_email = true
u.save!
@@ -32,8 +29,7 @@ class UserMailerTest < Test::Unit::TestCase
end
should 'not deliver notify when disactivate email' do
- u = Person.find(:first).user
- u.environment = Environment.default
+ u = create_user('testuser')
u.enable_email = true
u.save!
assert_no_difference ActionMailer::Base.deliveries, :size do
--
libgit2 0.21.2