From: Jean-Philippe Lang Date: Sun, 14 Sep 2014 09:41:39 +0000 (+0000) Subject: Fixed: Issues counters in roadmap only link to issues in the same project (#9660). X-Git-Tag: 2.6.0~41 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4fba4ca69177c308fa2c73365a31dd1fb1b74b8c;p=redmine.git Fixed: Issues counters in roadmap only link to issues in the same project (#9660). Contributed by Sridhar Dhanapalan. git-svn-id: http://svn.redmine.org/redmine/trunk@13398 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/helpers/versions_helper.rb b/app/helpers/versions_helper.rb index 6a3aeb5aa..f54deef0d 100644 --- a/app/helpers/versions_helper.rb +++ b/app/helpers/versions_helper.rb @@ -27,6 +27,28 @@ module VersionsHelper end end + def version_filtered_issues_path(version, options = {}) + options = {:fixed_version_id => version, :set_filter => 1}.merge(options) + project = case version.sharing + when 'hierarchy', 'tree' + if version.project && version.project.root.visible? + version.project.root + else + version.project + end + when 'system' + nil + else + version.project + end + + if project + project_issues_path(project, options) + else + issues_path(options) + end + end + STATUS_BY_CRITERIAS = %w(tracker status priority author assigned_to category) def render_issue_status_by(version, criteria) diff --git a/app/views/versions/_overview.html.erb b/app/views/versions/_overview.html.erb index 4a7d42926..616e1acdc 100644 --- a/app/views/versions/_overview.html.erb +++ b/app/views/versions/_overview.html.erb @@ -19,20 +19,16 @@ <%= progress_bar([version.closed_percent, version.completed_percent], :width => '40em', :legend => ('%0.0f%' % version.completed_percent)) %>

- <%= link_to(l(:label_x_issues, :count => version.issues_count), - project_issues_path(version.project, - :status_id => '*', :fixed_version_id => version, - :set_filter => 1)) %> -   - (<%= link_to_if(version.closed_issues_count > 0, - l(:label_x_closed_issues_abbr, :count => version.closed_issues_count), - project_issues_path(version.project, :status_id => 'c', - :fixed_version_id => version, :set_filter => 1)) %> - — - <%= link_to_if(version.open_issues_count > 0, - l(:label_x_open_issues_abbr, :count => version.open_issues_count), - project_issues_path(version.project, :status_id => 'o', - :fixed_version_id => version, :set_filter => 1)) %>) + <%= link_to(l(:label_x_issues, :count => version.issues_count), + version_filtered_issues_path(version, :status_id => '*')) %> +   + (<%= link_to_if(version.closed_issues_count > 0, + l(:label_x_closed_issues_abbr, :count => version.closed_issues_count), + version_filtered_issues_path(version, :status_id => 'c')) %> + — + <%= link_to_if(version.open_issues_count > 0, + l(:label_x_open_issues_abbr, :count => version.open_issues_count), + version_filtered_issues_path(version, :status_id => 'o')) %>)

<% else %>

<%= l(:label_roadmap_no_issues) %>

diff --git a/test/unit/helpers/version_helper_test.rb b/test/unit/helpers/version_helper_test.rb new file mode 100644 index 000000000..fe9842106 --- /dev/null +++ b/test/unit/helpers/version_helper_test.rb @@ -0,0 +1,53 @@ +# Redmine - project management software +# Copyright (C) 2006-2014 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../../test_helper', __FILE__) + +class VersionsHelperTest < ActionView::TestCase + + fixtures :projects, :versions + + def test_version_filtered_issues_path_sharing_none + version = Version.new(:name => 'test', :sharing => 'none') + version.project = Project.find(5) + assert_match '/projects/private-child/issues?', version_filtered_issues_path(version) + end + + def test_version_filtered_issues_path_sharing_descendants + version = Version.new(:name => 'test', :sharing => 'descendants') + version.project = Project.find(5) + assert_match '/projects/private-child/issues?', version_filtered_issues_path(version) + end + + def test_version_filtered_issues_path_sharing_hierarchy + version = Version.new(:name => 'test', :sharing => 'hierarchy') + version.project = Project.find(5) + assert_match '/projects/ecookbook/issues?', version_filtered_issues_path(version) + end + + def test_version_filtered_issues_path_sharing_tree + version = Version.new(:name => 'test', :sharing => 'tree') + version.project = Project.find(5) + assert_match '/projects/ecookbook/issues?', version_filtered_issues_path(version) + end + + def test_version_filtered_issues_path_sharing_system + version = Version.new(:name => 'test', :sharing => 'system') + version.project = Project.find(5) + assert_match /^\/issues\?/, version_filtered_issues_path(version) + end +end