Module: Para::FormBuilder::Containers

Defined in:
lib/para/form_builder/containers.rb

Instance Method Summary collapse

Instance Method Details

#actions(options = {}, &block) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/para/form_builder/containers.rb', line 16

def actions(options = {}, &block)
  template.(:div, class: 'form-actions') do
    if block
      template.capture(&block)
    else
      if options.empty?
        options[:only] = template.instance_variable_get(:@component).default_form_actions
      end
      actions_buttons_for(options).join("\n").html_safe
    end
  end
end

#actions_buttons_for(options) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/para/form_builder/containers.rb', line 29

def actions_buttons_for(options)
  names = [:submit, :submit_and_edit]
  names << :submit_and_add_another if template.can?(:create, object.class)
  names << :cancel

  names.select! { |name| Array.wrap(options[:only]).include?(name) } if options[:only]
  names.reject! { |name| Array.wrap(options[:except]).include?(name) } if options[:except]
  buttons = names.map { |name| send(:"para_#{ name }_button") }
  buttons.unshift(return_to_hidden_field)
  buttons
end

#component_pathObject



87
88
89
90
91
# File 'lib/para/form_builder/containers.rb', line 87

def component_path
  if (component = template.instance_variable_get(:@component))
    component.path
  end
end

#fieldset(options = {}, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/para/form_builder/containers.rb', line 4

def fieldset(options = {}, &block)
  template.(:div, class: 'form-inputs') do
    buffer = if (title = options[:title])
      template.(:legend, title)
    else
      ''.html_safe
    end

    buffer + template.capture(&block)
  end
end

#para_cancel_buttonObject



75
76
77
78
79
80
81
# File 'lib/para/form_builder/containers.rb', line 75

def para_cancel_button
  template.link_to(
    ::I18n.t('para.shared.cancel'),
    return_to_path,
    class: 'btn btn-danger btn-shadow'
  )
end

#para_submit_and_add_another_buttonObject



66
67
68
69
70
71
72
73
# File 'lib/para/form_builder/containers.rb', line 66

def para_submit_and_add_another_button
  button(
    :submit,
    ::I18n.t('para.shared.save_and_add_another_button'),
    name: '_save_and_add_another',
    class: 'btn-primary btn-shadow'
  )
end

#para_submit_and_edit_buttonObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/para/form_builder/containers.rb', line 49

def para_submit_and_edit_button
  # Create a hidden field that will hold the last tab used by the user,
  # allowing redirection and re-rendering to display it directly
  current_anchor_tag = template.hidden_field_tag(
    :_current_anchor, template.params[:_current_anchor],
    data: { :'current-anchor' => true }
  )

  button_tag = button(
    :submit,
    ::I18n.t('para.shared.save_and_edit'),
    name: '_save_and_edit', class: 'btn-primary btn-shadow'
  )

  current_anchor_tag + button_tag
end

#para_submit_button(options = {}) ⇒ Object



45
46
47
# File 'lib/para/form_builder/containers.rb', line 45

def para_submit_button(options = {})
  button(:submit, ::I18n.t('para.shared.save'), name: '_save', class: 'btn-success btn-shadow')
end

#return_to_hidden_fieldObject



41
42
43
# File 'lib/para/form_builder/containers.rb', line 41

def return_to_hidden_field
  template.hidden_field_tag(:return_to, return_to_path)
end

#return_to_pathObject



83
84
85
# File 'lib/para/form_builder/containers.rb', line 83

def return_to_path
  template.params[:return_to].presence || component_path
end