Sha256: ca482933c8846b500ae7f9c79425e1d8aad580b35111e31f1aa30c1a45f0d9f1

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

module RailsSettingsUi::SettingsHelper
  def setting_field(setting_name, setting_value, all_settings)
    if RailsSettingsUi.settings_displayed_as_select_tag.include?(setting_name.to_sym)
      select_tag_field(setting_name, setting_value)
    elsif setting_value.is_a?(Array)
      checkboxes_group_field(setting_name, all_settings)
    elsif [TrueClass, FalseClass].include?(setting_value.class)
      checkbox_field(setting_name, setting_value)
    else
      text_field(setting_name, setting_value)
    end
  end

  def select_tag_field(setting_name, setting_value)
    default_setting_values = I18n.t("settings.attributes.#{setting_name}.labels", default: {}).map do |label, value|
      [label, value]
    end
    select_tag("settings[#{setting_name.to_s}]", options_for_select(default_setting_values, setting_value))
  end

  def checkboxes_group_field(setting_name, all_settings)
    field = ""
    Settings.defaults[setting_name.to_sym].each do |value|
      field << check_box_tag("settings[#{setting_name.to_s}][#{value.to_s}]", nil, all_settings[setting_name.to_s].include?(value), style: "margin: 0 10px;")
      field << label_tag("settings[#{setting_name.to_s}][#{value.to_s}]", I18n.t("settings.attributes.#{setting_name}.labels.#{value}", default: value.to_s), style: "display: inline-block;")
    end
    field.html_safe
  end

  def checkbox_field(setting_name, setting_value)
    check_box_tag("settings[#{setting_name.to_s}]", nil, setting_value).html_safe
  end

  def text_field(setting_name, setting_value)
    field = if setting_value.to_s.size > 30
      text_area_tag("settings[#{setting_name}]", setting_value.to_s, rows: 10)
    else
      text_field_tag("settings[#{setting_name}]", setting_value.to_s)
    end

    help_block_content = I18n.t("settings.attributes.#{setting_name}.help_block", default: '')
    field + (help_block_content.presence && content_tag(:span, help_block_content, class: 'help-block'))
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rails-settings-ui-0.1.1 app/helpers/rails_settings_ui/settings_helper.rb
rails-settings-ui-0.1.0 app/helpers/rails_settings_ui/settings_helper.rb