summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2019-03-15 11:49:51 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2019-03-15 11:49:51 +0000
commitccda34cac6267fa95bb17cf458078565ff5f8822 (patch)
treeb3611e539e72bfa44bc1ee0f14a68fb834fcd3c5
parente26ab0d4a251cc8fcd476a6140bccfcd24a9c446 (diff)
downloadredmine-ccda34cac6267fa95bb17cf458078565ff5f8822.tar.gz
redmine-ccda34cac6267fa95bb17cf458078565ff5f8822.zip
Display user's groups on profile (#12796).
Only for admins or when viewing its own profile. git-svn-id: http://svn.redmine.org/redmine/trunk@17973 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/helpers/application_helper.rb14
-rw-r--r--app/views/users/show.html.erb12
-rw-r--r--test/functional/users_controller_test.rb15
-rw-r--r--test/helpers/application_helper_test.rb13
4 files changed, 54 insertions, 0 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 8ccdf0736..7174575be 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -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:
#
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index c5c17000b..66a2a46a3 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -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>
diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb
index b43d01214..4c287cf3d 100644
--- a/test/functional/users_controller_test.rb
+++ b/test/functional/users_controller_test.rb
@@ -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
diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb
index 2fcbaf7f0..7b84cdad6 100644
--- a/test/helpers/application_helper_test.rb
+++ b/test/helpers/application_helper_test.rb
@@ -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?