Revision 1046
Added by Jean-Philippe Lang over 17 years ago
trunk/app/controllers/admin_controller.rb | ||
---|---|---|
45 | 45 |
|
46 | 46 |
render :action => "projects", :layout => false if request.xhr? |
47 | 47 |
end |
48 |
|
|
49 |
def mail_options |
|
50 |
@notifiables = %w(issue_added issue_updated news_added document_added file_added message_posted) |
|
51 |
if request.post? |
|
52 |
settings = (params[:settings] || {}).dup.symbolize_keys |
|
53 |
settings[:notified_events] ||= [] |
|
54 |
settings.each { |name, value| Setting[name] = value } |
|
55 |
flash[:notice] = l(:notice_successful_update) |
|
56 |
redirect_to :controller => 'admin', :action => 'mail_options' |
|
57 |
end |
|
58 |
end |
|
59 | 48 |
|
60 | 49 |
# Loads the default configuration |
61 | 50 |
# (roles, trackers, statuses, workflow, enumerations) |
... | ... | |
82 | 71 |
flash[:error] = l(:notice_email_error, e.message) |
83 | 72 |
end |
84 | 73 |
ActionMailer::Base.raise_delivery_errors = raise_delivery_errors |
85 |
redirect_to :action => 'mail_options'
|
|
74 |
redirect_to :controller => 'settings', :action => 'edit', :tab => 'notifications'
|
|
86 | 75 |
end |
87 | 76 |
|
88 | 77 |
def info |
trunk/app/controllers/settings_controller.rb | ||
---|---|---|
25 | 25 |
end |
26 | 26 |
|
27 | 27 |
def edit |
28 |
if request.post? and params[:settings] and params[:settings].is_a? Hash |
|
29 |
params[:settings].each { |name, value| Setting[name] = value } |
|
30 |
redirect_to :action => 'edit' and return |
|
28 |
@notifiables = %w(issue_added issue_updated news_added document_added file_added message_posted) |
|
29 |
if request.post? && params[:settings] && params[:settings].is_a?(Hash) |
|
30 |
settings = (params[:settings] || {}).dup.symbolize_keys |
|
31 |
settings.each do |name, value| |
|
32 |
# remove blank values in array settings |
|
33 |
value.delete_if {|v| v.blank? } if value.is_a?(Array) |
|
34 |
Setting[name] = value |
|
35 |
end |
|
36 |
flash[:notice] = l(:notice_successful_update) |
|
37 |
redirect_to :action => 'edit', :tab => params[:tab] |
|
31 | 38 |
end |
32 | 39 |
end |
33 | 40 |
|
trunk/app/helpers/settings_helper.rb | ||
---|---|---|
16 | 16 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
17 | 17 |
|
18 | 18 |
module SettingsHelper |
19 |
def administration_settings_tabs |
|
20 |
tabs = [{:name => 'general', :partial => 'settings/general', :label => :label_general}, |
|
21 |
{:name => 'authentication', :partial => 'settings/authentication', :label => :label_authentication}, |
|
22 |
{:name => 'issues', :partial => 'settings/issues', :label => :label_issue_tracking}, |
|
23 |
{:name => 'notifications', :partial => 'settings/notifications', :label => l(:field_mail_notification)}, |
|
24 |
{:name => 'repositories', :partial => 'settings/repositories', :label => :label_repository_plural} |
|
25 |
] |
|
26 |
end |
|
19 | 27 |
end |
trunk/app/views/admin/mail_options.rhtml | ||
---|---|---|
1 |
<div class="contextual"> |
|
2 |
<%= link_to l(:label_send_test_email), :action => 'test_email' %> |
|
3 |
</div> |
|
4 |
|
|
5 |
<h2><%=l(:field_mail_notification)%></h2> |
|
6 |
|
|
7 |
<% form_tag({:action => 'mail_options'}, :id => 'mail-options-form') do %> |
|
8 |
|
|
9 |
<fieldset class="box tabular settings"><legend><%=l(:label_settings)%></legend> |
|
10 |
<p><label><%= l(:setting_mail_from) %></label> |
|
11 |
<%= text_field_tag 'settings[mail_from]', Setting.mail_from, :size => 60 %></p> |
|
12 |
|
|
13 |
<p><label><%= l(:setting_bcc_recipients) %></label> |
|
14 |
<%= check_box_tag 'settings[bcc_recipients]', 1, Setting.bcc_recipients? %> |
|
15 |
<%= hidden_field_tag 'settings[bcc_recipients]', 0 %></p> |
|
16 |
</fieldset> |
|
17 |
|
|
18 |
<fieldset class="box"><legend><%=l(:text_select_mail_notifications)%></legend> |
|
19 |
<% @notifiables.each do |notifiable| %> |
|
20 |
<label><%= check_box_tag 'settings[notified_events][]', notifiable, Setting.notified_events.include?(notifiable) %> |
|
21 |
<%= notifiable.humanize %></label><br /> |
|
22 |
<% end %> |
|
23 |
<p><%= check_all_links('mail-options-form') %></p> |
|
24 |
</fieldset> |
|
25 |
|
|
26 |
<fieldset class="box"><legend><%= l(:setting_emails_footer) %></legend> |
|
27 |
<%= text_area_tag 'settings[emails_footer]', Setting.emails_footer, :class => 'wiki-edit', :rows => 5 %> |
|
28 |
</fieldset> |
|
29 |
|
|
30 |
<%= submit_tag l(:button_save) %> |
|
31 |
<% end %> |
|
32 |
|
|
33 |
<% html_title(l(:field_mail_notification)) -%> |
|
34 | 0 |
trunk/app/views/admin/index.rhtml | ||
---|---|---|
30 | 30 |
<%= link_to l(:label_enumerations), :controller => 'enumerations' %> |
31 | 31 |
</p> |
32 | 32 |
|
33 |
<p class="icon22 icon22-notifications"> |
|
34 |
<%= link_to l(:field_mail_notification), :controller => 'admin', :action => 'mail_options' %> |
|
35 |
</p> |
|
36 |
|
|
37 |
<p class="icon22 icon22-authent"> |
|
38 |
<%= link_to l(:label_authentication), :controller => 'auth_sources' %> |
|
39 |
</p> |
|
40 |
|
|
41 | 33 |
<p class="icon22 icon22-settings"> |
42 | 34 |
<%= link_to l(:label_settings), :controller => 'settings' %> |
43 | 35 |
</p> |
trunk/app/views/settings/_authentication.rhtml | ||
---|---|---|
1 |
<% form_tag({:action => 'edit', :tab => 'authentication'}) do %> |
|
2 |
|
|
3 |
<div class="box tabular settings"> |
|
4 |
<p><label><%= l(:setting_login_required) %></label> |
|
5 |
<%= check_box_tag 'settings[login_required]', 1, Setting.login_required? %><%= hidden_field_tag 'settings[login_required]', 0 %></p> |
|
6 |
|
|
7 |
<p><label><%= l(:setting_autologin) %></label> |
|
8 |
<%= select_tag 'settings[autologin]', options_for_select( [[l(:label_disabled), "0"]] + [1, 7, 30, 365].collect{|days| [lwr(:actionview_datehelper_time_in_words_day, days), days.to_s]}, Setting.autologin) %></p> |
|
9 |
|
|
10 |
<p><label><%= l(:setting_self_registration) %></label> |
|
11 |
<%= select_tag 'settings[self_registration]', |
|
12 |
options_for_select( [[l(:label_disabled), "0"], |
|
13 |
[l(:label_registration_activation_by_email), "1"], |
|
14 |
[l(:label_registration_manual_activation), "2"], |
|
15 |
[l(:label_registration_automatic_activation), "3"] |
|
16 |
], Setting.self_registration ) %></p> |
|
17 |
|
|
18 |
<p><label><%= l(:label_password_lost) %></label> |
|
19 |
<%= check_box_tag 'settings[lost_password]', 1, Setting.lost_password? %><%= hidden_field_tag 'settings[lost_password]', 0 %></p> |
|
20 |
</div> |
|
21 |
|
|
22 |
<div style="float:right;"> |
|
23 |
<%= link_to 'Manage LDAP authentication...', :controller => 'auth_sources', :action => 'list' %> |
|
24 |
</div> |
|
25 |
|
|
26 |
<%= submit_tag l(:button_save) %> |
|
27 |
<% end %> |
|
0 | 28 |
trunk/app/views/settings/_general.rhtml | ||
---|---|---|
1 |
<% form_tag({:action => 'edit'}) do %> |
|
2 |
|
|
3 |
<div class="box tabular settings"> |
|
4 |
<p><label><%= l(:setting_app_title) %></label> |
|
5 |
<%= text_field_tag 'settings[app_title]', Setting.app_title, :size => 30 %></p> |
|
6 |
|
|
7 |
<p><label><%= l(:setting_welcome_text) %></label> |
|
8 |
<%= text_area_tag 'settings[welcome_text]', Setting.welcome_text, :cols => 60, :rows => 5, :class => 'wiki-edit' %></p> |
|
9 |
<%= wikitoolbar_for 'settings[welcome_text]' %> |
|
10 |
|
|
11 |
<p><label><%= l(:label_theme) %></label> |
|
12 |
<%= select_tag 'settings[ui_theme]', options_for_select( ([[l(:label_default), '']] + Redmine::Themes.themes.collect {|t| [t.name, t.id]}), Setting.ui_theme) %></p> |
|
13 |
|
|
14 |
<p><label><%= l(:setting_default_language) %></label> |
|
15 |
<%= select_tag 'settings[default_language]', options_for_select( lang_options_for_select(false), Setting.default_language) %></p> |
|
16 |
|
|
17 |
<p><label><%= l(:setting_date_format) %></label> |
|
18 |
<%= select_tag 'settings[date_format]', options_for_select( [[l(:label_language_based), '']] + Setting::DATE_FORMATS.collect {|f| [Date.today.strftime(f), f]}, Setting.date_format) %></p> |
|
19 |
|
|
20 |
<p><label><%= l(:setting_time_format) %></label> |
|
21 |
<%= select_tag 'settings[time_format]', options_for_select( [[l(:label_language_based), '']] + Setting::TIME_FORMATS.collect {|f| [Time.now.strftime(f), f]}, Setting.time_format) %></p> |
|
22 |
|
|
23 |
<p><label><%= l(:setting_attachment_max_size) %></label> |
|
24 |
<%= text_field_tag 'settings[attachment_max_size]', Setting.attachment_max_size, :size => 6 %> KB</p> |
|
25 |
|
|
26 |
<p><label><%= l(:setting_per_page_options) %></label> |
|
27 |
<%= text_field_tag 'settings[per_page_options]', Setting.per_page_options_array.join(', '), :size => 20 %><br /><em><%= l(:text_comma_separated) %></em></p> |
|
28 |
|
|
29 |
<p><label><%= l(:setting_host_name) %></label> |
|
30 |
<%= text_field_tag 'settings[host_name]', Setting.host_name, :size => 60 %></p> |
|
31 |
|
|
32 |
<p><label><%= l(:setting_protocol) %></label> |
|
33 |
<%= select_tag 'settings[protocol]', options_for_select(['http', 'https'], Setting.protocol) %></p> |
|
34 |
|
|
35 |
<p><label><%= l(:setting_text_formatting) %></label> |
|
36 |
<%= select_tag 'settings[text_formatting]', options_for_select([[l(:label_none), "0"], ["textile", "textile"]], Setting.text_formatting) %></p> |
|
37 |
|
|
38 |
<p><label><%= l(:setting_wiki_compression) %></label> |
|
39 |
<%= select_tag 'settings[wiki_compression]', options_for_select( [[l(:label_none), 0], ["gzip", "gzip"]], Setting.wiki_compression) %></p> |
|
40 |
|
|
41 |
<p><label><%= l(:setting_feeds_limit) %></label> |
|
42 |
<%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %></p> |
|
43 |
</div> |
|
44 |
|
|
45 |
<%= submit_tag l(:button_save) %> |
|
46 |
<% end %> |
|
0 | 47 |
trunk/app/views/settings/_issues.rhtml | ||
---|---|---|
1 |
<% form_tag({:action => 'edit', :tab => 'issues'}) do %> |
|
2 |
|
|
3 |
<div class="box tabular settings"> |
|
4 |
<p><label><%= l(:setting_cross_project_issue_relations) %></label> |
|
5 |
<%= check_box_tag 'settings[cross_project_issue_relations]', 1, Setting.cross_project_issue_relations? %><%= hidden_field_tag 'settings[cross_project_issue_relations]', 0 %></p> |
|
6 |
|
|
7 |
<p><label><%= l(:setting_issues_export_limit) %></label> |
|
8 |
<%= text_field_tag 'settings[issues_export_limit]', Setting.issues_export_limit, :size => 6 %></p> |
|
9 |
</div> |
|
10 |
|
|
11 |
<fieldset class="box"><legend><%= l(:setting_issue_list_default_columns) %></legend> |
|
12 |
<%= hidden_field_tag 'settings[issue_list_default_columns][]', '' %> |
|
13 |
<p><% Query.new.available_columns.each do |column| %> |
|
14 |
<label><%= check_box_tag 'settings[issue_list_default_columns][]', column.name, Setting.issue_list_default_columns.include?(column.name.to_s) %> |
|
15 |
<%= column.caption %></label> |
|
16 |
<% end %></p> |
|
17 |
</fieldset> |
|
18 |
|
|
19 |
<%= submit_tag l(:button_save) %> |
|
20 |
<% end %> |
|
0 | 21 |
trunk/app/views/settings/_notifications.rhtml | ||
---|---|---|
1 |
<% form_tag({:action => 'edit', :tab => 'notifications'}) do %> |
|
2 |
|
|
3 |
<div class="box tabular settings"> |
|
4 |
<p><label><%= l(:setting_mail_from) %></label> |
|
5 |
<%= text_field_tag 'settings[mail_from]', Setting.mail_from, :size => 60 %></p> |
|
6 |
|
|
7 |
<p><label><%= l(:setting_bcc_recipients) %></label> |
|
8 |
<%= check_box_tag 'settings[bcc_recipients]', 1, Setting.bcc_recipients? %> |
|
9 |
<%= hidden_field_tag 'settings[bcc_recipients]', 0 %></p> |
|
10 |
</div> |
|
11 |
|
|
12 |
<fieldset class="box"><legend><%=l(:text_select_mail_notifications)%></legend> |
|
13 |
<% @notifiables.each do |notifiable| %> |
|
14 |
<label><%= check_box_tag 'settings[notified_events][]', notifiable, Setting.notified_events.include?(notifiable) %> |
|
15 |
<%= notifiable.humanize %></label><br /> |
|
16 |
<% end %> |
|
17 |
<%= hidden_field_tag 'settings[notified_events][]', '' %> |
|
18 |
<p><%= check_all_links('mail-options-form') %></p> |
|
19 |
</fieldset> |
|
20 |
|
|
21 |
<fieldset class="box"><legend><%= l(:setting_emails_footer) %></legend> |
|
22 |
<%= text_area_tag 'settings[emails_footer]', Setting.emails_footer, :class => 'wiki-edit', :rows => 5 %> |
|
23 |
</fieldset> |
|
24 |
|
|
25 |
<div style="float:right;"> |
|
26 |
<%= link_to l(:label_send_test_email), :controller => 'admin', :action => 'test_email' %> |
|
27 |
</div> |
|
28 |
|
|
29 |
<%= submit_tag l(:button_save) %> |
|
30 |
<% end %> |
|
0 | 31 |
trunk/app/views/settings/_repositories.rhtml | ||
---|---|---|
1 |
<% form_tag({:action => 'edit', :tab => 'repositories'}) do %> |
|
2 |
|
|
3 |
<div class="box tabular settings"> |
|
4 |
<p><label><%= l(:setting_autofetch_changesets) %></label> |
|
5 |
<%= check_box_tag 'settings[autofetch_changesets]', 1, Setting.autofetch_changesets? %><%= hidden_field_tag 'settings[autofetch_changesets]', 0 %></p> |
|
6 |
|
|
7 |
<p><label><%= l(:setting_sys_api_enabled) %></label> |
|
8 |
<%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p> |
|
9 |
|
|
10 |
<p><label><%= l(:setting_repositories_encodings) %></label> |
|
11 |
<%= text_field_tag 'settings[repositories_encodings]', Setting.repositories_encodings, :size => 60 %><br /><em><%= l(:text_comma_separated) %></em></p> |
|
12 |
</div> |
|
13 |
|
|
14 |
<fieldset class="box tabular settings"><legend><%= l(:text_issues_ref_in_commit_messages) %></legend> |
|
15 |
<p><label><%= l(:setting_commit_ref_keywords) %></label> |
|
16 |
<%= text_field_tag 'settings[commit_ref_keywords]', Setting.commit_ref_keywords, :size => 30 %><br /><em><%= l(:text_comma_separated) %></em></p> |
|
17 |
|
|
18 |
<p><label><%= l(:setting_commit_fix_keywords) %></label> |
|
19 |
<%= text_field_tag 'settings[commit_fix_keywords]', Setting.commit_fix_keywords, :size => 30 %> |
|
20 |
<%= l(:label_applied_status) %>: <%= select_tag 'settings[commit_fix_status_id]', options_for_select( [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, Setting.commit_fix_status_id) %> |
|
21 |
<%= l(:field_done_ratio) %>: <%= select_tag 'settings[commit_fix_done_ratio]', options_for_select( [[l(:label_no_change_option), '']] + ((0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }), Setting.commit_fix_done_ratio) %> |
|
22 |
<br /><em><%= l(:text_comma_separated) %></em></p> |
|
23 |
</fieldset> |
|
24 |
|
|
25 |
<%= submit_tag l(:button_save) %> |
|
26 |
<% end %> |
|
0 | 27 |
trunk/app/views/settings/edit.rhtml | ||
---|---|---|
1 | 1 |
<h2><%= l(:label_settings) %></h2> |
2 | 2 |
|
3 |
<% form_tag({:action => 'edit'}) do %> |
|
4 |
<div class="box tabular settings"> |
|
5 |
<p><label><%= l(:setting_app_title) %></label> |
|
6 |
<%= text_field_tag 'settings[app_title]', Setting.app_title, :size => 30 %></p> |
|
7 |
|
|
8 |
<p><label><%= l(:setting_app_subtitle) %></label> |
|
9 |
<%= text_field_tag 'settings[app_subtitle]', Setting.app_subtitle, :size => 60 %></p> |
|
10 |
|
|
11 |
<p><label><%= l(:setting_welcome_text) %></label> |
|
12 |
<%= text_area_tag 'settings[welcome_text]', Setting.welcome_text, :cols => 60, :rows => 5, :class => 'wiki-edit' %></p> |
|
13 |
<%= wikitoolbar_for 'settings[welcome_text]' %> |
|
14 |
|
|
15 |
<p><label><%= l(:label_theme) %></label> |
|
16 |
<%= select_tag 'settings[ui_theme]', options_for_select( ([[l(:label_default), '']] + Redmine::Themes.themes.collect {|t| [t.name, t.id]}), Setting.ui_theme) %></p> |
|
17 |
|
|
18 |
<p><label><%= l(:setting_default_language) %></label> |
|
19 |
<%= select_tag 'settings[default_language]', options_for_select( lang_options_for_select(false), Setting.default_language) %></p> |
|
20 |
|
|
21 |
<p><label><%= l(:setting_date_format) %></label> |
|
22 |
<%= select_tag 'settings[date_format]', options_for_select( [[l(:label_language_based), '']] + Setting::DATE_FORMATS.collect {|f| [Date.today.strftime(f), f]}, Setting.date_format) %></p> |
|
23 |
|
|
24 |
<p><label><%= l(:setting_time_format) %></label> |
|
25 |
<%= select_tag 'settings[time_format]', options_for_select( [[l(:label_language_based), '']] + Setting::TIME_FORMATS.collect {|f| [Time.now.strftime(f), f]}, Setting.time_format) %></p> |
|
26 |
|
|
27 |
<p><label><%= l(:setting_attachment_max_size) %></label> |
|
28 |
<%= text_field_tag 'settings[attachment_max_size]', Setting.attachment_max_size, :size => 6 %> KB</p> |
|
29 |
|
|
30 |
<p><label><%= l(:setting_per_page_options) %></label> |
|
31 |
<%= text_field_tag 'settings[per_page_options]', Setting.per_page_options_array.join(', '), :size => 20 %><br /><em><%= l(:text_comma_separated) %></em></p> |
|
32 |
|
|
33 |
<p><label><%= l(:setting_issues_export_limit) %></label> |
|
34 |
<%= text_field_tag 'settings[issues_export_limit]', Setting.issues_export_limit, :size => 6 %></p> |
|
35 |
|
|
36 |
<p><label><%= l(:setting_cross_project_issue_relations) %></label> |
|
37 |
<%= check_box_tag 'settings[cross_project_issue_relations]', 1, Setting.cross_project_issue_relations? %><%= hidden_field_tag 'settings[cross_project_issue_relations]', 0 %></p> |
|
38 |
|
|
39 |
<p><label><%= l(:setting_host_name) %></label> |
|
40 |
<%= text_field_tag 'settings[host_name]', Setting.host_name, :size => 60 %></p> |
|
41 |
|
|
42 |
<p><label><%= l(:setting_protocol) %></label> |
|
43 |
<%= select_tag 'settings[protocol]', options_for_select(['http', 'https'], Setting.protocol) %></p> |
|
44 |
|
|
45 |
<p><label><%= l(:setting_text_formatting) %></label> |
|
46 |
<%= select_tag 'settings[text_formatting]', options_for_select([[l(:label_none), "0"], ["textile", "textile"]], Setting.text_formatting) %></p> |
|
47 |
|
|
48 |
<p><label><%= l(:setting_wiki_compression) %></label> |
|
49 |
<%= select_tag 'settings[wiki_compression]', options_for_select( [[l(:label_none), 0], ["gzip", "gzip"]], Setting.wiki_compression) %></p> |
|
50 |
|
|
51 |
<p><label><%= l(:setting_feeds_limit) %></label> |
|
52 |
<%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %></p> |
|
53 |
|
|
54 |
<p><label><%= l(:setting_autofetch_changesets) %></label> |
|
55 |
<%= check_box_tag 'settings[autofetch_changesets]', 1, Setting.autofetch_changesets? %><%= hidden_field_tag 'settings[autofetch_changesets]', 0 %></p> |
|
56 |
|
|
57 |
<p><label><%= l(:setting_sys_api_enabled) %></label> |
|
58 |
<%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p> |
|
59 |
|
|
60 |
<p><label><%= l(:setting_repositories_encodings) %></label> |
|
61 |
<%= text_field_tag 'settings[repositories_encodings]', Setting.repositories_encodings, :size => 60 %><br /><em><%= l(:text_comma_separated) %></em></p> |
|
3 |
<div class="tabs"> |
|
4 |
<ul> |
|
5 |
<% administration_settings_tabs.each do |tab| -%> |
|
6 |
<li><%= link_to l(tab[:label]), {}, :id => "tab-#{tab[:name]}", :onclick => "showTab('#{tab[:name]}'); this.blur(); return false;" %></li> |
|
7 |
<% end -%> |
|
8 |
</ul> |
|
62 | 9 |
</div> |
63 | 10 |
|
64 |
<fieldset class="box"><legend><%= l(:setting_issue_list_default_columns) %></legend> |
|
65 |
<%= hidden_field_tag 'settings[issue_list_default_columns][]', '' %> |
|
66 |
<p><% Query.new.available_columns.each do |column| %> |
|
67 |
<label><%= check_box_tag 'settings[issue_list_default_columns][]', column.name, Setting.issue_list_default_columns.include?(column.name.to_s) %> |
|
68 |
<%= column.caption %></label> |
|
69 |
<% end %></p> |
|
70 |
</fieldset> |
|
11 |
<% administration_settings_tabs.each do |tab| %> |
|
12 |
<%= content_tag('div', render(:partial => tab[:partial]), :id => "tab-content-#{tab[:name]}", :class => 'tab-content') %> |
|
13 |
<% end %> |
|
71 | 14 |
|
72 |
<fieldset class="box tabular"><legend><%= l(:label_authentication) %></legend> |
|
73 |
<p><label><%= l(:setting_login_required) %></label> |
|
74 |
<%= check_box_tag 'settings[login_required]', 1, Setting.login_required? %><%= hidden_field_tag 'settings[login_required]', 0 %></p> |
|
15 |
<%= tab = params[:tab] ? h(params[:tab]) : administration_settings_tabs.first[:name] |
|
16 |
javascript_tag "showTab('#{tab}');" %> |
|
75 | 17 |
|
76 |
<p><label><%= l(:setting_autologin) %></label> |
|
77 |
<%= select_tag 'settings[autologin]', options_for_select( [[l(:label_disabled), "0"]] + [1, 7, 30, 365].collect{|days| [lwr(:actionview_datehelper_time_in_words_day, days), days.to_s]}, Setting.autologin) %></p> |
|
78 |
|
|
79 |
<p><label><%= l(:setting_self_registration) %></label> |
|
80 |
<%= select_tag 'settings[self_registration]', |
|
81 |
options_for_select( [[l(:label_disabled), "0"], |
|
82 |
[l(:label_registration_activation_by_email), "1"], |
|
83 |
[l(:label_registration_manual_activation), "2"], |
|
84 |
[l(:label_registration_automatic_activation), "3"] |
|
85 |
], Setting.self_registration ) %></p> |
|
86 |
|
|
87 |
<p><label><%= l(:label_password_lost) %></label> |
|
88 |
<%= check_box_tag 'settings[lost_password]', 1, Setting.lost_password? %><%= hidden_field_tag 'settings[lost_password]', 0 %></p> |
|
89 |
</fieldset> |
|
90 |
|
|
91 |
<fieldset class="box tabular"><legend><%= l(:text_issues_ref_in_commit_messages) %></legend> |
|
92 |
<p><label><%= l(:setting_commit_ref_keywords) %></label> |
|
93 |
<%= text_field_tag 'settings[commit_ref_keywords]', Setting.commit_ref_keywords, :size => 30 %><br /><em><%= l(:text_comma_separated) %></em></p> |
|
94 |
|
|
95 |
<p><label><%= l(:setting_commit_fix_keywords) %></label> |
|
96 |
<%= text_field_tag 'settings[commit_fix_keywords]', Setting.commit_fix_keywords, :size => 30 %> |
|
97 |
<%= l(:label_applied_status) %>: <%= select_tag 'settings[commit_fix_status_id]', options_for_select( [["", 0]] + IssueStatus.find(:all).collect{|status| [status.name, status.id.to_s]}, Setting.commit_fix_status_id) %> |
|
98 |
<%= l(:field_done_ratio) %>: <%= select_tag 'settings[commit_fix_done_ratio]', options_for_select( [[l(:label_no_change_option), '']] + ((0..10).to_a.collect {|r| ["#{r*10} %", "#{r*10}"] }), Setting.commit_fix_done_ratio) %> |
|
99 |
<br /><em><%= l(:text_comma_separated) %></em></p> |
|
100 |
</fieldset> |
|
101 |
|
|
102 |
<%= submit_tag l(:button_save) %> |
|
103 |
<% end %> |
|
104 |
|
|
105 |
<% html_title(l(:label_settings)) -%> |
|
18 |
<% html_title(l(:label_settings), l(:label_administration)) -%> |
trunk/lang/bg.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/cs.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/de.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/en.yml | ||
---|---|---|
353 | 353 |
label_not_contains: doesn't contain |
354 | 354 |
label_day_plural: days |
355 | 355 |
label_repository: Repository |
356 |
label_repository_plural: Repositories |
|
356 | 357 |
label_browse: Browse |
357 | 358 |
label_modification: %d change |
358 | 359 |
label_modification_plural: %d changes |
... | ... | |
463 | 464 |
label_display_per_page: 'Per page: %s' |
464 | 465 |
label_age: Age |
465 | 466 |
label_change_properties: Change properties |
467 |
label_general: General |
|
466 | 468 |
|
467 | 469 |
button_login: Login |
468 | 470 |
button_submit: Submit |
trunk/lang/es.yml | ||
---|---|---|
562 | 562 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
563 | 563 |
button_update: Update |
564 | 564 |
label_change_properties: Change properties |
565 |
label_general: General |
|
566 |
label_repository_plural: Repositories |
trunk/lang/fr.yml | ||
---|---|---|
353 | 353 |
label_not_contains: ne contient pas |
354 | 354 |
label_day_plural: jours |
355 | 355 |
label_repository: Dépôt |
356 |
label_repository_plural: Dépôts |
|
356 | 357 |
label_browse: Parcourir |
357 | 358 |
label_modification: %d modification |
358 | 359 |
label_modification_plural: %d modifications |
... | ... | |
463 | 464 |
label_display_per_page: 'Par page: %s' |
464 | 465 |
label_age: Age |
465 | 466 |
label_change_properties: Changer les propriétés |
467 |
label_general: Général |
|
466 | 468 |
|
467 | 469 |
button_login: Connexion |
468 | 470 |
button_submit: Soumettre |
trunk/lang/he.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/it.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/ja.yml | ||
---|---|---|
560 | 560 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
561 | 561 |
button_update: Update |
562 | 562 |
label_change_properties: Change properties |
563 |
label_general: General |
|
564 |
label_repository_plural: Repositories |
trunk/lang/ko.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/nl.yml | ||
---|---|---|
560 | 560 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
561 | 561 |
button_update: Update |
562 | 562 |
label_change_properties: Change properties |
563 |
label_general: General |
|
564 |
label_repository_plural: Repositories |
trunk/lang/pl.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/pt-br.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/pt.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/ro.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/ru.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/sr.yml | ||
---|---|---|
560 | 560 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
561 | 561 |
button_update: Update |
562 | 562 |
label_change_properties: Change properties |
563 |
label_general: General |
|
564 |
label_repository_plural: Repositories |
trunk/lang/sv.yml | ||
---|---|---|
560 | 560 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
561 | 561 |
button_update: Update |
562 | 562 |
label_change_properties: Change properties |
563 |
label_general: General |
|
564 |
label_repository_plural: Repositories |
trunk/lang/zh-tw.yml | ||
---|---|---|
559 | 559 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
560 | 560 |
button_update: Update |
561 | 561 |
label_change_properties: Change properties |
562 |
label_general: General |
|
563 |
label_repository_plural: Repositories |
trunk/lang/zh.yml | ||
---|---|---|
562 | 562 |
error_can_t_load_default_data: "Default configuration could not be loaded: %s" |
563 | 563 |
button_update: Update |
564 | 564 |
label_change_properties: Change properties |
565 |
label_general: General |
|
566 |
label_repository_plural: Repositories |
trunk/test/functional/admin_controller_test.rb | ||
---|---|---|
51 | 51 |
assert IssueStatus.find_by_name('Nouveau') |
52 | 52 |
end |
53 | 53 |
|
54 |
def test_get_mail_options |
|
55 |
get :mail_options |
|
56 |
assert_response :success |
|
57 |
assert_template 'mail_options' |
|
58 |
end |
|
59 |
|
|
60 |
def test_post_mail_options |
|
61 |
post :mail_options, :settings => {'mail_from' => '[email protected]'} |
|
62 |
assert_redirected_to 'admin/mail_options' |
|
63 |
assert_equal '[email protected]', Setting.mail_from |
|
64 |
end |
|
65 |
|
|
66 | 54 |
def test_test_email |
67 | 55 |
get :test_email |
68 |
assert_redirected_to 'admin/mail_options'
|
|
56 |
assert_redirected_to 'settings/edit'
|
|
69 | 57 |
mail = ActionMailer::Base.deliveries.last |
70 | 58 |
assert_kind_of TMail::Mail, mail |
71 | 59 |
user = User.find(1) |
trunk/test/functional/settings_controller_test.rb | ||
---|---|---|
1 |
# redMine - project management software |
|
2 |
# Copyright (C) 2006-2007 Jean-Philippe Lang |
|
3 |
# |
|
4 |
# This program is free software; you can redistribute it and/or |
|
5 |
# modify it under the terms of the GNU General Public License |
|
6 |
# as published by the Free Software Foundation; either version 2 |
|
7 |
# of the License, or (at your option) any later version. |
|
8 |
# |
|
9 |
# This program is distributed in the hope that it will be useful, |
|
10 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
# GNU General Public License for more details. |
|
13 |
# |
|
14 |
# You should have received a copy of the GNU General Public License |
|
15 |
# along with this program; if not, write to the Free Software |
|
16 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 |
|
|
18 |
require File.dirname(__FILE__) + '/../test_helper' |
|
19 |
require 'settings_controller' |
|
20 |
|
|
21 |
# Re-raise errors caught by the controller. |
|
22 |
class SettingsController; def rescue_action(e) raise e end; end |
|
23 |
|
|
24 |
class SettingsControllerTest < Test::Unit::TestCase |
|
25 |
fixtures :users |
|
26 |
|
|
27 |
def setup |
|
28 |
@controller = SettingsController.new |
|
29 |
@request = ActionController::TestRequest.new |
|
30 |
@response = ActionController::TestResponse.new |
|
31 |
User.current = nil |
|
32 |
@request.session[:user_id] = 1 # admin |
|
33 |
end |
|
34 |
|
|
35 |
def test_get_edit |
|
36 |
get :edit |
|
37 |
assert_response :success |
|
38 |
assert_template 'edit' |
|
39 |
end |
|
40 |
|
|
41 |
def test_post_edit_notifications |
|
42 |
post :edit, :settings => {:mail_from => '[email protected]', |
|
43 |
:bcc_recipients => '0', |
|
44 |
:notified_events => %w(issue_added issue_updated news_added), |
|
45 |
:emails_footer => 'Test footer' |
|
46 |
} |
|
47 |
assert_redirected_to 'settings/edit' |
|
48 |
assert_equal '[email protected]', Setting.mail_from |
|
49 |
assert !Setting.bcc_recipients? |
|
50 |
assert_equal %w(issue_added issue_updated news_added), Setting.notified_events |
|
51 |
assert_equal 'Test footer', Setting.emails_footer |
|
52 |
end |
|
53 |
end |
|
0 | 54 |
Also available in: Unified diff
Admin settings screen split to tabs.
Email notification options moved to this view as a tab and LDAP list is accessible from the 'Authentication' tab.