diff options
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/concerns/milestone_actions.rb | 8 | ||||
-rw-r--r-- | app/controllers/dashboard/milestones_controller.rb | 32 | ||||
-rw-r--r-- | app/controllers/groups/milestones_controller.rb | 69 | ||||
-rw-r--r-- | app/controllers/projects/milestones_controller.rb | 4 |
4 files changed, 26 insertions, 87 deletions
diff --git a/app/controllers/concerns/milestone_actions.rb b/app/controllers/concerns/milestone_actions.rb index dbc575a1487..29138e7b014 100644 --- a/app/controllers/concerns/milestone_actions.rb +++ b/app/controllers/concerns/milestone_actions.rb @@ -51,13 +51,7 @@ module MilestoneActions } end - # rubocop:disable Gitlab/ModuleWithInstanceVariables def milestone_redirect_path - if @milestone.global_milestone? - url_for(action: :show, title: @milestone.title) - else - url_for(action: :show) - end + url_for(action: :show) end - # rubocop:enable Gitlab/ModuleWithInstanceVariables end diff --git a/app/controllers/dashboard/milestones_controller.rb b/app/controllers/dashboard/milestones_controller.rb index d34a07324da..14f9a026688 100644 --- a/app/controllers/dashboard/milestones_controller.rb +++ b/app/controllers/dashboard/milestones_controller.rb @@ -1,48 +1,32 @@ # frozen_string_literal: true class Dashboard::MilestonesController < Dashboard::ApplicationController - include MilestoneActions - before_action :projects before_action :groups, only: :index - before_action :milestone, only: [:show, :merge_requests, :participants, :labels] def index respond_to do |format| format.html do - @milestone_states = Milestone.states_count(@projects.select(:id), @groups.select(:id)) - @milestones = Kaminari.paginate_array(milestones).page(params[:page]) + @milestone_states = Milestone.states_count(@projects.select(:id), groups.select(:id)) + @milestones = milestones.page(params[:page]) end format.json do - render json: milestones + render json: milestones.to_json(only: [:id, :title], methods: :name) end end end - def show - end - private - def group_milestones - DashboardGroupMilestone.build_collection(groups, params) - end - - # See [#39545](https://gitlab.com/gitlab-org/gitlab-foss/issues/39545) for info about the deprecation of dynamic milestones - def dynamic_milestones - DashboardMilestone.build_collection(@projects, params) - end - def milestones - @milestones = group_milestones + dynamic_milestones - end - - def milestone - @milestone = DashboardMilestone.build(@projects, params[:title]) - render_404 unless @milestone + MilestonesFinder.new(search_params).execute end def groups @groups ||= GroupsFinder.new(current_user, all_available: false).execute end + + def search_params + params.permit(:state, :search_title).merge(group_ids: groups, project_ids: projects) + end end diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb index 8cfbd293597..c9fe6bddb50 100644 --- a/app/controllers/groups/milestones_controller.rb +++ b/app/controllers/groups/milestones_controller.rb @@ -6,17 +6,17 @@ class Groups::MilestonesController < Groups::ApplicationController before_action :milestone, only: [:edit, :show, :update, :merge_requests, :participants, :labels, :destroy] before_action :authorize_admin_milestones!, only: [:edit, :new, :create, :update, :destroy] before_action do - push_frontend_feature_flag(:burnup_charts) + push_frontend_feature_flag(:burnup_charts, @group) end def index respond_to do |format| format.html do @milestone_states = Milestone.states_count(group_projects_with_access, [group]) - @milestones = Kaminari.paginate_array(milestones).page(params[:page]) + @milestones = milestones.page(params[:page]) end format.json do - render json: milestones.map { |m| m.for_display.slice(:id, :title, :name) } + render json: milestones.to_json(only: [:id, :title], methods: :name) end end end @@ -29,7 +29,7 @@ class Groups::MilestonesController < Groups::ApplicationController @milestone = Milestones::CreateService.new(group, current_user, milestone_params).execute if @milestone.persisted? - redirect_to milestone_path + redirect_to milestone_path(@milestone) else render "new" end @@ -39,23 +39,15 @@ class Groups::MilestonesController < Groups::ApplicationController end def edit - render_404 if @milestone.legacy_group_milestone? end def update - # Keep this compatible with legacy group milestones where we have to update - # all projects milestones states at once. - milestones, update_params = get_milestones_for_update - milestones.each do |milestone| - Milestones::UpdateService.new(milestone.resource_parent, current_user, update_params).execute(milestone) - end + Milestones::UpdateService.new(@milestone.parent, current_user, milestone_params).execute(@milestone) - redirect_to milestone_path + redirect_to milestone_path(@milestone) end def destroy - return render_404 if @milestone.legacy_group_milestone? - Milestones::DestroyService.new(group, current_user).execute(@milestone) respond_to do |format| @@ -66,14 +58,6 @@ class Groups::MilestonesController < Groups::ApplicationController private - def get_milestones_for_update - if @milestone.legacy_group_milestone? - [@milestone.milestones, legacy_milestone_params] - else - [[@milestone], milestone_params] - end - end - def authorize_admin_milestones! return render_404 unless can?(current_user, :admin_milestone, group) end @@ -82,27 +66,21 @@ class Groups::MilestonesController < Groups::ApplicationController params.require(:milestone).permit(:title, :description, :start_date, :due_date, :state_event) end - def legacy_milestone_params - params.require(:milestone).permit(:state_event) + def milestones + MilestonesFinder.new(search_params).execute end - def milestone_path - if @milestone.legacy_group_milestone? - group_milestone_path(group, @milestone.safe_title, title: @milestone.title) - else - group_milestone_path(group, @milestone.iid) - end + def milestone + @milestone = group.milestones.find_by_iid(params[:id]) + + render_404 unless @milestone end - def milestones - milestones = MilestonesFinder.new(search_params).execute + def search_params + groups = request.format.json? ? group_ids(include_ancestors: true) : group_ids @sort = params[:sort] || 'due_date_asc' - MilestoneArray.sort(milestones + legacy_milestones, @sort) - end - - def legacy_milestones - GroupMilestone.build_collection(group, group_projects_with_access, params) + params.permit(:state, :search_title).merge(sort: @sort, group_ids: groups, project_ids: group_projects_with_access) end def group_projects_with_access @@ -116,23 +94,6 @@ class Groups::MilestonesController < Groups::ApplicationController group.self_and_descendants.public_or_visible_to_user(current_user).select(:id) end end - - def milestone - @milestone = - if params[:title] - GroupMilestone.build(group, group_projects_with_access, params[:title]) - else - group.milestones.find_by_iid(params[:id]) - end - - render_404 unless @milestone - end - - def search_params - groups = request.format.json? ? group_ids(include_ancestors: true) : group_ids - - params.permit(:state, :search_title).merge(group_ids: groups) - end end Groups::MilestonesController.prepend_if_ee('EE::Groups::MilestonesController') diff --git a/app/controllers/projects/milestones_controller.rb b/app/controllers/projects/milestones_controller.rb index 56f1f1a1019..16d63cc184f 100644 --- a/app/controllers/projects/milestones_controller.rb +++ b/app/controllers/projects/milestones_controller.rb @@ -7,7 +7,7 @@ class Projects::MilestonesController < Projects::ApplicationController before_action :check_issuables_available! before_action :milestone, only: [:edit, :update, :destroy, :show, :merge_requests, :participants, :labels, :promote] before_action do - push_frontend_feature_flag(:burnup_charts) + push_frontend_feature_flag(:burnup_charts, @project) end # Allow read any milestone @@ -34,7 +34,7 @@ class Projects::MilestonesController < Projects::ApplicationController @milestones = @milestones.page(params[:page]) end format.json do - render json: @milestones.to_json(methods: :name) + render json: @milestones.to_json(only: [:id, :title], methods: :name) end end end |