Module: SettingsHelper

Defined in:
app/helpers/settings_helper.rb

Overview

Redmine - project management software Copyright (C) 2006-2016 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
# 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 => 'issues', :partial => 'settings/issues', :label => :label_issue_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



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

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



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

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


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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



88
89
90
91
# File 'app/helpers/settings_helper.rb', line 88

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



83
84
85
86
# File 'app/helpers/settings_helper.rb', line 83

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



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

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