]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3618 cosmetic improvements of role manamagent pages
authorSimon Brandhof <simon.brandhof@gmail.com>
Thu, 5 Jul 2012 22:28:20 +0000 (00:28 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Thu, 5 Jul 2012 22:30:32 +0000 (00:30 +0200)
12 files changed:
sonar-server/src/main/webapp/WEB-INF/app/controllers/roles_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/helpers/roles_helper.rb
sonar-server/src/main/webapp/WEB-INF/app/views/project_roles/edit_groups.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/project_roles/edit_users.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/project_roles/index.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/roles/edit_default_project_groups.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/roles/edit_default_project_users.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/roles/edit_groups.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/roles/edit_users.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/roles/global.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/roles/projects.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/utils/_tfoot_pagination.html.erb

index 3b879f7448cf69b8f992d5c475624013ded27930..a8c39cd242fc0a517baf025f7d509e72f3c5c5ee 100644 (file)
@@ -79,6 +79,8 @@ class RolesController < ApplicationController
     bad_request('Missing qualifier') if params[:qualifier].blank?
   end
 
+
+
   # POST REQUESTS
 
   def set_users
@@ -96,14 +98,16 @@ class RolesController < ApplicationController
   def set_default_project_groups
     bad_request('Missing role') if params[:role].blank?
     bad_request('Missing qualifier') if params[:qualifier].blank?
-    Property.set("sonar.role.#{params[:role]}.#{params[:qualifier]}.defaultGroups", params[:groups].join(','))
+    group_names = params[:groups] || []
+    Property.set("sonar.role.#{params[:role]}.#{params[:qualifier]}.defaultGroups", group_names.join(','))
     redirect
   end
 
   def set_default_project_users
     bad_request('Missing role') if params[:role].blank?
     bad_request('Missing qualifier') if params[:qualifier].blank?
-    Property.set("sonar.role.#{params[:role]}.#{params[:qualifier]}.defaultUsers", params[:users].join(','))
+    logins = params[:logins] || []
+    Property.set("sonar.role.#{params[:role]}.#{params[:qualifier]}.defaultUsers", logins.join(','))
     redirect
   end
 
index b0750b80f09776b5104d37899b7daa14c8c9b003..95bba72992a6e48a7e2afa2c3020fe8461efa104 100644 (file)
@@ -21,7 +21,7 @@ module RolesHelper
 
   def users(role, resource_id=nil)
     resource_id=(resource_id.blank? ? nil : resource_id.to_i)
-    user_roles=UserRole.find(:all, :include => 'user', :conditions => {:role => role, :resource_id => resource_id})
+    user_roles=UserRole.find(:all, :include => 'user', :conditions => {:role => role, :resource_id => resource_id, :users => {:active => true}})
     users = user_roles.map { |ur| ur.user }
     Api::Utils.insensitive_sort(users) { |user| user.name }
   end
@@ -46,14 +46,16 @@ module RolesHelper
     group ? group.name : 'Anyone'
   end
 
-  def default_project_groups(role, qualifier)
+  def default_project_group_names(role, qualifier)
     property_value=(controller.java_facade.getConfigurationValue("sonar.role.#{role}.#{qualifier}.defaultGroups")||'')
     Api::Utils.insensitive_sort(property_value.split(','))
   end
 
   def default_project_users(role, qualifier)
     property_value=(controller.java_facade.getConfigurationValue("sonar.role.#{role}.#{qualifier}.defaultUsers") || '')
-    Api::Utils.insensitive_sort(property_value.split(','))
+    logins=property_value.split(',')
+    users = User.find(:all, :conditions => ['login in (?) and active=?', logins, true])
+    Api::Utils.insensitive_sort(users) { |user| user.name }
   end
 
   def role_name(role)
@@ -63,7 +65,7 @@ module RolesHelper
       when 'user' then
         'Users'
       when 'codeviewer' then
-        'Code viewers'
+        'Code Viewers'
       else
         role.to_s
     end
index 26546c894d4470da659ff3912129e12bc4c8786e..0528c9dd75daf5bf29f84aded3ecd33c9101b4b4 100644 (file)
@@ -2,8 +2,8 @@
   granted_groups=groups(@role, @project.id)
   ungranted_groups=all_groups - granted_groups
 %>
-<div class="subtitle">&raquo; <a href="<%= url_for :action => 'index', :resource => @project.id -%>">Back to roles</a></div>
-<h1><%= h(@project.name) %></h1>
+<div class="subtitle">&raquo; <a href="<%= url_for :action => 'index', :resource => @project.id -%>">Back</a></div>
+<h1>Role Membership Of <%= h(@project.name) %></h1>
 <br/>
 <div>
   <form action="<%= url_for :action => 'grant_groups' -%>" method="post">
     <table>
       <tbody>
         <tr>
-          <td style="padding: 5px 0pt;" valign="top">
-            <h2>Ungranted groups</h2>
+          <td style="padding: 5px 0" valign="top">
+            <h2>Add Groups</h2>
             <select name="from" id="from" size="20" style="margin: 5px 0pt; width: 300px;" multiple="multiple">
               <% ungranted_groups.each do |group| %>
                 <option value="<%= group ? group.id : '' -%>"><%= group_name(group) %></option>
               <% end %>
             </select>
           </td>
-          <td style="padding: 0pt 10px;" align="center">
+          <td style="padding: 0 10px;" align="center">
             <button id="select_right" onclick="SelectBox.move('from', 'to');SelectBox.sort('to');SelectBox.redisplay('to');return false;">select >></button><br>
             <button id="select_right_all" onclick="SelectBox.move_all('from', 'to');return false;">select all >></button><br><br>
             <button id="select_left" onclick="SelectBox.move('to', 'from');return false;"><< unselect</button><br>
           <td class="box" style="padding: 5px 10px;" valign="top">
             <h2>Role: <%= role_name(@role) -%></h2>
 
-            <select name="groups[]" id="to" size="20" multiple="multiple" style="margin: 5px 0pt; width: 300px;">
+            <select name="groups[]" id="to" size="20" multiple="multiple" style="margin: 5px 0; width: 300px;">
               <% granted_groups.each do |group| %>
                 <option value="<%= group ? group.id : '' -%>"><%= group_name(group) %></option>
               <% end %>
             </select><br>
 
-            <div style="padding: 5px 0pt;">
+            <div style="padding: 5px 0">
               <input id="save" value="Save" onclick="SelectBox.select_all('to');submit();return false;" type="submit">
+              <a href="<%= url_for :action => 'index', :resource => @project.id -%>"><%=  message 'cancel' -%></a>
             </div>
           </td>
         </tr>
index 03728a5f5324af03295a6d74875a07d7df70f658..cd57c893533be02ffe0e720f043792bff7856f74 100644 (file)
@@ -2,8 +2,8 @@
   granted_users=users(@role, params[:resource])
   ungranted_users=all_users - granted_users
 %>
-<div class="subtitle">&raquo; <a href="<%= url_for :action => 'index', :resource => @project.id -%>">Back to roles</a></div>
-<h1><%= h(@project.name) %></h1>
+<div class="subtitle">&raquo; <a href="<%= url_for :action => 'index', :resource => @project.id -%>">Back</a></div>
+<h1>Role Membership Of <%= h(@project.name) %></h1>
 <br/>
 <div id="main_content">
   <form action="<%= url_for :action => 'grant_users' -%>" method="post">
     <table>
       <tbody>
         <tr>
-          <td style="padding: 5px 0pt;" valign="top">
-            <h2>Ungranted users</h2>
-            <select name="from" id="from" size="30" style="margin: 5px 0pt; width: 300px;" multiple="multiple">
+          <td style="padding: 5px 0;" valign="top">
+            <h2>Add Users</h2>
+            <select name="from" id="from" size="30" style="margin: 5px 0; width: 300px;" multiple="multiple">
               <% ungranted_users.sort.each do |user| %>
-                <option value="<%= user.id -%>"><%= user.name -%></option>
+                <option value="<%= user.id -%>"><%= user.name -%></option>
               <% end %>
             </select>
           </td>
-          <td style="padding: 0pt 10px;" align="center">
+          <td style="padding: 0 10px;" align="center">
             <button id="select_right" onclick="SelectBox.move('from', 'to');SelectBox.sort('to');SelectBox.redisplay('to');return false;">select >></button><br>
             <button id="select_right_all" onclick="SelectBox.move_all('from', 'to');return false;">select all >></button><br><br>
             <button id="select_left" onclick="SelectBox.move('to', 'from');return false;"><< unselect</button><br>
@@ -34,8 +34,9 @@
               <%= options_from_collection_for_select(granted_users, "id", "name") %>
             </select><br>
 
-            <div style="padding: 5px 0pt;">
+            <div style="padding: 5px 0;">
               <input id="save" value="Save" onclick="SelectBox.select_all('to');submit();return false;" type="submit">
+              <a href="<%= url_for :action => 'index', :resource => @project.id -%>"><%= message 'cancel' -%></a>
             </div>
           </td>
         </tr>
index 00e8c299b457463e6172cf44c48395186996677f..61aea2fcde7055b10dad233f3e9831feecef587b 100644 (file)
@@ -1,4 +1,4 @@
-<h1 class="marginbottom10">Project roles</h1>
+<h1 class="marginbottom10">Roles</h1>
 <table class="data width100">
   <thead>
   <tr>
@@ -11,7 +11,7 @@
   <tr class="even" >
     <td valign="top"><b>Administrators</b><br/><span class="small gray">Ability to perform administration functions for a project by accessing its settings.</span></td>
     <td valign="top" style="word-break:break-all;width:35%;">
-      <span><%= users('admin', params[:resource]).map(&:login).join(', ') %></span>
+      <span><%= users('admin', params[:resource]).map(&:name).join(', ') %></span>
       (<%= link_to "select", {:action => 'edit_users', :resource => @project.id, :role => 'admin'}, :class => 'link-action' %>)
     </td>
     <td valign="top" style="word-break:break-all;width:35%;">
@@ -22,7 +22,7 @@
   <tr class="odd">
     <td valign="top"><b>Users</b><br/><span class="small gray">Ability to navigate through every service of a project, except viewing source code and settings.</span></td>
     <td valign="top" style="word-break:break-all;width:35%;">
-      <span><%= users('user', params[:resource]).map(&:login).join(', ') %></span>
+      <span><%= users('user', params[:resource]).map(&:name).join(', ') %></span>
       (<%= link_to "select", {:action => 'edit_users', :resource => @project.id, :role => 'user'}, :class => 'link-action' %>)
     </td>
     <td valign="top" style="word-break:break-all;width:35%;">
@@ -33,7 +33,7 @@
   <tr class="even" >
     <td valign="top"><b>Code viewers</b><br/><span class="small gray">Ability to view source code of a project.</span></td>
     <td valign="top" style="word-break:break-all;width:35%;">
-      <span><%= users('codeviewer', params[:resource]).map(&:login).join(', ') %></span>
+      <span><%= users('codeviewer', params[:resource]).map(&:name).join(', ') %></span>
       (<%= link_to "select", {:action => 'edit_users', :resource => @project.id, :role => 'codeviewer'}, :class => 'link-action' %>)
     </td>
     <td valign="top" style="word-break:break-all;width:35%;">
index 8c688773fe77fb2fddc296b4477c2ee5b99af721..8d4a2003e2b6b9dba322d6da53d4cce85215aa49 100644 (file)
@@ -1,10 +1,10 @@
 <%
-  granted_groups=default_project_groups(params[:role], params[:qualifier])
+  granted_groups=default_project_group_names(params[:role], params[:qualifier])
   all_groups = ['Anyone'].concat(Api::Utils.insensitive_sort(Group.all.map{|group| group.name}))
   ungranted_groups=all_groups - granted_groups
 %>
 <div class="subtitle">&raquo; <a href="<%= url_for :action => params[:redirect], :q => params[:q], :qualifier => params[:qualifier] -%>">Back</a></div>
-<h1>TO BE DEFINED</h1>
+<h1>Role Membership For New <%= message("qualifiers.#{params[:qualifier]}") -%></h1>
 <br/>
 <div>
   <form action="<%= url_for :action => 'set_default_project_groups' -%>" method="POST">
@@ -17,7 +17,7 @@
       <tbody>
         <tr>
           <td style="padding: 5px 0;" valign="top">
-            <h2>Ungranted groups</h2>
+            <h2>Add Groups</h2>
             <select name="from" id="from" size="20" style="margin: 5px 0; width: 300px;" multiple="multiple">
               <% ungranted_groups.each do |group| %>
                 <option value="<%= h group -%>"><%= group -%></option>
@@ -41,6 +41,7 @@
 
             <div style="padding: 5px 0;">
               <input id="save" value="Save" onclick="SelectBox.select_all('to');submit();return false;" type="submit">
+              <a href="<%= url_for :action => params[:redirect], :q => params[:q], :qualifier => params[:qualifier] -%>"><%= message 'cancel' -%></a>
             </div>
           </td>
         </tr>
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9108ff50d96ffe38b047d04cf3e60dbd92241fdf 100644 (file)
@@ -0,0 +1,54 @@
+<%
+  granted_users=default_project_users(params[:role], params[:qualifier])
+  ungranted_users=all_users - granted_users
+%>
+<div class="subtitle">&raquo; <a href="<%= url_for :action => params[:redirect], :q => params[:q], :qualifier => params[:qualifier] -%>">Back</a></div>
+<h1>Role Membership For New <%= message("qualifiers.#{params[:qualifier]}") -%></h1>
+<br/>
+<div>
+  <form action="<%= url_for :action => 'set_default_project_users' -%>" method="POST">
+    <input name="role" value="<%= params[:role] -%>" type="hidden"/>
+    <input name="redirect" value="projects" type="hidden"/>
+    <input name="q" value="<%= params[:q] -%>" type="hidden" />
+    <input name="qualifier" value="<%= params[:qualifier] -%>" type="hidden" />
+    <input name="page" value="<%= params[:page] -%>" type="hidden" />
+    <table>
+      <tbody>
+        <tr>
+          <td style="padding: 5px 0;" valign="top">
+            <h2>Add Users</h2>
+            <select name="from" id="from" size="20" style="margin: 5px 0; width: 300px;" multiple="multiple">
+              <% ungranted_users.each do |user| %>
+                <option value="<%= h user.login -%>"><%= h user.name -%></option>
+              <% end %>
+            </select>
+          </td>
+          <td style="padding: 0 10px;" align="center">
+            <button id="select_right" onclick="SelectBox.move('from', 'to');SelectBox.sort('to');SelectBox.redisplay('to');return false;">select >></button><br>
+            <button id="select_right_all" onclick="SelectBox.move_all('from', 'to');return false;">select all >></button><br><br>
+            <button id="select_left" onclick="SelectBox.move('to', 'from');return false;"><< unselect</button><br>
+            <button id="select_left_all" onclick="SelectBox.move_all('to', 'from');return false;"><< unselect all</button>
+          </td>
+          <td class="box" style="padding: 5px 10px;" valign="top">
+            <h2>Role: <%= role_name(params[:role]) -%></h2>
+
+            <select name="logins[]" id="to" size="20" multiple="multiple" style="margin: 5px 0; width: 300px;">
+              <% granted_users.each do |user| %>
+                <option value="<%= h user.login -%>"><%= h user.name -%></option>
+              <% end %>
+            </select><br>
+
+            <div style="padding: 5px 0;">
+              <input id="save" value="Save" onclick="SelectBox.select_all('to');submit();return false;" type="submit">
+              <a href="<%= url_for :action => params[:redirect], :q => params[:q], :qualifier => params[:qualifier] -%>"><%= message 'cancel' -%></a>
+            </div>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+  </form>
+  <script>
+    SelectBox.init('from');
+    SelectBox.init('to');
+  </script>
+</div>
index 45d0213e677aada5a93f2ad100e71bf23fc1f273..9be1685567cdd2804fc72f2a9e2e85d566bb0976 100644 (file)
@@ -2,9 +2,9 @@
   granted_groups=groups(@role, params[:resource])
   ungranted_groups=all_groups - granted_groups
   if @project
-     title=h(@project.name)
+     title='Role Membership For: ' + h(@project.name)
    else
-     title='System administrators'
+     title='System Administrators'
    end
 %>
 <div class="subtitle">&raquo; <a href="<%= url_for :action => params[:redirect], :q => params[:q], :qualifier => params[:qualifier] -%>">Back</a></div>
@@ -22,7 +22,7 @@
       <tbody>
         <tr>
           <td style="padding: 5px 0;" valign="top">
-            <h2>Ungranted groups</h2>
+            <h2>Add Groups</h2>
             <select name="from" id="from" size="20" style="margin: 5px 0; width: 300px;" multiple="multiple">
               <% ungranted_groups.each do |group| %>
                 <option value="<%= group ? group.id : '' -%>"><%= group_name(group) -%></option>
@@ -46,6 +46,7 @@
 
             <div style="padding: 5px 0;">
               <input id="save" value="Save" onclick="SelectBox.select_all('to');submit();return false;" type="submit">
+              <a href="<%= url_for :action => params[:redirect], :q => params[:q], :qualifier => params[:qualifier] -%>"><%= message 'cancel' -%></a>
             </div>
           </td>
         </tr>
index 7782d580f1cef75ce1f89f9be37ca49a8ed4e6e2..92aaf60aa02bfe79a769871101a35d0d049bb572 100644 (file)
@@ -2,11 +2,9 @@
   granted_users=users(@role, params[:resource])
   ungranted_users=(all_users - granted_users)
   if @project
-     title=h(@project.name)
-   elsif @role.starts_with?('default-')
-     title="Default project #{role_name(@role)}"
+     title='Role Membership For: ' + h(@project.name)
    else
-     title="Global #{role_name(@role)}"
+     title="System #{role_name(@role)}"
    end
 %>
 <div class="subtitle">&raquo; <a href="<%= url_for :action => params[:redirect], :q => params[:q], :qualifier => params[:qualifier] -%>">Back</a></div>
@@ -24,7 +22,7 @@
       <tbody>
         <tr>
           <td style="padding: 5px 0;" valign="top">
-            <h2>Ungranted users</h2>
+            <h2>Add Users</h2>
             <select name="from" id="from" size="30" style="margin: 5px 0; width: 300px;" multiple="multiple">
               <% ungranted_users.each do |user| %>
                 <option value="<%= user.id -%>"><%= user.name -%></option>
@@ -46,6 +44,7 @@
 
             <div style="padding: 5px 0;">
               <input id="save" value="Save" onclick="SelectBox.select_all('to');submit();return false;" type="submit">
+              <a href="<%= url_for :action => params[:redirect], :q => params[:q], :qualifier => params[:qualifier] -%>"><%= message 'cancel' -%></a>
             </div>
           </td>
         </tr>
index 6f01618570eaa874602e29edb18685aacb7e87fe..0bbd2f880629148e99b20af67d4a66cf91dfb34e 100644 (file)
   <tr class="even" >
     <td valign="top"><b>Administrators</b><br/><span class="small gray">Ability to perform all administration functions for the instance: global configuration and personalization of default dashboards.</span></td>
     <td valign="top" style="word-break:break-all;width:30%;">
-      <span><%= users('admin').map(&:login).join(', ') %></span>
-      (<%= link_to "select", {:action => 'edit_users', :role => 'admin', :redirect => 'global'}, :class => 'link-action' %>)
+      <span><%= users('admin').map(&:name).join(', ') -%></span>
+      (<%= link_to "select", {:action => 'edit_users', :role => 'admin', :redirect => 'global'}, :class => 'link-action' -%>)
     </td>
     <td valign="top" style="word-break:break-all;width:30%;">
       <span><%= groups('admin').map{|g| group_name(g)}.join(', ') %></span>
-      (<%= link_to "select", {:action => 'edit_groups', :role => 'admin', :redirect => 'global'}, :class => 'link-action' %>)
+      (<%= link_to "select", {:action => 'edit_groups', :role => 'admin', :redirect => 'global'}, :class => 'link-action' -%>)
     </td>
   </tr>
   </tbody>
index cfe4f174958af73568f7797f0b2a8574df1e0087..75b0724f54476638900ee35f1f0826bc0fdbc3e0 100644 (file)
@@ -1,59 +1,64 @@
 <h1 class="marginbottom10"><%= message('roles.page') -%></h1>
 
 <% if @qualifiers.size>1 %>
-<ul class="tabs" id="qualifier-tabs">
-  <% @qualifiers.each do |q|
+  <ul class="tabs" id="qualifier-tabs">
+    <% @qualifiers.each do |q|
       css_class = (q==@qualifier ? 'selected' : '')
-  %>
-    <li>
-      <%= link_to message("qualifiers.#{q}"), {:action => 'projects', :qualifier => q}, {:class => css_class} -%>
-    </li>
-  <% end %>
-</ul>
+    %>
+      <li>
+        <%= link_to message("qualifiers.#{q}"), {:action => 'projects', :qualifier => q}, {:class => css_class} -%>
+      </li>
+    <% end %>
+  </ul>
+  <div class="tabs-panel">
 <% end %>
 
 <table class="data width100" id="default-project-roles">
   <thead>
   <tr>
-    <th>Default Permissions For New <%= message("qualifiers.#{@qualifier}") -%></th>
+    <th>Role Membership For New <%= message("qualifiers.#{@qualifier}") -%></th>
     <th width="35%">Users</th>
     <th width="35%">Groups</th>
   </tr>
   </thead>
   <tbody>
+
   <tr class="even">
-    <td valign="top"><b>Role: Administrators</b><br/><span class="small gray">Ability to perform administration functions for a project by accessing its settings.</span></td>
+    <td valign="top"><b>Role: Administrators</b><br/><span class="small gray">Ability to perform administration functions for a project by accessing its settings.</span>
+    </td>
     <td valign="top" style="word-break:break-all;width:35%;">
       <div style="vertical-align:top">
-        <span><%= default_project_users('admin', @qualifier).join(', ') -%></span>
-        (<%= link_to "select", {:action => 'edit_default_project_users', :role => 'admin', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' %>)
+        <span><%= default_project_users('admin', @qualifier).map{|u| h u.name}.join(', ') -%></span>
+        (<%= link_to "select", {:action => 'edit_default_project_users', :role => 'admin', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' -%>)
       </div>
     </td>
     <td valign="top" style="word-break:break-all;width:35%;">
-      <span><%= default_project_groups('admin', @qualifier).join(', ') -%></span>
-      (<%= link_to "select", {:action => 'edit_default_project_groups', :role => 'admin', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' %>)
+      <span><%= default_project_group_names('admin', @qualifier).join(', ') -%></span>
+      (<%= link_to "select", {:action => 'edit_default_project_groups', :role => 'admin', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' -%>)
     </td>
   </tr>
   <tr class="odd">
-    <td valign="top"><b>Role: Users</b><br/><span class="small gray">Ability to navigate through every service of a project, except viewing source code and settings.</span></td>
+    <td valign="top"><b>Role: Users</b><br/><span class="small gray">Ability to navigate through every service of a project, except viewing source code and settings.</span>
+    </td>
     <td valign="top" style="word-break:break-all;width:35%;">
-      <span><%= default_project_users('user', @qualifier).join(', ') -%></span>
-      (<%= link_to "select", {:action => 'edit_default_project_users', :role => 'user', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' %>)
+      <span><%= default_project_users('user', @qualifier).map{|u| h u.name}.join(', ') -%></span>
+      (<%= link_to "select", {:action => 'edit_default_project_users', :role => 'user', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' -%>)
     </td>
     <td valign="top" style="word-break:break-all;width:35%;">
-      <span><%= default_project_groups('user', @qualifier).join(', ') -%></span>
-      (<%= link_to "select", {:action => 'edit_default_project_groups', :role => 'user', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' %>)
+      <span><%= default_project_group_names('user', @qualifier).join(', ') -%></span>
+      (<%= link_to "select", {:action => 'edit_default_project_groups', :role => 'user', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' -%>)
     </td>
   </tr>
   <tr class="even">
-    <td valign="top"><b>Role: Code viewers</b><br/><span class="small gray">Ability to view source code of a project.</span></td>
+    <td valign="top">
+      <b>Role: Code viewers</b><br/><span class="small gray">Ability to view source code of a project.</span></td>
     <td valign="top" style="word-break:break-all;width:35%;">
-      <span><%= default_project_users('codeviewer', @qualifier).join(', ') -%></span>
-      (<%= link_to "select", {:action => 'edit_default_project_users', :role => 'codeviewer', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' %>)
+      <span><%= default_project_users('codeviewer', @qualifier).map{|u| h u.name}.join(', ') -%></span>
+      (<%= link_to "select", {:action => 'edit_default_project_users', :role => 'codeviewer', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' -%>)
     </td>
     <td valign="top" style="word-break:break-all;width:35%;">
-      <span><%= default_project_groups('codeviewer', @qualifier).join(', ') -%></span>
-      (<%= link_to "select", {:action => 'edit_default_project_groups', :role => 'codeviewer', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' %>)
+      <span><%= default_project_group_names('codeviewer', @qualifier).join(', ') -%></span>
+      (<%= link_to "select", {:action => 'edit_default_project_groups', :role => 'codeviewer', :redirect => 'projects', :qualifier => @qualifier}, :class => 'link-action' -%>)
     </td>
   </tr>
   </tbody>
 
 <br/><br/>
 
-<div class="<%= @qualifiers.size>1 ? 'tabs-panel' : '' -%>">
+<table class="data width100" id="projects">
+  <thead>
+  <tr>
+    <th>
+      <form action="<%= url_for :action => 'projects', :qualifier => @qualifier -%>" method="GET">
+        <input type="hidden" name="qualifier" value="<%= @qualifier -%>"/>
+        <input type="text" name="q" value="<%= params[:q] -%>" id="search_text"/>
+        <input type="submit" value="Search" id="search_submit"/>
+      </form>
+    </th>
+    <th>Role: Administrators</th>
+    <th>Role: Users</th>
+    <th>Role: Code viewers</th>
+  </tr>
+  </thead>
+
+  <%= render :partial => 'utils/tfoot_pagination', :locals => {:pagination => @pagination, :colspan => 4} %>
 
-  <table class="data width100" id="projects">
-    <thead>
-    <tr>
-      <th>
-        <form action="<%= url_for :action => 'projects', :qualifier => @qualifier -%>" method="GET">
-          <input type="hidden" name="qualifier" value="<%= @qualifier -%>" />
-          <input type="text" name="q" value="<%= params[:q] -%>" id="search_text"/>
-          <input type="submit" value="Search" id="search_submit"/>
-        </form>
-      </th>
-      <th>Role: Administrators</th>
-      <th>Role: Users</th>
-      <th>Role: Code viewers</th>
+  <tbody>
+  <% if @projects.empty? %>
+    <tr class="even">
+      <td colspan="4" align="left"><%= message('no_results') %></td>
     </tr>
-    </thead>
+  <% end
 
-    <%= render :partial => 'utils/tfoot_pagination', :locals => {:pagination => @pagination, :colspan => 4} %>
+     @projects.each do |project|
+  %>
+    <tr class="<%= cycle('even', 'odd') -%>">
+      <td valign="top"><b><%= h project.name %></b><br/>
+        <span class="small gray"><%= project.key -%></span>
+      </td>
+      <td valign="top">
+        <%
+           users=Api::Utils.insensitive_sort(project.user_roles.select { |ur| ur.role=='admin' }.map { |ur| ur.user.name })
+           groups=Api::Utils.insensitive_sort(project.group_roles.select { |gr| gr.role=='admin' }.map { |gr| group_name(gr.group) })
+        %>
+        <%= users.join(', ') %>
+        (<a href="<%= ApplicationController.root_context -%>/roles/edit_users?redirect=projects&role=admin&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select
+        users</a>)<br/>
+        <%= groups.join(', ') %>
+        (<a href="<%= ApplicationController.root_context -%>/roles/edit_groups?redirect=projects&role=admin&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select
+        groups</a>)
+      </td>
+      <td valign="top">
+        <%
+           users=Api::Utils.insensitive_sort(project.user_roles.select { |ur| ur.role=='user' }.map { |ur| ur.user.name })
+           groups=Api::Utils.insensitive_sort(project.group_roles.select { |gr| gr.role=='user' }.map { |gr| group_name(gr.group) })
+        %>
+        <%= users.join(', ') %>
+        (<a href="<%= ApplicationController.root_context -%>/roles/edit_users?redirect=projects&role=user&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select
+        users</a>)<br/>
+        <%= groups.join(', ') %>
+        (<a href="<%= ApplicationController.root_context -%>/roles/edit_groups?redirect=projects&role=user&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select
+        groups</a>)
+      </td>
+      <td valign="top">
+        <%
+           users=Api::Utils.insensitive_sort(project.user_roles.select { |ur| ur.role=='codeviewer' }.map { |ur| ur.user.name })
+           groups=Api::Utils.insensitive_sort(project.group_roles.select { |gr| gr.role=='codeviewer' }.map { |gr| group_name(gr.group) })
+        %>
+        <%= users.join(', ') %>
+        (<a href="<%= ApplicationController.root_context -%>/roles/edit_users?redirect=projects&role=codeviewer&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select
+        users</a>)<br/>
+        <%= groups.join(', ') %>
+        (<a href="<%= ApplicationController.root_context -%>/roles/edit_groups?redirect=projects&role=codeviewer&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select
+        groups</a>)
+      </td>
+    </tr>
+  <%
+     end %>
+  </tbody>
+</table>
 
-    <tbody>
-    <% if @projects.empty? %>
-      <tr class="even">
-        <td colspan="4" align="left"><%= message('no_results') %></td>
-      </tr>
-    <% end
+<% if @qualifiers.size>1 %></div><% end %>
 
-       @projects.each do |project|
- %>
-        <tr class="<%= cycle('even', 'odd') -%>">
-          <td valign="top"><b><%= h project.name %></b><br/>
-            <span class="small gray"><%= project.key -%></span>
-          </td>
-          <td valign="top">
-            <%
-               users=project.user_roles.select { |ur| ur.role=='admin' }.map { |ur| ur.user.login }
-               groups=project.group_roles.select { |gr| gr.role=='admin' }.map { |gr| group_name(gr.group) }
-            %>
-            <%= users.join(', ') %>
-            (<a href="<%= ApplicationController.root_context -%>/roles/edit_users?redirect=projects&role=admin&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select users</a>)<br/>
-            <%= groups.join(', ') %>
-            (<a href="<%= ApplicationController.root_context -%>/roles/edit_groups?redirect=projects&role=admin&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select groups</a>)
-          </td>
-          <td valign="top">
-            <%
-               users=project.user_roles.select { |ur| ur.role=='user' }.map { |ur| ur.user.login }
-               groups=project.group_roles.select { |gr| gr.role=='user' }.map { |gr| group_name(gr.group) }
-            %>
-            <%= users.join(', ') %>
-            (<a href="<%= ApplicationController.root_context -%>/roles/edit_users?redirect=projects&role=user&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select users</a>)<br/>
-            <%= groups.join(', ') %>
-            (<a href="<%= ApplicationController.root_context -%>/roles/edit_groups?redirect=projects&role=user&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select groups</a>)
-          </td>
-          <td valign="top">
-            <%
-               users=project.user_roles.select { |ur| ur.role=='codeviewer' }.map { |ur| ur.user.login }
-               groups=project.group_roles.select { |gr| gr.role=='codeviewer' }.map { |gr| group_name(gr.group) }
-            %>
-            <%= users.join(', ') %>
-            (<a href="<%= ApplicationController.root_context -%>/roles/edit_users?redirect=projects&role=codeviewer&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select users</a>)<br/>
-            <%= groups.join(', ') %>
-            (<a href="<%= ApplicationController.root_context -%>/roles/edit_groups?redirect=projects&role=codeviewer&resource=<%= project.id -%>&q=<%= u params[:q] -%>&qualifier=<%= @qualifier -%>&page=<%= params[:page] -%>" class="link-action">select groups</a>)
-          </td>
-        </tr>
-      <%
-         end %>
-    </tbody>
-  </table>
-</div>
 <script>
   $('search_text').focus();
 </script>
\ No newline at end of file
index ea752abaa23a470bca2e9e504c9e80b1b29727fc..31766fe114eafd652426f00a9ab06357d952b860 100644 (file)
@@ -2,7 +2,7 @@
 <tr>
   <td colspan="<%= colspan || 1 -%>">
     <% if pagination.count>0 %>
-    <%= pagination.count -%> <%= message('results').downcase -%>
+    <%= message('x_results', :params => [pagination.count]) -%>
     <% end %>
     <%
        if pagination.pages>1