|
|
|
@ -356,4 +356,52 @@ class Event
|
|
|
|
|
recurring = recurring.concat(events)
|
|
|
|
|
recurring
|
|
|
|
|
end
|
|
|
|
|
def self.convertToText(str)
|
|
|
|
|
# Ensure string.
|
|
|
|
|
value = str.to_s
|
|
|
|
|
|
|
|
|
|
# Convert encoding.
|
|
|
|
|
value = value.gsub(/ /i, ' ')
|
|
|
|
|
value = value.gsub(/&/i, '&')
|
|
|
|
|
|
|
|
|
|
# Replace `<br>`.
|
|
|
|
|
value = value.gsub(/<br>/i, "\n")
|
|
|
|
|
|
|
|
|
|
# Replace `<div>` (from Chrome).
|
|
|
|
|
value = value.gsub(/<div>/i, "\n")
|
|
|
|
|
|
|
|
|
|
# Replace `<p>` (from IE).
|
|
|
|
|
value = value.gsub(/<p>/i, "\n")
|
|
|
|
|
|
|
|
|
|
# Remove extra tags.
|
|
|
|
|
value = value.gsub(/<(.*?)>/, '')
|
|
|
|
|
|
|
|
|
|
# Trim each line.
|
|
|
|
|
value = value.split("\n").map{|line| line.strip}.join("\n")
|
|
|
|
|
|
|
|
|
|
# No more than 2x newline, per "paragraph".
|
|
|
|
|
value = value.gsub(/\n\n+/, "\n\n")
|
|
|
|
|
|
|
|
|
|
# Clean up spaces.
|
|
|
|
|
value = value.gsub(/[ ]+/, ' ')
|
|
|
|
|
value = value.strip
|
|
|
|
|
|
|
|
|
|
# Expose string.
|
|
|
|
|
return value
|
|
|
|
|
end
|
|
|
|
|
def self.fix_all_white_spaces
|
|
|
|
|
self.all.each do |event|
|
|
|
|
|
new_attrs = {}
|
|
|
|
|
localize_fields = ["title", "note"]
|
|
|
|
|
localize_fields.each do |f|
|
|
|
|
|
f_trans = "#{f}_translations"
|
|
|
|
|
new_attrs[f] = self.convertToText(event[f])
|
|
|
|
|
new_attrs[f_trans] = {}
|
|
|
|
|
event[f_trans].each do |l, s|
|
|
|
|
|
new_attrs[f_trans][l] = self.convertToText(s)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
Event.where(:id=>event.id).update_all(new_attrs)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|