Class: Tenon::FormBuilder

Inherits:
ActionView::Helpers::FormBuilder
  • Object
show all
Includes:
ActionView::Helpers::TagHelper
Defined in:
app/form_builders/tenon/form_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#output_bufferObject

Returns the value of attribute output_buffer.



4
5
6
# File 'app/form_builders/tenon/form_builder.rb', line 4

def output_buffer
  @output_buffer
end

Instance Method Details

#datetime_widget(method_name, options = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/form_builders/tenon/form_builder.rb', line 45

def datetime_widget(method_name, options = {})
  label = label(method_name, options[:label], nil, nil)
  explanation = explanation(options[:explanation])

  on = (:tr) do
    [
      (:td, 'On: '),
      (:td, super_text_field("#{method_name}_date", class: 'datepicker', size: 12, value: @object.send(method_name) ? @object.send(method_name).strftime('%Y-%m-%d') : (options[:default_date] || Time.now.strftime('%Y-%m-%d'))))
    ].join('\n').html_safe
  end
  at = (:tr) do
    [
      (:td, 'At: '),
      (:td, super_text_field("#{method_name}_time", value: @object.send(method_name) ? @object.send(method_name).strftime('%l:%M%p').strip : (options[:default_time] || Time.now.strftime('%l:%M%p').strip), size: 7))
    ].join('\n').html_safe
  end
  table = (:table, on + at, class: 'datetime_select')

  content = label(method_name, options[:label], nil, nil)
  content += explanation(options[:explanation])
  content += (:div, table, class: 'inset datetime-widget')
end

#nested_fields(object, params = {}) ⇒ Object



68
69
70
71
72
# File 'app/form_builders/tenon/form_builder.rb', line 68

def nested_fields(object, params = {})
  fields_for object.to_s.pluralize do |nf|
    @template.render "#{object}_fields", { f: nf }.merge(params)
  end
end

#super_labelObject



5
# File 'app/form_builders/tenon/form_builder.rb', line 5

alias_method :super_label, :label

#super_text_areaObject



34
# File 'app/form_builders/tenon/form_builder.rb', line 34

alias_method :super_text_area, :text_area

#super_text_fieldObject



23
# File 'app/form_builders/tenon/form_builder.rb', line 23

alias_method :super_text_field, :text_field

#tenon_content(method_name) ⇒ Object



7
8
9
# File 'app/form_builders/tenon/form_builder.rb', line 7

def tenon_content(method_name)
  @template.render 'tenon/tenon_content/builder', f: self, field: method_name
end

#text_area(method_name, options = {}) ⇒ Object



35
36
37
# File 'app/form_builders/tenon/form_builder.rb', line 35

def text_area(method_name, options = {})
  content = build_content(:text_area_content, method_name, options)
end

#text_area_content(method_name, options = {}, language = nil, language_title = nil) ⇒ Object



39
40
41
42
43
# File 'app/form_builders/tenon/form_builder.rb', line 39

def text_area_content(method_name, options = {}, language = nil, language_title = nil)
  label = label(method_name, options[:label], language, language_title)
  explanation = explanation(options[:explanation])
  label + explanation + super_text_area(get_method(method_name, language), options)
end

#text_field(method_name, options = {}) ⇒ Object



24
25
26
# File 'app/form_builders/tenon/form_builder.rb', line 24

def text_field(method_name, options = {})
  content = build_content(:text_field_content, method_name, options)
end

#text_field_content(method_name, options = {}, language = nil, language_title = nil) ⇒ Object



28
29
30
31
32
# File 'app/form_builders/tenon/form_builder.rb', line 28

def text_field_content(method_name, options = {}, language = nil, language_title = nil)
  label = label(method_name, options[:label], language, language_title)
  explanation = explanation(options[:explanation])
  label + explanation + super_text_field(get_method(method_name, language), options)
end

#title_field(method_name, options = {}) ⇒ Object



11
12
13
14
# File 'app/form_builders/tenon/form_builder.rb', line 11

def title_field(method_name, options = {})
  options[:last] = true
  content = build_content(:title_field_content, method_name, options)
end

#title_field_content(method_name, options = {}, language = nil, language_title = nil) ⇒ Object



16
17
18
19
20
21
# File 'app/form_builders/tenon/form_builder.rb', line 16

def title_field_content(method_name, options = {}, language = nil, language_title = nil)
  label = label(method_name, options[:label], language, language_title)
  explanation = explanation(options[:explanation])
  row_label = (:div, label + explanation, class: 'label')
  row_label.html_safe + @template.text_field(@object_name, get_method(method_name, language), options.merge(class: 'title')) + (:div, '', class: 'spacer')
end