]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4486 Make it possible to select "Unassigned" in the issues filter
authorJulien HENRY <julien.henry@sonarsource.com>
Wed, 9 Oct 2013 13:14:08 +0000 (15:14 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Wed, 9 Oct 2013 13:14:54 +0000 (15:14 +0200)
sonar-server/src/main/webapp/WEB-INF/app/controllers/issues_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/views/issues/_sidebar.html.erb

index 9d92c1b406f38de9e3c28f0e04f11aab972fd90c..7396185a46ba6b0cb3a9948114fcbd4ee4531151 100644 (file)
@@ -82,7 +82,7 @@ class IssuesController < ApplicationController
 
   # GET /issues/save_as_form?[&criteria]
   def save_as_form
-    @filter_query_serialized = Internal.issues.serializeFilterQuery(params)
+    @filter_query_serialized = Internal.issues.serializeFilterQuery(criteria_params)
     render :partial => 'issues/filter_save_as_form'
   end
 
@@ -99,7 +99,7 @@ class IssuesController < ApplicationController
     verify_post_request
     require_parameters :id
 
-    @filter = Internal.issues.updateIssueFilterQuery(params[:id].to_i, params)
+    @filter = Internal.issues.updateIssueFilterQuery(params[:id].to_i, criteria_params)
     redirect_to :action => 'filter', :id => @filter.id.to_s
   end
 
@@ -198,7 +198,7 @@ class IssuesController < ApplicationController
     new_params = params.clone
     new_params.delete('controller')
     new_params.delete('action')
-    new_params
+    translate_unassigned(new_params)
   end
 
   def init_params
@@ -209,6 +209,16 @@ class IssuesController < ApplicationController
     Internal.issues.sanitizeFilterQuery(params).to_hash
   end
 
+  def translate_unassigned(issues_query_params)
+    if issues_query_params.has_key?(:assignees) && issues_query_params[:assignees] == '<unassigned>'
+      issues_query_params.delete(:assignees)
+      issues_query_params[:assigned] = false
+    else
+      issues_query_params[:assigned] = nil
+    end
+    issues_query_params
+  end
+
   def issues_query_params_from_filter(filter)
     Internal.issues.deserializeFilterQuery(filter).to_hash
   end
index f39f959b840b7916ec9c26e74412fd5b05a14f24..2f05024795c258c4c0c0e59a25ba86763ff85223 100644 (file)
     </li>
     <li id="criteria-assignee" class="marginbottom5">
       <%= message 'issue_filter.criteria.assignee' -%>:
-      <% selected_assignee = Api.users.findByLogin(@issues_query.assignees.to_a.first) if @issues_query.assignees && @issues_query.assignees.size == 1 %>
-      <%= user_select_tag('assignees', {:selected_user => selected_assignee, :width => '100%', :placeholder => message('issue_filter.criteria.assignee'),
-                        :html_id => 'select-assignee', :open => false, :allow_clear => true}) -%>
+      <%
+         if @issues_query.assignees && @issues_query.assignees.size == 1
+           selected_assignee = Api.users.findByLogin(@issues_query.assignees.to_a.first)
+           selected_id = nil
+           selected_text = nil
+         elsif !@issues_query.assigned.nil? && !@issues_query.assigned
+           selected_assignee = nil
+           selected_id = "'<unassigned>'"
+           selected_text = escape_javascript(message('unassigned'))
+         end
+      %>
+      <%= user_select_tag('assignees', :selected_user => selected_assignee, :selected_id => selected_id, :selected_text => selected_text,
+                        :width => '100%', :placeholder => message('issue_filter.criteria.assignee'),
+                        :html_id => 'select-assignee', :open => false, :allow_clear => true,
+                        :include_choices => {'<unassigned>' => escape_javascript(message('unassigned'))}) -%>
     </li>
     <li id="criteria-reporter" class="marginbottom5">
       <%= message 'issue_filter.criteria.reporter' -%>:
@@ -69,4 +81,5 @@
       <a href="<%= ApplicationController.root_context -%>/issues" class="link-action"><%= message 'issue_filter.new_search' -%></a>
     </li>
   </form>
-</ul>
\ No newline at end of file
+</ul>
+