Module: RailsSettingsUi::SettingsHelper

Included in:
SettingsController
Defined in:
app/helpers/rails_settings_ui/settings_helper.rb

Instance Method Summary collapse

Instance Method Details

#all_settingsObject



86
87
88
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 86

def all_settings
  RailsSettingsUi.settings_klass.public_send(get_collection_method)
end

#checkbox_field(setting_name, setting_value) ⇒ Object



49
50
51
52
53
54
55
56
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 49

def checkbox_field(setting_name, setting_value)
  help_block_content = I18n.t("settings.attributes.#{setting_name}.help_block", default: '')
  fields = ""
  fields << hidden_field_tag("settings[#{setting_name}]", 'off').html_safe
  fields << check_box_tag("settings[#{setting_name}]", nil, setting_value).html_safe
  fields << (:span, help_block_content, class: 'help-block') if help_block_content.presence
  fields.html_safe
end

#checkboxes_group_field(setting_name) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 36

def checkboxes_group_field(setting_name)
  field = ""
  all_setting_values = all_settings[setting_name.to_s].map(&:to_s)
  RailsSettingsUi.default_settings[setting_name.to_sym].each do |value|
    checked = all_setting_values.include?(value.to_s)
    field << check_box_tag("settings[#{setting_name}][#{value}]", nil, checked, style: "margin: 0 10px;")
    field << label_tag("settings[#{setting_name}][#{value}]", I18n.t("settings.attributes.#{setting_name}.labels.#{value}", default: value.to_s), style: "display: inline-block;")
  end
  help_block_content = I18n.t("settings.attributes.#{setting_name}.help_block", default: '')
  field << (:span, help_block_content, class: 'help-block') if help_block_content.presence
  field.html_safe
end

#default_value_for_setting(setting_name) ⇒ Object



82
83
84
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 82

def default_value_for_setting(setting_name)
  RailsSettingsUi.defaults_for_settings.with_indifferent_access[setting_name.to_sym]
end

#get_collection_methodObject



73
74
75
76
77
78
79
80
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 73

def get_collection_method
  case Rails::VERSION::STRING
  when /4\.0\.\d+/ || /3\..*/
    :all
  else
    :get_all
  end
end

#message_for_default_value_missingObject



69
70
71
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 69

def message_for_default_value_missing
  (:span, I18n.t("settings.errors.default_missing"), class: "label label-warning")
end

#select_tag_field(setting_name, setting_value) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 16

def select_tag_field(setting_name, setting_value)
  default_options_from_locale = I18n.t("settings.attributes.#{setting_name}.labels", default: {}).map do |value, label|
    [label, value]
  end
  selected_value = if setting_value.is_a?(Array)
    default_value_for_setting(setting_name)
  else
    setting_value
  end
  default_options = if default_options_from_locale.empty?
    all_settings[setting_name.to_s].map {|v| [v, v]}
  else
    default_options_from_locale
  end
  field = select_tag("settings[#{setting_name}]", options_for_select(default_options, selected_value), class: 'form-control')
  help_block_content = I18n.t("settings.attributes.#{setting_name}.help_block", default: '')
  field << (:span, help_block_content, class: 'help-block') if help_block_content.presence
  field.html_safe
end

#setting_field(setting_name, setting_value) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 2

def setting_field(setting_name, setting_value)
  if !RailsSettingsUi.default_settings.has_key?(setting_name.to_sym)
    message_for_default_value_missing
  elsif 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)
  elsif [TrueClass, FalseClass].include?(setting_value.class)
    checkbox_field(setting_name, setting_value)
  else
    text_field(setting_name, setting_value, class: 'form-control')
  end
end

#text_field(setting_name, setting_value, options = {}) ⇒ Object



58
59
60
61
62
63
64
65
66
67
# File 'app/helpers/rails_settings_ui/settings_helper.rb', line 58

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

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