From 3b72a9745b7272ebe5733667d6e9dfbfe1074651 Mon Sep 17 00:00:00 2001 From: Doug Youch Date: Wed, 4 Aug 2010 21:41:52 +0000 Subject: [PATCH 1/2] Assume all content publications are belongs to end user relations. Changed displaying an array to remove blank strings. --- app/models/content_model_segment_field.rb | 2 +- app/models/user_segment/field_type.rb | 25 ++++++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app/models/content_model_segment_field.rb b/app/models/content_model_segment_field.rb index 957d2737..86d910af 100644 --- a/app/models/content_model_segment_field.rb +++ b/app/models/content_model_segment_field.rb @@ -84,7 +84,7 @@ def self.field_heading(field) end def self.get_handler_data(ids, fields) - self.content_model.content_model.find(:all, :conditions => {self.end_user_field => ids}).group_by(&self.end_user_field) + self.content_model.content_model.find(:all, :conditions => {self.end_user_field => ids}).index_by(&self.end_user_field) end def self.field_output(user, handler_data, field) diff --git a/app/models/user_segment/field_type.rb b/app/models/user_segment/field_type.rb index 29066880..e8fa75b3 100644 --- a/app/models/user_segment/field_type.rb +++ b/app/models/user_segment/field_type.rb @@ -135,14 +135,14 @@ def self.field_output(mdl, handler_data, field) display_field = info[:display_field] value = nil - if handler_data.nil? + if handler_data.nil? # from end_user return nil unless mdl.respond_to?(display_field) value = mdl.send(display_field) else return nil unless handler_data[mdl.id] data = handler_data[mdl.id] - if data.is_a?(Array) + if data.is_a?(Array) # group_by value = data.collect { |d| d.send(display_field) }.delete_if { |v| v.nil? } case info[:display_method] @@ -157,20 +157,21 @@ def self.field_output(mdl, handler_data, field) when 'count' value = value.size end - - if value.is_a?(Array) - value = value.collect do |v| - v = v.strftime(DEFAULT_DATETIME_FORMAT.t) if v.is_a?(Time) - v = v.name if v.is_a?(DomainModel) - v - end - value = value.join(', ') - end - else + else # index_by value = data.send(display_field) end end + if value.is_a?(Array) + value = value.collect do |v| + v = v.strftime(DEFAULT_DATETIME_FORMAT.t) if v.is_a?(Time) + v = v.name if v.is_a?(DomainModel) + v + end + + value = value.map(&:to_s).reject(&:blank?).join(', ') + end + value = value.strftime(DEFAULT_DATETIME_FORMAT.t) if value.is_a?(Time) value = value.name if value.is_a?(DomainModel) value = 'Yes'.t if value.is_a?(TrueClass) From fb7571fa277e7897b3a43978e2fe140ce0d8eafd Mon Sep 17 00:00:00 2001 From: Doug Youch Date: Thu, 5 Aug 2010 13:32:34 +0000 Subject: [PATCH 2/2] Use the content model field display for output --- app/models/content_model_segment_field.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/models/content_model_segment_field.rb b/app/models/content_model_segment_field.rb index 86d910af..e4cc5b82 100644 --- a/app/models/content_model_segment_field.rb +++ b/app/models/content_model_segment_field.rb @@ -84,10 +84,15 @@ def self.field_heading(field) end def self.get_handler_data(ids, fields) - self.content_model.content_model.find(:all, :conditions => {self.end_user_field => ids}).index_by(&self.end_user_field) + self.content_model.content_model.find(:all, :conditions => {self.end_user_field => ids}).group_by(&self.end_user_field) end def self.field_output(user, handler_data, field) - UserSegment::FieldType.field_output(user, handler_data, field) + info = UserSegment::FieldHandler.display_fields[field] + return unless info + display_field = info[:display_field] + handler_data[user.id].collect do |data| + self.content_model.field(display_field).content_display(data, :excerpt) + end.join(', ') end end