aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb29
1 files changed, 27 insertions, 2 deletions
diff --git a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
index 047321562..fa322fe9b 100644
--- a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
+++ b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
@@ -668,9 +668,34 @@ module ActsAsXapian
self.class.to_s + "-" + self.id.to_s
end
- # Extract value of a field from the model
def xapian_value(field, type = nil)
- value = self[field] || self.send(field.to_sym)
+ if self.respond_to?("translations")
+ if type == :date or type == :boolean
+ value = single_xapian_value(field, type = type)
+ else
+ values = []
+ for locale in self.translations.map{|x| x.locale}
+ self.class.with_locale(locale) do
+ values << single_xapian_value(field, type=type)
+ end
+ end
+ if values[0].kind_of?(String)
+ values = values.reject{|x| x.nil?}
+ value = values.join(" ")
+ else
+ values = values.map{|x| x[0]}
+ value = values.reject{|x| x.nil?}
+ end
+ end
+ else
+ value = single_xapian_value(field, type = type)
+ end
+ return value
+ end
+
+ # Extract value of a field from the model
+ def single_xapian_value(field, type = nil)
+ value = self.send(field.to_sym) || self[field]
if type == :date
if value.kind_of?(Time)
value.utc.strftime("%Y%m%d")