diff options
author | Marius Balteanu <marius.balteanu@zitec.com> | 2021-11-15 21:58:39 +0000 |
---|---|---|
committer | Marius Balteanu <marius.balteanu@zitec.com> | 2021-11-15 21:58:39 +0000 |
commit | 70f8ca64dd9337e40b551e0ab876273a742a7551 (patch) | |
tree | 3a2c84965bcdf63d8c75aadd39612fb743e012a2 /app/models | |
parent | 9def0fa3d06cebf49e306d9eadfcc97745087a9e (diff) | |
download | redmine-70f8ca64dd9337e40b551e0ab876273a742a7551.tar.gz redmine-70f8ca64dd9337e40b551e0ab876273a742a7551.zip |
You can configure default project queries in the following places (#35795):
* App-level: Administration > Projects > Default query (Projects list defaults section)
* User-level: My account > Default project query
git-svn-id: http://svn.redmine.org/redmine/trunk@21281 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/issue_query.rb | 1 | ||||
-rw-r--r-- | app/models/project_query.rb | 8 | ||||
-rw-r--r-- | app/models/query.rb | 1 | ||||
-rw-r--r-- | app/models/user_preference.rb | 4 |
4 files changed, 13 insertions, 1 deletions
diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index efd0ad0f1..1ba3c5a2c 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -75,7 +75,6 @@ class IssueQuery < Query has_many :projects, foreign_key: 'default_issue_query_id', dependent: :nullify, inverse_of: 'default_issue_query' after_update { projects.clear unless visibility == VISIBILITY_PUBLIC } - scope :only_public, ->{ where(visibility: VISIBILITY_PUBLIC) } scope :for_all_projects, ->{ where(project_id: nil) } def self.default(project: nil, user: User.current) diff --git a/app/models/project_query.rb b/app/models/project_query.rb index a99dce5e2..df70dc2bc 100644 --- a/app/models/project_query.rb +++ b/app/models/project_query.rb @@ -37,6 +37,14 @@ class ProjectQuery < Query QueryColumn.new(:created_on, :sortable => "#{Project.table_name}.created_on", :default_order => 'desc') ] + def self.default(project: nil, user: User.current) + query = nil + if user&.logged? + query = find_by_id user.pref.default_project_query + end + query || find_by_id(Setting.default_project_query) + end + def initialize(attributes=nil, *args) super attributes self.filters ||= {'status' => {:operator => "=", :values => ['1']}} diff --git a/app/models/query.rb b/app/models/query.rb index 7d30e5d59..8d5f55061 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -339,6 +339,7 @@ class Query < ActiveRecord::Base end) scope :sorted, lambda {order(:name, :id)} + scope :only_public, ->{ where(visibility: VISIBILITY_PUBLIC) } # to be implemented in subclasses that have a way to determine a default # query for the given options diff --git a/app/models/user_preference.rb b/app/models/user_preference.rb index 1675fb0ae..e5c1a390c 100644 --- a/app/models/user_preference.rb +++ b/app/models/user_preference.rb @@ -38,6 +38,7 @@ class UserPreference < ActiveRecord::Base 'recently_used_projects', 'history_default_tab', 'default_issue_query', + 'default_project_query', 'toolbar_language_options') TEXTAREA_FONT_OPTIONS = ['monospace', 'proportional'] @@ -120,6 +121,9 @@ class UserPreference < ActiveRecord::Base def default_issue_query; self[:default_issue_query] end def default_issue_query=(value); self[:default_issue_query]=value; end + def default_project_query; self[:default_project_query] end + def default_project_query=(value); self[:default_project_query]=value; end + # Returns the names of groups that are displayed on user's page # Example: # preferences.my_page_groups |