Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-11-24 00:10:58 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-11-24 00:10:58 +0400
commit4a1dc7326479d8fe54f888f5622c0d2a56bca8ad (patch)
treeaed06ad1307b7698a08fc209f4e4e0af13e90c62 /app
parentabc5edab55ca46657e4ccea552838b9b8d96757f (diff)
parentb76948e6c92ce445249116ef86dbbd4d0b57573a (diff)
Merge pull request #5661 from jasonblanchard/sorting-project-issues
Added sorting to project issues page
Diffstat (limited to 'app')
-rw-r--r--app/contexts/issues/list_context.rb18
-rw-r--r--app/controllers/projects/issues_controller.rb3
-rw-r--r--app/helpers/projects_helper.rb2
-rw-r--r--app/views/projects/issues/_issues.html.haml20
4 files changed, 43 insertions, 0 deletions
diff --git a/app/contexts/issues/list_context.rb b/app/contexts/issues/list_context.rb
index da2eed0e259..fd27356d1cd 100644
--- a/app/contexts/issues/list_context.rb
+++ b/app/contexts/issues/list_context.rb
@@ -29,8 +29,26 @@ module Issues
if params[:milestone_id].present?
@issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
end
+
+ # Sort by :sort param
+ @issues = sort(@issues, params[:sort])
@issues
end
+
+ private
+
+ def sort(issues, condition)
+ case condition
+ when 'newest' then issues.except(:order).order('created_at DESC')
+ when 'oldest' then issues.except(:order).order('created_at ASC')
+ when 'recently_updated' then issues.except(:order).order('updated_at DESC')
+ when 'last_updated' then issues.except(:order).order('updated_at ASC')
+ when 'milestone_due_soon' then issues.except(:order).joins(:milestone).order("milestones.due_date ASC")
+ when 'milestone_due_later' then issues.except(:order).joins(:milestone).order("milestones.due_date DESC")
+ else issues
+ end
+ end
+
end
end
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index e8f845b2d17..e03d54cddc1 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -23,6 +23,9 @@ class Projects::IssuesController < Projects::ApplicationController
assignee_id, milestone_id = params[:assignee_id], params[:milestone_id]
@assignee = @project.team.find(assignee_id) if assignee_id.present? && !assignee_id.to_i.zero?
@milestone = @project.milestones.find(milestone_id) if milestone_id.present? && !milestone_id.to_i.zero?
+ sort_param = params[:sort] || 'newest'
+ @sort = sort_param.humanize unless sort_param.empty?
+
respond_to do |format|
format.html # index.html.erb
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index ee0e6816742..6b6903c0b2c 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -70,6 +70,8 @@ module ProjectsHelper
scope: params[:scope],
label_name: params[:label_name],
milestone_id: params[:milestone_id],
+ assignee_id: params[:assignee_id],
+ sort: params[:sort],
}
options = exist_opts.merge(options)
diff --git a/app/views/projects/issues/_issues.html.haml b/app/views/projects/issues/_issues.html.haml
index 427d6533134..0022f82a399 100644
--- a/app/views/projects/issues/_issues.html.haml
+++ b/app/views/projects/issues/_issues.html.haml
@@ -78,6 +78,26 @@
%strong= milestone.title
%small.light= milestone.expires_at
+ .dropdown.inline.prepend-left-10
+ %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
+ %span.light sort:
+ = @sort
+ %b.caret
+ %ul.dropdown-menu
+ %li
+ = link_to project_filter_path(sort: 'newest') do
+ Newest
+ = link_to project_filter_path(sort: 'oldest') do
+ Oldest
+ = link_to project_filter_path(sort: 'recently_updated') do
+ Recently updated
+ = link_to project_filter_path(sort: 'last_updated') do
+ Last updated
+ = link_to project_filter_path(sort: 'milestone_due_soon') do
+ Milestone due soon
+ = link_to project_filter_path(sort: 'milestone_due_later') do
+ Milestone due later
+
%ul.well-list.issues-list
= render @issues