Module: SettingsHelper

Defined in:
app/helpers/settings_helper.rb

Overview

Redmine - project management software Copyright © 2006-2023 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.

Instance Method Summary collapse

Instance Method Details

#administration_settings_tabsObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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



177
178
179
180
181
182
183
184
185
186
187
# File 'app/helpers/settings_helper.rb', line 177

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



217
218
219
220
221
222
223
224
225
# File 'app/helpers/settings_helper.rb', line 217

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

#default_global_issue_query_optionsObject



169
170
171
# File 'app/helpers/settings_helper.rb', line 169

def default_global_issue_query_options
  [[l(:label_none), '']] + IssueQuery.only_public.where(project_id: nil).pluck(:name, :id)
end

#default_global_project_query_optionsObject



173
174
175
# File 'app/helpers/settings_helper.rb', line 173

def default_global_project_query_options
  [[l(:label_none), '']] + ProjectQuery.only_public.pluck(:name, :id)
end

#gravatar_default_setting_optionsObject



227
228
229
230
231
232
233
234
# File 'app/helpers/settings_helper.rb', line 227

def gravatar_default_setting_options
  [['Identicons', 'identicon'],
   ['Monster ids', 'monsterid'],
   ['Mystery man', 'mm'],
   ['Retro', 'retro'],
   ['Robohash', 'robohash'],
   ['Wavatars', 'wavatar']]
end


159
160
161
162
163
164
165
166
167
# File 'app/helpers/settings_helper.rb', line 159

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



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'app/helpers/settings_helper.rb', line 120

def notification_field(notifiable)
  tag_data =
    if notifiable.parent.present?
      {:parent_notifiable => notifiable.parent}
    else
      {:disables => "input[data-parent-notifiable=#{notifiable.name}]"}
    end
  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



189
190
191
192
193
194
195
196
# File 'app/helpers/settings_helper.rb', line 189

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



207
208
209
210
211
212
213
214
# File 'app/helpers/settings_helper.rb', line 207

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



198
199
200
201
202
203
204
205
# File 'app/helpers/settings_helper.rb', line 198

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



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

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



140
141
142
143
144
145
146
147
148
149
# File 'app/helpers/settings_helper.rb', line 140

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

#session_timeout_optionsObject



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

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

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



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

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



109
110
111
112
113
114
115
116
117
# File 'app/helpers/settings_helper.rb', line 109

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



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'app/helpers/settings_helper.rb', line 72

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



62
63
64
65
66
67
68
69
70
# File 'app/helpers/settings_helper.rb', line 62

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



98
99
100
101
# File 'app/helpers/settings_helper.rb', line 98

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



93
94
95
96
# File 'app/helpers/settings_helper.rb', line 93

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



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

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