mirror of
https://github.com/redmine/redmine.git
synced 2025-11-02 19:36:00 +01:00
Fix that updating an issue from context menu to a none value do not set the field to blank (#33521).
Patch by Mizuki ISHIKAWA. git-svn-id: http://svn.redmine.org/redmine/trunk@21139 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -413,10 +413,18 @@ class ApplicationController < ActionController::Base
|
|||||||
|
|
||||||
def parse_params_for_bulk_update(params)
|
def parse_params_for_bulk_update(params)
|
||||||
attributes = (params || {}).reject {|k, v| v.blank?}
|
attributes = (params || {}).reject {|k, v| v.blank?}
|
||||||
attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'}
|
|
||||||
if custom = attributes[:custom_field_values]
|
if custom = attributes[:custom_field_values]
|
||||||
custom.reject! {|k, v| v.blank?}
|
custom.reject! {|k, v| v.blank?}
|
||||||
custom.keys.each do |k|
|
end
|
||||||
|
|
||||||
|
replace_none_values_with_blank(attributes)
|
||||||
|
end
|
||||||
|
|
||||||
|
def replace_none_values_with_blank(params)
|
||||||
|
attributes = (params || {}))
|
||||||
|
attributes.each_key {|k| attributes[k] = '' if attributes[k] == 'none'}
|
||||||
|
if (custom = attributes[:custom_field_values])
|
||||||
|
custom.each_key do |k|
|
||||||
if custom[k].is_a?(Array)
|
if custom[k].is_a?(Array)
|
||||||
custom[k] << '' if custom[k].delete('__none__')
|
custom[k] << '' if custom[k].delete('__none__')
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -561,6 +561,7 @@ class IssuesController < ApplicationController
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
issue_attributes = replace_none_values_with_blank(issue_attributes)
|
||||||
@issue.safe_attributes = issue_attributes
|
@issue.safe_attributes = issue_attributes
|
||||||
@priorities = IssuePriority.active
|
@priorities = IssuePriority.active
|
||||||
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
|
@allowed_statuses = @issue.new_statuses_allowed_to(User.current)
|
||||||
|
|||||||
@@ -6660,6 +6660,33 @@ class IssuesControllerTest < Redmine::ControllerTest
|
|||||||
assert_equal 2, issue.reload.assigned_to_id
|
assert_equal 2, issue.reload.assigned_to_id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_update_with_value_of_none_should_set_the_values_to_blank
|
||||||
|
@request.session[:user_id] = 2
|
||||||
|
issue = Issue.find(1)
|
||||||
|
issue.custom_field_values = {1 => 'MySQL'}
|
||||||
|
issue.assigned_to_id = 2
|
||||||
|
issue.save!
|
||||||
|
|
||||||
|
put(
|
||||||
|
:update,
|
||||||
|
params: {
|
||||||
|
id: issue.id,
|
||||||
|
issue: {
|
||||||
|
assigned_to_id: 'none',
|
||||||
|
category_id: 'none',
|
||||||
|
fixed_version_id: 'none',
|
||||||
|
custom_field_values: { 1 => '__none__' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
issue.reload
|
||||||
|
assert_nil issue.assigned_to
|
||||||
|
assert_nil issue.category
|
||||||
|
assert_nil issue.fixed_version
|
||||||
|
assert_equal '', issue.custom_field_value(1)
|
||||||
|
end
|
||||||
|
|
||||||
def test_get_bulk_edit
|
def test_get_bulk_edit
|
||||||
@request.session[:user_id] = 2
|
@request.session[:user_id] = 2
|
||||||
get(:bulk_edit, :params => {:ids => [1, 3]})
|
get(:bulk_edit, :params => {:ids => [1, 3]})
|
||||||
|
|||||||
Reference in New Issue
Block a user