]> source.dussan.org Git - redmine.git/commitdiff
Issues by Category should show tasks without category (#8106).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 30 Oct 2012 14:24:33 +0000 (14:24 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 30 Oct 2012 14:24:33 +0000 (14:24 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10771 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/versions_helper.rb
app/views/versions/_issue_counts.html.erb
test/functional/versions_controller_test.rb

index 91dec8e91156259ff0595deb2b42ec327b02fc05..91082380cf6163ad637ea3a82053faf02561ed51 100644 (file)
@@ -44,7 +44,8 @@ module VersionsHelper
     rescue ActiveRecord::RecordNotFound
     # When grouping by an association, Rails throws this exception if there's no result (bug)
     end
-    counts = h.keys.compact.sort.collect {|k| {:group => k, :total => h[k][0], :open => h[k][1], :closed => (h[k][0] - h[k][1])}}
+    # Sort with nil keys in last position
+    counts = h.keys.sort {|a,b| a.nil? ? 1 : (b.nil? ? -1 : a <=> b)}.collect {|k| {:group => k, :total => h[k][0], :open => h[k][1], :closed => (h[k][0] - h[k][1])}}
     max = counts.collect {|c| c[:total]}.max
 
     render :partial => 'issue_counts', :locals => {:version => version, :criteria => criteria, :counts => counts, :max => max}
index d4b33255cb5bbf28961f45ff792e3d954063552c..50f174d08734d0474839f80f2f236a042c838a31 100644 (file)
     <% counts.each do |count| %>
     <tr>
         <td width="130px" align="right" >
-            <%= link_to h(count[:group]), {:controller => 'issues',
-                                        :action => 'index',
-                                        :project_id => version.project,
-                                        :set_filter => 1,
-                                        :status_id => '*',
-                                        :fixed_version_id => version}.merge("#{criteria}_id".to_sym => count[:group]) %>
+               <% if count[:group] -%>
+            <%= link_to(h(count[:group]), project_issues_path(version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => version, "#{criteria}_id" => count[:group])) %>
+                                 <% else -%>
+            <%= link_to(l(:label_none), project_issues_path(version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => version, "#{criteria}_id" => "!*")) %>
+                                 <% end %>
         </td>
         <td width="240px">
             <%= progress_bar((count[:closed].to_f / count[:total])*100,
index c6906ca5bfefbe11d6167609adbbeb09993f34c8..8379585d5eb58fdb27199119144a623734f2a0df 100644 (file)
@@ -22,7 +22,7 @@ require 'versions_controller'
 class VersionsController; def rescue_action(e) raise e end; end
 
 class VersionsControllerTest < ActionController::TestCase
-  fixtures :projects, :versions, :issues, :users, :roles, :members, :member_roles, :enabled_modules, :issue_statuses
+  fixtures :projects, :versions, :issues, :users, :roles, :members, :member_roles, :enabled_modules, :issue_statuses, :issue_categories
 
   def setup
     @controller = VersionsController.new
@@ -103,6 +103,19 @@ class VersionsControllerTest < ActionController::TestCase
     assert_tag :tag => 'h2', :content => /1.0/
   end
 
+  def test_show_should_display_nil_counts
+    with_settings :default_language => 'en' do
+      get :show, :id => 2, :status_by => 'category'
+      assert_response :success
+      assert_select 'div#status_by' do
+        assert_select 'select[name=status_by]' do
+          assert_select 'option[value=category][selected=selected]'
+        end
+        assert_select 'a', :text => 'none'
+      end
+    end
+  end
+
   def test_new
     @request.session[:user_id] = 2
     get :new, :project_id => '1'