]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4453 Notify user when the selection exceeds the max number of projects updatabl...
authorJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Tue, 23 Jul 2013 15:50:27 +0000 (17:50 +0200)
committerJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Tue, 23 Jul 2013 15:50:27 +0000 (17:50 +0200)
plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties
sonar-server/src/main/webapp/WEB-INF/app/controllers/roles_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/views/roles/_apply_template_form.html.erb

index 38febb529309841b6dbac4af4760afb1aa753933..6c511ff2322e844e8df02e837d1d153303e356da 100644 (file)
@@ -2263,6 +2263,7 @@ projects_role.bulk_change=Bulk Change
 projects_role.apply_template=Apply Permission Template
 projects_role.apply_template_to_xxx=Apply Permission Template To "{0}"
 projects_role.no_projects=There are currently no results to apply the permission template to.
+projects_role.exceeds_projects_limit_xxx=The current selection exceeds the limit of {0} projects that can be updated in a row. Please narrow your search before applying the permission template.
 
 
 
index 4bc03f900c2d6bcd932e491f40665ae9600a15be..8c935f270ee0dd0dbba12634eff05ab757a553f3 100644 (file)
@@ -21,6 +21,7 @@ class RolesController < ApplicationController
   helper RolesHelper
 
   SECTION=Navigation::SECTION_CONFIGURATION
+  BULK_LIMIT=1
 
   before_filter :admin_required
   verify :method => :post, :only => [:set_users, :set_groups], :redirect_to => {:action => 'global'}
@@ -85,11 +86,17 @@ class RolesController < ApplicationController
     params['qualifiers'] ||= 'TRK'
     params['pageSize'] = 500
 
-    @query_result = Internal.component_api.find(params).components().to_a
-    @projects_ids = @query_result.collect{|component| component.getId()}
+    query_result = Internal.component_api.find(params)
+    components = query_result.components().to_a
+    total_results_count = query_result.paging.total.to_i
+
+    @projects_ids = components.collect{|component| component.getId()}
+    @qualifier = params[:qualifiers]
 
     render :partial => 'apply_template_form',
-           :locals => {:components => @projects_ids, :project_name => @query_result.size == 1 ? @query_result[0].name : nil, :qualifier => params[:qualifiers]}
+           :locals => {:project_name => components.size == 1 ? components[0].name : nil,
+                       :empty => @projects_ids.nil? || @projects_ids.size == 0,
+                       :overflow => total_results_count > BULK_LIMIT}
   end
 
   # POST /roles/apply_template?criteria
index 338e287b279a30748c57ab3aa5331d8bac645f8c..c8796ae10eb90da99058f42081291edf0aec2199 100644 (file)
@@ -1,6 +1,6 @@
 <form id="apply-template-form" method="post" action="<%= ApplicationController.root_context -%>/roles/apply_template">
-  <% unless components.nil? %>
-    <input type="hidden" name="components" id="apply-template-components" value="<%= components.join(',') %>"/>
+  <% unless @projects_ids.nil? %>
+    <input type="hidden" name="components" id="apply-template-components" value="<%= @projects_ids.join(',') %>"/>
   <% end %>
   <fieldset>
     <div class="modal-head">
     </div>
     <div class="modal-body">
       <div class="modal-error"/>
-      <% if components.nil? %>
+      <% if empty %>
         <div class="info">
           <img src="<%= ApplicationController.root_context -%>/images/information.png" style="vertical-align: text-bottom"/>
           <%= message 'projects_role.no_projects' -%>
         </div>
+      <% elsif overflow %>
+        <div class="info">
+          <img src="<%= ApplicationController.root_context -%>/images/information.png" style="vertical-align: text-bottom"/>
+          <%= message 'projects_role.exceeds_projects_limit_xxx', :params => RolesController::BULK_LIMIT -%>
+        </div>
       <% else %>
         <div class="modal-field">
           <%= label_tag 'template_key', 'Permission Template' %>
           <%= select_tag('template_key', options_for_select(@permission_templates, -1), :style => 'width: 250px;') %>
           <% unless project_name %>
-            <span style="float:right" class="note">(<%= "#{components.size} #{message('qualifier.' + qualifier)}s" %>)</span><br/>
+            <span style="float:right" class="note">(<%= "#{@projects_ids.size} #{message('qualifier.' + @qualifier)}s" %>)</span><br/>
           <% end %>
         </div>
       <% end %>
     </div>
     <div class="modal-foot">
-      <% unless components.nil? %>
+      <% unless empty || overflow %>
         <span id="apply-template-loading-image" class="loading-image hidden"><%= image_tag 'loading.gif' %></span>
         <input type="submit" value="<%= message('apply') -%>" id="apply-template-submit" class="apply-template" onclick="return displayLoadingImage()" />
       <% end %>