diff options
author | selfup <boudinot.regis@yahoo.com> | 2017-06-23 20:38:56 +0300 |
---|---|---|
committer | selfup <boudinot.regis@yahoo.com> | 2017-06-23 20:38:56 +0300 |
commit | 56a0d4cd2e925bb2a9b5ad6c0b6d1feb0d37f7fa (patch) | |
tree | 58628952cd37c68a633c216ade8722b4aba9b725 | |
parent | 4d321590238c8d318dba98eb70bbd8d6abbdc17b (diff) | |
parent | a378713962842205dd7a28438493edc051e2dcce (diff) |
Merge branch 'issue_30126_be' of gitlab.com:gitlab-org/gitlab-ce into issue_30126_be
-rw-r--r-- | app/controllers/groups/milestones_controller.rb | 9 | ||||
-rw-r--r-- | app/finders/milestones_finder.rb | 11 | ||||
-rw-r--r-- | app/models/global_milestone.rb | 2 | ||||
-rw-r--r-- | app/models/group_milestone.rb | 10 |
4 files changed, 24 insertions, 8 deletions
diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb index c46f20cc0e1..305c0181aa2 100644 --- a/app/controllers/groups/milestones_controller.rb +++ b/app/controllers/groups/milestones_controller.rb @@ -8,7 +8,7 @@ class Groups::MilestonesController < Groups::ApplicationController def index respond_to do |format| format.html do - @milestone_states = GlobalMilestone.states_count(@projects) + @milestone_states = GlobalMilestone.states_count(@projects, group) @milestones = Kaminari.paginate_array(milestones).page(params[:page]) end end @@ -65,11 +65,14 @@ class Groups::MilestonesController < Groups::ApplicationController @project_milestones = Milestone.where(project_id: group.projects.pluck(:id)) @group_milestones + @project_milestones + #@milestones = GroupMilestone.build_collection(@group, @projects, params) end def milestone - # Use a finder here - @milestone = @group.milestones.find_by_title(params[:title]) + @milestone = + @group.milestones.find_by_title(params[:title]) || + GroupMilestone.build(@group, @projects, params[:title]) + render_404 unless @milestone end end diff --git a/app/finders/milestones_finder.rb b/app/finders/milestones_finder.rb index 630c73c2a94..259d8d40d98 100644 --- a/app/finders/milestones_finder.rb +++ b/app/finders/milestones_finder.rb @@ -1,9 +1,12 @@ class MilestonesFinder - def execute(projects, params) - milestones = Milestone.of_projects(projects) - milestones = milestones.reorder("due_date ASC") + def execute(projects, group = nil, params) + milestones = group ? group.milestones : Milestone.of_projects(projects) - case params[:state] + filter_by_state(milestones, params[:state]) + end + + def filter_by_state(milestones, state) + case state when 'closed' then milestones.closed when 'all' then milestones else milestones.active diff --git a/app/models/global_milestone.rb b/app/models/global_milestone.rb index 538615130a7..5d3209156cc 100644 --- a/app/models/global_milestone.rb +++ b/app/models/global_milestone.rb @@ -28,7 +28,7 @@ class GlobalMilestone new(title, child_milestones) end - def self.states_count(projects) + def self.states_count(projects, group = nil) relation = MilestonesFinder.new.execute(projects, state: 'all') milestones_by_state_and_title = relation.reorder(nil).group(:state, :title).count diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb index b9bd63656b3..87c422f33db 100644 --- a/app/models/group_milestone.rb +++ b/app/models/group_milestone.rb @@ -3,6 +3,16 @@ class GroupMilestone < ActiveRecord::Base include Milestoneish include CacheMarkdownField + class << self + # Build legacy group milestone which consists on all project milestones + # with the same title. + def build(group, projects, title) + GlobalMilestone.build(projects, title).tap do |milestone| + milestone&.group = group + end + end + end + def milestoneish_ids id end |