summaryrefslogtreecommitdiffstats
path: root/app/controllers/issues_controller.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2017-01-18 14:49:57 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2017-01-18 14:49:57 +0000
commit6fabc106964a6e33eb5f0cf779856a6b24451692 (patch)
tree8d0fd29250ca7588c7d8e332c44df4018f486968 /app/controllers/issues_controller.rb
parent3a21dc6912ab6f0426dc5a59c68c571447bf9bef (diff)
downloadredmine-6fabc106964a6e33eb5f0cf779856a6b24451692.tar.gz
redmine-6fabc106964a6e33eb5f0cf779856a6b24451692.zip
Add warning when loosing data from custom fields when bulk editing issues (#22600).
git-svn-id: http://svn.redmine.org/redmine/trunk@16224 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/controllers/issues_controller.rb')
-rw-r--r--app/controllers/issues_controller.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index 1b6a82aa4..0f66f27fb 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -213,6 +213,16 @@ class IssuesController < ApplicationController
edited_issues = Issue.where(:id => @issues.map(&:id)).to_a
+ @values_by_custom_field = {}
+ edited_issues.each do |issue|
+ issue.custom_field_values.each do |c|
+ if c.value_present?
+ @values_by_custom_field[c.custom_field] ||= []
+ @values_by_custom_field[c.custom_field] << issue.id
+ end
+ end
+ end
+
@allowed_projects = Issue.allowed_target_projects
if params[:issue]
@target_project = @allowed_projects.detect {|p| p.id.to_s == params[:issue][:project_id].to_s}
@@ -244,6 +254,15 @@ class IssuesController < ApplicationController
end
end
+ edited_issues.each do |issue|
+ issue.custom_field_values.each do |c|
+ if c.value_present? && @values_by_custom_field[c.custom_field]
+ @values_by_custom_field[c.custom_field].delete(issue.id)
+ end
+ end
+ end
+ @values_by_custom_field.delete_if {|k,v| v.blank?}
+
@custom_fields = edited_issues.map{|i|i.editable_custom_fields}.reduce(:&).select {|field| field.format.bulk_edit_supported}
@assignables = target_projects.map(&:assignable_users).reduce(:&)
@versions = target_projects.map {|p| p.shared_versions.open}.reduce(:&)