summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorRubén Dávila <rdavila84@gmail.com>2016-01-20 17:29:53 -0500
committerRubén Dávila <rdavila84@gmail.com>2016-01-20 17:29:53 -0500
commit4d345bc4003022ca22b5e7f42069c5a6bde41b6c (patch)
tree95d12650e1fa9ddca5223b3f5ad723f865e983d9 /app
parent1553c560e0d02e670b7cec2b443545e67418b569 (diff)
downloadgitlab-ce-4d345bc4003022ca22b5e7f42069c5a6bde41b6c.tar.gz
Remember last sort option used.
Diffstat (limited to 'app')
-rw-r--r--app/controllers/application_controller.rb22
-rw-r--r--app/models/concerns/cookie_helpers.rb5
-rw-r--r--app/models/group.rb3
-rw-r--r--app/models/project.rb1
-rw-r--r--app/models/user.rb1
5 files changed, 30 insertions, 2 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 633c3f55614..4c4e2ac3d3c 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -297,7 +297,8 @@ class ApplicationController < ActionController::Base
end
def set_filters_params
- params[:sort] ||= 'id_desc'
+ set_default_sort
+
params[:scope] = 'all' if params[:scope].blank?
params[:state] = 'opened' if params[:state].blank?
@@ -404,4 +405,23 @@ class ApplicationController < ActionController::Base
current_user.nil? && root_path == request.path
end
+
+ private
+
+ def set_default_sort
+ controller_name = params[:controller].sub(/Controller\Z/, '').underscore
+ cookie_suffix = "_sort_#{controller_name}"
+
+ key = if @project
+ "#{@project.cookie_key}#{cookie_suffix}"
+ elsif @group
+ "#{@group.cookie_key}#{cookie_suffix}"
+ else
+ "#{current_user.cookie_key}#{cookie_suffix}"
+ end
+
+ cookies[key] ||= 'id_desc'
+ cookies[key] = params[:sort] if params[:sort].present?
+ params[:sort] = cookies[key]
+ end
end
diff --git a/app/models/concerns/cookie_helpers.rb b/app/models/concerns/cookie_helpers.rb
new file mode 100644
index 00000000000..1c8d43a4661
--- /dev/null
+++ b/app/models/concerns/cookie_helpers.rb
@@ -0,0 +1,5 @@
+module CookieHelpers
+ def cookie_key
+ "#{model_name.singular}_#{id}"
+ end
+end
diff --git a/app/models/group.rb b/app/models/group.rb
index 5a31b46920c..3ba18b85193 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -19,7 +19,8 @@ require 'file_size_validator'
class Group < Namespace
include Gitlab::ConfigHelper
include Referable
-
+ include CookieHelpers
+
has_many :group_members, dependent: :destroy, as: :source, class_name: 'GroupMember'
alias_method :members, :group_members
has_many :users, through: :group_members
diff --git a/app/models/project.rb b/app/models/project.rb
index 5579710a476..5ba7532c61a 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -51,6 +51,7 @@ class Project < ActiveRecord::Base
include AfterCommitQueue
include CaseSensitivity
include TokenAuthenticatable
+ include CookieHelpers
extend Gitlab::ConfigHelper
diff --git a/app/models/user.rb b/app/models/user.rb
index 4214f01f6a4..c24f8a35380 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -73,6 +73,7 @@ class User < ActiveRecord::Base
include Sortable
include CaseSensitivity
include TokenAuthenticatable
+ include CookieHelpers
add_authentication_token_field :authentication_token