diff options
author | Rubén Dávila <rdavila84@gmail.com> | 2016-01-22 17:00:35 -0500 |
---|---|---|
committer | Rubén Dávila <rdavila84@gmail.com> | 2016-01-22 17:00:35 -0500 |
commit | 7c520c7803524de0eefb8fbcc79d4c943a80c4de (patch) | |
tree | b18a7248b61a45d8b9b3d807408716d409a2ff5a /app/controllers/application_controller.rb | |
parent | eccaa099d185c351f9e8762661f0dc004f11f256 (diff) | |
download | gitlab-ce-7c520c7803524de0eefb8fbcc79d4c943a80c4de.tar.gz |
Make sorting preference reusable for all projects.
Diffstat (limited to 'app/controllers/application_controller.rb')
-rw-r--r-- | app/controllers/application_controller.rb | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index fb5900054ce..5d047f09f64 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -409,13 +409,22 @@ class ApplicationController < ActionController::Base private def set_default_sort - # Use the controller name so we have a distinct cookie for Issues, MRs and Dashboard - cookie_suffix = "_sort_#{params[:controller].underscore}" + key = if is_a_listing_page_for?('issues') + 'issues_sort' + elsif is_a_listing_page_for?('merge_requests') + 'merge_requests_sort' + end - key = "#{(@project || @group || current_user).cookie_key}#{cookie_suffix}" + cookies[key] = params[:sort] if key && params[:sort].present? + params[:sort] = cookies[key] if key + params[:sort] ||= 'id_desc' + end + + def is_a_listing_page_for?(page_type) + controller_name, action_name = params.values_at(:controller, :action) - cookies[key] ||= 'id_desc' - cookies[key] = params[:sort] if params[:sort].present? - params[:sort] = cookies[key] + (controller_name == "projects/#{page_type}" && action_name == 'index') || + (controller_name == 'groups' && action_name == page_type) || + (controller_name == 'dashboard' && action_name == page_type) end end |