Module: SettingsHelper

Defined in:
app/helpers/settings_helper.rb

Overview

Redmine - project management software Copyright (C) 2006-2017 Jean-Philippe Lang

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Since:

  • 0.4.2

Instance Method Summary collapse

Instance Method Details

#administration_settings_tabsObject

Since:

  • 0.7.0



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/helpers/settings_helper.rb', line 21

def administration_settings_tabs
  tabs = [{:name => 'general', :partial => 'settings/general', :label => :label_general},
          {:name => 'display', :partial => 'settings/display', :label => :label_display},
          {:name => 'authentication', :partial => 'settings/authentication', :label => :label_authentication},
          {:name => 'api', :partial => 'settings/api', :label => :label_api},
          {:name => 'projects', :partial => 'settings/projects', :label => :label_project_plural},
          {:name => 'users', :partial => 'settings/users', :label => :label_user_plural},
          {:name => 'issues', :partial => 'settings/issues', :label => :label_issue_tracking},
          {:name => 'timelog', :partial => 'settings/timelog', :label => :label_time_tracking},
          {:name => 'attachments', :partial => 'settings/attachments', :label => :label_attachment_plural},
          {:name => 'notifications', :partial => 'settings/notifications', :label => :field_mail_notification},
          {:name => 'mail_handler', :partial => 'settings/mail_handler', :label => :label_incoming_emails},
          {:name => 'repositories', :partial => 'settings/repositories', :label => :label_repository_plural}
          ]
end

#cross_project_subtasks_optionsObject

Since:

  • 2.2.0



162
163
164
165
166
167
168
169
170
171
172
# File 'app/helpers/settings_helper.rb', line 162

def cross_project_subtasks_options
  options = [
    [:label_disabled, ''],
    [:label_cross_project_system, 'system'],
    [:label_cross_project_tree, 'tree'],
    [:label_cross_project_hierarchy, 'hierarchy'],
    [:label_cross_project_descendants, 'descendants']
  ]

  options.map {|label, value| [l(label), value.to_s]}
end

#date_format_setting_options(locale) ⇒ Object

Returns the options for the date_format setting

Since:

  • 3.1.0



202
203
204
205
206
207
208
209
210
# File 'app/helpers/settings_helper.rb', line 202

def date_format_setting_options(locale)
  Setting::DATE_FORMATS.map do |f|
    today = ::I18n.l(User.current.today, :locale => locale, :format => f)
    format = f.gsub('%', '').gsub(/[dmY]/) do
      {'d' => 'dd', 'm' => 'mm', 'Y' => 'yyyy'}[$&]
    end
    ["#{today} (#{format})", f]
  end
end

Since:

  • 3.0.0



152
153
154
155
156
157
158
159
160
# File 'app/helpers/settings_helper.rb', line 152

def link_copied_issue_options
  options = [
    [:general_text_Yes, 'yes'],
    [:general_text_No, 'no'],
    [:label_ask, 'ask']
  ]

  options.map {|label, value| [l(label), value.to_s]}
end

#notification_field(notifiable) ⇒ Object

Renders a notification field for a Redmine::Notifiable option

Since:

  • 1.1.0



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'app/helpers/settings_helper.rb', line 112

def notification_field(notifiable)
  tag_data = notifiable.parent.present? ?
    {:parent_notifiable => notifiable.parent} :
    {:disables => "input[data-parent-notifiable=#{notifiable.name}]"}

  tag = check_box_tag('settings[notified_events][]',
    notifiable.name,
    setting_value('notified_events').include?(notifiable.name),
    :id => nil,
    :data => tag_data)

  text = l_or_humanize(notifiable.name, :prefix => 'label_')

  options = {}
  if notifiable.parent.present?
    options[:class] = "parent"
  end

  (:label, tag + text, options)
end

#parent_issue_dates_optionsObject

Since:

  • 3.1.0



174
175
176
177
178
179
180
181
# File 'app/helpers/settings_helper.rb', line 174

def parent_issue_dates_options
  options = [
    [:label_parent_task_attributes_derived, 'derived'],
    [:label_parent_task_attributes_independent, 'independent']
  ]

  options.map {|label, value| [l(label), value.to_s]}
end

#parent_issue_done_ratio_optionsObject

Since:

  • 3.1.0



192
193
194
195
196
197
198
199
# File 'app/helpers/settings_helper.rb', line 192

def parent_issue_done_ratio_options
  options = [
    [:label_parent_task_attributes_derived, 'derived'],
    [:label_parent_task_attributes_independent, 'independent']
  ]

  options.map {|label, value| [l(label), value.to_s]}
end

#parent_issue_priority_optionsObject

Since:

  • 3.1.0



183
184
185
186
187
188
189
190
# File 'app/helpers/settings_helper.rb', line 183

