Commit ab0be61d893f780a49f1bd7b276385657918d9dd

Authored by Rodrigo Souto
2 parents 577f6c0c d9394c87

Merge commit 'refs/merge-requests/391' of git://gitorious.org/noosfero/noosfero …

…into merge-requests/391
app/helpers/profile_helper.rb
1 module ProfileHelper 1 module ProfileHelper
2 2
3 def display_field(title, profile, field, force = false) 3 def display_field(title, profile, field, force = false)
4 - if (!force && !profile.active_fields.include?(field.to_s)) ||  
5 - (profile.active_fields.include?(field.to_s) && !profile.public_fields.include?(field.to_s) && (!user || (user != profile && !user.is_a_friend?(profile)))) 4 + if not force or not profile.may_display_field_to? field, user
6 return '' 5 return ''
7 end 6 end
8 value = profile.send(field) 7 value = profile.send(field)
app/models/profile.rb
@@ -226,12 +226,14 @@ class Profile < ActiveRecord::Base @@ -226,12 +226,14 @@ class Profile < ActiveRecord::Base
226 226
227 belongs_to :region 227 belongs_to :region
228 228
  229 + LOCATION_FIELDS = %w[address district city state country_name zip_code]
  230 +
229 def location(separator = ' - ') 231 def location(separator = ' - ')
230 myregion = self.region 232 myregion = self.region
231 if myregion 233 if myregion
232 myregion.hierarchy.reverse.first(2).map(&:name).join(separator) 234 myregion.hierarchy.reverse.first(2).map(&:name).join(separator)
233 else 235 else
234 - %w[address district city state country_name zip_code ].map {|item| (self.respond_to?(item) && !self.send(item).blank?) ? self.send(item) : nil }.compact.join(separator) 236 + LOCATION_FIELDS.map {|item| (self.respond_to?(item) && !self.send(item).blank?) ? self.send(item) : nil }.compact.join(separator)
235 end 237 end
236 end 238 end
237 239
@@ -882,6 +884,21 @@ private :generate_url, :url_options @@ -882,6 +884,21 @@ private :generate_url, :url_options
882 [] 884 []
883 end 885 end
884 886
  887 + def may_display_field_to? field, user = nil
  888 + if not self.active_fields.include? field.to_s
  889 + self.send "may_display_#{field}_to?", user rescue true
  890 + else
  891 + not (!self.public_fields.include? field.to_s and (!user or (user != self and !user.is_a_friend?(self))))
  892 + end
  893 + end
  894 +
  895 + def may_display_location_to? user = nil
  896 + LOCATION_FIELDS.each do |field|
  897 + return false if !self.may_display_field_to? field, user
  898 + end
  899 + return true
  900 + end
  901 +
885 # field => privacy (e.g.: "address" => "public") 902 # field => privacy (e.g.: "address" => "public")
886 def fields_privacy 903 def fields_privacy
887 self.data[:fields_privacy] 904 self.data[:fields_privacy]