From 302e1cd4c1068dd714bee0bca4d0f0074c9635f9 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Wed, 19 Aug 2009 19:56:50 -0300 Subject: [PATCH] ActionItem1165: better handling of webmail --- app/models/mail_conf.rb | 4 ++-- app/models/user.rb | 9 +++++++-- app/views/shared/user_menu.rhtml | 2 +- test/unit/mail_conf_test.rb | 4 ++-- test/unit/user_mailer_test.rb | 8 ++------ 5 files changed, 14 insertions(+), 13 deletions(-) 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