@@ -47,8 +47,8 module ApplicationHelper | |||||
47 | def link_to_user(user, options={}) |
|
47 | def link_to_user(user, options={}) | |
48 | if user.is_a?(User) |
|
48 | if user.is_a?(User) | |
49 | name = h(user.name(options[:format])) |
|
49 | name = h(user.name(options[:format])) | |
50 | if user.active? |
|
50 | if user.active? || (User.current.admin? && user.logged?) | |
51 | link_to name, :controller => 'users', :action => 'show', :id => user |
|
51 | link_to name, {:controller => 'users', :action => 'show', :id => user}, :class => user.css_classes | |
52 | else |
|
52 | else | |
53 | name |
|
53 | name | |
54 | end |
|
54 | end |
@@ -387,6 +387,17 class User < Principal | |||||
387 | name |
|
387 | name | |
388 | end |
|
388 | end | |
389 |
|
389 | |||
|
390 | CSS_CLASS_BY_STATUS = { | |||
|
391 | STATUS_ANONYMOUS => 'anon', | |||
|
392 | STATUS_ACTIVE => 'active', | |||
|
393 | STATUS_REGISTERED => 'registered', | |||
|
394 | STATUS_LOCKED => 'locked' | |||
|
395 | } | |||
|
396 | ||||
|
397 | def css_classes | |||
|
398 | "user #{CSS_CLASS_BY_STATUS[status]}" | |||
|
399 | end | |||
|
400 | ||||
390 | # Returns the current day according to user's time zone |
|
401 | # Returns the current day according to user's time zone | |
391 | def today |
|
402 | def today | |
392 | if time_zone.nil? |
|
403 | if time_zone.nil? |
@@ -36,7 +36,7 | |||||
36 | </tr></thead> |
|
36 | </tr></thead> | |
37 | <tbody> |
|
37 | <tbody> | |
38 | <% for user in @users -%> |
|
38 | <% for user in @users -%> | |
39 | <tr class="user <%= cycle("odd", "even") %> <%= %w(anon active registered locked)[user.status] %>"> |
|
39 | <tr class="<%= user.css_classes %> <%= cycle("odd", "even") %>"> | |
40 | <td class="username"><%= avatar(user, :size => "14") %><%= link_to h(user.login), edit_user_path(user) %></td> |
|
40 | <td class="username"><%= avatar(user, :size => "14") %><%= link_to h(user.login), edit_user_path(user) %></td> | |
41 | <td class="firstname"><%= h(user.firstname) %></td> |
|
41 | <td class="firstname"><%= h(user.firstname) %></td> | |
42 | <td class="lastname"><%= h(user.lastname) %></td> |
|
42 | <td class="lastname"><%= h(user.lastname) %></td> |
@@ -107,6 +107,7 a img{ border: 0; } | |||||
107 |
|
107 | |||
108 | a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; } |
|
108 | a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; } | |
109 | a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; } |
|
109 | a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; } | |
|
110 | a.user.locked, a.user.locked:link, a.user.locked:visited {color: #999;} | |||
110 |
|
111 | |||
111 | #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;} |
|
112 | #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;} | |
112 | #sidebar a.selected:hover {text-decoration:none;} |
|
113 | #sidebar a.selected:hover {text-decoration:none;} |
@@ -114,6 +114,15 class ActiveSupport::TestCase | |||||
114 | saved_settings.each {|k, v| Setting[k] = v} if saved_settings |
|
114 | saved_settings.each {|k, v| Setting[k] = v} if saved_settings | |
115 | end |
|
115 | end | |
116 |
|
116 | |||
|
117 | # Yields the block with user as the current user | |||
|
118 | def with_current_user(user, &block) | |||
|
119 | saved_user = User.current | |||
|
120 | User.current = user | |||
|
121 | yield | |||
|
122 | ensure | |||
|
123 | User.current = saved_user | |||
|
124 | end | |||
|
125 | ||||
117 | def change_user_password(login, new_password) |
|
126 | def change_user_password(login, new_password) | |
118 | user = User.first(:conditions => {:login => login}) |
|
127 | user = User.first(:conditions => {:login => login}) | |
119 | user.password, user.password_confirmation = new_password, new_password |
|
128 | user.password, user.password_confirmation = new_password, new_password |
@@ -1010,15 +1010,23 RAW | |||||
1010 |
|
1010 | |||
1011 | def test_link_to_user |
|
1011 | def test_link_to_user | |
1012 | user = User.find(2) |
|
1012 | user = User.find(2) | |
1013 | t = link_to_user(user) |
|
1013 | assert_equal '<a href="/users/2" class="user active">John Smith</a>', link_to_user(user) | |
1014 | assert_equal "<a href=\"/users/2\">#{ user.name }</a>", t |
|
|||
1015 | end |
|
1014 | end | |
1016 |
|
1015 | |||
1017 | def test_link_to_user_should_not_link_to_locked_user |
|
1016 | def test_link_to_user_should_not_link_to_locked_user | |
1018 | user = User.find(5) |
|
1017 | with_current_user nil do | |
1019 | assert user.locked? |
|
1018 | user = User.find(5) | |
1020 | t = link_to_user(user) |
|
1019 | assert user.locked? | |
1021 | assert_equal user.name, t |
|
1020 | assert_equal 'Dave2 Lopper2', link_to_user(user) | |
|
1021 | end | |||
|
1022 | end | |||
|
1023 | ||||
|
1024 | def test_link_to_user_should_link_to_locked_user_if_current_user_is_admin | |||
|
1025 | with_current_user User.find(1) do | |||
|
1026 | user = User.find(5) | |||
|
1027 | assert user.locked? | |||
|
1028 | assert_equal '<a href="/users/5" class="user locked">Dave2 Lopper2</a>', link_to_user(user) | |||
|
1029 | end | |||
1022 | end |
|
1030 | end | |
1023 |
|
1031 | |||
1024 | def test_link_to_user_should_not_link_to_anonymous |
|
1032 | def test_link_to_user_should_not_link_to_anonymous |
General Comments 0
You need to be logged in to leave comments.
Login now