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  
    33    module Sanitized 
    44      def self.included(base) 
    55        base.extend(ClassMethods) 
     6         
    67      end 
    78 
    89      module ClassMethods 
     10         
    911        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 
    1115 
     16 
    1217          write_inheritable_attribute(:acts_as_sanitized_options, { 
    1318            :fields => options[:fields], 
    1419            :strip_tags => options[:strip_tags] 
     
    2732            end 
    2833          end 
    2934           
    30           include AlexPayne::Acts::Sanitized::InstanceMethods 
    3135        end 
    3236      end 
    3337 
    3438      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(/</, '&lt;') }  
     47          end 
     48        else 
     49          def sanitize_field(content) 
     50            TextHelperWrapper.instance.sanitize(content)       
     51          end 
     52        end 
    3653         
    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)  
    4161            end 
    42           else 
    43             acts_as_sanitized_options[:fields].each do |field| 
    44               sanitize_field(field) 
    45             end 
    4662          end 
     63             
     64          write_attribute_without_sanitize(attr_name, value) 
     65           
    4766        end 
    48  
    49         def sanitize_field(field) 
    50           content = self[field.to_sym] 
    51           self[field.to_sym] = sanitize(content) unless content.nil? 
    52         end 
    5367         
    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? 
    5770        end 
    5871      end 
    5972    end