Only for admins or when viewing its own profile. git-svn-id: http://svn.redmine.org/redmine/trunk@17973 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/4.1.0
@@ -65,6 +65,20 @@ module ApplicationHelper | |||
end | |||
end | |||
# Displays a link to edit group page if current user is admin | |||
# Otherwise display only the group name | |||
def link_to_group(group, options={}) | |||
if group.is_a?(Group) | |||
name = h(group.name) | |||
if (User.current.admin?) | |||
only_path = options[:only_path].nil? ? true : options[:only_path] | |||
link_to name, edit_group_path(group, :only_path => only_path) | |||
else | |||
name | |||
end | |||
end | |||
end | |||
# Displays a link to +issue+ with its subject. | |||
# Examples: | |||
# |
@@ -84,6 +84,18 @@ | |||
<% end %> | |||
</ul> | |||
<% end %> | |||
<% if (User.current == @user || User.current.admin?) && @user.groups.any? %> | |||
<div id="groups"> | |||
<h3><%=l(:label_group_plural)%></h3> | |||
<ul> | |||
<% for group in @user.groups %> | |||
<li><%= link_to_group(group) %> | |||
<% end %> | |||
</ul> | |||
</div> | |||
<% end %> | |||
<%= call_hook :view_account_left_bottom, :user => @user %> | |||
</div> | |||
@@ -112,6 +112,9 @@ class UsersControllerTest < Redmine::ControllerTest | |||
get :show, :params => {:id => 2} | |||
assert_response :success | |||
assert_select 'h2', :text => /John Smith/ | |||
# groups block should not be rendeder for users which are not part of any group | |||
assert_select 'div#groups', 0 | |||
end | |||
def test_show_should_display_visible_custom_fields | |||
@@ -206,6 +209,18 @@ class UsersControllerTest < Redmine::ControllerTest | |||
end | |||
end | |||
def test_show_user_should_list_user_groups | |||
@request.session[:user_id] = 1 | |||
get :show, :params => {:id => 8} | |||
assert_select 'div#groups', 1 do | |||
assert_select 'h3', :text => 'Groups' | |||
assert_select 'li', 2 | |||
assert_select 'a[href=?]', '/groups/10/edit', :text => 'A Team' | |||
assert_select 'a[href=?]', '/groups/11/edit', :text => 'B Team' | |||
end | |||
end | |||
def test_new | |||
get :new | |||
assert_response :success |
@@ -1536,6 +1536,19 @@ RAW | |||
end | |||
end | |||
def test_link_to_group_should_return_only_group_name_for_non_admin_users | |||
User.current = nil | |||
group = Group.find(10) | |||
assert_equal "A Team", link_to_group(group) | |||
end | |||
def test_link_to_group_should_link_to_group_edit_page_for_admin_users | |||
User.current = User.find(1) | |||
group = Group.find(10) | |||
result = link_to("A Team", "/groups/10/edit") | |||
assert_equal result, link_to_group(group) | |||
end | |||
def test_link_to_user_should_not_link_to_anonymous | |||
user = User.anonymous | |||
assert user.anonymous? |