summaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorMarius Balteanu <marius.balteanu@zitec.com>2021-11-15 21:58:39 +0000
committerMarius Balteanu <marius.balteanu@zitec.com>2021-11-15 21:58:39 +0000
commit70f8ca64dd9337e40b551e0ab876273a742a7551 (patch)
tree3a2c84965bcdf63d8c75aadd39612fb743e012a2 /app/models
parent9def0fa3d06cebf49e306d9eadfcc97745087a9e (diff)
downloadredmine-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.rb1
-rw-r--r--app/models/project_query.rb8
-rw-r--r--app/models/query.rb1
-rw-r--r--app/models/user_preference.rb4
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