diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2019-03-15 11:49:51 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2019-03-15 11:49:51 +0000 |
commit | ccda34cac6267fa95bb17cf458078565ff5f8822 (patch) | |
tree | b3611e539e72bfa44bc1ee0f14a68fb834fcd3c5 | |
parent | e26ab0d4a251cc8fcd476a6140bccfcd24a9c446 (diff) | |
download | redmine-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.rb | 14 | ||||
-rw-r--r-- | app/views/users/show.html.erb | 12 | ||||
-rw-r--r-- | test/functional/users_controller_test.rb | 15 | ||||
-rw-r--r-- | test/helpers/application_helper_test.rb | 13 |
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? |