45 lines
1.4 KiB
Ruby
45 lines
1.4 KiB
Ruby
module TrainingTasksHelper
|
|
include ApplicationHelper
|
|
include TagsHelper
|
|
require 'iconv'
|
|
|
|
# Returns the textual representation of a journal details
|
|
# as an array of strings
|
|
def details_to_strings(details, no_html=false, options={})
|
|
options[:only_path] = (options[:only_path] == false ? false : true)
|
|
options[:token] = options[:token] if options[:token]
|
|
strings = []
|
|
values_by_field = {}
|
|
details.each do |detail|
|
|
|
|
if detail.property == 'cf'
|
|
field_id = detail.prop_key
|
|
field = CustomField.find_by_id(field_id)
|
|
if field && field.multiple?
|
|
values_by_field[field_id] ||= {:added => [], :deleted => []}
|
|
if detail.old_value
|
|
values_by_field[field_id][:deleted] << detail.old_value
|
|
end
|
|
if detail.value
|
|
values_by_field[field_id][:added] << detail.value
|
|
end
|
|
next
|
|
end
|
|
end
|
|
strings << show_detail(detail, no_html, options)
|
|
|
|
end
|
|
values_by_field.each do |field_id, changes|
|
|
detail = JournalDetail.new(:property => 'cf', :prop_key => field_id)
|
|
if changes[:added].any?
|
|
detail.value = changes[:added]
|
|
strings << show_detail(detail, no_html, options)
|
|
elsif changes[:deleted].any?
|
|
detail.old_value = changes[:deleted]
|
|
strings << show_detail(detail, no_html, options)
|
|
end
|
|
end
|
|
strings
|
|
end
|
|
end
|