summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2021-07-19 15:13:58 +0000
committerGo MAEDA <maeda@farend.jp>2021-07-19 15:13:58 +0000
commit56a7fd22c7af2119980c6dba42606e140383b878 (patch)
tree9432b544b8686b1094a26c75dc28fee4a80edec8
parent482656fb2c09e9e456a3e006ceaf78d0c6f33ee5 (diff)
downloadredmine-56a7fd22c7af2119980c6dba42606e140383b878.tar.gz
redmine-56a7fd22c7af2119980c6dba42606e140383b878.zip
Add link from group name to group page on project overview page (#12795).
Patch by Go MAEDA. git-svn-id: http://svn.redmine.org/redmine/trunk@21073 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/helpers/application_helper.rb27
-rw-r--r--app/views/projects/_members_box.html.erb2
-rw-r--r--test/helpers/application_helper_test.rb11
3 files changed, 31 insertions, 9 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 57f3e488b..ae0094872 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -51,17 +51,28 @@ module ApplicationHelper
# Displays a link to user's account page if active
def link_to_user(user, options={})
- if user.is_a?(User)
- name = h(user.name(options[:format]))
- if user.active? || (User.current.admin? && user.logged?)
- only_path = options[:only_path].nil? ? true : options[:only_path]
- link_to name, user_url(user, :only_path => only_path), :class => user.css_classes
- else
- name
+ user.is_a?(User) ? link_to_principal(user, options) : h(user.to_s)
+ end
+
+ # Displays a link to user's account page or group page
+ def link_to_principal(principal, options={})
+ only_path = options[:only_path].nil? ? true : options[:only_path]
+ case principal
+ when User
+ name = h(principal.name(options[:format]))
+ if principal.active? || (User.current.admin? && principal.logged?)
+ url = user_url(principal, :only_path => only_path)
+ css_classes = principal.css_classes
end
+ when Group
+ name = h(principal.to_s)
+ url = group_url(principal, :only_path => only_path)
+ css_classes = "group icon icon-#{principal.class.name.downcase}"
else
- h(user.to_s)
+ name = h(principal.to_s)
end
+
+ url ? link_to(name, url, :class => css_classes) : name
end
# Displays a link to edit group page if current user is admin
diff --git a/app/views/projects/_members_box.html.erb b/app/views/projects/_members_box.html.erb
index e915ab910..ff7170e48 100644
--- a/app/views/projects/_members_box.html.erb
+++ b/app/views/projects/_members_box.html.erb
@@ -2,7 +2,7 @@
<div class="members box">
<h3 class="icon icon-group"><%=l(:label_member_plural)%></h3>
<% @principals_by_role.keys.sort.each do |role| %>
- <p><span class="label"><%= role %>:</span> <%= @principals_by_role[role].sort.collect{|p| link_to_user p}.join(", ").html_safe %></p>
+ <p><span class="label"><%= role %>:</span> <%= @principals_by_role[role].sort.collect{|p| link_to_principal p}.join(", ").html_safe %></p>
<% end %>
</div>
<% end %>
diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb
index 730023443..384b7a383 100644
--- a/test/helpers/application_helper_test.rb
+++ b/test/helpers/application_helper_test.rb
@@ -1708,6 +1708,17 @@ class ApplicationHelperTest < Redmine::HelperTest
end
end
+ def test_link_to_principal_should_link_to_user
+ user = User.find(2)
+ assert_equal link_to_user(user), link_to_principal(user)
+ end
+
+ def test_link_to_principal_should_link_to_group
+ group = Group.find(10)
+ result = link_to('A Team', '/groups/10', :class => 'group icon icon-group')
+ assert_equal result, link_to_principal(group)
+ end
+
def test_link_to_group_should_return_only_group_name_for_non_admin_users
User.current = nil
group = Group.find(10)