diff --git a/app/models/project_query.rb b/app/models/project_query.rb index 54c16d8e6..513c236fd 100644 --- a/app/models/project_query.rb +++ b/app/models/project_query.rb @@ -74,6 +74,17 @@ class ProjectQuery < Query @available_columns end + def display_type + options[:display_type] || Setting.project_list_display_type || self.available_display_types.first + end + + def display_type=(type) + unless type || self.available_display_types.include?(type) + type = Setting.project_list_display_type || self.available_display_types.first + end + options[:display_type] = type + end + def available_display_types ['board', 'list'] end diff --git a/app/views/settings/_projects.html.erb b/app/views/settings/_projects.html.erb index 230e2803e..635f3b11b 100644 --- a/app/views/settings/_projects.html.erb +++ b/app/views/settings/_projects.html.erb @@ -19,6 +19,13 @@
<%= l(:setting_project_list_defaults) %> <% query = ProjectQuery.new(Setting.project_list_defaults) %> +

+ + <% query.available_display_types.each do |t| %> + <%= radio_button_tag('settings[project_list_display_type]', t, Setting.project_list_display_type == t, :id => "setting_project_list_display_type_#{t}") %> + <%= content_tag('label', l(:"label_display_type_#{t}"), :for => "settings_project_list_display_type_#{t}", :class => "inline") %> + <% end %> +

<%= render_query_columns_selection(query, :name => 'settings[project_list_defaults][column_names]') %>
diff --git a/config/locales/en.yml b/config/locales/en.yml index 3f0fd2d77..b8915bcfb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -485,6 +485,7 @@ en: setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user setting_timelog_accept_future_dates: Accept time logs on future dates setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject + setting_project_list_display_type: Display results as setting_project_list_defaults: Projects list defaults permission_add_project: Create project diff --git a/config/settings.yml b/config/settings.yml index b5fc64747..b96031bed 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -230,6 +230,8 @@ time_entry_list_defaults: - hours totalable_names: - hours +project_list_display_type: + default: board project_list_defaults: serialized: true default: diff --git a/test/unit/project_query_test.rb b/test/unit/project_query_test.rb index a680fb699..d441c24d6 100644 --- a/test/unit/project_query_test.rb +++ b/test/unit/project_query_test.rb @@ -60,4 +60,13 @@ class ProjectQueryTest < ActiveSupport::TestCase query = ProjectQuery.new assert_include :cf_3, query.available_columns.map(&:name) end + + def test_display_type_default_should_equal_with_setting_project_list_display_type + ProjectQuery.new.available_display_types.each do |t| + with_settings :project_list_display_type => t do + q = ProjectQuery.new + assert_equal t, q.display_type + end + end + end end