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
diff options
context:
space:
mode:
authorselfup <boudinot.regis@yahoo.com>2017-06-23 20:38:56 +0300
committerselfup <boudinot.regis@yahoo.com>2017-06-23 20:38:56 +0300
commit56a0d4cd2e925bb2a9b5ad6c0b6d1feb0d37f7fa (patch)
tree58628952cd37c68a633c216ade8722b4aba9b725
parent4d321590238c8d318dba98eb70bbd8d6abbdc17b (diff)
parenta378713962842205dd7a28438493edc051e2dcce (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.rb9
-rw-r--r--app/finders/milestones_finder.rb11
-rw-r--r--app/models/global_milestone.rb2
-rw-r--r--app/models/group_milestone.rb10
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