From a6110fa9d370ca31c365b69403ecd36f92302faa Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sun, 9 Feb 2020 19:45:53 +0200 Subject: [PATCH] Add system setting for default results display format of project query --- app/models/project_query.rb | 4 ++++ app/models/query.rb | 6 +++++- app/views/settings/_projects.html.erb | 7 +++++++ config/settings.yml | 2 ++ test/unit/project_query_test.rb | 9 +++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/models/project_query.rb b/app/models/project_query.rb index 54c16d8e6..703e979d5 100644 --- a/app/models/project_query.rb +++ b/app/models/project_query.rb @@ -82,6 +82,10 @@ class ProjectQuery < Query @default_columns_names = Setting.project_list_defaults.symbolize_keys[:column_names].map(&:to_sym) end + def default_display_type + Setting.project_list_display_type + end + def default_sort_criteria [[]] end diff --git a/app/models/query.rb b/app/models/query.rb index 5672a6e9e..5dec730d3 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -766,6 +766,10 @@ class Query < ActiveRecord::Base [] end + def default_display_type + self.available_display_types.first + end + def column_names=(names) if names names = names.select {|n| n.is_a?(Symbol) || !n.blank? } @@ -997,7 +1001,7 @@ class Query < ActiveRecord::Base end def display_type - options[:display_type] || self.available_display_types.first + options[:display_type] || self.default_display_type end def display_type=(type) diff --git a/app/views/settings/_projects.html.erb b/app/views/settings/_projects.html.erb index 230e2803e..d6c51a7f1 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/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 -- 2.22.0