]> source.dussan.org Git - redmine.git/commitdiff
Sort users by their display names so that user dropdown lists are sorted alphabetical...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 11 Nov 2008 12:59:28 +0000 (12:59 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 11 Nov 2008 12:59:28 +0000 (12:59 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2010 e93f8b46-1217-0410-a6f0-8f06a7374b81

.loadpath [new file with mode: 0644]
.project [new file with mode: 0644]
.settings/org.eclipse.core.resources.prefs [new file with mode: 0644]
app/models/user.rb
test/unit/user_test.rb

diff --git a/.loadpath b/.loadpath
new file mode 100644 (file)
index 0000000..c4415b3
--- /dev/null
+++ b/.loadpath
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<loadpath>\r
+       <pathentry path="" type="src"/>\r
+       <pathentry path="org.rubypeople.rdt.launching.RUBY_CONTAINER" type="con"/>\r
+</loadpath>\r
diff --git a/.project b/.project
new file mode 100644 (file)
index 0000000..6a0b4c4
--- /dev/null
+++ b/.project
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+       <name>trunk_fixes</name>\r
+       <comment></comment>\r
+       <projects>\r
+       </projects>\r
+       <buildSpec>\r
+               <buildCommand>\r
+                       <name>org.rubypeople.rdt.core.rubybuilder</name>\r
+                       <arguments>\r
+                       </arguments>\r
+               </buildCommand>\r
+       </buildSpec>\r
+       <natures>\r
+               <nature>org.rubypeople.rdt.core.rubynature</nature>\r
+               <nature>org.radrails.rails.core.railsnature</nature>\r
+       </natures>\r
+</projectDescription>\r
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644 (file)
index 0000000..69197b5
--- /dev/null
@@ -0,0 +1,5 @@
+#Sun Nov 09 21:42:24 CET 2008\r
+eclipse.preferences.version=1\r
+encoding//app/helpers/ifpdf_helper.rb=UTF-8\r
+encoding//test/fixtures/mail_handler=UTF-8\r
+encoding/lang=UTF-8\r
index f468063ed6e86a9eefdc1a6f5b529867d8589395..53453c0dc824abc6dfec451b0ad1ee154ba2fd12 100644 (file)
@@ -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
index 80011f4bf2c81c2842ba3a753311ef298aadf06d..b931501a101e6cdbe1856322e89fd6d6d64f458e 100644 (file)
@@ -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