Module: Decidim::Admin::SettingsHelper

Defined in:
decidim-admin/app/helpers/decidim/admin/settings_helper.rb

Overview

This class contains helpers needed in order for component settings to properly render.

Constant Summary collapse

TYPES =
{
  boolean: :check_box,
  integer: :number_field,
  string: :text_field,
  float: :number_field,
  text: :text_area,
  select: :select_field,
  enum: :collection_radio_buttons,
  time: :datetime_field,
  integer_with_units: :integer_with_units,
  taxonomy_filters: :taxonomy_filters
}.freeze

Instance Method Summary collapse

Instance Method Details

#settings_attribute_input(form, attribute, name, i18n_scope, options = {}) ⇒ ActiveSupport::SafeBuffer

Renders a form field that matches a settings attribute’s type. Besides the field itself, it also renders all the metadata (like the labels and help texts)

Options Hash (options):

  • :tabs_prefix (String)

    The type of the setting. It can be “global-settings” or “step-N-settings”, where N is the number of the step.

  • :readonly (nil, Boolean)

    True if the input is readonly.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'decidim-admin/app/helpers/decidim/admin/settings_helper.rb', line 34

def settings_attribute_input(form, attribute, name, i18n_scope, options = {})
  form_method = form_method_for_attribute(attribute, options)

  container_class = "#{name}_container"
  if options[:readonly]
    container_class += " readonly_container"
    help_text = text_for_setting(name, "readonly", i18n_scope)
  end
  help_text ||= text_for_setting(name, "help", i18n_scope)
  help_text_options = help_text ? { help_text: } : {}

  options = { label: t(name, scope: i18n_scope) }
            .merge(help_text_options)
            .merge(extra_options_for_type(form_method))
            .merge(options)

  (:div, class: container_class) do
    if attribute.translated?
      options[:tabs_id] = "#{options.delete(:tabs_prefix)}-#{name}-tabs"
      form.send(:translated, form_method, name, options)
    else
      render_field_form_method(form_method, form, attribute, name, i18n_scope, options)
    end
  end.html_safe
end