From 4addf55c94b81d855c5a5f9622f4d5e4c85be37f Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sun, 9 Dec 2018 22:31:59 +0000 Subject: [PATCH 6/6] Set default columns for the projects list --- app/controllers/projects_controller.rb | 2 +- app/models/project_query.rb | 2 +- app/views/settings/_projects.html.erb | 8 ++++++++ config/locales/en.yml | 1 + config/settings.yml | 7 +++++++ test/functional/projects_controller_test.rb | 10 ++++++++++ 6 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index b9bda6b43..2e4fc5303 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -274,6 +274,6 @@ class ProjectsController < ApplicationController end def retrieve_project_query - retrieve_query(ProjectQuery, false) + retrieve_query(ProjectQuery, false, :defaults => @default_columns_names) end end diff --git a/app/models/project_query.rb b/app/models/project_query.rb index ecf3e687b..c0e0e92e7 100644 --- a/app/models/project_query.rb +++ b/app/models/project_query.rb @@ -69,7 +69,7 @@ class ProjectQuery < Query end def default_columns_names - @default_columns_names ||= [:name, :identifier, :short_description] + @default_columns_names = Setting.project_list_defaults.symbolize_keys[:column_names].map(&:to_sym) end def default_sort_criteria diff --git a/app/views/settings/_projects.html.erb b/app/views/settings/_projects.html.erb index fd9ea1b76..230e2803e 100644 --- a/app/views/settings/_projects.html.erb +++ b/app/views/settings/_projects.html.erb @@ -16,5 +16,13 @@ :blank => "--- #{l(:actionview_instancetag_blank_option)} ---" %>

+
+ <%= l(:setting_project_list_defaults) %> + <% query = ProjectQuery.new(Setting.project_list_defaults) %> + <%= render_query_columns_selection(query, + :name => 'settings[project_list_defaults][column_names]') %> +
+ + <%= submit_tag l(:button_save) %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 1f8f439e0..db42aa7bc 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -484,6 +484,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_defaults: Projects list defaults permission_add_project: Create project permission_add_subprojects: Create subprojects diff --git a/config/settings.yml b/config/settings.yml index d345a4cfa..05081c0fa 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -230,6 +230,13 @@ time_entry_list_defaults: - hours totalable_names: - hours +project_list_defaults: + serialized: true + default: + column_names: + - name + - identifier + - short_description issue_done_ratio: default: 'issue_field' default_projects_public: diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index 432264a33..8a05612ff 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -147,6 +147,16 @@ class ProjectsControllerTest < Redmine::ControllerTest assert_include 'idnt-2', child_level2 end + def test_index_with_default_query_setting + with_settings :project_list_defaults => {'column_names' => %w(name short_description status)} do + get :index, :params => { + :display_type => 'list' + } + assert_response :success + end + assert_equal ['Name', 'Description', 'Status'], columns_in_list + end + def test_autocomplete_js get :autocomplete, :params => { :format => 'js', -- 2.22.0