summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-11-11 12:59:28 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-11-11 12:59:28 +0000
commit6a8be88ad613bcb2a2fa0189cbac0b68742dc357 (patch)
tree5cca08633daffdbf0f2422b0342df60c5b6eefe3
parente8d0c26e4393b0d88f9c62afd12268269b1bd818 (diff)
downloadredmine-6a8be88ad613bcb2a2fa0189cbac0b68742dc357.tar.gz
redmine-6a8be88ad613bcb2a2fa0189cbac0b68742dc357.zip
Sort users by their display names so that user dropdown lists are sorted alphabetically (#2015).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2010 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--.loadpath5
-rw-r--r--.project18
-rw-r--r--.settings/org.eclipse.core.resources.prefs5
-rw-r--r--app/models/user.rb17
-rw-r--r--test/unit/user_test.rb4
5 files changed, 38 insertions, 11 deletions
diff --git a/.loadpath b/.loadpath
new file mode 100644
index 000000000..c4415b3d0
--- /dev/null
+++ b/.loadpath
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<loadpath>
+ <pathentry path="" type="src"/>
+ <pathentry path="org.rubypeople.rdt.launching.RUBY_CONTAINER" type="con"/>
+</loadpath>
diff --git a/.project b/.project
new file mode 100644
index 000000000..6a0b4c407
--- /dev/null
+++ b/.project
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>trunk_fixes</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.rubypeople.rdt.core.rubybuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.rubypeople.rdt.core.rubynature</nature>
+ <nature>org.radrails.rails.core.railsnature</nature>
+ </natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..69197b5bd
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+#Sun Nov 09 21:42:24 CET 2008
+eclipse.preferences.version=1
+encoding//app/helpers/ifpdf_helper.rb=UTF-8
+encoding//test/fixtures/mail_handler=UTF-8
+encoding/lang=UTF-8
diff --git a/app/models/user.rb b/app/models/user.rb
index f468063ed..53453c0dc 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -71,6 +71,11 @@ class User < ActiveRecord::Base
# update hashed_password if password was set
self.hashed_password = User.hash_password(self.password) if self.password
end
+
+ def reload(*args)
+ @name = nil
+ super
+ end
def self.active
with_scope :find => { :conditions => [ "status = ?", STATUS_ACTIVE ] } do
@@ -120,8 +125,7 @@ class User < ActiveRecord::Base
# Return user's full name for display
def name(formatter = nil)
- f = USER_FORMATS[formatter || Setting.user_format] || USER_FORMATS[:firstname_lastname]
- eval '"' + f + '"'
+ @name ||= eval('"' + (USER_FORMATS[formatter || Setting.user_format] || USER_FORMATS[:firstname_lastname]) + '"')
end
def active?
@@ -180,14 +184,9 @@ class User < ActiveRecord::Base
token && (token.created_on > Setting.autologin.to_i.day.ago) && token.user.active? ? token.user : nil
end
+ # Sort users by their display names
def <=>(user)
- if user.nil?
- -1
- elsif lastname.to_s.downcase == user.lastname.to_s.downcase
- firstname.to_s.downcase <=> user.firstname.to_s.downcase
- else
- lastname.to_s.downcase <=> user.lastname.to_s.downcase
- end
+ self.to_s.downcase <=> user.to_s.downcase
end
def to_s
diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb
index 80011f4bf..b931501a1 100644
--- a/test/unit/user_test.rb
+++ b/test/unit/user_test.rb
@@ -85,9 +85,9 @@ class UserTest < Test::Unit::TestCase
def test_name_format
assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname)
Setting.user_format = :firstname_lastname
- assert_equal 'John Smith', @jsmith.name
+ assert_equal 'John Smith', @jsmith.reload.name
Setting.user_format = :username
- assert_equal 'jsmith', @jsmith.name
+ assert_equal 'jsmith', @jsmith.reload.name
end
def test_lock