lib/storefront/form/errors.rb in storefront-0.2.1 vs lib/storefront/form/errors.rb in storefront-0.2.7

- old
+ new

@@ -1,57 +1,31 @@ module Storefront class Form - module Errors - def errors_for(key, options = {}) - value = options[:error_attributes].delete(:value) + class Errors < Storefront::Form::Base + def initialize(options = {}) + super + + attributes.merge!(options[:error_html]) if options[:error_html] + attributes.delete :error_html + attributes.delete :error + # error + merge_class! @attributes, config.error_class + # aria-invalid = true|grammar|spelling + # aria-hidden + attributes[:id] ||= attribute.to_id(:type => :error, :index => index, :parent_index => parent_index) if config.id_enabled_on.include?("error") + @value = model.errors_for(attribute.name) + end + + def render(&block) template.capture_haml do if value.present? - template.haml_tag :output, options[:error_attributes] do - template.haml_concat value.html_safe + template.haml_tag config.error_tag, attributes do + template.haml_concat value.join("\n").html_safe.gsub(/\n$/) end - else - template.haml_tag :output, options[:error_attributes] + elsif config.always_include_error_tag + template.haml_tag config.error_tag, attributes end end - end - - def errors_on?(attribute, options = {}) - - end - - def required?(attribute) - attribute_sym = attribute.to_s.sub(/_id$/, '').to_sym - - if @object && @object.class.respond_to?(:reflect_on_validations_for) - @object.class.reflect_on_validations_for(attribute_sym).any? do |validation| - (validation.macro == :validates_presence_of || validation.macro == :validates_inclusion_of) && - validation.name == attribute_sym && - (validation.options.present? ? options_require_validation?(validation.options) : true) - end - else - if @object && @object.class.respond_to?(:validators_on) - !@object.class.validators_on(attribute_sym).find{|validator| (validator.kind == :presence || validator.kind == :inclusion) && (validator.options.present? ? options_require_validation?(validator.options) : true)}.nil? - else - true - end - end - end - - def options_require_validation?(options) #nodoc - allow_blank = options[:allow_blank] - return !allow_blank unless allow_blank.nil? - if_condition = !options[:if].nil? - condition = if_condition ? options[:if] : options[:unless] - - condition = if condition.respond_to?(:call) - condition.call(@object) - elsif condition.is_a?(::Symbol) && @object.respond_to?(condition) - @object.send(condition) - else - condition - end - - if_condition ? !!condition : !condition end end end end