Feature #21623 » redmine_3.2.0_21623.diff
app/models/journal.rb | ||
---|---|---|
228 | 228 |
end |
229 | 229 |
if @custom_values_before_change |
230 | 230 |
# custom fields changes |
231 |
journalized.custom_field_values.each {|c| |
|
231 | ||
232 |
################## |
|
233 |
# Smile fix #21623 : re-insert removed custom fields with nil value |
|
234 |
# TODO check if custom_field_values has to be fixed to take that in account |
|
235 |
cf_values = journalized.custom_field_values.dup # Dupped because cached in an instance variable |
|
236 |
custom_fields = {} # cached locally |
|
237 |
@custom_values_before_change.each{|i, v| |
|
238 |
cfv = cf_values.detect {|c| c.custom_field_id == i} |
|
239 |
next if cfv # On a not deleted custom field, or already re-added |
|
240 | ||
241 |
cf = custom_fields[i] |
|
242 |
if cf.nil? |
|
243 |
cf = CustomField.find_by_id(i) |
|
244 |
end |
|
245 | ||
246 |
if cf # Custom field has not been deleted in between |
|
247 |
cfv = CustomFieldValue.new |
|
248 |
cfv.custom_field = cf |
|
249 |
cfv.value = nil |
|
250 | ||
251 |
# Re-add it in the list |
|
252 |
cf_values << cfv |
|
253 |
end |
|
254 |
} |
|
255 |
# END -- Smile fix #21623 |
|
256 |
######################### |
|
257 | ||
258 |
# Smile fix #21623 : journalized.custom_field_values -> cf_values |
|
259 |
cf_values.each {|c| |
|
232 | 260 |
before = @custom_values_before_change[c.custom_field_id] |
233 | 261 |
after = c.value |
234 | 262 |
next if before == after || (before.blank? && after.blank?) |