Sha256: d88f5cd46423b5a8bb975d37430b40b1395c934061f06a8d5246a06415341490

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module MultiHelper
  module Form
    module Helper
      # Define form helpers that use our form builder.
      [ :form_for, :fields_for, :remote_form_for ].each do |method|
        code = <<-END
          def next_#{method}(name, *args, &block)
            options = args.last.is_a?(Hash) ? args.pop : {}
            options = options.merge :builder => MultiHelper::Form::Builder
            #{method}(name, *(args << options), &block)
          end
        END
        module_eval code, __FILE__, __LINE__
      end

      def link_to_form(purpose, options = {}, html_options = nil)
        icon = options.delete(:icon) if options.respond_to?(:has_key?)
        icon ||= case purpose
                 when :new    then 'add'
                 when :edit   then 'pencil'
                 when :delete then 'cross'  # TODO: delete should be a button, not a link
                 when :cancel then 'arrow_undo'
                 end
        if options.kind_of? String
          url = options
        else
          url = options.delete :url
          label = options.delete :label
        end
        label ||= purpose.to_s.capitalize
        legend = ( icon.nil? ?
                   '' :
                   "<img src='/images/icons/#{icon}.png' alt=''></img> " ) + label
        
        '<div class="buttons">' +
        link_to(legend, (url || options), html_options) +
        '</div>'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lucasefe-multi_helper-0.0.1 lib/multi_helper/form/helper.rb