class Interview::ScaffoldForm

Attributes

style[RW]
submit_caption[RW]

Public Instance Methods

build(b) { || ... } click to toggle source
Calls superclass method Interview::Form#build
# File lib/interview/controls/scaffold_form.rb, line 6
def build(b)
  case @style
  when 'horizontal'
    @html_class << 'form-horizontal'
  when 'inline'
    @html_class << 'form-inline'
  end
  super(b) do
    
    b.meta_control pointer: self do
      yield if block_given?
    end
    
    if @style == 'horizontal'
      b.section html_class: 'form-group' do
        b.section html_class: 'col-sm-offset-3 col-sm-9' do
          b.submit caption: @submit_caption
        end
      end
    else
      b.submit caption: @submit_caption
    end
  end
end
build_child(b, control, &block) click to toggle source
Calls superclass method Interview::Control#build_child
# File lib/interview/controls/scaffold_form.rb, line 31
def build_child(b, control, &block)
  control.parent = self
  control.style ||= 'write' if control.is_a? Attribute
  
  if control.is_a? BooleanAttribute
    build_boolean b, control, &block
  elsif control.is_a? HiddenAttribute
    build_hidden b, control, &block
  elsif control.is_a? Attribute
    build_default b, control, &block
  else
    super
  end
  
  b.space if @style == 'inline'
end

Protected Instance Methods

build_boolean(b, control, &block) click to toggle source
# File lib/interview/controls/scaffold_form.rb, line 66
def build_boolean(b, control, &block)
  b.section html_class: "form-group attribute_#{control.method.to_s} collapse in" do # todo: html_class
    if @style == 'horizontal'
      b.section html_class: 'col-xs-9 col-xs-offset-3' do
        build_checkbox b, control
      end
    else
      build_checkbox b, control
    end
  end
end
build_checkbox(b, control) click to toggle source
# File lib/interview/controls/scaffold_form.rb, line 100
def build_checkbox(b, control)
  b.add! control
  b.space
  b << @form_builder.label(control.method, control.caption)
  build_tooltip(b, control)
end
build_default(b, control, &block) click to toggle source
# File lib/interview/controls/scaffold_form.rb, line 50
def build_default(b, control, &block)
  b.section html_class: 'form-group' do
    b.section html_class: 'col-xs-3' if (control.caption == :hide or control.caption_as_placeholder) and @style == 'horizontal'
    build_label(b, control)
    if @style == 'horizontal'
      b.section html_class: 'col-xs-9' do
        b.add! control, &block
        build_tooltip b, control
      end
    else
      b.add! control, &block
      build_tooltip b, control
    end
  end
end
build_hidden(b, control) click to toggle source
# File lib/interview/controls/scaffold_form.rb, line 78
def build_hidden(b, control)
  b.add! control
end
build_label(b, control) click to toggle source
# File lib/interview/controls/scaffold_form.rb, line 82
def build_label(b, control)
  return if control.caption == :hide
  if control.caption_as_placeholder or @style == 'inline'
    html_opts = { class: 'sr-only' }
  elsif @style == 'horizontal'
    html_opts = { class: 'col-xs-3 control-label' }
  else
    html_opts = {}
  end
  b << @form_builder.label(control.method, control.caption, html_opts)
end
build_tooltip(b, control) click to toggle source
# File lib/interview/controls/scaffold_form.rb, line 94
def build_tooltip(b, control)
  if control.tooltip != :hide
    b.tooltip tooltip: control.tooltip
  end
end