diff --git a/app/views/context_menus/issues.html.erb b/app/views/context_menus/issues.html.erb
index 23b7718f1..20f72fa8e 100644
--- a/app/views/context_menus/issues.html.erb
+++ b/app/views/context_menus/issues.html.erb
@@ -111,7 +111,7 @@
<%= sprite_icon('angle-right', rtl: true) %>
- <% (0..10).map{|x|x*10}.each do |p| -%>
+ <% (0..100).step(Setting.issue_done_ratio_interval.to_i).each do |p| -%>
- <%= context_menu_link "#{p}%", _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'done_ratio' => p}, :back_url => @back), :method => :patch,
:selected => (@issue && p == @issue.done_ratio), :disabled => (!@can[:edit] || @issues.any?(&:done_ratio_derived?)) %>
<% end -%>
diff --git a/test/functional/context_menus_controller_test.rb b/test/functional/context_menus_controller_test.rb
index 77a5649f4..74a7155ff 100644
--- a/test/functional/context_menus_controller_test.rb
+++ b/test/functional/context_menus_controller_test.rb
@@ -327,6 +327,25 @@ class ContextMenusControllerTest < Redmine::ControllerTest
assert_select 'a', :text => 'eCookbook - Shared'
end
+ def test_context_menu_should_respect_five_percent_increments
+ with_settings :issue_done_ratio => 'issue_field', :issue_done_ratio_interval => 5 do
+ @request.session[:user_id] = 2
+ get(
+ :issues,
+ :params => {
+ :ids => [1, 2]
+ }
+ )
+ assert_response :success
+
+ assert_select 'a[href*=?]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bdone_ratio%5D=0', :text => '0%'
+ assert_select 'a[href*=?]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bdone_ratio%5D=5', :text => '5%'
+ assert_select 'a[href*=?]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bdone_ratio%5D=10', :text => '10%'
+ assert_select 'a[href*=?]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bdone_ratio%5D=55', :text => '55%'
+ assert_select 'a[href*=?]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bdone_ratio%5D=100', :text => '100%'
+ end
+ end
+
def test_context_menu_should_include_add_subtask_link
@request.session[:user_id] = 2
get(