]> source.dussan.org Git - redmine.git/commitdiff
Add link from group name to group page on project overview page (#12795).
authorGo MAEDA <maeda@farend.jp>
Mon, 19 Jul 2021 15:13:58 +0000 (15:13 +0000)
committerGo MAEDA <maeda@farend.jp>
Mon, 19 Jul 2021 15:13:58 +0000 (15:13 +0000)
Patch by Go MAEDA.

git-svn-id: http://svn.redmine.org/redmine/trunk@21073 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/application_helper.rb
app/views/projects/_members_box.html.erb
test/helpers/application_helper_test.rb

index 57f3e488bd778613fa9eee90915ef44f93e93da4..ae0094872f1a54256840d78294a5dbdc0792e281 100644 (file)
@@ -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
index e915ab910ac5f11c5b832cffff4f4d1d6f827d13..ff7170e488a23d802ae281cc758c5795475f16a0 100644 (file)
@@ -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 %>
index 730023443c456df285f0d7da65501dd3e4af6c93..384b7a3838e2ce7b50e345456d5d8223cd73595a 100644 (file)
@@ -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)