def parent_issue_priority_options
  options = [
    [:label_parent_task_attributes_derived, 'derived'],
    [:label_parent_task_attributes_independent, 'independent']
  ]

  options.map {|label, value| [l(label), value.to_s]}
end

#render_settings_error(errors) ⇒ Object

Since:

  • 3.4.0



37
38
39
40
41
42
43
44
# File 'app/helpers/settings_helper.rb', line 37

def render_settings_error(errors)
  return if errors.blank?
  s = ''.html_safe
  errors.each do |name, message|
    s << ('li', ('b', l("setting_#{name}")) + " " + message)
  end
  ('div', ('ul', s), :id => 'errorExplanation')
end

#session_lifetime_optionsObject

Since:

  • 3.2.0



133
134
135
136
137
138
139
140
141
142
# File 'app/helpers/settings_helper.rb', line 133

def session_lifetime_options
  options = [[l(:label_disabled), 0]]
  options += [4, 8, 12].map {|hours|
    [l('datetime.distance_in_words.x_hours', :count => hours), (hours * 60).to_s]
  }
  options += [1, 7, 30, 60, 365].map {|days|
    [l('datetime.distance_in_words.x_days', :count => days), (days * 24 * 60).to_s]
  }
  options
end

#session_timeout_optionsObject

Since:

  • 3.2.0



144
145
146
147
148
149
150
# File 'app/helpers/settings_helper.rb', line 144

def session_timeout_options
  options = [[l(:label_disabled), 0]]
  options += [1, 2, 4, 8, 12, 24, 48].map {|hours|
    [l('datetime.distance_in_words.x_hours', :count => hours), (hours * 60).to_s]
  }
  options
end

#setting_check_box(setting, options = {}) ⇒ Object

Since:

  • 0.9.0



95
96
97
98
99
# File 'app/helpers/settings_helper.rb', line 95

def setting_check_box(setting, options={})
  setting_label(setting, options).html_safe +
    hidden_field_tag("settings[#{setting}]", 0, :id => nil).html_safe +
      check_box_tag("settings[#{setting}]", 1, setting_value(setting).to_s != '0', options).html_safe
end

#setting_label(setting, options = {}) ⇒ Object

Since:

  • 0.9.0



101
102
103
104
105
106
107
108
109
# File 'app/helpers/settings_helper.rb', line 101

def setting_label(setting, options={})
  label = options.delete(:label)
  if label == false
    ''
  else
    text = label.is_a?(String) ? label : l(label || "setting_#{setting}")
    label_tag("settings_#{setting}", text, options[:label_options])
  end
end

#setting_multiselect(setting, choices, options = {}) ⇒ Object

Since:

  • 0.9.0



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'app/helpers/settings_helper.rb', line 64

def setting_multiselect(setting, choices, options={})
  setting_values = setting_value(setting)
  setting_values = [] unless setting_values.is_a?(Array)

  ("label", l(options[:label] || "setting_#{setting}")) +
    hidden_field_tag("settings[#{setting}][]", '').html_safe +
    choices.collect do |choice|
      text, value = (choice.is_a?(Array) ? choice : [choice, choice])
      (
        'label',
        check_box_tag(
           "settings[#{setting}][]",
           value,
           setting_values.include?(value),
           :id => nil
         ) + text.to_s,
        :class => (options[:inline] ? 'inline' : 'block')
       )
    end.join.html_safe
end

#setting_select(setting, choices, options = {}) ⇒ Object

Since:

  • 0.9.0



54
55
56
57
58
59
60
61
62
# File 'app/helpers/settings_helper.rb', line 54

def setting_select(setting, choices, options={})
  if blank_text = options.delete(:blank)
    choices = [[blank_text.is_a?(Symbol) ? l(blank_text) : blank_text, '']] + choices
  end
  setting_label(setting, options).html_safe +
    select_tag("settings[#{setting}]",
               options_for_select(choices, setting_value(setting).to_s),
               options).html_safe
end

#setting_text_area(setting, options = {}) ⇒ Object

Since:

  • 0.9.0



90
91
92
93
# File 'app/helpers/settings_helper.rb', line 90

def setting_text_area(setting, options={})
  setting_label(setting, options).html_safe +
    text_area_tag("settings[#{setting}]", setting_value(setting), options).html_safe
end

#setting_text_field(setting, options = {}) ⇒ Object

Since:

  • 0.9.0



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

def setting_text_field(setting, options={})
  setting_label(setting, options).html_safe +
    text_field_tag("settings[#{setting}]", setting_value(setting), options).html_safe
end

#setting_value(setting) ⇒ Object

Since:

  • 3.4.0



46
47
48
49
50
51
52
# File 'app/helpers/settings_helper.rb', line 46

def setting_value(setting)
  value = nil
  if params[:settings]
    value = params[:settings][setting]
  end
  value || Setting.send(setting)
end