Adds links to locked users when current user is admin.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10673 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2012-10-18 17:08:42 +00:00
parent 50037b18c4
commit 7729178d9d
6 changed files with 38 additions and 9 deletions

View File

@ -47,8 +47,8 @@ module ApplicationHelper
def link_to_user(user, options={}) def link_to_user(user, options={})
if user.is_a?(User) if user.is_a?(User)
name = h(user.name(options[:format])) name = h(user.name(options[:format]))
if user.active? if user.active? || (User.current.admin? && user.logged?)
link_to name, :controller => 'users', :action => 'show', :id => user link_to name, {:controller => 'users', :action => 'show', :id => user}, :class => user.css_classes
else else
name name
end end

View File

@ -387,6 +387,17 @@ class User < Principal
name name
end end
CSS_CLASS_BY_STATUS = {
STATUS_ANONYMOUS => 'anon',
STATUS_ACTIVE => 'active',
STATUS_REGISTERED => 'registered',
STATUS_LOCKED => 'locked'
}
def css_classes
"user #{CSS_CLASS_BY_STATUS[status]}"
end
# Returns the current day according to user's time zone # Returns the current day according to user's time zone
def today def today
if time_zone.nil? if time_zone.nil?

View File

@ -36,7 +36,7 @@
</tr></thead> </tr></thead>
<tbody> <tbody>
<% for user in @users -%> <% for user in @users -%>
<tr class="user <%= cycle("odd", "even") %> <%= %w(anon active registered locked)[user.status] %>"> <tr class="<%= user.css_classes %> <%= cycle("odd", "even") %>">
<td class="username"><%= avatar(user, :size => "14") %><%= link_to h(user.login), edit_user_path(user) %></td> <td class="username"><%= avatar(user, :size => "14") %><%= link_to h(user.login), edit_user_path(user) %></td>
<td class="firstname"><%= h(user.firstname) %></td> <td class="firstname"><%= h(user.firstname) %></td>
<td class="lastname"><%= h(user.lastname) %></td> <td class="lastname"><%= h(user.lastname) %></td>

View File

@ -107,6 +107,7 @@ a img{ border: 0; }
a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; } a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; } a.project.closed, a.project.closed:link, a.project.closed:visited { color: #999; }
a.user.locked, a.user.locked:link, a.user.locked:visited {color: #999;}
#sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;} #sidebar a.selected {line-height:1.7em; padding:1px 3px 2px 2px; margin-left:-2px; background-color:#9DB9D5; color:#fff; border-radius:2px;}
#sidebar a.selected:hover {text-decoration:none;} #sidebar a.selected:hover {text-decoration:none;}

View File

@ -114,6 +114,15 @@ class ActiveSupport::TestCase
saved_settings.each {|k, v| Setting[k] = v} if saved_settings saved_settings.each {|k, v| Setting[k] = v} if saved_settings
end end
# Yields the block with user as the current user
def with_current_user(user, &block)
saved_user = User.current
User.current = user
yield
ensure
User.current = saved_user
end
def change_user_password(login, new_password) def change_user_password(login, new_password)
user = User.first(:conditions => {:login => login}) user = User.first(:conditions => {:login => login})
user.password, user.password_confirmation = new_password, new_password user.password, user.password_confirmation = new_password, new_password

View File

@ -1010,15 +1010,23 @@ RAW
def test_link_to_user def test_link_to_user
user = User.find(2) user = User.find(2)
t = link_to_user(user) assert_equal '<a href="/users/2" class="user active">John Smith</a>', link_to_user(user)
assert_equal "<a href=\"/users/2\">#{ user.name }</a>", t
end end
def test_link_to_user_should_not_link_to_locked_user def test_link_to_user_should_not_link_to_locked_user
user = User.find(5) with_current_user nil do
assert user.locked? user = User.find(5)
t = link_to_user(user) assert user.locked?
assert_equal user.name, t assert_equal 'Dave2 Lopper2', link_to_user(user)
end
end
def test_link_to_user_should_link_to_locked_user_if_current_user_is_admin
with_current_user User.find(1) do
user = User.find(5)
assert user.locked?
assert_equal '<a href="/users/5" class="user locked">Dave2 Lopper2</a>', link_to_user(user)
end
end end
def test_link_to_user_should_not_link_to_anonymous def test_link_to_user_should_not_link_to_anonymous