Ticket #2: acts_as_sanitized.diff
| File acts_as_sanitized.diff, 2.9 kB (added by ant..@planyp.us, 1 year ago) |
|---|
-
lib/acts_as_sanitized.rb
old new 3 3 module Sanitized 4 4 def self.included(base) 5 5 base.extend(ClassMethods) 6 6 7 end 7 8 8 9 module ClassMethods 10 9 11 def acts_as_sanitized(options = {}) 10 before_save :sanitize_fields 12 include AlexPayne::Acts::Sanitized::InstanceMethods 13 alias_method :write_attribute_without_sanitize, :write_attribute 14 alias_method :write_attribute, :write_attribute_with_sanitize 11 15 16 12 17 write_inheritable_attribute(:acts_as_sanitized_options, { 13 18 :fields => options[:fields], 14 19 :strip_tags => options[:strip_tags] … … 27 32 end 28 33 end 29 34 30 include AlexPayne::Acts::Sanitized::InstanceMethods31 35 end 32 36 end 33 37 34 38 module InstanceMethods 35 include ActionView::Helpers::TextHelper 39 class TextHelperWrapper 40 include ActionView::Helpers::TextHelper 41 include Singleton 42 end 43 if Object.const_defined?(:WhiteListHelper) 44 include WhiteListHelper 45 def sanitize_field(content) 46 white_list(content) { |node, bad| node.to_s.gsub(/</, '<') } 47 end 48 else 49 def sanitize_field(content) 50 TextHelperWrapper.instance.sanitize(content) 51 end 52 end 36 53 37 def sanitize_fields 38 if acts_as_sanitized_options[:strip_tags] == true 39 acts_as_sanitized_options[:fields].each do |field| 40 strip_tags_field(field) 54 def write_attribute_with_sanitize(attr_name, value) 55 return nil if value.nil? 56 if acts_as_sanitized_options[:fields].include?(attr_name.to_s) 57 if acts_as_sanitized_options[:strip_tags] == true 58 value = strip_tags_field(value) 59 else 60 value = sanitize_field(value) 41 61 end 42 else43 acts_as_sanitized_options[:fields].each do |field|44 sanitize_field(field)45 end46 62 end 63 64 write_attribute_without_sanitize(attr_name, value) 65 47 66 end 48 49 def sanitize_field(field)50 content = self[field.to_sym]51 self[field.to_sym] = sanitize(content) unless content.nil?52 end53 67 54 def strip_tags_field(field) 55 content = self[field.to_sym] 56 self[field.to_sym] = strip_tags(content) unless content.nil? 68 def strip_tags_field(content) 69 TextHelperWrapper.instance.strip_tags(content) unless content.nil? 57 70 end 58 71 end 59 72 end
