Merged r4727 and r4730 from trunk.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.1-stable@4771 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2011-01-30 06:10:36 +00:00
parent 7be5bf6e4d
commit 27a319e66d
3 changed files with 23 additions and 6 deletions

View File

@ -261,12 +261,16 @@ class User < Principal
notified_projects_ids
end
# Only users that belong to more than 1 project can select projects for which they are notified
def valid_notification_options
self.class.valid_notification_options(self)
end
# Only users that belong to more than 1 project can select projects for which they are notified
def self.valid_notification_options(user=nil)
# Note that @user.membership.size would fail since AR ignores
# :include association option when doing a count
if memberships.length < 1
MAIL_NOTIFICATION_OPTIONS.delete_if {|option| option.first == 'selected'}
if user.nil? || user.memberships.length < 1
MAIL_NOTIFICATION_OPTIONS.reject {|option| option.first == 'selected'}
else
MAIL_NOTIFICATION_OPTIONS
end

View File

@ -8,7 +8,7 @@
<p><%= setting_check_box :plain_text_mail %></p>
<p><%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %></p>
<p><%= setting_select(:default_notification_option, User.valid_notification_options.collect {|o| [l(o.last), o.first.to_s]}) %></p>
</div>

View File

@ -1,5 +1,5 @@
# redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -303,6 +303,19 @@ class UserTest < ActiveSupport::TestCase
assert_nil @dlopper.roles_for_project(Project.find(2)).detect {|role| role.member?}
end
def test_valid_notification_options
# without memberships
assert_equal 5, User.find(7).valid_notification_options.size
# with memberships
assert_equal 6, User.find(2).valid_notification_options.size
end
def test_valid_notification_options_class_method
assert_equal 5, User.valid_notification_options.size
assert_equal 5, User.valid_notification_options(User.find(7)).size
assert_equal 6, User.valid_notification_options(User.find(2)).size
end
def test_mail_notification_all
@jsmith.mail_notification = 'all'
@jsmith.notified_project_ids = []