Sha256: 636d70c73d2da1d23486589232198b5121628f9cf28bcba072b13208a1326def

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

module Locomotive
  class MiscFormBuilder < Formtastic::SemanticFormBuilder

    @@all_fields_required_by_default = false

    def foldable_inputs(*args, &block)
      opts = args.extract_options!

      unfolded = !(opts[:class] || '').index('off').nil? || @object.new_record? || !@object.errors.empty?

      opts[:class] = (opts[:class] || '') + " inputs foldable #{'folded' unless unfolded}"
      args.push(opts)
      self.inputs(*args, &block)
    end

    def custom_input(name, options = {}, &block)
      default_options = { :css => '', :with_label => true, :label => nil }
      options = default_options.merge(options)

      html = options[:with_label] ? self.label(options[:label] || name) : ''
      html += template.capture(&block) || ''
      html += inline_hints_for(name, options) || ''
      html += self.errors_on(name) || ''

      template.content_tag(:li, template.find_and_preserve(html), :style => "#{options[:style]}", :class => "#{options[:css]} #{'error' unless @object.errors[name].empty?}")
    end

    def inline_errors_on(method, options = nil)
      if render_inline_errors?
        errors = @object.errors[method.to_sym]
        template.content_tag(:span, [*errors].to_sentence.untaint, :class => 'inline-errors') if errors.present?
      else
        nil
      end
    end

    def model_name
      @object.present? ? (@object.class.name || @object.class.model_name) : @object_name.to_s.classify
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
locomotive_cms-1.0.0.beta.2 lib/locomotive/misc_form_builder.rb